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 相关文章推荐
Ext.MessageBox工具类简介
Dec 10 Javascript
基于JQuery制作的产品广告效果
Dec 08 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
Feb 27 Javascript
使用js的replace()方法查找字符示例代码
Oct 28 Javascript
jquery跟js初始化加载的多种方法及区别介绍
Apr 02 Javascript
用jquery修复在iframe下的页面锚点失效问题
Aug 22 Javascript
js实现图片放大和拖拽特效代码分享
Sep 05 Javascript
javascript简单比较日期大小的方法
Jan 05 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
Mar 08 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
Jun 12 Javascript
100行代码实现一个vue分页组功能
Nov 06 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
Aug 04 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
77A一级收信机修理记
2021/03/02 无线电
php allow_url_include的应用和解释
2010/04/22 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
2010/02/15 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
JavaScript编写Chrome扩展实现与浏览器的交互及时间通知
2016/05/16 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
Node.js中使用jQuery的做法
2016/08/17 Javascript
浅谈js的异步执行
2016/10/18 Javascript
整理关于Bootstrap列表组的慕课笔记
2017/03/29 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
vue使用axios时关于this的指向问题详解
2017/12/22 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
nodejs一个简单的文件服务器的创建方法
2019/09/13 NodeJs
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
Python基于win32ui模块创建弹出式菜单示例
2018/05/09 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
Python经纬度坐标转换为距离及角度的实现
2020/11/01 Python
python切割图片的示例
2020/11/12 Python
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
印尼极简主义和实惠的在线家具店:Fabelio
2019/03/27 全球购物
专业毕业生个性的自我评价
2013/10/03 职场文书
小学教师的自我评价范例
2013/10/31 职场文书
师范大学应届生求职信
2013/11/21 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
车间主任岗位职责范本
2015/04/08 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android