为什么html()执行JavaScript,但innerHTML不执行?

为什么这会执行

 $('#jq_script').html("$('#test').text('test');"); 

但这不是吗?

 document.getElementById('js_script').innerHTML = "$('#test').text('test');"; 

你可以在这里看到它

来自jQuery的关于.html()的文档:

此方法使用浏览器的innerHTML属性 。 某些浏览器可能不会返回完全复制原始文档中HTML源的HTML。 例如,如果Internet Explorer仅包含字母数字字符,则有时会忽略属性值周围的引号。

html是一个jQuery函数。 innerHTML是一种非标准(但受到良好支持)的属性。

如果查看代码,您将看到.html()解析脚本,并对它们进行eval


要在源中找到它:

找到html声明: https : //github.com/jquery/jquery/blob/1.11.0/src/manipulation.js#L564-604

看它确实.append 。 依次调用DomManip[ulate]来解析和eval脚本。

DomManip[ulate]相关位: https : //github.com/jquery/jquery/blob/1.11.0/src/manipulation.js#L684-709