克隆节点最简单的方式就是使用cloneNode(true)来实现,这是最简单也是最直接的方式。
但是,总有但是,在IE里面,这个cloneNode却有我们不想要的动作。
如果在页面的head中写了一些外链的javascript
<head>
<script src="global.js"></script>
</head>
在这个时候,如果想要克隆整个head节点,那就用head.cloneNode(true);
OK,问题出现了,在IE9中,global.js会被重新加载,如果在global.js中有写一些直接加载就执行不是调用执行的代码,那这些代码又会触发一次。想象一下,如果这个global.js是jquery,那就要执行一次jquery了。
之所以放弃那个函数是以为我找一个更方便的方式来克隆head,而不会导致head里面的js又触发。
var cloneNode = function(node,cloneAll){
if(!node || !node.nodeType){
return node;
}
if(!cloneAll){
return node.cloneNode(false);
}
var range = document.createRange();
range.selectNode(node);
var frag = range.cloneContents();
return frag.firstChild;
};