JS 浏览器检测
原创博文,转载请注明出处。
如果你现在还是一个JavaScript新手(比如本人,哈哈 ),由于浏览器的兼容问题,很容易写出不兼容的JS代码,这就需要我们对浏览器进行检测。
JavaScript Navigator 对象包含了有关访问者浏览器的所有信息。
Navigator含有以下几个属性:
浏览器信息:
浏览器代码名称:navigator.appCodeName
浏览器名称:navigator.appName
浏览器版本号:navigator.appVersion,包括了大版本号、小版本号、语言、操作平台等信息。
浏览器次要版本:navigator.appMinorVersion
MIME类型(数组):navigator.mimeTypes
系统平台:navigator.platform
插件(数组):navigator.plugins
用户代理:navigator.userAgent
cpu信息: navigator.cpuClass
语言: navigator.language,还有userLanguage操作系统设定的自然语言,browserLanguage返回浏览器当前语言, systemLanguage返回当前操作系统的缺省语言。
浏览器状态:
cookie开启关闭:navigator.cookieEnabled
浏览器联网状态:navigator.online
对Java的支持:navigator.javaEnabled()
其他:
用户信息:navigator.userProfile,拥有 addReadRequest() doReadRequest() getAttribute() clearRequest() 等方法。
指定是否允许数据污点:navigator.taintEnabled 是否可以加密数据的真伪值。仅IE有效。在navigator 4.0 已删除
我们来看一个例子:这个例子用来返回当前浏览器的信息。
<html>
<body> <script type="text/javascript">
var x = navigator;
document.write("CodeName=" + x.appCodeName);
document.write("<br />");
document.write("MinorVersion=" + x.appMinorVersion);
document.write("<br />");
document.write("Name=" + x.appName);
document.write("<br />");
document.write("Version=" + x.appVersion);
document.write("<br />");
document.write("CookieEnabled=" + x.cookieEnabled);
document.write("<br />");
document.write("CPUClass=" + x.cpuClass);
document.write("<br />");
document.write("OnLine=" + x.onLine);
document.write("<br />");
document.write("Platform=" + x.platform);
document.write("<br />");
document.write("UA=" + x.userAgent);
document.write("<br />");
document.write("userProfile="+x.userProfile)
document.write("<br />");
document.write("Language="+x.language)
document.write("<br />");
document.write("BrowserLanguage=" + x.browserLanguage);
document.write("<br />");
document.write("SystemLanguage=" + x.systemLanguage);
document.write("<br />");
document.write("UserLanguage=" + x.userLanguage);
</script> </body>
如果返回了“undefined” (比如,browserLanguage,cpuClass,onLine等属性)是因为你的当前浏览器使用的是Firefox或者chrome,当你切换到IE之后就会发现其中变化了。
下面的例子是返回你的IE浏览器的版本信息:
<html>
<body>
<script>
//获取IE浏览器的版本号
//返回数值,显示IE的主版本号
function getIEVer() {
var ua = navigator.userAgent; //获取用户端信息
var b = ua.indexOf("MSIE "); //检测特殊字符串"MSIE "的位置
if (b < 0) {
return 0;
}
return parseFloat(ua.substring(b + 5, ua.indexOf(";", b))); //截取版本号字符串,并转换为数值
}
alert(getIEVer()); //返回数值8(我的IE8)
</script>
</body>
</html>
像在我的IE浏览器中,userAgent返回如下信息:UA=Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; MSIE就代表了浏览器的版本,TridentIE排版引擎的名称。
下面的例子可以用来判断当前浏览器的版本。
<html>
<head>
<title>JavaScript检测浏览器</title>
</head>
<body>
<script type="text/javascript">
var userAgent=navigator.userAgent.toLowerCase(), s, o = {};
var browser={
version:(userAgent.match(/(?:firefox|opera|safari|chrome|msie)[\/: ]([\d.]+)/))[1],
safari:/version.+safari/.test(userAgent),
chrome:/chrome/.test(userAgent),
firefox:/firefox/.test(userAgent),
ie:/msie/.test(userAgent),
opera: /opera/.test(userAgent )
} /* 获得浏览器的名称及版本信息 */ if (browser.ie && browser.version > 6)
{
/* 判断是否为IE 6以上版本,是则执行以下操作 */
document.writeln("<p>您使用的是IE "+browser.version+"<\/p>");
}
if (browser.safari) {
doucment.writeln("<p>您使用的是safari浏览器<\/p>");
} /* 判断是否为safari */
if (browser.firefox) {
document.writeln("<p>您使用的是firefox浏览器<\/p>");
} /* 判断是否为firefox */
if (browser.chrome) {
document.writeln("<p>您使用的是chrome浏览器<\/p>");
} /* 判断是否为chrome */
if (browser.opera) {
document.writeln("<p>您使用的是opera浏览器<\/p>");
} /* 判断是否为opera */
</script>
</body>
</html>
ps:博文发出去后有园友建议用检测功能来代替Agent,由于刚接触javascript而且并不以此为主要工作,所以对我而言用处不大,如果你是做前端工作的,建议你学习使用Modernizr检查功能,我简单的看了一下介绍,感觉是个强大的东西。
JS 浏览器检测的更多相关文章
- js浏览器检测
1.判断浏览器类型 if navigator.userAgent.indexOf(”MSIE”)>0) {} //判断是否IE浏览器 if(isFirefox=navigator.userAge ...
- 浏览器检测(BrowserDetect.js)
浏览器检测是在工作中经常用到的,如果只是简单判断当前是什么浏览器的话可以通过window.navigator.useragent这样的js来直接判断就可以了! 但是针对浏览器版本要求比较高的时候,如果 ...
- js+jquery检测用户浏览器型号(包括对360浏览器的检测)
做网站,js检测用户浏览器的版本,是经常要使用到,今天自己写了一个js,完成了对于一些常见浏览器的检测,但是,偏偏对于360浏览器的检测没有任 何办法,研究了一会儿,无果.无论是360安全浏览器,还是 ...
- 浏览器检测(BrowserDetect.js)使用
浏览器检测是在工作中经常用到的,如果只是简单判断当前是什么浏览器的话可以通过window.navigator.useragent这样的js来直接判断就可以了! 但是针对浏览器版本要求比较高的时候,如果 ...
- js+jquery检测用户浏览器型号(转)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 浏览器检测-js
昨天有一同学问我为什么attachEvent在非IE浏览器下不能起作用,我也跟他解释了一番:attachEvent是IE下独有的,只能在IE下使用,其他浏览器下应该用addEventListener来 ...
- jQuery为哪般去掉了浏览器检测
由于做HTML5相关的项目,许多前卫时髦的前端技术就需要考虑一下IE是否支持.要是在以前,可以很方便地调用jQuery的jQuery.browser来实现. If(jQuery.browser.msi ...
- Device.js – 快速检测平台、操作系统和方向信息
在 Web 项目中,有时候我们需要根据程序运行的环境采取特定操作.Device.js 是一个很小的 JavaScript 库,它简化了编写和平台,操作系统或浏览器相关的条件 CSS 或 JavaScr ...
- 浏览器检测navigator 对象
1.浏览器及版本号不同的浏览器支持的功能.属性和方法各有不同.比如IE 和Firefox 显示的页面可能就会有所略微不同. alert('浏览器名称:' + navigator.appName); a ...
随机推荐
- PS多形式的部分之间复制“笨办法”
PS剪切页面,有时候你可能会遇到这样的情况:设计改进,但是,我们要具有相同的切片. 在此假设,可以直接用于切割片.我们可以节省大量的时间,又分为片. 但是,人们一般不会在你的上跨片设计PSD在变化,但 ...
- iOS,Android,.NET通用AES加密算法
原文:iOS,Android,.NET通用AES加密算法 这两天为移动App开发API,结果实现加密验证时碰到一大坑.这里不得不吐槽下又臭又硬的iOS,Windows Server无法解密出正确的结果 ...
- I2C驱动程序框架probe道路
基于Linux的I2C驱动器.采纳probe道路.根据这个框架,如下面就可以写任何支持I2C总线设备Linux驱动器. I2C设备连接到cpu具体i2c接口.被安装在cpu的i2c适配器.i2c设备和 ...
- 华为G520联通版刷机包 基于MIUI CM11新 平稳 稳定
ROM介绍 刷先配置双卡:"设定-安卓原生设置-双卡套-配置订阅",否则,无信号 使开发人员选项方法:"设定-安卓原生设置-关于手机-发布"连续点击版本 启用A ...
- Javascript闭包的一些研究
原文:Javascript闭包的一些研究 本文不谈闭包的概念,因为概念容易把人搞晕,本文希望通过几个鲜活的例子来探究闭包的性质,相信对理解闭包会有所帮助. 程序1 var f = (function( ...
- Tomcat剖析(二):一个简单的Servlet服务器
Tomcat剖析(二):一个简单的Servlet服务器 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三) ...
- 几款web版整合(QQ、msn、icq、yahoo通、Gtalk等)即时聊天http://hi.baidu.com/ejie/blog/item/e89794ef9a9431efce1b3ebd.html
直到近期为止,我们经常使用的即时聊天工具(QQ.msn等)了Web版,大家不用下载庞大软件,直接打开网页就能够与自己的好友聊天,很方便.在此将时汇总,便于大家查找,节约大家一点时间. 此都是官 ...
- 【百度地图API】——如何用label制作简易的房产标签
原文:[百度地图API]--如何用label制作简易的房产标签 摘要: 最近,API爱好者们纷纷说,自定义marker太复杂了!不仅定义复杂,连所有的dom事件都要自己重新定义.有没有快速简易创建房产 ...
- [CLR via C#]1.1 将源代码编译成托管代码
原文:[CLR via C#]1.1 将源代码编译成托管代码 1. 公共语言运行时(Common Language Runtime,CLR)是一种可由多种编程语言使用的"运行时". ...
- UITableView Cell 弹簧动画效果
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath ...