代码之家  ›  专栏  ›  技术社区  ›  sevenkul

如何在客户端知道是否发生了回发?

  •  1
  • sevenkul  · 技术社区  · 11 年前

    我正在开发一个Greasemonkey脚本,这个脚本更改了表中的一些元素。但是,当我们单击表中的按钮时,会发生异步回发,并刷新表。

    所以,我的元素也被刷新了。我如何知道发生了回发,以便再次运行脚本来更改表中的新元素?(该页面使用Telerik。)

    2 回复  |  直到 11 年前
        1
  •  1
  •   Community Egal    7 年前

    不用费力地检查回邮。这几乎总是一种痛苦的做事方式。你关心表的内容,监督它。

    请参阅:

    1. Run Greasemonkey script on the same page, multiple times?
    2. Fire Greasemonkey script on AJAX request
    3. How can I detect AJAX node insertion without using DOM mutation events?

    以及其他几个。

        2
  •  0
  •   sevenkul    11 年前

    正如Brock Adams在回答中所说,我决定监视这个表,并编写了以下代码:

    function repairInputEvents() {
        for (var i = 0; i < document.getElementsByTagName("input").length; i++) {
            //Add event to buttons that cause postback.
            document.getElementsByTagName("input")[i].addEventListener("click", function() {
    
                //Run the following just before postback.
                document.getElementsByClassName("table")[0].setAttribute("title", "old");
                var checkAjaxInterval = setInterval(function() { checkAjax(); }, 1000);
    
                function checkAjax() {
                    if (document.getElementsByClassName("table")[0].getAttribute("title") != "old") {
                        clearInterval(checkAjaxInterval);
                        repairInputEvents();
                        repairSelectEvents();
                    }
                }
    
            });
    
        }
    }
    
    //First run
    repairInputEvents();
    repairSelectEvents();