|
|
|
// 浏览器相关方法
|
|
|
|
import { isString } from "../../2.base";
|
|
|
|
|
|
|
|
let __isIE;
|
|
|
|
|
|
|
|
export function isIE() {
|
|
|
|
if (!_global.navigator) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (!__isIE) {
|
|
|
|
__isIE = /(msie|trident)/i.test(navigator.userAgent.toLowerCase());
|
|
|
|
}
|
|
|
|
|
|
|
|
return __isIE;
|
|
|
|
}
|
|
|
|
|
|
|
|
let __IEVersion;
|
|
|
|
|
|
|
|
export function getIEVersion() {
|
|
|
|
if (!_global.navigator) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
if (__IEVersion) {
|
|
|
|
return __IEVersion;
|
|
|
|
}
|
|
|
|
let version = 0;
|
|
|
|
const agent = navigator.userAgent.toLowerCase();
|
|
|
|
const v1 = agent.match(/(?:msie\s([\w.]+))/);
|
|
|
|
const v2 = agent.match(/(?:trident.*rv:([\w.]+))/);
|
|
|
|
if (v1 && v2 && v1[1] && v2[1]) {
|
|
|
|
version = Math.max(v1[1] * 1, v2[1] * 1);
|
|
|
|
} else if (v1 && v1[1]) {
|
|
|
|
version = v1[1] * 1;
|
|
|
|
} else if (v2 && v2[1]) {
|
|
|
|
version = v2[1] * 1;
|
|
|
|
} else {
|
|
|
|
version = 0;
|
|
|
|
}
|
|
|
|
__IEVersion = version;
|
|
|
|
|
|
|
|
return __IEVersion;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function isIE9Below() {
|
|
|
|
if (!isIE()) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return getIEVersion() < 9;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function isEdge() {
|
|
|
|
if (!_global.navigator) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return /edg/i.test(navigator.userAgent.toLowerCase());
|
|
|
|
}
|
|
|
|
|
|
|
|
export function isChrome() {
|
|
|
|
if (!_global.navigator) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return /chrome/i.test(navigator.userAgent.toLowerCase());
|
|
|
|
}
|
|
|
|
|
|
|
|
export function isFireFox() {
|
|
|
|
if (!_global.navigator) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return /firefox/i.test(navigator.userAgent.toLowerCase());
|
|
|
|
}
|
|
|
|
|
|
|
|
export function isOpera() {
|
|
|
|
if (!_global.navigator) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return /opera/i.test(navigator.userAgent.toLowerCase());
|
|
|
|
}
|
|
|
|
|
|
|
|
export function isSafari() {
|
|
|
|
if (!_global.navigator) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return /safari/i.test(navigator.userAgent.toLowerCase()) && !/chrome/i.test(navigator.userAgent.toLowerCase());
|
|
|
|
}
|
|
|
|
|
|
|
|
export function isKhtml() {
|
|
|
|
if (!_global.navigator) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return /Konqueror|Safari|KHTML/i.test(navigator.userAgent);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function isMac() {
|
|
|
|
if (!_global.navigator) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return /macintosh|mac os x/i.test(navigator.userAgent);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function isWindows() {
|
|
|
|
if (!_global.navigator) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return /windows|win32/i.test(navigator.userAgent);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function isSupportCss3(style) {
|
|
|
|
if (!_global.document) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
const prefix = ["webkit", "Moz", "ms", "o"];
|
|
|
|
const humpString = [];
|
|
|
|
const htmlStyle = document.documentElement.style;
|
|
|
|
let i;
|
|
|
|
let len;
|
|
|
|
|
|
|
|
function _toHumb(string) {
|
|
|
|
if (!isString(string)) {
|
|
|
|
return "";
|
|
|
|
}
|
|
|
|
|
|
|
|
return string.replace(/-(\w)/g, ($0, $1) => $1.toUpperCase());
|
|
|
|
};
|
|
|
|
|
|
|
|
for (i = 0; i < prefix.length; i++) {
|
|
|
|
humpString.push(_toHumb(`${prefix[i]}-${style}`));
|
|
|
|
}
|
|
|
|
humpString.push(_toHumb(style));
|
|
|
|
|
|
|
|
for (i = 0, len = humpString.length; i < len; i++) {
|
|
|
|
if (humpString[i] in htmlStyle) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getSafariVersion() {
|
|
|
|
if (!_global.navigator) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
const agent = navigator.userAgent.toLowerCase();
|
|
|
|
const version = agent.match(/version\/([\d.]+)/);
|
|
|
|
if (version && version[1]) {
|
|
|
|
return version[1] * 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getMinimumFontSize() {
|
|
|
|
// not work for firefox
|
|
|
|
const el = document.createElement("div");
|
|
|
|
el.style.fontSize = "1px";
|
|
|
|
document.body.appendChild(el);
|
|
|
|
const size = getComputedStyle(el).fontSize;
|
|
|
|
el.remove();
|
|
|
|
|
|
|
|
return parseInt(size, 10);
|
|
|
|
}
|