锁定老帖子 主题:又见邪恶的IE
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-09-06
最后修改:2009-09-06
记得上次为了一个空格符号花了很多功夫来研究,最后发现是IE以及firefox等浏览器之间对html的空格” ”解析机制不一样,幸而那个问题已经解决,今天又碰到一个问题。 代码是这样的: <ul id="test"> <!-- comment_begin --> <li>asdf</li> <li>asdf</li> <li>asdf</li> <!-- comment_end --> </ul> 我用document.getElementById(”test”).innerHTML发现IE(IE7)下弹出结果为:
<!-- comment_begin --> <LI>asdf <LI>asdf <LI>asdf <!-- comment_end --></LI>
接着在ff以及chrome下面测试,结果为:
<!-- comment_begin --> <li>asdf</li> <li>asdf</li> <li>asdf</li> <!-- comment_end -->
测试结果表明:IE会把注释节点包进li里面,无语了! 最后只好先“预处理”一下,把注释节点挪出来: var lis = document.getElementsByTagName("li"); for (var i = 0, l = lis.length; i < l; i++) { if (lis[i].lastChild.nodeType === 8) { lis[i].parentNode.appendChild(lis[i].lastChild); } } alert(document.getElementById('test').innerHTML); 不知道各位还有什么好的办法没?
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-09-07
ie中,把所有的</li>去掉,结果还一样。 测试: <!-- comment_begin --> <li>asdf</li> <li>asdf</li> <li>asdf</li> <!-- comment_end --> sas </ul>
输出的 innerHTML为 <!-- comment_begin --> <LI>asdf <LI>asdf <LI>asdf <!-- comment_end -->sas </LI> 证明上面的观点是对的。 同时需要注意的是,li中每行的crlf被当做空白符处理了。
|
|
返回顶楼 | |
发表时间:2009-09-07
<!-- comment_begin -->
<ul id="test"> <li>asdf</li> <li>asdf</li> <li>asdf</li> </ul> <!-- comment_end --> |
|
返回顶楼 | |
发表时间:2009-09-07
kimmking 写道
ie中,把所有的</li>去掉,结果还一样。 测试: <!-- comment_begin --> <li>asdf</li> <li>asdf</li> <li>asdf</li> <!-- comment_end --> sas </ul>
输出的 innerHTML为 <!-- comment_begin --> <LI>asdf <LI>asdf <LI>asdf <!-- comment_end -->sas </LI> 证明上面的观点是对的。 同时需要注意的是,li中每行的crlf被当做空白符处理了。
呵呵,邪恶的IE,解析页面的机制和其他的都不一样 |
|
返回顶楼 | |
浏览 3060 次