我通常使用jQuery html()方法将从ajax请求返回的html +脚本插入到文档中,该方法也执行脚本。
意思是如果我写:
$(document.body).html("<script>alert()</"+"script>");
它将执行脚本。
(+仅适用于browesr,因为在字符串中编写</script>
不起作用。)
问题 - 如果我对新打开的窗口执行相同操作,则不起作用。即脚本未被执行。为什么呢?
答案 0 :(得分:3)
如果目标页面和主页面托管在相同的URL和协议中,则可以在打开的窗口上执行任何脚本。 (我假设它是使用Window.open()函数打开的)
将引用保存到打开的窗口...
var popup = window.open("/page2.html");
并使用它来访问其文档:
$(popup.document.body).append("<script>alert()</script>");
如果您在打开的窗口中导入jQuery,也可以调用
popup.$(popup.document.body).append("<script>alert()</script>");
答案 1 :(得分:0)
我以不同的方式做事。 Ajax返回一个包含$(document).ready
的页面,其中包含所有相关代码。
然后我使用.html(data)
在ajax函数中加载从AJAX返回的代码片段,jquery代码始终有效。
如果我没有错,那么你的问题与DOM相关的问题还没有在新窗口中准备就绪。