将一个元素添加到不是创建它的窗口文档有什么危害吗?

时间:2013-10-01 21:47:35

标签: javascript dom

例如,说我这样做:

var otherWindow = window.open("otherfile.html", "_blank");

然后一段时间后:

if(otherWindow.document && otherWindow.document.body) {
 var elem = document.createElement("DIV")
 elem.innerHTML = "hello here I am!";
 otherWindow.document.body.appendChild(elem);
}

这似乎工作正常,但我很好奇是否有任何缺点,因为elem是用第一个窗口的文档创建的,但是附加到第二个窗口的文档。这是一个很大的禁忌吗?

假设我有这样做的原因,并且(因为元素实际上是由库代码创建的),使用“otherWindow.document”创建元素不会是干净/微不足道的。

2 个答案:

答案 0 :(得分:2)

我认为至少在某些浏览器中你会好的,但我认为可能存在例外情况,我不知道DOM规范对此有何看法。我建议你在目标浏览器中尝试一下。

还有DOM importNode()方法,它具有相当广泛的支持,专为任务而设计,所以这似乎是最安全的选择,也是我推荐的方法。

答案 1 :(得分:1)

除了变量访问和可能不会受到影响的潜在DOM问题之外,在您追加它的位置创建元素的位置并不重要。