0

Mozilla オブザーバー イベントが発生したときに DOM を取得する必要があります"chrome-document-global-created"。したがって、次のコードがあります。しかし、そこからDOMを取得するにはどうすればよいですか? データはnull(ドキュメントによると)、どのオブジェクトを使用する必要があるか教えてもらえますか?

どうもありがとう!

observe: function(subject, topic, data) {
  which object is it? document? window? cant find anything there about dom...
}
4

1 に答える 1

0

ドキュメントを見るsubjectと、ウィンドウです。QueryInterface()実際にインターフェイスを取得するにはまだ使用する必要がありnsIDOMWindowますが、その後はかなり明白になります。

var doc = subject.QueryInterface(Components.interfaces.nsIDOMWindow).document;
dump(doc.documentElement.innerHTML);

この時点では、ドキュメントには多くの情報が含まれていないことに注意してください。ドキュメントは作成されたばかりです。Boris Zbarsky がコメントで指摘しているように、おそらくDOMContentLoadedイベント リスナーを追加して、ドキュメントのコンテンツが利用可能になるのを待ちます。

var wnd = subject.QueryInterface(Components.interfaces.nsIDOMWindow);
wnd.addEventListener("DOMContentLoaded", function(event)
{
  dump(wnd.document.documentElement.innerHTML);
}, false);
于 2012-10-09T14:04:50.033 に答える