• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
小不点儿大的由我做主!
流年似水!
博客园    首页    新随笔    联系   管理    订阅  订阅

因浏览器而异的空白结点

先来看下面的例子:

<dl id="dll">
<dt><title</dt>
<dd>defintion</dd>
</dl>
分别在IE浏览器,Firefox浏览器下执行下面皂代码,作用是显示<dl>标记子结点的数目。
var dll=document.getElementById("dll");
alert(dll.childNodes.length);
结果是:在IE浏览器下的招行结果:2;在Firefox下执行的结果为:5.原因是两种浏览器对这段仅是由空格、换行、制表符这些特殊的文本字符组成的文本会产生分歧。IE会忽略这些结点,而Firefox则认可这些结点。分歧产生的原因是Firefox浏览器认为在<dl>和<dt>,</dt> 和<dd>,</dd>和</dl>之间的空白文本也是一个单独的结点,所以最后的childNodes.length的结果是5.为了解决这个问题可以改写程序为:
<dl id="dll"
><dt>title</dt
><dd>definition</dd
></dl>
但这种写法可读性差。最好的解决办法就是先删除其中的空白结点:
var dll=document.getElementById("dll");
cleanWhitespace(dll);
alert(dll.childNodes.length);
这样在Firefox下执行的结果就为2了。

posted @ 2008-09-05 15:11  小不点儿大的由我做主!  阅读(130)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3