众所周知,innerHTML属性是在IE4引入的,很多浏览器也支持它很长一段时间,HTML5的到来才使它得以标准化。
innerHTML在MDN上的解释为:
The Element.innerHTML
property sets or gets the HTML syntax describing the element's descendants.
也就是可以设置和获取HTML语法表示的元素后代,获取就不多说了,但是设置可能会引发安全问题:
element.innerHTML="<script>console.log('hello')</script>";
即在元素后代中插入脚本,这个可能会给类似XSS攻击“留了一手”,像上面的例子其实并不会执行嵌入的js脚本,MDN上也指出“HTML5 specifies that a <script>
tag inserted via innerHTML
should not execute.”。
所以,业界并不推荐用innerHTML插入文本,而用node.textContent替代。