用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 相关文章推荐
html读出文本文件内容
Jan 22 Javascript
Save a File Using a File Save Dialog Box
Jun 18 Javascript
在javascript将NodeList作为Array数组处理的方法
Jul 09 Javascript
js+css实现导航效果实例
Feb 10 Javascript
JavaScript获取当前网页标题(title)的方法
Apr 03 Javascript
jQuery实现左右切换焦点图
Apr 03 Javascript
js removeChild 方法深入理解
Aug 16 Javascript
jquery插件ContextMenu设置右键菜单
Mar 13 Javascript
微信小程序云开发如何使用npm安装依赖
May 18 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
Jun 29 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
Sep 03 jQuery
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
Dec 06 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
Syphon 秘笈
2021/03/03 冲泡冲煮
php实现保存submit内容之后禁止刷新
2014/03/19 PHP
PHP中PDO事务处理操作示例
2018/05/02 PHP
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
Javascript对象字面量的理解
2016/06/22 Javascript
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
2017/05/19 jQuery
详解vue-router 命名路由和命名视图
2018/06/01 Javascript
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
python实现k-means聚类算法
2018/02/23 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
Python tkinter的grid布局及Text动态显示方法
2018/10/11 Python
python实现爬山算法的思路详解
2019/04/09 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
2020/04/27 Python
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
大学生实习自我鉴定
2013/12/11 职场文书
社区禁毒工作方案
2014/06/02 职场文书
门店业绩提升方案
2014/06/08 职场文书
演讲稿开场白台词
2014/08/25 职场文书
2015年母亲节寄语
2015/03/23 职场文书
大客户经理岗位职责
2015/04/09 职场文书
同意落户证明
2015/06/19 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers