Js 获取、判断浏览器版本信息的简单方法


Posted in Javascript onAugust 08, 2016

Navigator 对象包含有关浏览器的信息:

•appCodeName -- 浏览器代码名的字符串表示

•appName -- 官方浏览器名的字符串表示

•appVersion -- 浏览器版本信息的字符串表示

•cookieEnabled -- 如果启用cookie返回true,否则返回false

•javaEnabled -- 如果启用java返回true,否则返回false

•platform -- 浏览器所在计算机平台的字符串表示

•plugins -- 安装在浏览器中的插件数组

•taintEnabled -- 如果启用了数据污点返回true,否则返回false

•userAgent -- 用户代理头的字符串表示

navigator中最重要的是userAgent属性,返回包含浏览器版本等信息的字符串;

cookieEnabled也很重要,使用它可以判断用户浏览器是否开启cookie。

javaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断(版本只能通过分析userAgent获得);

只有在浏览器类型 和 浏览器版本都判断出后,才能处理兼容性问题。

1、通过userAgent中的特征来判断浏览器类型及版本(常用、保险做法)

function getBrowserInfo() {
var Sys = {};

var ua = navigator.userAgent.toLowerCase();

var s; (s = ua.match(/msie ([\d.]+)/)) ? Sys.ie = s[1] :

(s = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = s[1] :

(s = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = s[1] :

(s = ua.match(/opera.([\d.]+)/)) ? Sys.opera = s[1] :

(s = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = s[1] : 0;


if(Sys.ie) {


return 'IE: ' + Sys.ie;

}

if(Sys.firefox) {


return 'Firefox: ' + Sys.firefox;

}

if(Sys.chrome) {


return 'Chrome: ' + Sys.chrome;

}

if(Sys.opera) {


return 'Opera: ' + Sys.opera;

}

if(Sys.safari) {


return 'Safari: ' + Sys.safari;

}
} 
var browser = getBrowserInfo() ;
var verinfo = (browser+"").replace(/[^0-9.]/ig, "");   // 版本号

注意:一些浏览器的userAgent属性值中Chrome、Safari皆有,是因为Chrome的userAgent还包含了Safari的特征,因此这可能是Chrome可运行Safari浏览器应用的基础的原因。

2、通过各浏览器独有特性来分辨浏览器(需注意:这些特征可能会随浏览器版本而变化,或是其他浏览器也就可能跟着加入该特性,从而导致判断失败)

IE:只有IE支持创建ActiveX控件,所以ActiveXObject函数是其他浏览器没有的。只需判断window对象存在 ActiveXObject函数,就明确判断出当前浏览器是IE。

Firefox:FF中的DOM元素都有一个getBoxObjectFor函数,用来获取该DOM元素的位置和大小。这是Firefox独有的,判断它即可分辨当前浏览器是Firefox。(IE对应的中是 getBoundingClientRect函数)

Opera:Opera提供了专门的浏览器标志-- window.opera属性。

Safari:openDatabase函数是其他浏览器没有的,可做为判断Safari的标志。

Chrome:和FF一样都一个MessageEvent函数,但Chrome并没有FF的getBoxObjectFor 函数,根据这两个条件可判断Chrome浏览器。

var Sys = {};
var ua = navigator.userAgent.toLowerCase();
if(window.ActiveXObject) {
Sys.ie = ua.match(/msie ([\d.]+)/)[1]
}else if(document.getBoxObjectFor) {

Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1]
}else if(window.MessageEvent && !document.getBoxObjectFor) {

Sys.chrome = ua.match(/chrome\/([\d.]+)/)[1]
}else if(window.opera) {

Sys.opera = ua.match(/opera.([\d.]+)/)[1]
}else if(window.openDatabase) {

Sys.safari = ua.match(/version\/([\d.]+)/)[1];
}

水平有限,文中错误不妥在所难免,欢迎批评指正建议评论。文章将不定期修改完善斧正。谢谢!

以上这篇Js 获取、判断浏览器版本信息的简单方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
Sep 12 Javascript
输入密码检测大写是否锁定js实现代码
Dec 03 Javascript
5秒后跳转效果(setInterval/SetTimeOut)
May 03 Javascript
jQuery实现长按按钮触发事件的方法
Feb 02 Javascript
JS实现的文字与图片定时切换效果代码
Oct 06 Javascript
angular源码学习第一篇 setupModuleLoader方法
Oct 20 Javascript
jQuery制作图片旋转效果
Feb 02 Javascript
javascript实现滑动解锁功能
Mar 22 Javascript
详解angularJS自定义指令间的相互交互
Jul 05 Javascript
React Native中的RefreshContorl下拉刷新使用
Oct 09 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
Aug 30 Javascript
Vue Echarts实现可视化世界地图代码实例
May 07 Javascript
基于BootStrap实现局部刷新分页实例代码
Aug 08 #Javascript
js智能获取浏览器版本UA信息的方法
Aug 08 #Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
Aug 08 #Javascript
一个超简单的jQuery回调函数例子(分享)
Aug 08 #Javascript
Bootstrap Table服务器分页与在线编辑应用总结
Aug 08 #Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
Aug 08 #Javascript
BootStrap Table 分页后重新搜索问题的解决办法
Aug 08 #Javascript
You might like
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
PHP生成plist数据的方法
2015/06/16 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
详解Javacript和AngularJS中的Promises
2016/02/09 Javascript
react-native android状态栏的实现
2018/06/15 Javascript
jQuery超简单遮罩层实现方法示例
2018/09/06 jQuery
vue-cli的build的文件夹下没有dev-server.js文件配置mock数据的方法
2019/04/17 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
JavaScript多种图形实现代码实例
2020/06/28 Javascript
vue+elementUI中表格高亮或字体颜色改变操作
2020/11/02 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
Python base64编码解码实例
2015/06/21 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
使用Python 统计高频字数的方法
2019/01/31 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
python实现简单成绩录入系统
2019/09/19 Python
爬虫代理池Python3WebSpider源代码测试过程解析
2019/12/20 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
详解opencv中画圆circle函数和椭圆ellipse函数
2019/12/27 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
python 实现批量图片识别并翻译
2020/11/02 Python
PHP如何对用户密码进行加密
2014/07/31 面试题
毕业求职自荐信格式是什么
2013/11/19 职场文书
初中校园广播稿
2014/02/02 职场文书
《记金华的双龙洞》教学反思
2014/04/19 职场文书
班级管理经验交流材料
2015/11/02 职场文书
分布式锁为什么要选择Zookeeper而不是Redis?看完这篇你就明白了
2021/05/21 Redis