gpt4 book ai didi

javascript - 将 child 添加到弹出窗口中。 (JavaScript)

转载 作者:行者123 更新时间:2023-11-28 00:14:07 24 4
gpt4 key购买 nike

我在尝试让一个相当简单的弹出窗口工作时遇到了一些麻烦。这个想法是 parent 应该打开一个弹出窗口,然后在其中附加一个 div。

代码的相关部分:

parent.html:

var childWindow;

function togglePref() {
childWindow = window.open("popup.html", "prefPopup", "width=200,height=320");
}

function loadPopupElements() {
var prefElements = document.getElementById("prefBrd").cloneNode(true);

var childDoc = childWindow.document;

var childLink = document.createElement("link");
childLink.setAttribute("href", "pop.css");
childLink.setAttribute("rel", "stylesheet");
childLink.setAttribute("type", "text/css");

childDoc.head.appendChild(childLink);
childDoc.body.appendChild(prefElements);
}

popup.html:

<head>
</head>

<body onload="opener.loadPopupElements();">
</body>

这适用于 Safari 和 Chrome,但出于某种原因 IE 拒绝附加任何内容。

最佳答案

好吧,我设法通过一个使用 innerHTML 的丑陋解决方案解决了这个问题。显然,正如 Hemlock 所提到的,IE 不支持从另一个文档附加子项。有人建议看一下 importNode() 方法,但我似乎也没有运气。

因此,解决方法如下:

parent.html:

var childWindow;

function togglePref() {
childWindow = window.open("popup.html", "prefPopup", "width=200,height=320");
}

function loadPopupElements() {
var prefElements = document.getElementById("prefBrd");
var childDoc = childWindow.document;
childDoc.body.innerHTML = prefElements.innerHTML;
}

popup.html:

<head>
<link href="pop.css" rel="stylesheet" type="text/css">
</head>

<body onload="loadElements();">
</body>

<script type="text/javascript">
function loadElements() {
opener.loadPopupElements();
}
</script>

这似乎是一种非常糟糕的方式,因为在我的例子中,#prefBrd 包含一些具有动态设置值的输入元素,所以为了让 popup.html 捕获它们,它必须做在 loadElements() 函数末尾进行一些迭代,如果使用 appendChild 则不需要。

关于javascript - 将 child 添加到弹出窗口中。 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13260599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com