用.html()截断加载javascript

时间:2016-08-22 03:18:10

标签: jquery html innerhtml

环境:

  • 版本:jquery-3.1.0.js
  • 代理:Chrome v51

我想使用“.html()”(或追加)加载一堆javascript并动态运行。

如果pice包含'< tr>',那么整个javascript就消失了。 但如果标签是'< p>',那么一切都很顺利。

我知道JQ使用wrapMap()在构建buildFragment()时自动关闭一些标记。 但是,与原生的“innerHTML”方法相比,它会让人感到困惑。

这不是一个jQuery错误吗?或者设计师出于某种原因意图这样做?

此处代码

<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.js"></script>  
<div style="color:red;" id="out1"></div>
<div style="color:red;" id="out2"></div>
<div style="color:red;" id="out3"></div>   
<div style="color:red;" id="out4"></div>   

<script type="text/javascript">

var dom  = document.createElement('script');
var str1 = 'var a = "<tr>"; testFunc(a);';
var str2 = 'var a = "<p>"; testFunc(a);';

dom.innerHTML = str1;
$("#out1").text(dom.outerHTML);

$(dom).html(str1);
$("#out2").text(dom.outerHTML);

dom.innerHTML = str2;
$("#out3").text(dom.outerHTML);

$(dom).html(str2);
$("#out4").text(dom.outerHTML);

</script>  

此处输出

DOM generated by innerHTML
<script>var a = "<tr>"; testFunc(a);</script>

DOM generated by .html()    
<script><tr></tr></script>

DOM generated by innerHTML    
<script>var a = "<p>"; testFunc(a);</script>

DOM generated by .html()    
<script>var a = "<p>"; testFunc(a);</script>

0 个答案:

没有答案