All files / env browser.js

100% Statements 12/12
50% Branches 1/2
100% Functions 2/2
100% Lines 12/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60                                          2x 2x   2x                           2x       2x   2x     2x     1x 1x   1x     2x   2x  
/**
 * 检测浏览器类型
 *
 * 支持的类型检测
 * - qq
 * - uc
 * - baidu
 * - miui
 * - weixin
 * - qzone
 * - qqnews
 * - qqhouse
 * - qqbrowser
 * - chrome
 * @method env/browser
 * @returns {Object} UA 检查结果
 * @example
 * var $browser = require('@spore-ui/kit/packages/env/browser');
 * console.info($browser().chrome);
 * console.info($browser.detect());
 */
var $assign = require('../obj/assign');
var $uaMatch = require('./uaMatch');
 
var testers = {
  qq: (/qq\/([\d.]+)/i),
  uc: (/ucbrowser/i),
  baidu: (/baidubrowser/i),
  miui: (/miuibrowser/i),
  weixin: (/micromessenger/i),
  qzone: (/qzone\//i),
  qqnews: (/qqnews\/([\d.]+)/i),
  qqhouse: (/qqhouse/i),
  qqbrowser: (/qqbrowser/i),
  chrome: (/chrome/i),
};
 
function detect(options, checkers) {
  var conf = $assign({
    ua: '',
  }, options);
 
  $assign(testers, checkers);
 
  return $uaMatch(testers, conf.ua, conf);
}
 
var result = null;
 
function envBrowser() {
  Eif (!result) {
    result = detect();
  }
  return result;
}
 
envBrowser.detect = detect;
 
module.exports = envBrowser;