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 相关文章推荐
Extjs Ext.MessageBox.confirm 确认对话框详解
Apr 02 Javascript
JS 控制小数位数的实现代码
Aug 02 Javascript
jQuery代码优化 遍历篇
Nov 01 Javascript
jquery实现可拖拽弹出层特效
Jan 04 Javascript
jQuery中DOM树操作之复制元素的方法
Jan 23 Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 Javascript
基于javascript实现九宫格大转盘效果
May 28 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
Sep 23 Javascript
纯js实现html转pdf的简单实例(推荐)
Feb 16 Javascript
老生常谈jquery中detach()和remove()的区别
Mar 02 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
Jul 07 Javascript
微信小程序非跳转式组件授权登录的方法示例
May 22 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程序--记数器
2006/10/09 PHP
PHP中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
PDO::prepare讲解
2019/01/29 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
用函数式编程技术编写优美的 JavaScript_ibm
2008/05/16 Javascript
Javascript倒计时代码
2010/08/12 Javascript
js最简单的拖拽效果实现代码
2010/09/24 Javascript
Script的加载方法小结
2011/01/12 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
jQuery实现hover合成事件的方法
2015/08/06 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
Node.js console控制台简单用法分析
2019/01/04 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
python sys.argv[]用法实例详解
2018/05/25 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
2018/09/03 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
Python最小二乘法矩阵
2019/01/02 Python
Python3内置模块之json编解码方法小结【推荐】
2020/12/09 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
保荐人的岗位职责
2013/11/19 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
教师反腐倡廉演讲稿
2014/09/03 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
晶体管来复再生式二管收音机
2021/04/22 无线电
Golang并发操作中常见的读写锁详析
2021/08/30 Golang
Ajax实现异步加载数据
2021/11/17 Javascript