1

fire fox ブラウザでアドオンをビルドしようとしています。私は page-mod を使用しているので、特定のページ (Youtube) に着地したときにスクリプトがトリガーされ、データをメイン スクリプトに伝えることができます。ただし、ページが読み込まれた後に読み込まれるため(ajaxなどを使用)、データコメントとは通信できません。私を助けてください!私の例:

main.js

pageMod.PageMod({
  include: "*.youtube.com",
  contentScriptFile: data.url("jquery-1.8.3.js"),
  contentScriptFile: data.url("element-getter.js"),
  contentScriptWhen: "end"          
});

element-getter.js

var divs = document.getElementsByTagName("div");
for (var i = 0; i < divs.length; ++i) {
    divs[i].setAttribute("style", "border: solid red 1px;");
}

内部のコメントの内容を見ることができます

<div id = watch-discussion></div>

本当にありがとうございます。

4

2 に答える 2

0

最初のページ読み込み後にコンテンツが読み込まれるため、MutatinObserver API を使用する必要があります。これにより、コンテンツが変更されたときにコールバックをトリガーできますwatch-discussion

以下は、私の拡張機能の 1 つからのスニペットです。

// create an observer instance
var observer = new page.defaultView.MutationObserver(function(mutations, obs) {
  stopTube._handleMutation(mutations, obs);
});

// configuration of the observer:
var config = { childList: true};

// pass in the target node, as well as the observer options
// Here instead of page.body, you should be using page.getElementById('watch-discussion'), otherwise you will have too many notifications. 
observer.observe(page.body, config);         

page.addEventListener('unload', function(evt) {
  // remember to stop observing when you are done
  observer.disconnect();

});
于 2013-09-22T13:23:01.893 に答える
0

setTimer を使用して、タイマー ハンドラーのコメント DOM ノードを確認します。コメントの処理が完了したら、タイマーを停止します。

もう 1 つの方法は、ページから XMLHTTPRequests をリッスンし、ここからコメントを取得することです。

于 2013-09-22T12:09:40.340 に答える