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 相关文章推荐
js写一个字符串转成驼峰的实例
Jun 21 Javascript
jquery中trigger()无法触发hover事件的解决方法
May 07 Javascript
Bootstrap开发实战之响应式轮播图
Jun 02 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
Jan 05 Javascript
Vue的土著指令和自定义指令实例详解
Feb 04 Javascript
electron demo项目npm install安装失败的解决方法
Feb 06 Javascript
Vue 页面跳转不用router-link的实现代码
Apr 12 Javascript
浅谈Webpack 是如何加载模块的
May 24 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
May 30 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
Sep 07 Javascript
Vue插槽原理与用法详解
Mar 05 Javascript
JavaScript实现4位随机验证码的生成
Jan 28 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
php中常用编辑器推荐
2007/01/02 PHP
PHP 替换模板变量实现步骤
2009/08/24 PHP
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
ThinkPHP进程计数类Process用法实例详解
2015/09/25 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
写的htc的数据表格
2007/01/20 Javascript
js null undefined 空区别说明
2010/06/13 Javascript
Javascript封装DOMContentLoaded事件实例
2014/06/12 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
使用JQuery FancyBox插件实现图片展示特效
2015/11/16 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
2016/09/04 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
JS简单判断是否在微信浏览器打开的方法示例
2019/01/08 Javascript
整理Python最基本的操作字典的方法
2015/04/24 Python
python文件操作之目录遍历实例分析
2015/05/20 Python
轻松实现python搭建微信公众平台
2016/02/16 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
2017/11/30 Python
Django 再谈一谈json序列化
2020/03/16 Python
python开根号实例讲解
2020/08/30 Python
比驿:全球酒店比价网
2018/06/20 全球购物
联想德国官网:Lenovo Germany
2018/07/04 全球购物
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
测量实习生自我鉴定
2013/09/19 职场文书
运动会领导邀请函
2014/02/05 职场文书
党员四风问题对照检查材料思想汇报
2014/09/16 职场文书
琅琊山导游词
2015/02/05 职场文书
2015年父亲节寄语
2015/03/23 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电