为什么这个会执行<script>
:
$('#jq_script').html("<script>$('#test').text('test');<\/script>");
但这不行吗?
document.getElementById('js_script').innerHTML = "<script>$('#test').text('test');<\/script>";
你可以看到它的实际效果here http://jsfiddle.net/66Lcg/3/
来自 jQuery 的文档.html() https://api.jquery.com/html/:
该方法使用浏览器的innerHTML属性。某些浏览器可能不会返回完全复制原始文档中 HTML 源的 HTML。例如,如果属性值仅包含字母数字字符,则 Internet Explorer 有时会省略属性值周围的引号。
html
是一个 jQuery 函数。innerHTML
是一个非标准(但得到良好支持)的属性。
如果你看一下代码你会发现.html()
解析脚本,以及eval
s them.
要在源中找到它:
找出html
宣言:https://github.com/jquery/jquery/blob/1.11.0/src/manipulation.js#L564-604 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 https://github.com/jquery/jquery/blob/1.11.0/src/manipulation.js#L684-709
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)