六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 288|回复: 0

IE6/7/8中使用innerHTML清空元素,其子元素也被清空

[复制链接]

升级  60.33%

119

主题

119

主题

119

主题

举人

Rank: 3Rank: 3

积分
381
 楼主| 发表于 2013-1-29 13:51:32 | 显示全部楼层 |阅读模式
Bug 重现:
<!DOCTYPE HTML><html>    <head>        <meta http-equiv="Content-Type" content="text/html; charset=gbk" />        <title>IE6/7/8中innerHTML "Bug"</title>    </head>    <body><div id="d"><div id="d2">d2 text</div></div><script>var d2 = document.getElementById('d2');var d = document.getElementById('d');d.innerHTML = '';alert(d2.innerHTML);</script>    </body></html> 
测试结果:
IE9 beta/Firefox3.6.10/Safari4/Chrome8 dev/Opera10 : 弹出 "d2 text" 文本
IE6/7/8 :弹出""空字符串

IE6/7/8中使用innerHTML清空父元素div[id=d],子元素div[id=d2]的innerHTML也被清了,子元素被清包括两个部分:
1,dom结构中清掉了
2,内存中innerHTML置为空字符串(d2.innerHTML)

而  2 不应该被置为空字符串的,这是"Bug"。这里的"Bug"加引号,因为innerHTML并非标准的。各个浏览器都支持了,但实现上没有标准。
html5草案已经接纳innerHTML了:http://www.w3.org/TR/html5/embedded-content-0.html#dom-innerhtml

这个问题是 nick 发现的。
 
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表