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

时间:2011-10-29 23:50:36

标签: javascript jquery google-chrome-extension

我正在研究fb游戏的扩展程序,它会在弹出框中添加一些额外的信息,隐藏一些无用的信息并运行一些计时器,这样你就可以看到你必须做多久,即使你不在游戏页面。 我的问题是,有一段时间他们回到使用ajax在页面之间进行更改,我想知道我是否使用正确的方法来处理这个问题。 我运行一个setInterval来检查我是否在我想要添加/删除soemting的页面上,我还没有完成它,如果这是真的我做我的东西,代码看起来像这样:

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页面更改的正确方法吗? 如果是这样,有更好的方法来查看我是否在正确的页面上,或者我是否已经添加到此页面而不是进行选择?

1 个答案:

答案 0 :(得分:2)

您可以使用livequery jquery插件来捕获何时在页面上创建新元素:

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

您还可以收听DOM更改时触发的DOMSubtreeModified事件:

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

还有更具体的DOMNodeInsertedIntoDocumentDOMNodeRemovedFromDocument事件。