Javascript 脚本执行-innerHTML,jQuery html() document.body.innerHTML=“警报(11);” $(“body”).html(“警报(11);”)

Javascript 脚本执行-innerHTML,jQuery html() document.body.innerHTML=“警报(11);” $(“body”).html(“警报(11);”),javascript,jquery,html,innerhtml,Javascript,Jquery,Html,Innerhtml,不执行innerHTML 执行jQueryhtml() 为什么会这样?试试这个 document.body.innerHTML = "<script>alert(11);</script>" $("body").html("<script>alert(11);</script>") 没有深入探讨jQuery为什么选择这样做的理论问题,jQueryhtml()的行为与本机innerHTML不同。默认情况下,jQuery将在HTML中找到脚本标记,

不执行
innerHTML

执行jQuery
html()

为什么会这样?

试试这个

document.body.innerHTML = "<script>alert(11);</script>"

$("body").html("<script>alert(11);</script>")

没有深入探讨jQuery为什么选择这样做的理论问题,jQuery
html()
的行为与本机
innerHTML
不同。默认情况下,jQuery将在HTML中找到脚本标记,然后异步加载。如果不希望出现这种行为,可以使用将第三个参数设置为
false
,以防止发生这种情况

var x = document.createElement('script');
var y = document.getElementsByTagName('script')[0];
x.text = "alert(11);"
y.parentNode.insertBefore(x, y);

使用innerHTML将阻止脚本按照文档以简单的文字执行,而不涉及细节

var script = document.createElement('script');
script.text = 'alert(11);';
document.body.innerHTML = '';
document.body.appendChild(script);

var script=document.createElement('script');
script.appendChild(document.createTextNode(“警报('11')”));
document.body.appendChild(脚本);
var script = document.createElement('script');
script.text = 'alert(11);';
document.body.innerHTML = '';
document.body.appendChild(script);
<script type="text/javascript">
    var script = document.createElement('script');
    script.appendChild(document.createTextNode("alert('11')"));
    document.body.appendChild(script);
</script>