Javascript 当窗口对象不可用时,是否可以使用createElement?

Javascript 当窗口对象不可用时,是否可以使用createElement?,javascript,firefox,firefox-addon,firefox-addon-restartless,Javascript,Firefox,Firefox Addon,Firefox Addon Restartless,在一个Firefox引导的插件中,窗口对象还不可用,我想创建一个元素作为模板保留(当时不插入) 我想知道这是否可能? createElement()是否可以在窗口以外的任何地方创建。文档?我个人将我的东西放在一个XML文件(实际上是一个XUL文件)中,并使用XHR解析它(.responseXML)。via是另一种选择(尽管在启动期间执行同步文件I/O不是一个好主意,UX方面…) 如果您想要空白文档,可以使用IIRC(?!) 然后您可以/从预解析的DOM进入(浏览器)窗口。我个人将我的东西保存在X

在一个Firefox引导的插件中,
窗口
对象还不可用,我想创建一个元素作为模板保留(当时不插入)

我想知道这是否可能?

createElement()
是否可以在
窗口以外的任何地方创建。文档

我个人将我的东西放在一个XML文件(实际上是一个XUL文件)中,并使用XHR解析它(
.responseXML
)。via是另一种选择(尽管在启动期间执行同步文件I/O不是一个好主意,UX方面…)

如果您想要空白文档,可以使用IIRC(?!)


然后您可以/从预解析的DOM进入(浏览器)窗口。

我个人将我的东西保存在XML文件(实际上是XUL文件)中,并使用XHR解析它(
.responseXML
)。via是另一种选择(尽管在启动期间执行同步文件I/O不是一个好主意,UX方面…)

如果您想要空白文档,可以使用IIRC(?!)


然后您可以/从预解析的DOM进入(浏览器)窗口。

您可以执行
Services.appShell.hiddenDOMWindow.document.createElement

但在浏览器启动时,您必须添加一个事件侦听器,以便在加载
hiddenDOMWindow
时侦听


但是做
createElement
createElement
的开销是一样的,我很确定是不是?因此,您只需要在需要插入时创建元素,这显然会有一个窗口。

您可以执行
Services.appShell.hiddenDOMWindow.document.createElement

但在浏览器启动时,您必须添加一个事件侦听器,以便在加载
hiddenDOMWindow
时侦听


但是做
createElement
createElement
的开销是一样的,我很确定是不是?因此,您只需要在需要插入时创建元素,这显然会有一个窗口。

因为它必须创建多次,我可以克隆模板,而不是每次都创建一个新模板。它已经是一个函数,我不确定您提到的是否适用于这里。该阶段是浏览器启动阶段,在加载任何窗口之前,都要加载文档。因为它需要多次创建,我可以克隆模板,而不是每次都创建一个新模板。它已经是一个函数,我不确定您提到的是否适用于此处。该阶段是浏览器启动阶段,在任何窗口加载文档之前。谢谢。这是总的想法。我经常制作一个模板,并在正常情况下使用
cloneNode()
,比如JavaScript?GreaseMonkey。我也在想同样的事情。XHR+解析器似乎工作量太大。插件在沙盒中启动。是否可以在
沙盒中
createElement()
?沙盒不附带DOM内容(除非您自己显式地将
窗口或其他内容插入其中)。您不需要XHR+解析器,只需要XHR或解析器。谢谢。这是总的想法。我经常制作一个模板,并在正常情况下使用
cloneNode()
,比如JavaScript?GreaseMonkey。我也在想同样的事情。XHR+解析器似乎工作量太大。插件在沙盒中启动。是否可以在
沙盒中
createElement()
?沙盒不附带DOM内容(除非您自己显式地将
窗口或其他内容插入其中)。您不需要XHR+解析器,只需要XHR或解析器就可以了。谢谢Blagoh。我想有个打字错误。您的意思是“执行
createElement
cloneNode
的开销相同吗?”?如果是这种情况,则不,
clonNode
使用的开销要少得多。:)嗯,
.hiddenDOMWindow.document
的最大缺点是,在某些平台上,它将是一个XUL文档,而在其他平台上,它将是一个HTML文档。这规定了当
.createElement()
时将使用的默认XML命名空间(因此您最好使用
.createElements()
)。我不知道有关
cloneNode
开销的情况,谢谢@erosman,我必须查找它。当您找到有关开销比较的资源时,请共享。我自己也希望如此。谢谢你布拉戈。我想有个打字错误。您的意思是“执行
createElement
cloneNode
的开销相同吗?”?如果是这种情况,则不,
clonNode
使用的开销要少得多。:)嗯,
.hiddenDOMWindow.document
的最大缺点是,在某些平台上,它将是一个XUL文档,而在其他平台上,它将是一个HTML文档。这规定了当
.createElement()
时将使用的默认XML命名空间(因此您最好使用
.createElements()
)。我不知道有关
cloneNode
开销的情况,谢谢@erosman,我必须查找它。当您找到有关开销比较的资源时,请共享。我自己也希望如此。