[英]Why does html() execute JavaScript, but innerHTML doesn't?
為什么這會執行<script>
:
$('#jq_script').html("<script>$('#test').text('test');<\/script>");
但這不是嗎?
document.getElementById('js_script').innerHTML = "<script>$('#test').text('test');<\/script>";
你可以在這里看到它
來自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
。 append
依次調用DomManip[ulate]
將解析和eval
腳本。
DomManip[ulate]
相關位: https : //github.com/jquery/jquery/blob/1.11.0/src/manipulation.js#L684-709
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.