@planjs/utils
Version:
🔧 Common tools collection
154 lines (137 loc) • 3.66 kB
JavaScript
import _typeof from "@babel/runtime/helpers/esm/typeof";
var defaultUA = isBrowser() ? window.navigator.userAgent : '';
/**
* 检查是否浏览器环境
* @category Is
*/
export function isBrowser() {
return (typeof window === "undefined" ? "undefined" : _typeof(window)) === 'object' && window.window === window;
}
/**
* 检查是否node环境
* @category Is
*/
export function isNode() {
return typeof process !== 'undefined' && process.release.name === 'node';
}
/**
* 是否为safari浏览器
* @category Is
*/
export function isSafari() {
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultUA;
return !ua.match(/Chrome/gi) && !!ua.match(/Safari/gi);
}
/**
* 是否为chrome浏览器
* @category Is
*/
export function isChrome() {
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultUA;
return !!ua.match(/Chrome/gi);
}
/**
* 是否为firefox浏览器
* @category Is
*/
export function isFirefox() {
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultUA;
return !!ua.match(/Firefox/gi);
}
/**
* 是否为opera浏览器
* @category Is
*/
export function isOpera() {
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultUA;
return !!ua.match(/Opera/gi);
}
/**
* 是否为IE浏览器
* @category Is
*/
export function isIE() {
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultUA;
return /msie|trident/.test(ua.toLowerCase());
}
/**
* 是否IE8
* @param ua
* @category Is
*/
export function isIE8() {
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultUA;
return ua.toLowerCase().indexOf('msie 8.0') > 0;
}
/**
* 是否IE9
* @param ua
* @category Is
*/
export function isIE9() {
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultUA;
return ua.toLowerCase().indexOf('msie 9.0') > 0;
}
/**
*
* @param ua
* @category Is
*/
export function isEDGE() {
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultUA;
return ua.toLowerCase().indexOf('edge/') > 0;
}
/**
* 是否为IOS系统
* @category Is
*/
export function isIOS() {
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultUA;
return !!ua.match(/iphone|ipad|iPod/gi);
}
/**
* 是否为Android系统
* @category Is
*/
export function isAndroid() {
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultUA;
return !!ua.match(/android/gi);
}
/**
* 是否是微信浏览器
* @param ua
* @category Is
*/
export function isWXBrowser() {
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultUA;
return !!ua.match(/micromessenger/gi);
}
/**
* 判断是否企业微信浏览器
* @param ua
* @category Is
*/
export function isWWBrowser() {
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultUA;
return !!ua.match(/wxwork/gi) && isWXBrowser(ua);
}
/**
* 判断是否微信小程序内的webview
* @param ua
* https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html
* @category Is
*/
export function isWXMiniProgramWebView() {
var ua = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultUA;
return !!ua.match(/miniProgram/gi);
}
/**
* 判断是否暗黑模式
* @category Is
*/
export function isPrefersDarkMode() {
if (!isBrowser()) {
throw new Error('Can only be used on the node side.');
}
return window.matchMedia('(prefers-color-scheme: dark)');
}