大海Online的博客

Looking for Interest

insertBefore

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