`
clone168
  • 浏览: 7423 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

又见邪恶的IE

阅读更多

 


记得上次为了一个空格符号花了很多功夫来研究,最后发现是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);

不知道各位还有什么好的办法没?

 

 

 

 

分享到:
评论
3 楼 clone168 2009-09-07  
<div class="quote_title">kimmking 写道</div>
<div class="quote_div">
<p>ie中,把所有的&lt;/li&gt;去掉,结果还一样。<br>说明ie中li是作为一个非闭合的标签来用的。<br>每个li的作用范围是从本li到下个li,如果是最后一个li,一直到/ul才结束。</p>
<p>测试:<br>&lt;ul id="test"&gt;</p>
<p>  &lt;!-- comment_begin --&gt;</p>
<p>  &lt;li&gt;asdf&lt;/li&gt;</p>
<p>  &lt;li&gt;asdf&lt;/li&gt;</p>
<p>  &lt;li&gt;asdf&lt;/li&gt;</p>
<p>  &lt;!-- comment_end --&gt; sas</p>
<p>&lt;/ul&gt;</p>
<p> </p>
<p>输出的 innerHTML为</p>
<p><span><span>&lt;!-- comment_begin --&gt;   </span></span></p>
<p><span>&lt;LI&gt;asdf   </span></p>
<p><span>&lt;LI&gt;asdf   </span></p>
<p><span>&lt;LI&gt;asdf &lt;!-- comment_end --&gt;sas &lt;/LI&gt;  </span></p>
<p>证明上面的观点是对的。</p>
<p>同时需要注意的是,li中每行的crlf被当做空白符处理了。</p>
<p> </p>
<p> </p>
</div>
<p>呵呵,邪恶的IE,解析页面的机制和其他的都不一样</p>
2 楼 lw223 2009-09-07  
<!-- comment_begin -->
<ul id="test">

  <li>asdf</li>

  <li>asdf</li>

  <li>asdf</li>

</ul>

<!-- comment_end -->
1 楼 kimmking 2009-09-07  
<p>ie中,把所有的&lt;/li&gt;去掉,结果还一样。<br>说明ie中li是作为一个非闭合的标签来用的。<br>每个li的作用范围是从本li到下个li,如果是最后一个li,一直到/ul才结束。</p>
<p>测试:<br>&lt;ul id="test"&gt;</p>
<p>  &lt;!-- comment_begin --&gt;</p>
<p>  &lt;li&gt;asdf&lt;/li&gt;</p>
<p>  &lt;li&gt;asdf&lt;/li&gt;</p>
<p>  &lt;li&gt;asdf&lt;/li&gt;</p>
<p>  &lt;!-- comment_end --&gt; sas</p>
<p>&lt;/ul&gt;</p>
<p> </p>
<p>输出的 innerHTML为</p>
<p><span><span>&lt;!-- comment_begin --&gt;   </span></span></p>
<p><span>&lt;LI&gt;asdf   </span></p>
<p><span>&lt;LI&gt;asdf   </span></p>
<p><span>&lt;LI&gt;asdf &lt;!-- comment_end --&gt;sas &lt;/LI&gt;  </span></p>
<p>证明上面的观点是对的。</p>
<p>同时需要注意的是,li中每行的crlf被当做空白符处理了。</p>
<p> </p>
<p> </p>
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    IE4.0 IE5.0 IE5.5 IE6.0集合

    标题 "IE4.0 IE5.0 IE5.5 IE6.0集合" 提供了这个压缩包包含的Microsoft Internet Explorer(简称IE)的不同版本,这些版本分别是4.0、5.0、5.5以及6.0。这些浏览器是微软在20世纪90年代末到21世纪初推出的,它们在...

    解决各种IE兼容问题_IE6_IE7_IE8_IE9_IE10

    由于不同版本的Internet Explorer(IE6、IE7、IE8、IE9、IE10)对Web标准的支持程度不一,这导致在这些浏览器中运行同一段代码可能会出现差异。幸运的是,有一些技术手段可以帮助我们解决这些问题。 首先,一个关键...

    一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10

    在网站开发中不免因为各种兼容问题苦恼,针对兼容问题,其实IE给出了解决方案Google也给出了解决方案 百度也应用了这种方案去解决IE的兼容问题 百度源代码如下 &lt;!Doctype html&gt; ...

    [删除] IE6,IE7,IE8,IE9(绿色单文件版本,分2个压缩包)1

    IE6,IE7,IE8,IE9绿色版(单个exe文件,不与系统中浏览器冲突) 现在大多数系统都已经用IE了,对于开发人员需要测试与IE的兼容性找一款IE的操作系统比较困难. 网上找到的都说用IETester,但我实际测了并不能百分百还原IE...

    ieTest ie6 ie7 ie8 ie9 ie5.5

    3. **渲染引擎差异**:IE5.5至IE9使用了不同的渲染引擎,如Trident(又称MSHTML),每个版本的引擎在解析网页内容时都有其独特的理解和行为。例如,IE6对CSS2的支持有限,而IE7引入了对CSS2.1的部分支持,IE8则开始...

    IE11升级IE8-IE11离线安装

    **IE11浏览器升级至IE8-IE11离线安装指南** 在Windows 7操作系统中,Internet Explorer(简称IE)8是默认的浏览器版本,然而随着时间的推移,为了获得更好的安全性和功能,用户通常会选择升级到更高版本,如IE11。...

    IE11完成离线安装包

    IE11完成离线安装包IE11完成离线安装包IE11完成离线安装包IE11完成离线安装包IE11完成离线安装包IE11完成离线安装包IE11完成离线安装包IE11完成离线安装包IE11完成离线安装包IE11完成离线安装包IE11完成离线安装包IE...

    IE6.0sp1-KB823353-x86-CHS.rar_IE6.0S_IE6.0升级包_IE6.X_ie6 X86_ie6.

    标签中的“ie6.0s”可能是指IE6的某个特定版本或服务包,“ie6.0升级包”明确了这是一个针对IE6的升级程序,“ie6.x”可能是指包括IE6所有版本的统称,“ie6_x86”强调了这适用于32位系统,“ie6.0sp1”则直接对应了...

    IE8升IE10补丁.rar

    【标题】"IE8升IE10补丁.rar"是一个包含Windows 7系统从Internet Explorer 8(IE8)升级到Internet Explorer 10(IE10)所需更新的压缩包文件。这个补丁主要是为了解决在内网环境下无法正常升级IE浏览器的问题。 ...

    IETest IE5-IE8不同版本的网页测试工具

    【IETest】是一款强大的网页兼容性测试工具,专门针对Internet Explorer浏览器的不同版本,包括IE5、IE6、IE7和IE8进行测试。在网页设计和开发过程中,确保网站在不同IE版本上的表现一致至关重要,因为每个版本的IE...

    IE Tab Chrome 插件,切换IE内核

    2. **兼容性**: IE Tab 支持多种IE版本,如IE5、IE6、IE7、IE8、IE9、IE10和IE11,满足不同网站的需求。 3. **书签同步**: 与Chrome的书签同步功能兼容,方便用户管理网页链接。 4. **隐私保护**: 在使用IE Tab时,...

    IE8升级到IE9相关补丁及安装包

    在Windows 7操作系统中,将Internet Explorer 8(简称IE8)升级到Internet Explorer 9(简称IE9)是一项常见的任务,特别是在为了提高浏览器的安全性和兼容性时。本指南将详细阐述这一升级过程中的关键步骤、所需...

    IE6绿色版(可与IE7、IE8共存)

    而对很多像我这样的人来说,新鲜美观的IE7、IE8又舍不得卸载,哪叫麻烦呀…… 注意:最好不要在IE6下进行任何设置,特别是别进入“Internet选项”,否则会有一定概率导致IE7不能打开,这时可以重装IE7解决

    IE10及IE11安装所需更新包

    标题 "IE10及IE11安装所需更新包" 指的是为了成功安装和运行Internet Explorer 10 (IE10) 和 Internet Explorer 11 (IE11) 在Windows 7 Service Pack 1 (SP1)系统上所需的一系列更新文件。这些更新文件对于确保操作...

    IE11驱动ie_driver11

    标题中的“IE11驱动ie_driver11”指的是用于自动化测试的Internet Explorer 11浏览器驱动程序,这个程序主要用于与Selenium WebDriver一起工作。Selenium是一个开源的Web应用程序测试框架,它允许程序员通过多种编程...

    winXP系统IE6升级IE8

    在Windows XP系统中,Internet Explorer 6(简称IE6)是该操作系统默认的浏览器版本。然而,随着时间的推移,IE6的安全性和功能已经无法满足现代互联网的需求,因此升级到更高级别的版本如IE8变得至关重要。IE8提供...

    win7 下IE8修复器 IE8浏览器修复 IE8修复工具

    win7 下IE8修复器 IE8浏览器修复 IE8修复工具 相信狠多朋友都遇到,IE8能打开在本页面显示的超级链接,无法打开需要再新窗口显示的连接,要么显示成一个空白标签页页面,或者显示正在连接直至IE8彻底崩溃掉。 找了...

    降级IE11、IE10、IE9至IE8的cmd命令

    降级IE11、IE10、IE9至IE8的cmd命令,请自行复制到CMD黑窗口

    ie6windows绿色免安装完美兼容IE8

    标题中的“ie6windows绿色免安装完美兼容IE8”指的是一个特别版本的Internet Explorer 6 (IE6)浏览器,该版本被设计为无需正式安装即可使用的绿色版。在Windows操作系统中,绿色版软件通常指的是那些不需要通过传统...

    集合了IE6、IE7、IE8、IE9核心,可以单独测试不同IE版本

    标题中的“集合了IE6、IE7、IE8、IE9核心”指的是一个软件或工具,它包含了微软Internet Explorer浏览器从版本6到9的各种渲染引擎。这些不同的版本代表了浏览器在不同时间的技术状态,每一代都有其独特的特性和兼容...

Global site tag (gtag.js) - Google Analytics