用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 相关文章推荐
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Sep 13 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
Jun 05 Javascript
javascript获取dom的下一个节点方法
Sep 05 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
Dec 16 Javascript
浅谈Jquery中Ajax异步请求中的async参数的作用
Jun 06 Javascript
jQuery获取this当前对象子元素对象的方法
Nov 29 Javascript
微信小程序 获取二维码实例详解
Jun 23 Javascript
vuex的简单使用教程
Feb 02 Javascript
web页面和微信小程序页面实现瀑布流效果
Sep 26 Javascript
微信小程序实现轨迹回放的示例代码
Dec 13 Javascript
Node.js实现批量下载图片简单操作示例
Jan 18 Javascript
json.stringify()与json.parse()的区别以及用处
Jan 25 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 用sock技术发送邮件的函数
2007/07/21 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
javascript数组使用调用方法汇总
2007/12/08 Javascript
jquery 操作DOM案例代码分享
2012/04/05 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
2016/01/28 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
AngularJs Understanding the Model Component
2016/09/02 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
详解使用uni-app开发微信小程序之登录模块
2019/05/09 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
使用python编写android截屏脚本双击运行即可
2014/07/21 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
浅谈python装饰器探究与参数的领取
2017/12/01 Python
Python登录并获取CSDN博客所有文章列表代码实例
2017/12/28 Python
详解Python的循环结构知识点
2019/05/20 Python
python同步两个文件夹下的内容
2019/08/29 Python
Flask和pyecharts实现动态数据可视化
2020/02/26 Python
使用html5制作loading图的示例
2014/04/14 HTML / CSS
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
客运企业隐患排查工作方案
2014/06/06 职场文书
欢迎标语大全
2014/06/21 职场文书
大学生党员批评与自我批评
2014/09/28 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
带你学习MySQL执行计划
2021/05/31 MySQL
WIN10使用IIS部署ftp服务器详细教程
2022/08/05 Servers
戴尔Win11系统no bootable devices found解决教程
2022/09/23 数码科技