【发布时间】:2010-04-23 14:26:12
【问题描述】:
我有一个这样的 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 部门不允许我们修改的打包产品。
【问题讨论】:
-
您是否检查过如果您在脚本本身(即“包含”页面内)执行
alert()会发生什么? -
好吧,如果你不能改变它,你可以通过添加一些调试代码来检查我的理论,看看
$(data).html()的样子。如果它不包含脚本标签,那就是问题所在。您可能想查看 jQuery 源代码,看看它是如何去除脚本的;它使用了一个相当丑陋的正则表达式,但也许你可以自己剥离脚本然后执行它们。
标签: javascript jquery