cloneNode來自於Node,用來復制一個相同的節點元素。它有一個布爾類型的參數,如果為true則其子節點也會被拷貝。但在不同瀏覽器中它的表現有些地方卻不同。下面依次列出。
一、IE6/7中radio和checkbox的checked和其它瀏覽器不同
<input type="radio" checked="true" value="1"/>
<input type="checkbox" checked="true" value="1"/>
<script>
var input = document.getElementsByTagName('input')[0];
var clone = input.cloneNode(true);
alert(clone.checked);
</script>
IE6/7 : false
IE8/9/Firefox12/Chrome18/Safar5/Opera11 : true
二、IE6/7/8中 input[type=text] 和textarea 的defaultValue和其它瀏覽器不同
<input value="hello"/>
<script>
var input = document.getElementsByTagName('input')[0];
var clone = input.cloneNode(true);
alert(clone.defaultValue);
</script>
IE6/7/8 : ""
IE9/Firefox12/Chrome18/Safar5/Opera11 : "hello"
三、IE6/7/8中 option 的selected值和其它瀏覽器不同
<select>
<option value="1">1</option>
<option value="2" selected="selected">2</option>
<option value="3">3</option>
</select>
<script>
var option = document.getElementsByTagName('option')[1];
var clone = option.cloneNode(true);
alert(clone.selected);
</script>
IE6/7/8 : false
IE9/Firefox12/Chrome18/Safar5/Opera11 : true
四、IE6/7/8中 script 的text屬性值和其它瀏覽器不同
<script>
var a = 'test';
</script>
<script>
var script = document.getElementsByTagName('script')[0];
var clone = script.cloneNode(true);
alert(clone.text)
</script>
IE6/7/8 : ""
IE9/Firefox12/Chrome18/Safar5/Opera11 : "var a = 'test';"
注:DOM4中cloneNode的參數是可選的,即可以不傳參,此時默認為true。Firefox13將實現。
相關:
https://developer.mozilla.org/En/DOM/Node.cloneNode
