HTML5之插入标记innerHTML
处于安全等方面的考虑:
- 通过
innerHTML
直接插入<script>
元素在大多数浏览器中并不会执行其中的脚本; - 通过
innerHTML
直接插入<style>
在一些浏览器中无效。
在这些浏览器中,这两个元素被认为是”无作用域的元素“(不会在页面上显示的元素),如果通过innerHTML插入的字符串开头就是”无作用域的元素“,那么这些浏览器就会解决这个字符串前先删除该元素。解决的方法:在这些”无作用域的元素“前临时增加一个有作用域的元素,之后再将临时元素删除,同时为脚本元素设置defer特性。
- 部分元素不支持
innerHTML
; - 冷知识:firefox浏览器在XHTML文档中设置
innerHTML
是要求XHTML必须严格符合要求,否则,innerHTML
将会静默地失败; - 最佳实践:使用
innerHTML
插入代码片时,请通过特定的方法过滤掉script
标签(可能引入恶意脚本)。