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打印纸函数代码(递归)
Jun 18 Javascript
jQuery回车实现登录简单实现
Aug 20 Javascript
JavaScript中按位“异或”运算符使用介绍
Mar 14 Javascript
JavaScript中的getMilliseconds()方法使用详解
Jun 10 Javascript
jQuery+HTML5美女瀑布流布局实现方法
Sep 21 Javascript
js 获取经纬度的实现方法
Jun 20 Javascript
JS动态修改网页body的背景色实例代码
Oct 07 Javascript
vuex直接赋值的三种方法总结
Sep 16 Javascript
vue项目环境变量配置的实现方法
Oct 12 Javascript
在element-ui的select下拉框加上滚动加载
Apr 18 Javascript
优雅地使用loading(推荐)
Apr 20 Javascript
Vue实现微信支付功能遇到的坑
Jun 05 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/10/23 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
JavaScript判断两种格式的输入日期的正确性的代码
2007/03/25 Javascript
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
JS函数实现动态添加CSS样式表文件
2012/12/15 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
jQuery学习笔记之回调函数
2016/08/15 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
jQuery中each方法的使用详解
2018/03/18 jQuery
微信小程序实现无限滚动列表
2020/05/29 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
Python多进程multiprocessing用法实例分析
2017/08/18 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
使用tensorflow实现线性回归
2018/09/08 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
python创造虚拟环境方法总结
2019/03/04 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
如何基于Python爬取隐秘的角落评论
2020/07/02 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
.NET面试10题
2014/02/24 面试题
化工专业个人的求职信范文
2013/11/28 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
婚礼答谢词
2015/01/04 职场文书
艺术节开幕词
2015/01/28 职场文书
欢迎新生标语2015
2015/07/16 职场文书
详解python的异常捕获
2022/03/03 Python