各浏览器cloneNode方法的部分实现差异

 

cloneNode来自于Node,用来复制一个相同的节点元素。它有一个布尔类型的参数,如果为true则其子节点也会被拷贝。但在不同浏览器中它的表现有些地方却不同。下面依次列出。

 

一、IE6/7中radio和checkbox的checked和其它浏览器不同

1
2
3
4
5
6
7
<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和其它浏览器不同

1
2
3
4
5
6
<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值和其它浏览器不同

1
2
3
4
5
6
7
8
9
10
<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属性值和其它浏览器不同

1
2
3
4
5
6
7
8
<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

http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-3A0ED0A4

https://developer.mozilla.org/en/DOM/HTMLInputElement

posted on   snandy  阅读(3371)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
< 2012年5月 >
29 30 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

统计

点击右上角即可分享
微信分享提示