我希望我选择的功能在将DOM元素添加到页面时运行。这是在浏览器扩展的上下文中,因此该网页独立于我运行,并且我无法修改其来源。我在这里有什么选择?
我猜,从理论上讲,我可以setInterval()用来不断搜索元素的存在并在元素存在的情况下执行我的操作,但是我需要一种更好的方法。
setInterval()
警告! 这个答案现在已经过时了。DOM级别4引入了MutationObserver,可以有效替代已弃用的突变事件。,以获得比此处提供的解决方案更好的解决方案。说真的不要每100毫秒轮询一次DOM。这会浪费CPU功率,而您的用户会讨厌您。
警告!
这个答案现在已经过时了。DOM级别4引入了MutationObserver,可以有效替代已弃用的突变事件。,以获得比此处提供的解决方案更好的解决方案。说真的不要每100毫秒轮询一次DOM。这会浪费CPU功率,而您的用户会讨厌您。
由于突变事件在2012年已弃用,并且您无法控制插入的元素,因为它们是由其他人的代码添加的,因此您唯一的选择是连续检查它们。
function checkDOMChange() { // check for any new element being inserted here, // or a particular node being modified // call the function again after 100 milliseconds setTimeout( checkDOMChange, 100 ); }
调用此函数后,它将每100毫秒运行一次,即1/10(十分之一秒)。除非您需要实时元素观察,否则就足够了。