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 相关文章推荐
aspx中利用js实现确认删除代码
Jul 22 Javascript
jquery网页元素拖拽插件效果及实现
Aug 05 Javascript
javascript 获取模态窗口的滚动位置代码
Aug 06 Javascript
根据表格中的某一列进行排序的javascript代码
Nov 29 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
Nov 25 Javascript
实践中学习AngularJS表单
Mar 21 Javascript
Mvc提交表单的四种方法全程详解
Aug 10 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
Apr 20 jQuery
探索JavaScript中私有成员的相关知识
Jun 13 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
Apr 27 Javascript
javascript实现移动端轮播图
Dec 09 Javascript
Vue 简单实现前端权限控制的示例
Dec 25 Vue.js
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
QueryPath PHP 中的jQuery
2010/04/11 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
用JTrackBar实现的模拟苹果风格的滚动条
2007/08/06 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
Javascript定义类(class)的三种方法详解
2015/03/13 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
理解javascript中的MVC模式
2016/01/28 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
2017/02/21 Javascript
JavaScript之生成器_动力节点Java学院整理
2017/06/30 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
[04:47]DOTA2-潍坊风行电子俱乐部探秘
2014/08/08 DOTA
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
Python深入学习之特殊方法与多范式
2014/08/31 Python
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
python实现点对点聊天程序
2018/07/28 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
澳大利亚领先的亚麻品牌:Bed Threads
2019/12/16 全球购物
中专生自荐信
2014/06/25 职场文书
党员民主生活会个人整改措施材料
2014/09/16 职场文书
租赁协议书
2015/01/27 职场文书
行政申诉状范文
2015/05/20 职场文书
党员转正大会主持词
2015/07/02 职场文书
golang中的空slice案例
2021/04/27 Golang
MySQL 数据 data 基本操作
2022/05/04 MySQL