是否可以让 Chrome 扩展监听尚未创建的元素的出现?
假设用户单击按钮并且单击事件创建一个元素<div id='myDiv'>My Div</div>
并将其添加到页面/DOM。是否可以设置一个侦听器,在该元素出现时自动触发事件?
或者我是否必须每隔 X 毫秒轮询页面并检查此元素?
顺便说一句,jQuery 和其他库对我来说不是一个选择。
The new DOM4 突变观察者 http://updates.html5rocks.com/2012/02/Detect-DOM-changes-with-Mutation-Observers可以做到这一点。我认为它还没有得到广泛支持,但幸运的是,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 });
如果你能缩小你的听力范围observer.observe
比更具体的元素document
,这会给你带来一些性能提升。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)