javascript – Chrome扩展:如何在Ajax请求上重新加载/重新执行内容脚本

前端之家收集整理的这篇文章主要介绍了javascript – Chrome扩展:如何在Ajax请求上重新加载/重新执行内容脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试为某个站点执行内容脚本(注入按钮或更改链接)但是我想在用户浏览网站时执行此操作.

问题是网页是在用户浏览时使用ajax请求动态构建的.

我之前通过实际将我的javascript注入网页而编写的扩展中解决了这个问题.

我想知道是否有一个更好的选择,只能在我的内容脚本中注册ajaxComplete事件或类似的东西,以便我可以重新执行.

我可以做以下事情:

function listener()
{
    console.debug("listener fired.");
}
document.addEventListener("DOMSubtreeModified",listener,false);

然而,在一页加载期间,这会发生太多次.

解决方法

我没有注意到ajax监听器,但是无论如何都没有帮助,因为你需要在修改页面时捕获,而不是发送/接收ajax请求(页面修改通常在以后发生,并且可以不依赖于ajax请求在所有).

DOMSubtreeModified是正确的方法,只需对过于频繁的调用实施一些保护:

function listener()
{
    console.debug("listener fired.");
}

var timeout = null;
document.addEventListener("DOMSubtreeModified",function() {
    if(timeout) {
        clearTimeout(timeout);
    }
    timeout = setTimeout(listener,500);
},false);

这样,如果500ms内没有其他事件,它将触发监听器.

猜你在找的Ajax相关文章