我有这样的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部门不允许我们对其进行修改。
正如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 || ''); }); } });