JavaScript高级程序设计之客户端检测
Posted 木森焱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript高级程序设计之客户端检测相关的知识,希望对你有一定的参考价值。
浏览器检测,是个很让人头痛但又必须要考虑的一个问题。毕竟市面上的浏览器厂商众多,虽然有些标准化的东西约束着他们,但是有些东西,他们还是各自按自己的意愿来。这其中以IE浏览器最为突出,它几乎可以被称之为万恶之源。
浏览器检测的方法有很多,这里介绍的可能并不是全部,但基本上都是比较常用的方法。下边我就来详细介绍一下高设上提供的浏览器检测的方法。
能力检测
能力检测比较简单,就是判断浏览器支不支持这个方法。例:if(Object.assign){ ...... }。这种方法最简单,也最常用,但缺点也很明显,判断不是特别的严谨。因为他只判断了assign存不存在,但不确定它是什么,所以下边介绍一个更可靠的能力检测,例:if(typeof Object.assign === "function"){.......}。这个就要比前边的能力检测要可靠的多。它通过typeof明确确定了assign的类型,assign是属性也符合条件的情况也就不会出现了。
怪癖检测
怪癖检测是通过寻找浏览器的bug,并通过该bug来检测浏览器的一种方法。不过这种方法个人不是特别推荐,因为浏览器的bug在浏览器升级后,也许会被修复,这时这种检测方法就变得不是那么靠。当然IE浏览器除外。
用户代理检测
用户代理检测通过浏览器的用户代理字符串来进行检测。用户代理字符串可以通过navigator.useragent获取。这种方法看上去很是可靠的样子,但其实是最差的一种检测方式。要说具体原因的话,就不得不提浏览器那段黑暗的历史,这里就不过多的解释了。虽然这种方法很差,但如果前两种方式都不行的时候,用这种方法还是能够解决检测问题的,只不过就是麻烦了一点。
以上是关于JavaScript高级程序设计之客户端检测的主要内容,如果未能解决你的问题,请参考以下文章
《JavaScript高级程序设计》Chapter 9 客户端检测