[完美]原生JS获取浏览器版本判断--支持Edge,IE,Chrome,Firefox,Opera,Safari,以及各种使用Chrome和IE混合内核的浏览器...
截至自2017-08-11,支持现世已出的几乎所有PC端浏览器版本判断。
受支持的PC端浏览器列表:
Edge |
IE |
Chrome |
Firefox |
Opera |
Safari |
QQ浏览器 |
360系列浏览器 |
使用IE内核的非主流浏览器 |
使用Chrome内核的非主流浏览器 |
使用混合内核的非主流浏览器 |
获取浏览器版本方法:
function getBroswer(){var sys = {};var ua = navigator.userAgent.toLowerCase();var s;(s = ua.match(/edge\/([\d.]+)/)) ? sys.edge = s[1] :(s = ua.match(/rv:([\d.]+)\) like gecko/)) ? sys.ie = s[1] :(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.edge) return { broswer : "Edge", version : sys.edge };if (sys.ie) return { broswer : "IE", version : sys.ie };if (sys.firefox) return { broswer : "Firefox", version : sys.firefox };if (sys.chrome) return { broswer : "Chrome", version : sys.chrome };if (sys.opera) return { broswer : "Opera", version : sys.opera };if (sys.safari) return { broswer : "Safari", version : sys.safari };return { broswer : "", version : "0" }; }
使用示例:
<html> <head> <script type="text/javascript" src="/jquery/jquery.js"></script> <script type="text/javascript"> function getBroswer(){var Sys = {};var ua = navigator.userAgent.toLowerCase();var s;(s = ua.match(/edge\/([\d.]+)/)) ? Sys.edge = s[1] :(s = ua.match(/rv:([\d.]+)\) like gecko/)) ? Sys.ie = s[1] :(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.edge) return { broswer : "Edge", version : Sys.edge };if (Sys.ie) return { broswer : "IE", version : Sys.ie };if (Sys.firefox) return { broswer : "Firefox", version : Sys.firefox };if (Sys.chrome) return { broswer : "Chrome", version : Sys.chrome };if (Sys.opera) return { broswer : "Opera", version : Sys.opera };if (Sys.safari) return { broswer : "Safari", version : Sys.safari };return { broswer : "", version : "0" }; } var abc = getBroswer(); alert("broswer:"+abc.broswer+" version:"+abc.version); </script> </head> <body> <div>Demo</div> </body> </html>
PS:
之前犯了个错误,没有考虑到rv和msie两种浏览器特征并存的可能,直到在一个香港客户的IE11里发现这个问题。
所有这里,需要考虑到浏览器版本判断的优先级,而这个优先级,按照浏览器发布时间的规律来排列,更新发布的浏览器的特性判断应该放在更前面。
转载于:https://www.cnblogs.com/lonelyxmas/p/7954578.html
[完美]原生JS获取浏览器版本判断--支持Edge,IE,Chrome,Firefox,Opera,Safari,以及各种使用Chrome和IE混合内核的浏览器...相关推荐
- 原生JS获取浏览器版本判断--支持Edge,IE,Chrome,Firefox,Opera,Safari(亲测可用)
浏览器类型及版本判断在开发中是比较常见的使用场景,之前用var ua = navigator.userAgent.toLowerCase()来判断浏览器的内核,发现chrome和edge浏览器无法区分 ...
- 原生js获取以固定字符开头的控件id,并设置属性
原生js获取以固定字符开头的控件id,并设置属性 还在用JQ加CSS选择器获取指定id开头的DOM嘛? 现在试试 JavaScript提供的querySelectorAll函数 目前几乎主流浏览器均支 ...
- 原生JS获取ScrollTop/ScrollLeft
使用原生JS获取浏览器ScrollTop,ScrollLeft的方法: function scroll() {if (window.pageYOffset != null){ // 支持IE9 +re ...
- js取iframe 上级页面_原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法...
用原生js在父页面获取iframe子页面的元素,以及在子页面获取父页面元素,这是平时经常会用到的方法,这里写一个例子来总结下: 1.父页面(demo.html),在父页面修改子页面div的背景色为灰色 ...
- 原生js获取宽高与jquery获取宽高的方法的关系
说明:1.因为获取高度的情况跟获取宽度的情况一样,所以以下只说获取宽度的情况. 2.以下所说的所有方法与属性所返回的值都是不带单位的. 3.为了方便说明,以下情况采用缩写表示: obj -> ...
- 怎么修改html行内样式表,原生JS获取及设置CSS样式-1.行内样式
面试中,应该会经常被问到样式的写法以及如何使用原生JS获取及操作样式的问题吧,让我给大家总结一下~ HTML中样式的写法不外乎以下四种方式 行内样式 假装有内容 head内部样式 div { widt ...
- 获取html下拉菜单selected,原生js获取select下拉框的selected的option项
一. 使用 原生js,获取select标签下属性有selected的option项. 先写一个select标签如下: TEXT-aaaaa TEXT-bbbbb 原生js获取select标签这个 对象 ...
- 原生js获取一段时间内每隔几分钟的时间数组
姊妹篇 原生js获取一段时间内每隔几天的时间数组 情况: 项目中有这么一个需求,输入开始时间.结束时间.时间间隔,获取一段时间内每隔几分钟的时间数组 接下来我必须现在网上找找有没有类似的稍微改改就好了 ...
- 原生JS获取body
原生js获取body 的方法 这节课我们来说说如何在js中获取body的来对html中的body进行一系列操作,给大家总结了两种方法 第一种: let s = `hello` document.get ...
最新文章
- DotNET企业架构应用实践-企业管理软件架构(计算)的历史与发展(上)
- WINDOWS2003域控制器禁止U盘
- 拦截QT关闭窗口的CloseEvent
- python中try_python中try...excpet多种使用方法
- boost::math::hyperexponential用法的测试程序
- 怎么查MATLAB中的newrbf,已经有了输入输出数据,如何在matlab中建立RBF神经网络
- 037_自动添加防火墙规则,开启某些服务或端口(适用于 RHEL7)
- LeetCode 461. Hamming Distance
- PHP版本不同可以导入导出吗,请教高人:两个php平台之间的数据导入导出
- 这款能够生成文档的接口测试软件,为什么越来越受欢迎?
- 动态生成的DOM不会触发onclick事件的原因及解决方法
- ubuntu下vscode编写cgo程序
- HTTP长连接和短连接(转)
- [猎豹网校]数据结构与算法_Java语言
- MySQL数据库笔记6——约束Constraint
- java将pdf,word,excel转成图片
- 矩阵键盘程序代码(基于STM32F103)
- tar命令打包并压缩指定的文件夹并且排除指定的文件
- MAC big sur桌面图片在哪个文件夹
- 如何快速的了解某种数据库