我window.open
用来创建一个空窗口,然后使用 jquery DOM 操作方法填充它。我想做的一件事是确保新窗口中的所有可用脚本与父窗口中的脚本相同。我还复制了所有样式表,以及父窗口 HEAD 部分中的任何其他数据,所以我决定这样做:
$(floatingMap.window.document.head).append(
$("<base>", {"href": location.href})).append(
$("head").children().clone()));
这首先创建一个<base>
标签,确保源文档中的相对 URL 被正确解释,然后从源文档的 head 部分注入所有标签的副本。我可以使用 Chrome 的 DOM 检查器在新窗口中检查注入的对象,一切看起来都不错,但我遇到的问题是脚本没有加载。另一方面,样式表加载良好。有什么想法可以使脚本正确加载吗?
更新:
在一个可能相关的问题中,我发现以下代码有意想不到的结果:
$(floatingMap.window.document.head).append(
$("<script>").text("window.opener.childWindowReady()"));
这会导致指定代码在父窗口的上下文中执行,而不是在子窗口的上下文中执行。任何想法为什么会这样?