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 相关文章推荐
利用WebBrowser彻底解决Web打印问题(包括后台打印)
Jun 22 Javascript
用Javascript评估用户输入密码的强度(Knockout版)
Nov 30 Javascript
ActiveX控件与Javascript之间的交互示例
Jun 04 Javascript
基于javascript实现右下角浮动广告效果
Jan 08 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
Feb 10 Javascript
解决JS外部文件中文注释出现乱码问题
Jul 09 Javascript
JavaScript对JSON数据进行排序和搜索
Jul 24 Javascript
想用好React的你必须要知道的一些事情
Jul 24 Javascript
jQuery 利用ztree实现树形表格的实例代码
Sep 27 jQuery
小程序图片长按识别功能的实现方法
Aug 30 Javascript
JS实现进度条动态加载特效
Mar 25 Javascript
JS如何操作DOM基于表格动态展示数据
Oct 15 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
PHP Echo字符串的连接格式
2016/03/07 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
greybox——不开新窗口看新的网页
2007/02/20 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
jQuery 和 CSS 的文本特效插件集锦
2014/12/12 Javascript
node.js中的fs.rename方法使用说明
2014/12/16 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
JavaScript实现cookie的写入、读取、删除功能
2015/11/05 Javascript
AngularJS 作用域详解及示例代码
2016/08/17 Javascript
基于javascript实现按圆形排列DIV元素(一)
2016/12/02 Javascript
nodejs 实现钉钉ISV接入的加密解密方法
2017/01/16 NodeJs
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
详解node如何让一个端口同时支持https与http
2017/07/04 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
js实现无缝轮播图效果
2020/03/09 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
Python备份Mysql脚本
2008/08/11 Python
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
python求解水仙花数的方法
2015/05/11 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
Python魔法方法功能与用法简介
2019/04/04 Python
快速解决jupyter启动卡死的问题
2020/04/10 Python
使用K.function()调试keras操作
2020/06/17 Python
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
银行办公室岗位职责
2014/03/10 职场文书
二年级学生评语大全
2014/04/23 职场文书
社团活动总结
2014/04/28 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
幼儿教师师德师风自我剖析材料
2014/09/29 职场文书