var all=document.getElementsByTagName("*") //获取整个页面的标签元素
alert(all.length); //返回all长度,即标签元素个数
好了,下面就是各大浏览器各显独特的时候了:
你会发现IE返回的元素个数总比firefox和chrome浏览器多,且多出的个数还不是固定的,原因如下:
1)IE中(本人用IE8测试),会把网页头部的<!DOCTYPE>也认为是一个标签,且为数组中第一个标签,用.tagName查看其标签名居然为“!”,没错就是一感叹号!而其他两个浏览器则不会识别为一个标签。当把开头的<!DOCTYPE>删掉时,则IE也不识别。所以一旦存在<!DOCTYPE>,IE返回的总标签个数+1。
2)当网页文档中没有定义<title>标签时,IE依然会自动默认的添加该标签,可以用for循环遍历所有标签.tagName来查看各标签,你会在IE中诡异的看到有<title>标签,即使你网 页文档中没有。故再+1。
3)当一些成对出现的标签如<div></div>等,当去掉后半部分的</div>时,依然识别为一个标签,当去掉前半部分,只保留后半部分的</div>时,firefox和chrome则不再识别为一个标签,而IE依然认为后半部分</div>依然是一个标签元素。当然了,本身就不成对出现的标记如<br/>,<hr/><img/>等标签除外。 故IE中标签多出的个数就由文档中的不合格的后半部分标签个数为准。故+n。
综上就是IE中获取所有标签的个数总比其他浏览器多的原因。肯定还有不足,IE还有其余很多版本,因本人电脑硬件原因,在此就不一一安装测试。网广大同行批评,指正,补充,谢。