Firefox:窗口、文档、文档内容和;内容

Firefox:窗口、文档、文档内容和;内容,firefox,architecture,scope,Firefox,Architecture,Scope,在Firefox中开发一个扩展,我的错误似乎源于我不理解以下内容之间的区别 如果有人能指出确切的使用时间,那就太好了 请曾经使用过Firefox的人解释一下。我补充了我所理解的,他们很可能完全不正确- 窗口 文档=XUL元素+(当前打开选项卡的网页) 文档内容 content.document=打开选项卡的网页内容。不包括xul元素。 top.window.content 我将收集答案的正确解释并将其作为编辑放入问题。在扩展名中,文档是浏览器UI的XUL文档窗口是该文档的窗口(用作chrome

在Firefox中开发一个扩展,我的错误似乎源于我不理解以下内容之间的区别

如果有人能指出确切的使用时间,那就太好了

请曾经使用过Firefox的人解释一下。我补充了我所理解的,他们很可能完全不正确-

窗口
文档=XUL元素+(当前打开选项卡的网页)
文档内容
content.document=打开选项卡的网页内容。不包括xul元素。
top.window.content


我将收集答案的正确解释并将其作为编辑放入问题。

在扩展名中,
文档是浏览器UI的XUL文档<代码>窗口
是该文档的窗口(用作chrome JS全局脚本的对象,等等)<代码>内容。文档是当前所选选项卡中网页的文档对象<代码>内容是当前所选选项卡中网页的窗口对象

关于“窗口”还有点不清楚。如果“document”是封装所有内容的根对象,那么它不应该是一个包含所有其他样式表+JS的对象吗?你说“window是该文档的窗口”是什么意思?最简单的是,
document
是DOM中的根节点;它并不是“封装一切”<代码>窗口是脚本的作用域对象。因此,如果在脚本中执行
foo=5
,则将
window.foo
设置为5。当您在脚本中编写
文档
时,实际上得到的是
window.document
。这有帮助吗?是的,还有一个问题,top.window.content是什么意思?
top
表示脚本运行的窗口父链顶部的东西。如果脚本未在子帧中运行,则
top==window
top.window==top
在所有情况下,因此
.window
只是多余的。对于Firefox顶级窗口,
.content
返回当前所选选项卡的窗口。因此,如果在Firefox UI中运行,
top.window.content
将为您提供当前所选选项卡的窗口。