总结: 关于标签的type属性
我猜浏览器自身会为每个类型的标签节点存放默认type属性,在执行渲染过程中会自动附加默认type属性,所以现在HTML编码规范提倡的 style/script 标签省去默认type属性。
但因此容易忽略两个问题,跟大家提醒下。
1. 通过JS生成的节点,需手动设置其默认属性
做个实验
在IE下检测style节点的styleSheet
<style id="test01"></style>
<script>
var styleNode = document.getElementById("test01");
alert(styleNode.styleSheet);
var styleNode2 = document.createElement('style');
alert(styleNode2.styleSheet);
</script>
结果
styleNode1.styleSheet == object
styleNode2.styleSheet == null
所以需要手动设置:
styleNode2.setAttribute("type","text/css");
---------------------------
2. 有的标签的默认属性容易产生误导
比如我们熟悉的button,其默认type属性为submit。
之前我以为属性为button,导致表单中出现很严重的问题,比如回车提交、重复提交等。