0

"chrome-document-global-created"当 Mozilla 观察者事件被触发时,我需要获取 DOM 。因此,我有以下代码。但是我怎样才能从那里得到 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 回答