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 相关文章推荐
为超链接加上disabled后的故事
Dec 10 Javascript
JavaScript高级程序设计 读书笔记之八 Function类及闭包
Feb 27 Javascript
Javascript模块化编程详解
Dec 01 Javascript
jQuery常用且重要方法汇总
Jul 13 Javascript
jQuery设置Easyui校验规则(推荐)
Nov 21 Javascript
详解数组Array.sort()排序的方法
May 09 Javascript
微信小程序 swiper组件构建轮播图的实例
Sep 20 Javascript
node通过npm写一个cli命令行工具
Oct 12 Javascript
validform表单验证的实现方法
Mar 08 Javascript
详解JavaScript数据类型和判断方法
Sep 04 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
Jan 07 Javascript
vue实现可移动的悬浮按钮
Mar 04 Vue.js
基于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
《神奇女侠:血脉》神力女超人大战犯罪公司
2020/04/09 欧美动漫
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
第三章 php操作符与控制结构代码
2011/12/30 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
php中的mongodb select常用操作代码示例
2014/09/06 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
JS window.opener返回父页面的应用
2009/10/24 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
一个实用的图片切换支持点击切换和自动轮播
2014/09/09 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
JS实现动态添加DOM节点和事件的方法示例
2017/04/28 Javascript
详解最新vue-cli 2.9.1的webpack存在问题
2017/12/16 Javascript
详解使用mpvue开发github小程序总结
2018/07/25 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
对Layer UI 模块化的用法详解
2019/09/26 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
使用PYTHON接收多播数据的代码
2012/03/01 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
Python使用itertools模块实现排列组合功能示例
2018/07/02 Python
Python使用googletrans报错的解决方法
2018/09/25 Python
pandas通过loc生成新的列方法
2018/11/28 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
python算的上脚本语言吗
2020/06/22 Python
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
货代行业个人求职简历的自我评价
2013/10/22 职场文书
商务邀请函范文
2014/01/14 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
党员学习党的群众路线思想汇报(5篇)
2014/09/10 职场文书
学前班语言教学计划
2015/01/20 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
mysql如何能有效防止删库跑路
2021/10/05 MySQL