为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

郎朗坤 2019-12-27 14:54:09
我有这样的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部门不允许我们对其进行修改。
查看完整描述

3 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

作为@James答案的替代方法,可以$.parseHTML()通过注意将包含脚本的布尔标志添加到来解析HTML字符串true:


$.ajax({

    url: 'example.html',

    type: 'GET',

    success: function(data) {


        var content = $($.parseHTML(data, document, true)).find('#something');

        $('#mydiv').html(content);


    }

});

这样,可以执行嵌入在下载文本中的任何脚本。


查看完整回答
反对 回复 2019-12-27
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

我对此不太确定,但是可能发生的情况是,当jQuery从构建片段时$(data),脚本标记在那时丢失了。


如果您可以将包含的页面安排成一个片段:


<div id='something'>

  <!-- ... -->

  <script>var x = 'hello world';</script>

</div>

没有其他周围的东西,那么您的成功回调可以做到这一点:


success: function(data) {

  $('#mydiv').html(data);

}

现在,这些脚本标签将由jQuery html()函数注意,该函数显式查找它们并将其删除。但是,它确实保留了这些脚本块,并在完成目标内容的更新后执行它们。


查看完整回答
反对 回复 2019-12-27
  • 3 回答
  • 0 关注
  • 855 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信