欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-09 07:52:26
// Browser environment sniffing var inBrowser = typeof window !== 'undefined'; var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform; var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase(); var UA = i....
 // 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;
    }
};

本文地址:https://blog.csdn.net/lal95828/article/details/111885971

相关标签: js功能 javascript