用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 相关文章推荐
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
Dec 02 Javascript
jQuery的运行机制和设计理念分析
Apr 05 Javascript
JavaScript 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
Apr 07 Javascript
jQuery中:input选择器用法实例
Jan 03 Javascript
js运动动画的八个知识点
Mar 12 Javascript
js点击返回跳转到指定页面实现过程
Aug 20 Javascript
js验证手机号、密码、短信验证码代码工具类
Jun 24 Javascript
利用JavaScript的%做隔行换色的实例
Nov 25 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
Oct 20 Javascript
JS异步错误捕获的一些事小结
Apr 26 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
Aug 15 Javascript
详解小程序如何动态绑定点击的执行方法
Nov 26 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
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
利用PHP将图片转换成base64编码的实现方法
2016/09/13 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
解决PHP使用CURL发送GET请求时传递参数的问题
2019/10/11 PHP
如何在PHP中生成随机数
2020/06/04 PHP
鼠标经过的文本框textbox变色
2009/05/21 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
原生js获取宽高与jquery获取宽高的方法关系对比
2014/04/04 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
jQuery蓝色风格滑动导航栏代码分享
2015/08/19 Javascript
使用Object.defineProperty实现简单的js双向绑定
2016/04/15 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
微信小程序实现全局搜索代码高亮的示例
2018/03/30 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
详谈python3中用for循环删除列表中元素的坑
2018/04/19 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
Python通过getattr函数获取对象的属性值
2020/10/16 Python
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
精通CAD能手自荐书
2014/01/31 职场文书
升旗仪式演讲稿
2014/05/08 职场文书
养牛场项目建议书
2014/05/13 职场文书
计算机系本科生求职信
2014/05/31 职场文书
校长四风对照检查材料
2014/09/27 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
2014年纠风工作总结
2014/12/08 职场文书
学校三八妇女节活动总结
2015/02/06 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
求职信如何撰写?
2019/05/22 职场文书
Nginx进程调度问题详解
2021/09/25 Servers