`

JS判断浏览器能力

 
阅读更多

对象/特征检测法

该方法是一种判断浏览器能力(而非浏览器的确切型号)的通用方法。大部分JS专家认为这个方法最合适,因为他们认为按照该方法所编写的脚本是经得起未来考验的。

//获取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)

如果更关注浏览器的能力而不在乎它实际的身份,就可以使用这种方法。

user-agent字符串检测法

user-agent字符串提供了关于Web浏览器的大量信息,包括浏览器的名称和版本。

var ua = navigator.userAgent.toLowerCase();  //获取用户端信息
var info = {
  ie: /msie/.test(ua) && !/opera/.test(ua),    //匹配IE浏览器
  op: /opera/.test(ua),   //匹配Opera浏览器
  sa: /version.*safari/.test(ua),   //匹配Safari浏览器
  ch: /chrome/.test(ua),   //匹配Chrome浏览器
  ff: /gecko/.test(ua) && !/webkit/.test(ua)   //匹配Firefox浏览器
};
(info.ie) && alert("IE浏览器");
(info.op) && alert("Opera浏览器");
(info.sa) && alert("Safari浏览器");
(info.ff) && alert("Firefox浏览器");
(info.ch) && alert("Chrome浏览器");

通常我们做得最多的,就是判断是否是IE了,其它几种浏览器一般都会符合标准.有些客户只需要符合IE和FF就已经满足了.那么我们可以这样做:

var isIE = (navigator.appName == "Microsoft Internet Explorer");

判断IE远远不止上面一种方法,可以使用IE更多特有的东西,如:window.ActiveXObject,document.all等,这些都属于对象/特征检测法了!通常要在不同的浏览器上写不同的样式(因为IE样式解析也各有不同),那就得判断版本了.可以这样做

//获取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()); //返回数值7

检测操作系统:

var isWin = (navigator.userAgent.indexOf("Win") != -1); //如果是Windows系统,则返回true
var isMac = (navigator.userAgent.indexOf("Mac") != -1);   //如果是Macintosh系统,则返回true
var isUnix = (navigator.userAgent.indexOf("X11") != -1);   //如果是Unix系统,则返回true
var isLinux = (navigator.userAgent.indexOf("Linux") != -1);   //如果是Linux系统,则返回true

分享到:
评论

相关推荐

    JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js

    检测浏览器的方式 1、对象特征检测法:判断浏览器能力的通用方法。如果更关注浏览器的能力而不在乎它的实际身份,就可以使用这种检测方法。常见的原生Ajax写法中就用这种方法来创建XMLHttpRequest: 代码如下: IXHR:...

    浅析JavaScript中浏览器的兼容问题

    我们在讲老版本浏览器兼容问题之前,首先要了解什么是能力检测,它是来检测浏览器有没有这种能力,即判断当前浏览器是否支持要调用的属性或者方法。下面做了一些简短的介绍。 1、innerText 和 innerContent 1)...

    js实现点击复制当前文本到剪贴板功能(兼容所有浏览器)

    也仅仅支持IE和FF浏览器,当时在百度找个几个方案,看不下去就放弃了,后来在代码中做了判断,如果不支持该属性,就直接alert:此功能不支持该浏览器,请手工复制文本框中内容。有没有人遇到同样情况? alert&#40;...

    JavaScript学习笔记记录我的旅程

    判断能力,如果所有计算,判断(比如判断文本框是否为空,判断两次密码是否输入一致)店铺放到服务器端执行的话网页的页面会非常的慢,用起来也很难用,对服务器的压力也很大,因此要求能在浏览器中执行一些简单的运算...

    JavaScript笔记

    可以使用任何文本编辑工具编写 JavaScript 代码,然后由浏览器解释执行。 JavaScript常用于实现如下功能: |--控制文档的外观和内容; |--对浏览器的控制; |--与 HTML 表单的交互; |--与用户的交互; |--...

    formvalidator4.1

    一般要判断的表单元素比较多,开发过程就显得枯燥无味——重复的代码不断重复,而且可能还要兼容多种浏览器,更多的考虑因素使人头疼不已。由于每个要校验的页面虽然逻辑基本相同,但是在大多数情况下,出于种种原因...

    JavaScript之WebSocket技术详解

    HTTP协议是一种无状态协议,服务器端本身不具有识别客户端的能力,必须借助外部机制,比如session和cookie,才能与特定客户端保持对话。这多多少少带来一些不便,尤其在服务器端与客户端需要持续交换数据的场合...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Chrome Frame 会把最新版的Chrome Webkit 内核和JavaScript 引擎注入到IE中, IE浏览器将获得Chrome的性能和功能 目录 摘要 I ABSTRACT II 专业名词清单 III 第一章 绪论 1 1.1 研究背景与意义 1 1.2国内外相关...

    重庆天气资源的完整项目包

    后端采用的是Python的Flask框架,前端采用的则是HTML+CSS+JS和Echarts...项目主要锻炼前端页面的布局方式,以及css的美化,和js后端数据的处理传入到前端,以及Flask框架的使用以及网页的爬取更锻炼了数据库的操作能力

    图库新版jQuery焦点图 JS代码

    tips[8] = '策划就是打麻将,搜集是洗牌,整理是码牌,判断是打牌,创新是和牌'; tips[9] = '拿来主义必须建立在理解的基础上,否则思路永远是别人的。'; tips[10] = '闭上眼睛,整个网站都已经在脑海里,这才是开始...

    mt-utils:一些业务中常用的工具函数,Some commonly used tool functions in business

    [removed][removed] window.MtUtils.cssSupports('position')[removed]功能目录cssSupports CSS 能力检测参数prop : String css 属性名称value: [String | undefined] css 属性值返回值 Boolean描述判断浏览器是否...

    beer-feedback:啤酒品尝反馈应用程序,用于判断或学习

    对于法官来说,它应该简单易用,但无论有啤酒和智能手机的地方,任何啤酒爱好者都可以使用它来提高判断能力!尝试一下无需安装,无需创建帐户,只需使用智能手机,平板电脑或计算机即可打开: 如何使用它? 填写...

    java开源包4

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    UCD火花集2

    数据——判断淘宝店铺页面设计优劣的显微镜 7 第2章 交互设计 11 交互到底是做什么的 12 好习惯和坏习惯 13 交互设计师容易犯的错误:把自己.禁锢在解决 方案之中 15 UI和IxD 16 再谈交互设计、用户体验设计工作 19...

    PHPCMS 企业黄页模块 v9 UTF-8 正式版.zip

    8、信息管理分类列表支持异步加载,减轻分类太多一次加载js对浏览器的压力; 9、管理员可以对商家用户的信息二次编辑,支持推送至推荐位及推送到其他内容模型功能; 10、管理员可看会员组设置商家信息直接发布、...

    PHPCMS 企业黄页模块 v9 GBK 正式版.zip

    8、信息管理分类列表支持异步加载,减轻分类太多一次加载js对浏览器的压力; 9、管理员可以对商家用户的信息二次编辑,支持推送至推荐位及推送到其他内容模型功能; 10、管理员可看会员组设置商家信息直接发布、...

    DotNetTextBox所见即所得编辑器控件 v3.3.1

    &lt;br&gt;2007/7/04 Version 3.1.9 beta &lt;br&gt;Updates: 1) 增强页面信息采集功能的链接分析能力,当采集图片或超链接的时候会自动将相对路径转化为真实的网络路径,并且修正了采集功能的一些已知BUG。...

    DouZeroBid_For_HLDDZ_H5:一个未完成的关于DouZero叫牌版的测试

    在浏览器console里搜索 记牌器 就可以看到实时叫牌出牌胜率 说明 边逆向边写js水平也一般,所以代码质量很差 wss协议那面看着头疼,所以自动出牌功能没写,有能力的可以自己完成 本项目仅供学习以及技术交流,请勿...

    SmartStat流量统计系统 3.3.rar

    通过对客户端UserAgent的详尽分析,SmartStat对客户端操作系统及浏览器的判断非常完整和准确,提供了对同时安装IE和MYIE2的用户的浏览器分析的支持。 页面和入口分析 SmartStat 可以统计到网站中每一页的浏览量...

    网人地方生活门户系统(WRMPS) v7.0.1.rar

    不显示分类信息发布者详细信息的修改,少一段用户登录判断的JS代码 49.会员登录返回当前页问题 50.{$My_通用_Hand}自定义标签房产-二手房-出租房类别ID问题=1,2---手动改标签内容 51.房产首页模板-房产房源分类ID问题...

Global site tag (gtag.js) - Google Analytics