1

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

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

4

2 回答 2

1

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

看:

  1. 在同一页面上多次运行 Greasemonkey 脚本?
  2. 在 AJAX 请求上触发 Greasemonkey 脚本
  3. 如何在不使用 DOM 突变事件的情况下检测 AJAX 节点插入?

和其他几个。

于 2013-02-25T15:25:47.950 回答
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();
于 2013-02-26T09:15:16.423 回答