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 相关文章推荐
论坛特效代码收集(落伍转发-不错)
Dec 02 Javascript
从数据结构的角度分析 for each in 比 for in 快的多
Jul 07 Javascript
js键盘事件的keyCode
Jul 29 Javascript
jQuery的css() 方法使用指南
May 03 Javascript
js下将金额数字每三位一逗号分隔
Feb 19 Javascript
多种jQuery绑定事件的实现方式
Jun 13 Javascript
微信小程序 rpx 尺寸单位详细介绍
Oct 13 Javascript
微信小程序 配置文件详细介绍
Dec 14 Javascript
angularJs使用$watch和$filter过滤器制作搜索筛选实例
Jun 01 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
Jun 25 Javascript
vue Tab切换以及缓存页面处理的几种方式
Nov 05 Javascript
js实现聊天对话框
Feb 08 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
smarty模板中使用get、post、request、cookies、session变量的方法
2014/04/24 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
2011/09/20 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
Javascript高级技巧分享
2014/02/25 Javascript
html的DOM中Event对象onabort事件用法实例
2015/01/21 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
AngularJS仿苹果滑屏删除控件
2016/01/18 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
AngularJS中table表格基本操作示例
2017/10/10 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
web前端vue filter 过滤器
2018/01/12 Javascript
jQuery实现ajax回调函数带入参数的方法示例
2018/06/26 jQuery
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
pandas中去除指定字符的实例
2018/05/18 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
如何通过python实现全排列
2020/02/11 Python
python3.8.1+selenium实现登录滑块验证功能
2020/05/22 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
Python检测端口IP字符串是否合法
2020/06/05 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
《小松树和大松树》教学反思
2014/02/20 职场文书
产品质量承诺书范文
2014/03/27 职场文书
毕业生就业协议书
2014/04/11 职场文书
感恩之星事迹材料
2014/05/03 职场文书
市场推广策划方案
2014/06/02 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
班主任高考寄语
2015/02/26 职场文书
会议室使用管理制度
2015/08/06 职场文书
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL