javascript判断chrome浏览器的方法


Posted in Javascript onMarch 26, 2014

通过userAgent判断检测一下userAgent返回的字符串里面是否包含“Chrome”, 具体怎么检测是通过indexOf方法进行的。

<script type="text/javascript">
  var isChrome = window.navigator.userAgent.indexOf("Chrome") !== -1;
  alert(isChrome);
  if (isChrome) {
    alert("是Chrome浏览器");
  } else {
    alert("不是Chrome浏览器");
  }
</script>

关于indexOf方法:

indexOf方法返回一个整数值,指出String对象内子字符串的开始位置。即indexOf()括号内所包含的字符在该字符串内的位置,在第几位就返回几,从0开始记数。如果有重复的字符出现,以第一个字符为准。如果没有找到子字符串,则返回 -1。

 JS通过内核判断各种浏览器|区分360与谷歌(亲测可用)

function getBrowserInfo(){
    var ua = navigator.userAgent.toLocaleLowerCase();
    var browserType=null;
    if (ua.match(/msie/) != null || ua.match(/trident/) != null) {
      browserType = "IE";
      browserVersion = ua.match(/msie ([\d.]+)/) != null ? ua.match(/msie ([\d.]+)/)[1] : ua.match(/rv:([\d.]+)/)[1];
    } else if (ua.match(/firefox/) != null) {
      browserType = "火狐";
    }else if (ua.match(/ubrowser/) != null) {
      browserType = "UC";
    }else if (ua.match(/opera/) != null) {
      browserType = "欧朋";
    } else if (ua.match(/bidubrowser/) != null) {
      browserType = "百度";
    }else if (ua.match(/metasr/) != null) {
      browserType = "搜狗";
    }else if (ua.match(/tencenttraveler/) != null || ua.match(/qqbrowse/) != null) {
      browserType = "QQ";
    }else if (ua.match(/maxthon/) != null) {
      browserType = "遨游";
    }else if (ua.match(/chrome/) != null) {
      var is360 = _mime("type", "application/vnd.chromium.remoting-viewer");
      function _mime(option, value) {
        var mimeTypes = navigator.mimeTypes;
        for (var mt in mimeTypes) {
          if (mimeTypes[mt][option] == value) {
            return true;
          }
        }
        return false;
      }
      if(is360){
        browserType = '360';
      }else{
        $('html').css("zoom",".80");
      }
    }else if (ua.match(/safari/) != null) {
      browserType = "Safari";
    }
}

只有原生Chrome中存在一种MimeType“application/vnd.chromium.remoting-viewer”,由此可以判断浏览器是加壳Chrome或是原生Chrome。
再如,只有IE内核的浏览器存在ActiveXObject对象。由此可以判断是否为IE浏览器

判断浏览器类型,我们需要遵循以下原则:

1、采取命中特征原则,当且仅当完全符合区分浏览器的特征时我们才会采用此特征。例如单纯通过UA中MSIE来检测是否为IE浏览器是不可靠的。而通过判断是否存在MimeType“application/vnd.chromium.remoting-viewer”来断言原生Chrome在现阶段来看是可行性,但也不保证永久有效。
2、对于主流浏览器来说一般不存在UserAgent关键字冲突,但对于许多加壳浏览器者就不一定了。再次提出某数字浏览器,userAgent干脆和IE一模一样,但渲染模式等等不不知道动了什么手脚,与标准IE行为差异很大。通过userAgent来判断浏览器时,优先命中浏览器特征字。匹配则基本确定为该浏览器,但未匹配也并不代表不是此浏览器。请悉知。
3、优先使用浏览器特性来区分浏览器,因为这个准确性较高。其次再采用userAgent辅助判断,从而达到最高的匹配度。
4、优先检测第三方加壳浏览器,目前并未有十分好的方案,只能枚举大部分世面上存在并可以判断的浏览器,其他未匹配任何规则的浏览器,为了兼容,请将规则落到四大浏览器之一。
5、判断浏览器版本,仅仅是为了针对特定浏览器进行优化,需要有特定的业务场景需要才要这么做。或者当某个浏览器出现兼容问题时,紧急添加针对浏览器的补丁代码时才判断。更加科学稳妥的办法是使用标准的JS函数和API,页面元素和样式设计遵循W3C标准。可能存在争议的兼容性问题尽可能采用第三方框架如jQuery。这才是解决兼容性问题的根本。
下面附上最近整理规纳判断浏览器类型的代码

Javascript 相关文章推荐
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
Nov 11 Javascript
可自己添加html的伪弹出框实现代码
Sep 08 Javascript
JS实现匀速运动的代码实例
Nov 29 Javascript
angularJS 中$attrs方法使用指南
Feb 09 Javascript
javascript同步服务器时间和同步倒计时小技巧
Sep 24 Javascript
JS实现选项卡实例详解
Nov 17 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
Dec 08 Javascript
js代码延迟一定时间后执行一个函数的实例
Feb 15 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
Jun 04 Javascript
iView框架问题整理小结
Oct 16 Javascript
了解JavaScript中let语句
May 30 Javascript
使用apifm-wxapi快速开发小程序过程详解
Aug 05 Javascript
Javascript 浮点运算精度问题分析与解决
Mar 26 #Javascript
javascript 3d 逐侦产品展示(核心精简)
Mar 26 #Javascript
Node.js模拟浏览器文件上传示例
Mar 26 #Javascript
JavaScript关闭当前页面(窗口)不带任何提示
Mar 26 #Javascript
JavaScript数字和字符串转换示例
Mar 26 #Javascript
jquery实现瀑布流效果分享
Mar 26 #Javascript
jquery实现效果比较好的table选中行颜色
Mar 25 #Javascript
You might like
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
通用JS事件写法实现代码
2009/01/07 Javascript
浅析jQuery的链式调用之each函数
2010/12/03 Javascript
jquery实现搜索框常见效果的方法
2015/01/22 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
Vue.js获取被选择的option的value和text值方法
2018/08/24 Javascript
vue项目刷新当前页面的三种方法
2018/12/04 Javascript
vue 中的 render 函数作用详解
2020/02/28 Javascript
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
Python实现的彩票机选器实例
2015/06/17 Python
Python中有趣在__call__函数
2015/06/21 Python
pandas 选择某几列的方法
2018/07/03 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
对Python Pexpect 模块的使用说明详解
2019/02/14 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
借助HTML5 Canvas API制作一个简单的猜字游戏
2016/03/25 HTML / CSS
Html5实现首页动态视频背景的示例代码
2019/09/25 HTML / CSS
公司人力资源的自我评价
2014/01/02 职场文书
《我的伯父鲁迅先生》教学反思
2014/02/12 职场文书
总经理秘书岗位职责
2014/03/17 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
车辆转让协议书
2014/04/15 职场文书
导师工作推荐信
2015/03/27 职场文书
2015年会计工作总结范文
2015/05/26 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
python中sys模块的介绍与实例
2021/04/17 Python
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏