我正在研究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页面更改的正确方法吗? 如果是这样,有更好的方法来查看我是否在正确的页面上,或者我是否已经添加到此页面而不是进行选择?
答案 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
});
还有更具体的DOMNodeInsertedIntoDocument
和DOMNodeRemovedFromDocument
事件。