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

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


郎朗坤
浏览 857回答 3
3回答

交互式爱情

作为@James答案的替代方法,可以$.parseHTML()通过注意将包含脚本的布尔标志添加到来解析HTML字符串true:$.ajax({&nbsp; &nbsp; url: 'example.html',&nbsp; &nbsp; type: 'GET',&nbsp; &nbsp; success: function(data) {&nbsp; &nbsp; &nbsp; &nbsp; var content = $($.parseHTML(data, document, true)).find('#something');&nbsp; &nbsp; &nbsp; &nbsp; $('#mydiv').html(content);&nbsp; &nbsp; }});这样,可以执行嵌入在下载文本中的任何脚本。

翻翻过去那场雪

我对此不太确定,但是可能发生的情况是,当jQuery从构建片段时$(data),脚本标记在那时丢失了。如果您可以将包含的页面安排成一个片段:<div id='something'>&nbsp; <!-- ... -->&nbsp; <script>var x = 'hello world';</script></div>没有其他周围的东西,那么您的成功回调可以做到这一点:success: function(data) {&nbsp; $('#mydiv').html(data);}现在,这些脚本标签将由jQuery html()函数注意,该函数显式查找它们并将其删除。但是,它确实保留了这些脚本块,并在完成目标内容的更新后执行它们。
打开App,查看更多内容
随时随地看视频慕课网APP