【js工具函数】判断浏览器和平台,使用前测试一下新版浏览器
程序员文章站
2022-06-19 17:54:02
// 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
上一篇: Android中各种Time API详细
下一篇: C#多种操作excel的方法比较