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 相关文章推荐
判断用户的在线状态 onbeforeunload事件
Mar 05 Javascript
js计算任意值之间随机数的方法
Jan 16 Javascript
浅析JSONP技术原理及实现
Jun 08 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
Dec 30 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
Jan 19 Javascript
jQuery实现文档树效果
Feb 20 Javascript
JavaScript使用readAsDataURL读取图像文件
May 10 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
Aug 23 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
Nov 10 Javascript
基于iview-admin实现动态路由的示例代码
Oct 02 Javascript
jQuery实现手风琴效果(蒙版)
Jan 11 jQuery
你不知道的SpringBoot与Vue部署解决方案
Nov 09 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
一个域名查询的程序
2006/10/09 PHP
几个有用的php字符串过滤,转换函数代码
2012/05/01 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
Laravel中间件实现原理详解
2016/10/09 PHP
PHP 年月日的三级联动实例代码
2017/05/24 PHP
laravel5.1框架基础之Blade模板继承简单使用方法分析
2019/09/05 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
JavaScript转换农历类实现及调用方法
2013/01/27 Javascript
document.write的几点使用心得
2014/05/14 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
2015/05/20 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
微信小程序实现留言板
2018/10/31 Javascript
微信小程序地图实现展示线路
2020/07/29 Javascript
[01:05:24]Ti4 冒泡赛第二天 iG vs NEWBEE 3
2014/07/15 DOTA
windows 下python+numpy安装实用教程
2017/12/23 Python
python实现五子棋程序
2020/04/24 Python
Django admin组件的使用
2020/10/24 Python
Python项目打包成二进制的方法
2020/12/30 Python
利用Storage Event实现页面间通信的示例代码
2018/07/26 HTML / CSS
介绍一下游标
2012/01/10 面试题
医学院毕业生自荐信
2013/11/08 职场文书
销售经理工作职责范文
2013/12/03 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
民事诉讼答辩状范文
2015/05/21 职场文书
信用卡收入证明范本
2015/06/12 职场文书
2016中秋节问候语
2015/11/11 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
MySQL 常见存储引擎的优劣
2021/06/02 MySQL
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技
特别篇动画《总之就是非常可爱 ~制服~》PV公开,2022年夏季播出
2022/04/04 日漫
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技