Jos*_*ose 33 javascript jquery
我有一个像这样的HTML页面:
<html>
<body>
<div id='something'>
...
<script>
var x = 'hello world';
</script>
...
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在另一页上,我这样做:
$.ajax({
url: 'example.html',
type: 'GET',
success: function(data) {
$('#mydiv').html($(data).find('#something').html());
alert(x);
}
});
Run Code Online (Sandbox Code Playgroud)
然而,jQuery并没有在第一个文件中执行javascript,即使文档说它确实如此.我该怎么做呢?
编辑:不幸的是,在我正在处理的实际应用程序中,我无法控制"包含"页面的内容.我们在同一个域上,但我无法修改它输出的代码,因为它是我们的IT部门不会让我们修改的打包产品.
Jam*_*mes 45
正如Pointy 指出的那样(借口双关语),当你传递HTML时,jQuery会混淆SCRIPT标签$()
.它不会删除它们 - 它只是将它们添加到从HTML生成的DOM集合中.您可以像这样执行脚本:
$.ajax({
url: 'example.html',
type: 'GET',
success: function(data) {
var dom = $(data);
$('#mydiv').html(dom.find('#something').html());
dom.filter('script').each(function(){
$.globalEval(this.text || this.textContent || this.innerHTML || '');
});
}
});
Run Code Online (Sandbox Code Playgroud)
gua*_*ari 31
作为@James回答的替代方法,可以$.parseHTML()
通过注意添加包含脚本的布尔标志来解析HTML字符串true
:
$.ajax({
url: 'example.html',
type: 'GET',
success: function(data) {
var content = $($.parseHTML(data, document, true)).find('#something');
$('#mydiv').html(content);
}
});
Run Code Online (Sandbox Code Playgroud)
以这种方式,可以执行嵌入在下载文本中的任何脚本.
归档时间: |
|
查看次数: |
34392 次 |
最近记录: |