替换使用ajax的页面上的内容

replacing content on pages that use ajax

本文关键字:ajax 替换      更新时间:2023-09-26

我正在为一个fb游戏的扩展,添加了一些额外的信息弹出框,隐藏了一些无用的信息和运行一些计时器,这样你就可以看到多久,直到你要做的事情,即使你不是在游戏页面。我的问题是,一段时间后,他们去使用ajax来改变页面之间,我想知道我是否使用正确的方法来处理这个问题。我运行一个setInterval,检查我是否在一个页面上,我想添加/删除一些东西,我还没有做,如果这是真的,我做我的东西,代码看起来像这样:

function myFunction() {
    if($(selector for some element I am looking for).length > 0 && $(selector for some item I add).length == 0) {
        //do some stuff
    }
}
setInterval("myFunction()",1000);

这是处理ajax页面更改的正确方式从内容脚本的扩展?如果是这样,有没有更好的方法来查看我是否在正确的页面上,或者我是否已经添加到这个页面,而不是做一个选择?

你可以使用livequery jquery插件来捕捉页面上的新元素:

$("#ajax-element").livequery(function({
    //ajax-element is created
});

你也可以监听DOMSubtreeModified事件,当DOM改变时触发:

document.addEventListener("DOMSubtreeModified", function(event){
    //something has changed, possibly ajax-element was added
});

还有更具体的DOMNodeInsertedIntoDocumentDOMNodeRemovedFromDocument事件