我正在尝试编写一个适用于Gmail的Greasemonkey脚本。我知道如何创建响应用户点击收件箱链接或刷新链接的javascript。我的问题是Gmail会定期刷新收件箱中的新会话,我无法捕获此事件。有没有办法在javascript中捕获周期性的Ajax事件?

有帮助吗?

解决方案 2

我上面尝试了Miles的优秀建议,但遗憾的是它不起作用,因为Gmail在我有机会在我的Greasemonkey脚本中更改它之前已经调用了原始的setTimeout函数。

我唯一能做的就是以某种方式对Gmail在定期刷新收件箱时所做的更改做出反应。我发现添加或删除节点时会触发几个与DOM相关的事件:

http://www.w3 .ORG / TR / DOM级别-3-活动/ events.html#事件DOMNodeInserted

由于Gmail使用我的最新电子邮件更新DOM,因此我可以侦听这些DOM事件(我正在使用DOMNodeInserted)并对更改做出反应。

它不优雅,但它有效。

其他提示

您可以尝试使用自己的函数替换 window.setTimeout 函数(可能还有 window.setInterval ):

window._setTimeout = window.setTimeout;
window.setTimeout = function(func, delay) {
    return window._setTimeout(function() {
        // Your code goes here, before the client function is called
        alert('A timeout event just fired!');

        if (typeof func == 'string') {
            eval(func);
        } else {
            func();
        }
    }, delay);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top