为什么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