0

我正在尝试在我的插件中使用 MutationObserver。因此我注入了一个内容脚本,然后设置观察者。这似乎可行,而且检测到的突变似乎不能序列化为 JSON。但实际上我想用这个库来监控突变。Mozilla正式提到了这一点,关于插件中的突变监控。但这根本行不通。

所以有人在内容脚本中得到了一个工作突变观察者的工作示例(更好的突变总结 - 见链接)?

我的代码如下所示:

var observer = new MutationObserver(function (mutations) {
  self.port.emit("domModified", mutations); //I gets received as 'Array [{}]'
  mutations.forEach(function (mutation) {
    console.log(mutation.type); //printing mutation results in {}, printing mutation.type results in an actual string
    console.log(mutation.target);
    console.log(mutation.addedNodes.length);
  });
});

observer.observe(unsafeWindow.document.body, {
  attributes: true,
  subtree: true,
  characterData: true,
  childList: true
});
4

1 回答 1

1

这似乎可行,而且检测到的突变似乎不能序列化为 JSON。

突变是不可序列化的,尤其是因为它们包含节点。如果您需要将内容脚本中的某些内容传递给主要的附加代码,您需要确保它们是 JSONable 值。

所以有人在内容脚本中得到了一个工作突变观察者的工作示例(更好的突变总结 - 见链接)?

我从未使用过您提到的库,但我经常使用突变观察者;他们工作得很好。您可以在这里看到一个示例:https ://github.com/ZER0/tweet-to-read它基本上为包含外部 URL 的流中的每条推文添加了一个按钮;我需要突变观察者在未来的推文中添加按钮。您可以在这里查看实现:https ://github.com/ZER0/tweet-to-read/blob/master/data/observable.js

希望能帮助到你。

于 2015-07-15T17:43:23.467 回答