首页 > 代码库 > 浏览器差异总结,可以用此判断浏览器版本(转)

浏览器差异总结,可以用此判断浏览器版本(转)

总结一下浏览器间的差异如下:

1.safari下,typeof nodeList的类型为function

2.在大多数游览器中checkbox的value默认为on,唯有chrome返回空字符串

3.某些浏览器不支持w3c的cssFloat属性来获取浮动样式,而是使用独家的styleFloat属性

4.IE678的getElementByTagName(“*”)无法遍历出Object元素下的param元素(bug)

5.IE678不能通过innerHTML生成link,style,script节点(bug)

6.IE6789由于无法识别HTML5的新标签,因此复制这些新元素时也不正确(bug)

7.在标准浏览器下,cloneNode(true)是不复制事件的,以防止循环引用无法释放内存,而IE却没有考虑到这一点,把事件复制了(inconformity)

8.IE67不支持display:inline-block,需要通过hasLayout方法去模拟(bug)

9.透明度

10.标准浏览器只有在table与tr之间不存在tbody的情况下添加tbody,而IE678则笨多了,即在里面为空也乱加tbody

11.mouseenter,mouseleave只有IE支持,但它们比mouseover mouseout性能好,因此各库都有模拟的实现

12.innerText火狐不支持,它使用的是textContent

自 navigator 对象的信息具有误导性,不应该被用于检测浏览器版本,这是因为:
navigator 数据可被浏览器使用者更改。
浏览器无法报告晚于浏览器发布的新操作系统

所以很多时候,我们可以通过这些浏览器的兼容特性来判断是什么浏览器。

浏览器检测

由于 navigator 可误导浏览器检测,使用对象检测可用来嗅探不同的浏览器。
由于不同的浏览器支持不同的对象,您可以使用对象来检测浏览器。例如,由于只有 Opera 支持属性 "window.opera",您可以据此识别出 Opera。
例子:if (window.opera) {...some action...}

浏览器差异总结,可以用此判断浏览器版本(转)