一尘不染

jQuery-HTML中的脚本标签由jQuery解析并且不执行

javascript

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


阅读 408

收藏
2020-05-01

共1个答案

一尘不染

正如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 || '');
        });
    }
});
2020-05-01