js 常用代码utils

275 阅读1分钟

总结几个常用的utils.

判断浏览器以及版本

function detectBrowser(userAgentString) {
        var browsers = [
          ['edge', /Edge\/([0-9\._]+)/],
          ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\/([0-9\.]+)(:?\s|$)/],
          ['firefox', /Firefox\/([0-9\.]+)(?:\s|$)/],
          ['opera', /Opera\/([0-9\.]+)(?:\s|$)/],
          ['opera', /OPR\/([0-9\.]+)(:?\s|$)$/],
          ['ie', /Trident\/7\.0.*rv\:([0-9\.]+)\).*Gecko$/],
          ['ie', /MSIE\s([0-9\.]+);.*Trident\/[4-7].0/],
          ['ie', /MSIE\s(7\.0)/],
          ['bb10', /BB10;\sTouch.*Version\/([0-9\.]+)/],
          ['android', /Android\s([0-9\.]+)/],
          ['ios', /iPad.*Version\/([0-9\._]+)/],
          ['ios', /iPhone.*Version\/([0-9\._]+)/],
          ['safari', /Version\/([0-9\._]+).*Safari/]
        ];
        var i,
          mapped = [];
        for (i = 0; i < browsers.length; i++) {
          browsers[i] = createMatch(browsers[i]);
          if (isMatch(browsers[i])) {
            mapped.push(browsers[i]);
          }
        }
        var match = mapped[0];
        var parts = match && match[3].split(/[._]/).slice(0, 3);
        while (parts && parts.length < 3) {
          parts.push('0');
        }

        function createMatch(pair) {
          return pair.concat(pair[1].exec(userAgentString));
        }

        function isMatch(pair) {
          return !!pair[2];
        }
        // return the name and version
        return {
          name: match && match[0],
          version: parts && parts.join('.')
        };
      }

通过利用 navigator.userAgent 来进行判断。 比如使用ie11 的navigator.userAgent

detectBrowser('Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko')
// 返回为 {name: "ie", version: "11.0.0"}