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 相关文章推荐
由浅到深了解JavaScript类
Sep 08 Javascript
javascript 广告后加载,加载完页面再加载广告
Nov 25 Javascript
JavaScript Scoping and Hoisting 翻译
Jul 03 Javascript
jq选项卡鼠标延迟的插件实例
May 13 Javascript
JavaScript 表单处理实现代码
Apr 13 Javascript
Javascript编程中几种继承方式比较分析
Nov 28 Javascript
jQuery实现鼠标选文字发新浪微博的方法
Apr 02 Javascript
JavaScript在控件上添加倒计时功能的实现代码
Jul 04 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
Oct 28 jQuery
vue实现的双向数据绑定操作示例
Dec 04 Javascript
JavaScript实现Tab选项卡切换
Feb 13 Javascript
基于JS正则表达式实现模板数据动态渲染(实现思路详解)
Mar 07 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脚本的10个技巧(6)
2006/10/09 PHP
解析PHP提交后跳转
2013/06/23 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
php7下的filesize函数
2019/09/30 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
文本链接逐个出现的js脚本
2007/12/12 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
JS获取Table中td值的方法
2015/03/19 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
jQuery插件开发发送短信倒计时功能代码
2017/05/09 jQuery
利用vue.js实现被选中状态的改变方法
2018/02/08 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
[48:21]Mski vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python复制目录结构脚本代码分享
2015/03/06 Python
在Linux下调试Python代码的各种方法
2015/04/17 Python
python实现用于测试网站访问速率的方法
2015/05/26 Python
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
关于css兼容性问题及一些常见问题汇总
2016/05/03 HTML / CSS
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
项目开发计划书
2014/01/09 职场文书
单位委托书
2014/10/15 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
航班延误投诉信
2015/07/02 职场文书
值班管理制度范本
2015/08/06 职场文书