Chrome扩展程序:在元素创建时触发事件?

mik*_*ana 7 javascript google-chrome-extension

我想在元素添加到文档时触发事件.我已经阅读了on()jQuery文档事件列表,但是没有一个事件似乎与元素创建有关.

必须监视DOM,因为我无法控制何时将元素添加到文档中(因为我的Javascript是Chrome扩展内容脚本)

gka*_*pak 5

我知道这是一个老问题,已经有了答案,但由于情况发生了变化,我想我会为登陆此页面寻找答案的人添加更新的答案.

DOM突变事件已被弃用.根据MDN(关于DOM Mutation Events):

已弃用
此功能已从Web中删除.虽然有些浏览器可能仍然支持它,但它正在被删除.不要在旧项目或新项目中使用它.使用它的页面或Web应用程序可能随时中断.

应该使用新的MutationObserver API,它也更有效.
(变异汇总库现在为这个新API提供了一个有用的接口.)

用法示例:

// Create an observer instance.
var observer = new MutationObserver(function (mutations) {
  mutations.forEach(function (mutation) {
    console.log(mutation.type);
  });
});

// Config info for the observer.
var config = {
  childList: true, 
  subtree: true
};

// Observe the body (and its descendants) for `childList` changes.
observer.observe(document.body, config);

...

// Stop the observer, when it is not required any more.
observer.disconnect();
Run Code Online (Sandbox Code Playgroud)