用js实现的检测浏览器和系统的函数


Posted in Javascript onApril 09, 2009
var sUserAgent = navigator.userAgent; 
var fAppVersion = parseFloat(navigator.appVersion); 
function compareVersions(sVersion1, sVersion2) { 
var aVersion1 = sVersion1.split("."); 
var aVersion2 = sVersion2.split("."); 
if (aVersion1.length > aVersion2.length) { 
for (var i=0; i < aVersion1.length - aVersion2.length; i++) { 
aVersion2.push("0"); 
} 
} else if (aVersion1.length < aVersion2.length) { 
for (var i=0; i < aVersion2.length - aVersion1.length; i++) { 
aVersion1.push("0"); 
} 
} 
for (var i=0; i < aVersion1.length; i++) { 
if (aVersion1 < aVersion2) { 
return -1; 
} else if (aVersion1 > aVersion2) { 
return 1; 
} 
} 
return 0; 
} 
var isOpera = sUserAgent.indexOf("Opera") > -1; 
var isMinOpera4 = isMinOpera5 = isMinOpera6 = isMinOpera7 = isMinOpera7_5 = false; 
if (isOpera) { 
var fOperaVersion; 
if(navigator.appName == "Opera") { 
fOperaVersion = fAppVersion; 
} else { 
var reOperaVersion = new RegExp("Opera (\\d+\\.\\d+)"); 
reOperaVersion.test(sUserAgent); 
fOperaVersion = parseFloat(RegExp["$1"]); 
} 
isMinOpera4 = fOperaVersion >= 4; 
isMinOpera5 = fOperaVersion >= 5; 
isMinOpera6 = fOperaVersion >= 6; 
isMinOpera7 = fOperaVersion >= 7; 
isMinOpera7_5 = fOperaVersion >= 7.5; 
} 
var isKHTML = sUserAgent.indexOf("KHTML") > -1 
|| sUserAgent.indexOf("Konqueror") > -1 
|| sUserAgent.indexOf("AppleWebKit") > -1; 
var isMinSafari1 = isMinSafari1_2 = false; 
var isMinKonq2_2 = isMinKonq3 = isMinKonq3_1 = isMinKonq3_2 = false; 
if (isKHTML) { 
isSafari = sUserAgent.indexOf("AppleWebKit") > -1; 
isKonq = sUserAgent.indexOf("Konqueror") > -1; 
if (isSafari) { 
var reAppleWebKit = new RegExp("AppleWebKit\\/(\\d+(?:\\.\\d*)?)"); 
reAppleWebKit.test(sUserAgent); 
var fAppleWebKitVersion = parseFloat(RegExp["$1"]); 
isMinSafari1 = fAppleWebKitVersion >= 85; 
isMinSafari1_2 = fAppleWebKitVersion >= 124; 
} else if (isKonq) { 
var reKonq = new RegExp("Konqueror\\/(\\d+(?:\\.\\d+(?:\\.\\d)?)?)"); 
reKonq.test(sUserAgent); 
isMinKonq2_2 = compareVersions(RegExp["$1"], "2.2") >= 0; 
isMinKonq3 = compareVersions(RegExp["$1"], "3.0") >= 0; 
isMinKonq3_1 = compareVersions(RegExp["$1"], "3.1") >= 0; 
isMinKonq3_2 = compareVersions(RegExp["$1"], "3.2") >= 0; 
} 
} 
var isIE = sUserAgent.indexOf("compatible") > -1 
& sUserAgent.indexOf("MSIE") > -1 
& !isOpera; 
var isMinIE4 = isMinIE5 = isMinIE5_5 = isMinIE6 = isMinIE7 = false; 
if (isIE) { 
var reIE = new RegExp("MSIE (\\d+\\.\\d+);"); 
reIE.test(sUserAgent); 
var fIEVersion = parseFloat(RegExp["$1"]); 
isMinIE4 = fIEVersion >= 4; 
isMinIE5 = fIEVersion >= 5; 
isMinIE5_5 = fIEVersion >= 5.5; 
isMinIE6 = fIEVersion >= 6.0; 
isMinIE7 = fIEVersion >= 7.0; 
} 
var isMoz = sUserAgent.indexOf("Gecko") > -1 
& !isKHTML; 
var isMinMoz1 = sMinMoz1_4 = isMinMoz1_5 = isMinMozl_5_1 = false; 
if (isMoz) { 
var reMoz = new RegExp("rv\\d+\\.\\d+(?:\\.\\d+)?)"); 
reMoz.test(sUserAgent); 
isMinMoz1 = compareVersions(RegExp["$1"], "1.0") >= 0; 
isMinMoz1_4 = compareVersions(RegExp["$1"], "1.4") >= 0; 
isMinMoz1_5 = compareVersions(RegExp["$1"], "1.5") >= 0; 
isMinMoz2 = compareVersions(RegExp["$1"], "1.8") >=0; 
} 
var isNS4 = !isIE & !isOpera && !isMoz && !isKHTML 
& (sUserAgent.indexOf("Mozilla") == 0) 
& (navigator.appName == "Netscape") 
& (fAppVersion >= 4.0 && fAppVersion < 5.0); 
var isMinNS4 = isMinNS4_5 = isMinNS4_7 = isMinNS4_8 = false; 
if (isNS4) { 
isMinNS4 = true; 
isMinNS4_5 = fAppVersion >= 4.5; 
isMinNS4_7 = fAppVersion >= 4.7; 
isMinNS4_8 = fAppVersion >= 4.8; 
} 
var isWin = (navigator.platform == "Win32") || (navigator.platform == "Windows"); 
var isMac = (navigator.platform == "Mac68K") || (navigator.platform == "MacPPC") 
|| (navigator.platform == "Macintosh"); 
var isUnix = (navigator.platform == "X11") & !isWin && !isMac; 
var isWin95 = isWin98 = isWinNT4 = isWin2K = isWinME = isWinXP = isWin03 = false; 
var isMac68K = isMacPPC = false; 
var isSunOS = isMinSunOS4 = isMinSunOS5 = isMinSunOS5_5 = false; 
if (isWin) { 
isWin95 = sUserAgent.indexOf("Win95") > -1 
|| sUserAgent.indexOf("Windows 95") > -1; 
isWin98 = sUserAgent.indexOf("Win98") > -1 
|| sUserAgent.indexOf("Windows 98") > -1; 
isWinME = sUserAgent.indexOf("Win 9x 4.90") > -1 
|| sUserAgent.indexOf("Windows ME") > -1; 
isWin2K = sUserAgent.indexOf("Windows NT 5.0") > -1 
|| sUserAgent.indexOf("Windows 2000") > -1; 
isWinXP = sUserAgent.indexOf("Windows NT 5.1") > -1 
|| sUserAgent.indexOf("Windows XP") > -1; 
isWinNT4 = sUserAgent.indexOf("WinNT") > -1 
|| sUserAgent.indexOf("Windows NT") > -1 
|| sUserAgent.indexOf("WinNT4.0") > -1 
|| sUserAgent.indexOf("Windows NT 4.0") > -1 
& (!isWinME && !isWin2K && !isWinXP); 
isWin03 = sUserAgent.intexOf("Windows NT 5.2") > -1 
} 
if (isMac) { 
isMac68K = sUserAgent.indexOf("Mac_68000") > -1 
|| sUserAgent.indexOf("68K") > -1; 
isMacPPC = sUserAgent.indexOf("Mac_PowerPC") > -1 
|| sUserAgent.indexOf("PC") > -1; 
} 
if (isUnix) { 
isSunOS = sUserAgent.indexOf("SunOS") > -1; 
if (isSunOS) { 
var reSunOS = new RegExp("SunOS (\\d+\\.\\d+(?:\\.\\d+)?)"); 
reSunOS.test(sUserAgent); 
isMinSunOS4 = compareVersions(RegExp["$1"], "4.0") >= 0; 
isMinSunOS5 = compareVersions(RegExp["$1"], "5.0") >= 0; 
isMinSunOS5_5 = compareVersions(RegExp["$1"], "5.5") >= 0; 
} 
}
Javascript 相关文章推荐
javascript中拼接HTML字符串的最快、最好的方法
Jun 07 Javascript
jQuery UI插件自定义confirm确认框的方法
Mar 20 Javascript
JS实现在状态栏显示打字效果完整实例
Nov 02 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
May 24 Javascript
AngularJS 2.0入门权威指南
Oct 08 Javascript
快速掌握jQuery插件开发
Jan 19 Javascript
JS实现简单拖拽效果
Jun 21 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
Jul 07 Javascript
webpack多页面开发实践
Dec 18 Javascript
微信小程序仿朋友圈发布动态功能
Jul 15 Javascript
JS实现的自定义map方法示例
May 17 Javascript
详解Vue 项目中的几个实用组件(ts)
Oct 29 Javascript
常用简易JavaScript函数
Apr 09 #Javascript
javascript fullscreen全屏实现代码
Apr 09 #Javascript
jQuery 插件 将this下的div轮番显示
Apr 09 #Javascript
javascript RadioButtonList获取选中值
Apr 09 #Javascript
Cookie 注入是怎样产生的
Apr 08 #Javascript
javascript 表格排序和表头浮动效果(扩展SortTable)
Apr 07 #Javascript
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
Apr 07 #Javascript
You might like
聊天室php&amp;mysql(三)
2006/10/09 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2020/01/22 PHP
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
js简单的点击返回顶部效果实现方法
2015/04/10 Javascript
JS模仿腾讯图片站的图片翻页按钮效果完整实例
2016/06/21 Javascript
JavaScript中全选、全不选、反选、无刷新删除、批量删除、即点即改入库(在yii框架中操作)的代码分享
2016/11/01 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
vue移动端项目缓存问题实践记录
2018/10/29 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
Python判断直线和矩形是否相交的方法
2015/07/14 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
python调用staf自动化框架的方法
2018/12/26 Python
基于Python 中函数的 收集参数 机制
2019/12/21 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
浅谈优化Django ORM中的性能问题
2020/07/09 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
Html5中localStorage存储JSON数据并读取JSON数据的实现方法
2017/02/13 HTML / CSS
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
俄罗斯最大的在线手表商店:Bestwatch.ru
2020/01/11 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
计算机工程学院个人求职信
2013/10/05 职场文书
园艺师求职信
2014/03/10 职场文书
初一学生评语大全
2014/04/24 职场文书
学党史心得体会
2014/09/05 职场文书
运动会加油稿20字
2014/11/15 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
Python深度学习之Pytorch初步使用
2021/05/20 Python