一尘不染

将元素添加到页面时如何通知我?

javascript

我希望我选择的功能在将DOM元素添加到页面时运行。这是在浏览器扩展的上下文中,因此该网页独立于我运行,并且我无法修改其来源。我在这里有什么选择?

我猜,从理论上讲,我可以setInterval()用来不断搜索元素的存在并在元素存在的情况下执行我的操作,但是我需要一种更好的方法。


阅读 319

收藏
2020-04-25

共1个答案

一尘不染

警告!

这个答案现在已经过时了。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(十分之一秒)。除非您需要实时元素观察,否则就足够了。

2020-04-25