【js工具函数】判断浏览器和平台,使用前测试一下新版浏览器

 // Browser environment sniffing
 var inBrowser = typeof window !== 'undefined';
 var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;
 var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();
 var UA = inBrowser && window.navigator.userAgent.toLowerCase();
 var isIE = UA && /msie|trident/.test(UA);
 var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
 var isEdge = UA && UA.indexOf('edge/') > 0;
 var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');
 var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');
 var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
 var isPhantomJS = UA && /phantomjs/.test(UA);
 var isFF = UA && UA.match(/firefox\/(\d+)/);


var BrowserType = {
    // 测试 条件 编译 
    // IE6~ 10 支持 
    isIE_Gte6Lte10:
    /*@cc_ on!@*/
    false,
    // 测试 documentMode 
    // IE7~ 11 支持 
    isIE_Gte7Lte11: !!document.documentMode,
    // 测试 StyleMedia 构造 函数 
    // Edge 20 及 以上 版本 支持
    isEdge_Gte20: !!window.StyleMedia,
    // 测试 Firefox 专有 扩展 安装 API 
    // 所有 版本 的 Firefox 都 支持
    isFirefox_Gte1: typeof InstallTrigger !== 'undefined',
    // 测试 chrome 对象 及其 webstore 属性 
    // Opera 的 某些 版本 有 window.chrome,但没有 window.chrome.webstore 
    // 所有 版本 的 Chrome 都 支持
    // @TODO 有些谷歌,也没有window.chrome.webstore
    isChrome_Gte1: !!window.chrome && !!window.chrome.webstore,
    // Safari 早期 版 本会 给 构造 函数 的 标签 符 追加" Constructor" 字样, 如: 
    // window. Element. toString(); 
    // [object ElementConstructor] 
    // Safari 3~ 9. 1 支持 
    isSafari_Gte3Lte9_1: /constructor/i.test(window.Element),
    // 推送 通知 API 暴露 在 window 对象 上 
    // 使用 默认 参 数值 以 避免 对 undefined 调用 toString() 
    // Safari 7. 1 及 以上 版本 支持 
    isSafari_Gte7_1: function () {
        var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
            _ref$pushNotification = _ref.pushNotification,
            pushNotification = _ref$pushNotification === void 0 ? {} : _ref$pushNotification;

        return pushNotification.toString() == '[object SafariRemoteNotification]';
    }(window.safari),
    // 测试 addons 属性 // Opera 20 及 以上 版本 支持 
    // @TODO 新版的Opera中,opr是一个空对象,没有addons
    isOpera_Gte20: !!window.opr && !!window.opr.addons,
    isIE: function isIE() {
        return this.isIE_Gte6Lte10 || this.isIE_Gte7Lte11;
    },
    isEdge: function isEdge() {
        return this.isEdge_Gte20 && !this.isIE();
    },
    isFirefox: function isFirefox() {
        return this.isFirefox_Gte1;
    },
    isChrome: function isChrome() {
        return this.isChrome_Gte1;
    },
    isSafari: function isSafari() {
        return this.isSafari_Gte3Lte9_1 || this.isSafari_Gte7_1;
    },
    isOpera: function isOpera() {
        return this.isOpera_Gte20;
    }
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值