因浏览器而异的空白结点
先来看下面的例子:
<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了。
 
                    
                 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号