我有这样的HTML页面:<html><body><div id='something'> ... <script> var x = 'hello world'; </script> ...</div></body></html>在另一页上,我正在这样做:$.ajax({ url: 'example.html', type: 'GET', success: function(data) { $('#mydiv').html($(data).find('#something').html()); alert(x); }});jQuery,但是,没有执行在第一个文件中的javascript,即使文档中说的那样。我该怎么做呢?编辑:不幸的是,在现实世界中的应用程序中,我无法控制“包含”页面的内容。我们在同一个域中,但是我不能修改它输出的代码,因为它是打包产品,IT部门不允许我们对其进行修改。
3 回答

交互式爱情
TA贡献1712条经验 获得超3个赞
作为@James答案的替代方法,可以$.parseHTML()通过注意将包含脚本的布尔标志添加到来解析HTML字符串true:
$.ajax({
url: 'example.html',
type: 'GET',
success: function(data) {
var content = $($.parseHTML(data, document, true)).find('#something');
$('#mydiv').html(content);
}
});
这样,可以执行嵌入在下载文本中的任何脚本。

翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
我对此不太确定,但是可能发生的情况是,当jQuery从构建片段时$(data),脚本标记在那时丢失了。
如果您可以将包含的页面安排成一个片段:
<div id='something'>
<!-- ... -->
<script>var x = 'hello world';</script>
</div>
没有其他周围的东西,那么您的成功回调可以做到这一点:
success: function(data) {
$('#mydiv').html(data);
}
现在,这些脚本标签将由jQuery html()函数注意,该函数显式查找它们并将其删除。但是,它确实保留了这些脚本块,并在完成目标内容的更新后执行它们。
添加回答
举报
0/150
提交
取消