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 相关文章推荐
用JS实现一个页面多个css样式实现
May 29 Javascript
面向对象的Javascript之二(接口实现介绍)
Jan 27 Javascript
setInterval与clearInterval的使用示例代码
Jan 28 Javascript
自己使用js/jquery写的一个定制对话框控件
May 02 Javascript
javascript制作坦克大战全纪录(1)
Nov 27 Javascript
基于jquery实现复选框全选,反选,全不选等功能
Oct 16 Javascript
Javascript中的Prototype到底是什么
Feb 16 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
May 31 Javascript
jQuery原理系列-css选择器的简单实现
Jun 07 Javascript
js实现拖拽功能
Mar 01 Javascript
vue.js项目nginx部署教程
Apr 05 Javascript
详解easyui基于 layui.laydate日期扩展组件
Jul 18 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 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
Node.js 的异步 IO 性能探讨
2014/10/08 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
Javascript实现跨域后台设置拦截的方法详解
2017/08/04 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
vue实现的树形结构加多选框示例
2019/02/02 Javascript
从组件封装看Vue的作用域插槽的实现
2019/02/12 Javascript
JS开发 富文本编辑器TinyMCE详解
2019/07/19 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
Python CSV模块使用实例
2015/04/09 Python
在Python中使用SQLite的简单教程
2015/04/29 Python
Python建立Map写Excel表实例解析
2018/01/17 Python
python实现名片管理系统
2018/11/29 Python
Python闭包思想与用法浅析
2018/12/27 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
利用Python裁切tiff图像且读取tiff,shp文件的实例
2020/03/10 Python
使用豆瓣源来安装python中的第三方库方法
2021/01/26 Python
校园自助餐厅的创业计划书
2013/12/26 职场文书
公益活动策划方案
2014/01/09 职场文书
JAVA程序员自荐书
2014/01/30 职场文书
公司任命书模板
2014/06/06 职场文书
思想品德评语大全
2014/12/31 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android