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 相关文章推荐
JavaScript 存在陷阱 删除某一区域所有节点
May 10 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
May 13 Javascript
jquery+css3打造一款ajax分页插件(自写)
Jun 18 Javascript
JavaScript获取页面上被选中文字的方法技巧
Mar 13 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
通过jsonp获取json数据实现AJAX跨域请求
Jan 22 Javascript
基于cookie实现zTree树刷新后展开状态不变
Feb 28 Javascript
Javascript仿京东放大镜的效果
Mar 01 Javascript
jQuery选择器特殊字符与属性空格问题
Aug 14 jQuery
bootstrap模态框关闭后清除模态框的数据方法
Aug 10 Javascript
jQuery实现高级检索功能
May 28 jQuery
vue实现移动端项目多行文本溢出省略
Jul 29 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获取一个字符串中间一部分字符的方法
2014/08/19 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
安装docker和docker-compose实例详解
2019/07/30 PHP
php函数式编程简单示例
2019/08/08 PHP
php集成开发环境详解
2019/09/24 PHP
[JS源码]超长文章自动分页(客户端版)
2007/01/09 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
2015/01/13 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
jQuery实现的简单分页示例
2016/06/01 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
AjaxUpLoad.js实现文件上传
2018/03/05 Javascript
python根据经纬度计算距离示例
2014/02/16 Python
Python连接Redis的基本配置方法
2018/09/13 Python
python3实现名片管理系统
2020/11/29 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
python nmap实现端口扫描器教程
2020/05/28 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
keras打印loss对权重的导数方式
2020/06/10 Python
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
科级干部考察材料
2014/02/15 职场文书
母婴店促销方案
2014/03/05 职场文书
七一讲话心得体会
2014/09/05 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
2014小学年度工作总结
2014/12/20 职场文书
介绍信格式
2015/01/30 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
土建技术员岗位职责
2015/04/11 职场文书