簡體   English   中英

為什么html()執行JavaScript,但innerHTML不執行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM