0

アドオン内で MutationObserver を使用しようとしています。したがって、オブザーバーを設定する content-script を挿入します。これは何とか機能しているように見えますが、検出されたミューテーションは 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 に答える