浏览器检测,是个很让人头痛但又必须要考虑的一个问题。毕竟市面上的浏览器厂商众多,虽然有些标准化的东西约束着他们,但是有些东西,他们还是各自按自己的意愿来。这其中以IE浏览器最为突出,它几乎可以被称之为万恶之源。

浏览器检测的方法有很多,这里介绍的可能并不是全部,但基本上都是比较常用的方法。下边我就来详细介绍一下高设上提供的浏览器检测的方法。

能力检测

能力检测比较简单,就是判断浏览器支不支持这个方法。例:if(Object.assign){ ...... }。这种方法最简单,也最常用,但缺点也很明显,判断不是特别的严谨。因为他只判断了assign存不存在,但不确定它是什么,所以下边介绍一个更可靠的能力检测,例:if(typeof Object.assign === "function"){.......}。这个就要比前边的能力检测要可靠的多。它通过typeof明确确定了assign的类型,assign是属性也符合条件的情况也就不会出现了。

怪癖检测

怪癖检测是通过寻找浏览器的bug,并通过该bug来检测浏览器的一种方法。不过这种方法个人不是特别推荐,因为浏览器的bug在浏览器升级后,也许会被修复,这时这种检测方法就变得不是那么靠。当然IE浏览器除外。

用户代理检测

用户代理检测通过浏览器的用户代理字符串来进行检测。用户代理字符串可以通过navigator.useragent获取。这种方法看上去很是可靠的样子,但其实是最差的一种检测方式。要说具体原因的话,就不得不提浏览器那段黑暗的历史,这里就不过多的解释了。虽然这种方法很差,但如果前两种方式都不行的时候,用这种方法还是能够解决检测问题的,只不过就是麻烦了一点。

转载于:https://www.cnblogs.com/wangyinqian/p/8022591.html

JavaScript高级程序设计之客户端检测相关推荐

  1. JavaScript高级程序设计之客户端检测之怪癖检测第9.2讲笔记

    与能力检测类似,怪癖检测(quirks detection)的目标是识别浏览器的特殊行为.但与能力检测确 认浏览器支持什么能力不同,怪癖检测是想要知道浏览器存在什么缺陷( "怪癖" ...

  2. 读javascript高级程序设计-目录

    javascript高级编程读书笔记系列,也是本砖头书.感觉js是一种很好上手的语言,不过本书细细读来发现了很多之前不了解的细节,受益良多.<br/> 本笔记是为了方便日后查阅,仅作学习交 ...

  3. 前端红宝书《JavaScript高级程序设计》核心知识总结

    此文是对<JavaScript 高级程序设计>一书难点的总结,也是笔者在看了 3 遍之后的一些梳理和感想,希望能借此巩固js的基础和对一些核心概念有更深入的了解. 摘要 JS基本的数据类型 ...

  4. 《JavaScript高级程序设计》(第2版)上市

      本书是技术畅销书<JavaScript高级程序设计> 的第2版,几乎全部更新.重写 了上一版的内容,融入了作者近几年来奋战在前端开发一线的宝贵经验 , 是学习和提高JavaScript ...

  5. 《JavaScript高级程序设计》红宝书第二遍阅读(动手实践)

    <JavaScript高级程序设计>红宝书第二遍阅读(动手实践) 第1章--什么是JavaScript 第2章--HTML中的JavaScript 第3章--语言基础 第4章--变量.作用 ...

  6. 《JavaScript高级程序设计》红宝书第一遍阅读(了解概念)

    <JavaScript高级程序设计>红宝书第一遍阅读(了解概念) 第1章--什么是JavaScript 第2章--HTML中的JavaScript 第3章--语言基础 第4章--变量.作用 ...

  7. 《JavaScript高级程序设计》读书笔记 【8章~】【持更】

    文章目录 上一篇:<JavaScript高级程序设计>读书笔记 [1~7章] 8. BOM 8.1. window对象 窗口位置 窗口大小 打开窗口 间歇调用与超时调用 系统对话框 8.2 ...

  8. JavaScript高级程序设计第三版.CHM【带实例】

    从驱动全球商业.贸易及管理领域不计其数的复杂应用程序的角度来看,说 JavaScript 已经成为当今世界上最流行的编程语言一点儿都不为过. JavaScript 是一种非常松散的面向对象语言,也是 ...

  9. javascript高级程序设计学习笔记

    javascript高级程序设计,当枕头书已经好久了~zz  现在觉得自己在js的开发上遇到了一些瓶颈,归根究底还是基础太薄弱,所以重新刷一遍js高程希望有更新的认识. 一.javascript简介 ...

最新文章

  1. 线性排序算法分析总结
  2. 【windwos bat】批量把windows下的wav文件转为raw文件
  3. 唐骏管理学之感动员工
  4. python工作-python工作中总结
  5. ompl_interface/OMPLPlanner
  6. SAP ERP业务优化之非计划运输成本核算
  7. 问题 1462: [蓝桥杯][基础练习VIP]Huffuman树
  8. linux刻录win10u盘_手把手教你装系统之【制作官方win10安装U盘】
  9. 指针大小为什么与类型无关?
  10. IDEA如何查看JDK源码
  11. fiddler抓包手机app数据(手机连接WiFi)
  12. 一款二进制文件查看器
  13. java在线生成word文档_java导出word之FreeMarker生成word文档
  14. 怎么将几张pdf合并成一张_怎么把多个PDF合并成一个PDF?分享合并PDF文件最简单的方法...
  15. vmware 虚拟机nat连接,局域网访问
  16. 利用Windows的IFELanguage接口,取得拼音笔划数其实很简单!
  17. 基于matlab的RS编译码仿真,从底层原理分析RS编译码的实现过程
  18. 【宏】【DEBUG宏】
  19. 设计模式—单例模式(饿汉式、懒汉式)
  20. string = alias(String)

热门文章

  1. 微信小程序云开发分页刷新获取数据
  2. LVQ,Learning Vector Quantization,学习向量量化
  3. Ajax/JavaScript脚本大全,JS脚本大全
  4. Auto Encoder再学习
  5. [深度学习TF2][RNN-LSTM]文本情感分析包含(数据预处理-训练-预测)
  6. 优化在深度学习中的挑战
  7. extend()与append()的区别
  8. 基于稀疏矩阵的k近邻(KNN)实现
  9. android studio抛出,Android Studio中新的项目不能运行,抛出错误(Android Studio new pr
  10. 《汇编语言》王爽—第八章实验七详解