使用 jquery html() 将脚本插入到新的 window

insert script to new window with jquery html()

我通常使用 jQuery html() 方法将 html+从 ajax 请求返回的脚本插入到文档中,该方法也会执行脚本。

意味着如果我写:

$(document.body).html("<script>alert()</"+"script>");

它将执行脚本。 (+ 仅适用于浏览器,因为在字符串中写入 </script> 不起作用。)

问题 - 如果我对新打开的 window 执行相同的操作,则它不起作用。即不执行脚本。为什么?

我以前用不同的方式做。 Ajax returns 包含 $(document).ready 和所有相关代码的页面。 然后我使用 .html(data) 加载从 AJAX 返回的代码片段到 ajax 函数中,并且 jquery 代码始终有效。 如果我没记错的话,你的问题与 DOM is not ready in the new window.

有关

如果目标页面和主页面托管在相同的 URL 和协议中,您可以在打开的 window 上执行任何脚本。 (我假设它是使用 Window.open() 函数打开的)

保存对打开的引用window...

var popup = window.open("/page2.html");

并使用它来访问其文档:

$(popup.document.body).append("<script>alert()</script>");

如果你在打开的window中导入jQuery你也可以调用

popup.$(popup.document.body).append("<script>alert()</script>");