各浏览器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将实现。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值