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

Is there any harm adding an element to a window's document that is not the one that it was created with?

本文关键字:元素 什么 创建 添加 窗口 文档      更新时间:2023-09-26

例如,假设我这样做:

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"创建元素并不干净/微不足道。

我认为

你至少在某些浏览器中会没问题,但我认为可能有例外,我不知道 DOM 规范对此有何说明。我建议在您的目标浏览器中尝试一下。

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

除了变量访问和可能不会受到伤害的潜在 DOM 问题之外,在何处创建元素并不重要,只需在附加它的位置即可。