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

时间:2013-02-25 15:15:06

标签: ajax telerik postback greasemonkey

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

所以,我的元素也会刷新。我怎么知道回发已经发生,以便我可以再次运行我的脚本来更改表中的新元素? (该页面使用Telerik。)

2 个答案:

答案 0 :(得分:1)

不要试图检查回发这几乎总是一种痛苦的做事方式。你关心表格内容,监控它。

请参阅:

  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?
  4. 和其他几个人。

答案 1 :(得分:0)

就像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();