所有現代瀏覽器都支持 W3C DOM 規範。不過,瀏覽器之間是有差異的。重要的區別有兩點:
- 加載 HTML 的方式
- 處理空白和換行的方式
本文主要講解各瀏覽器處理空白和換行的方式。
IE6、7、8
忽略標籤之間的空白和換行字符。
其它瀏覽器
對於標籤之間的空白和換行字符會作爲文本節點來處理。
示例代碼
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>HTML5</title> <script> window.οnlοad=function(){ alert(document.body.childNodes.length); } </script> </head> <body> <p>鬼眼邪神的博客,http://cyg7561.blog.163.com/</p> <p>鬼眼邪神的博客,http://cyg7561.blog.163.com/</p> <p>鬼眼邪神的博客,http://cyg7561.blog.163.com/</p> </body> </html>
在IE6、7、8中,彈框中顯示的是3。在其它瀏覽器中,彈框中顯示的是7。
解決方法
如需忽略元素節點之間的空文本節點,需要檢查節點類型。元素節點的類型是1。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>HTML5</title> <script> window.οnlοad=function(){ var sum=0; for (var i=0;i<document.body.childNodes.length;i++){ if (document.body.childNodes[i].nodeType==1){ sum++; } } alert(sum); } </script> </head> <body> <p>鬼眼邪神的博客,<a href="http://cyg7561.blog.163.com/" title="鬼眼邪神的博客">http://cyg7561.blog.163.com/</a></p> <p>鬼眼邪神的博客,<a href="http://cyg7561.blog.163.com/" title="鬼眼邪神的博客">http://cyg7561.blog.163.com/</a></p> <p>鬼眼邪神的博客,<a href="http://cyg7561.blog.163.com/" title="鬼眼邪神的博客">http://cyg7561.blog.163.com/</a></p> </body> </html>