JavaScript识别浏览器种类

//放在App.vue中,可以一打开就检测
<el-alert type="error" center :closable="true"  v-show="!browser().hasOwnProperty('chrome')">
      <span slot="title" simple>
        检测到当前浏览器非chrome内核浏览器,为了您的使用体验和程序运行速度,请使用chrome内核进行操作!
        <a href="http://softdown.hikvision.com.cn/?p=76" target="_blank">下载谷歌浏览器</a>
      </span>
    </el-alert>


methods: {
    browser: function() {
      //检测浏览器内核--返回的是两个key,name:浏览器内核的名称---version:浏览器的版本号
      let _broswer = {};
      let sUserAgent = navigator.userAgent;
      let isOpera = sUserAgent.indexOf("Opera") > -1;
      if (isOpera) {
        //首先检测Opera是否进行了伪装
        if (navigator.appName == "Opera") {
          //如果没有进行伪装,则直接后去版本号
          _broswer.version = parseFloat(navigator.appVersion);
        } else {
          let reOperaVersion = new RegExp("Opera (\\d+.\\d+)");
          //使用正则表达式的test方法测试并将版本号保存在RegExp.$1中
          reOperaVersion.test(sUserAgent);
          _broswer.version = parseFloat(RegExp["$1"]);
        }
        _broswer.opera = true;
        _broswer.name = "opera";
      }
      let isChrome = sUserAgent.indexOf("Chrome") > -1;
      if (isChrome) {
        let reChorme = new RegExp("Chrome/(\\d+\\.\\d+(?:\\.\\d+\\.\\d+))?");
        reChorme.test(sUserAgent);
        _broswer.version = parseFloat(RegExp["$1"]);
        _broswer.chrome = true;
        _broswer.name = "chrome";
      }
      //排除Chrome信息,因为在Chrome的user-agent字符串中会出现Konqueror/Safari的关键字
      let isKHTML =
        (sUserAgent.indexOf("KHTML") > -1 ||
          sUserAgent.indexOf("Konqueror") > -1 ||
          sUserAgent.indexOf("AppleWebKit") > -1) &&
        !isChrome;
      if (isKHTML) {
        //判断是否基于KHTML,如果时的话在继续判断属于何种KHTML浏览器
        let isSafari = sUserAgent.indexOf("AppleWebKit") > -1;
        let isKonq = sUserAgent.indexOf("Konqueror") > -1;
        if (isSafari) {
          let reAppleWebKit = new RegExp("Version/(\\d+(?:\\.\\d*)?)");
          reAppleWebKit.test(sUserAgent);
          let fAppleWebKitVersion = parseFloat(RegExp["$1"]);
          _broswer.version = parseFloat(RegExp["$1"]);
          _broswer.safari = true;
          _broswer.name = "safari";
        } else if (isKonq) {
          let reKong = new RegExp("Konqueror/(\\d+(?:\\.\\d+(?\\.\\d)?)?)");
          reKong.test(sUserAgent);
          _broswer.version = parseFloat(RegExp["$1"]);
          _broswer.konqueror = true;
          _broswer.name = "konqueror";
        }
      }
      // !isOpera 避免是由Opera伪装成的IE
      let isIE =
        sUserAgent.indexOf("compatible") > -1 &&
        sUserAgent.indexOf("MSIE") > -1 &&
        !isOpera;
      if (isIE) {
        let reIE = new RegExp("MSIE (\\d+\\.\\d+);");
        reIE.test(sUserAgent);
        _broswer.version = parseFloat(RegExp["$1"]);
        _broswer.msie = true;
        _broswer.name = "msie";
      }
      // 排除Chrome 及 Konqueror/Safari 的伪装
      let isMoz = sUserAgent.indexOf("Gecko") > -1 && !isChrome && !isKHTML;
      if (isMoz) {
        let reMoz = new RegExp("rv:(\\d+\\.\\d+(?:\\.\\d+)?)");
        reMoz.test(sUserAgent);
        _broswer.version = parseFloat(RegExp["$1"]);
        _broswer.mozilla = true;
        _broswer.name = "mozilla";
      }
      return _broswer;
    }
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值