【发布时间】:2015-08-07 09:01:03
【问题描述】:
您好,我正在构建一个 chrome 扩展程序。我有一个 javascript 文件,我想在其中检测 facebook.com 上 div 的更改,因此我将其附加到突变观察者。现在的问题是,如果我通过单击主页按钮导航到 Facebook 上的另一个页面,即使这个新页面中存在具有相同 id 的 div,突变观察者也会停止工作。它只有在我刷新页面后才开始工作。关于如何解决此问题的任何想法?
此外,我的所有代码都包含在 document.ready jquery 函数中,因此我假设当我通过单击主页按钮导航到新的 facebook 页面时它会自动触发,但这不会发生。它仅在我显式键入 url 或导航后刷新页面时触发。
代码是这样的:
$ (document).ready( function() {
var observeDOM = (function(){
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver,
eventListenerSupported = window.addEventListener;
return function(obj, callback){
if( MutationObserver ){
// define a new observer
var obs = new MutationObserver(function(mutations, observer){
if( mutations[0].addedNodes.length || mutations[0].removedNodes.length )
callback();
});
// have the observer observe foo for changes in children
obs.observe( obj, { childList:true, subtree:true });
}
else if( eventListenerSupported ){
obj.addEventListener('DOMNodeInserted', callback, false);
obj.addEventListener('DOMNodeRemoved', callback, false);
}
}
})();
if (document.getElementById('contentArea') !== null) {
console.log("working");
observeDOM( document.getElementById('contentArea') ,function(){
console.log("DOM CHANGED");
});
}
});
更新:似乎问题在于 facebook 如何加载页面(请参阅:How facebook load pages?)
有什么方法可以检测通过 AJAX 发生的这些个别变化?
【问题讨论】:
-
“关于如何解决这个问题的任何想法?” 没有代码?可能不是。请带上tour,四处看看,通读help center,尤其是How do I ask a good question?
标签: javascript jquery html facebook google-chrome-extension