Jim*_*_CS 9 javascript google-chrome google-chrome-extension
是否可以让Chrome扩展程序侦听尚未创建的元素的外观?
假设用户单击一个按钮,click事件会创建一个元素<div id='myDiv'>My Div</div>并将其添加到页面/ DOM.是否可以设置一个侦听器,该侦听器会在该元素出现时自动触发事件?
或者我是否必须使用轮询页面并每隔X毫秒检查一次这个元素?
对我来说,jQuery和其他库不是一个选择顺便说一句.
aps*_*ers 12
新的DOM4 MutationObserver可以做到这一点.我认为它还没有被广泛支持,但幸运的是,它在Chrome中得到了支持WebKitMutationObserver.
从链接的教程页面修改,它会在页面上的任何位置侦听突变:
var observer = new WebKitMutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
for (var i = 0; i < mutation.addedNodes.length; i++) {
if(mutation.addedNodes[i].id == "myDiv") {
// target node added, respond now...
}
}
});
});
observer.observe(document, { subtree: true });
Run Code Online (Sandbox Code Playgroud)
如果你可以将听力范围缩小observer.observe到比一个更具体的元素document,那将会带来一些性能提升.