insertBefore
经常看到这样的写法:
if (head.firstChild) {
head.insertBefore(node, head.firstChild);
} else {
head.appendChild(node);
}
其实可以改为:
head.insertBefore(node, head.firstChild);
- insertBefore的第二参数为空时, 相当于appendChild
- head.firstChild为空时, insertBefore等同于appendChild
- jquery中的getScript时, 就是只有一句 insertBefore
另外:
- IE6,IE7,IE8 下的head默认不是空的, 有一个文本空节点, head.childNodes.length === 1
- IE9下面时, 如有<head></head>, 为1个文本节点, 内容为一个回车符
- IE9下面时, 如没有head标签, 与chrome一致, 节点数为0
- chrome时, <head></head>与没有head标签,均一致, 节点数为0