forked from fanruan/fineui
zsmj
2 years ago
7 changed files with 1272 additions and 1748 deletions
@ -1,151 +1,170 @@ |
|||||||
// 浏览器相关方法
|
// 浏览器相关方法
|
||||||
BI._.extend(BI, { |
import { isString } from "../../2.base"; |
||||||
isIE: function () { |
|
||||||
if(!_global.navigator) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
if (this.__isIE == null) { |
|
||||||
this.__isIE = /(msie|trident)/i.test(navigator.userAgent.toLowerCase()); |
|
||||||
} |
|
||||||
return this.__isIE; |
|
||||||
}, |
|
||||||
|
|
||||||
getIEVersion: function () { |
let __isIE; |
||||||
if(!_global.navigator) { |
|
||||||
return 0; |
|
||||||
} |
|
||||||
if (this.__IEVersion != null) { |
|
||||||
return this.__IEVersion; |
|
||||||
} |
|
||||||
var version = 0; |
|
||||||
var agent = navigator.userAgent.toLowerCase(); |
|
||||||
var v1 = agent.match(/(?:msie\s([\w.]+))/); |
|
||||||
var 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; |
|
||||||
} |
|
||||||
return this.__IEVersion = version; |
|
||||||
}, |
|
||||||
|
|
||||||
isIE9Below: function () { |
export function isIE() { |
||||||
if (!BI.isIE()) { |
if (!_global.navigator) { |
||||||
return false; |
return false; |
||||||
} |
} |
||||||
return this.getIEVersion() < 9; |
if (!__isIE) { |
||||||
}, |
__isIE = /(msie|trident)/i.test(navigator.userAgent.toLowerCase()); |
||||||
|
} |
||||||
|
|
||||||
isEdge: function () { |
return __isIE; |
||||||
if(!_global.navigator) { |
} |
||||||
return false; |
|
||||||
} |
|
||||||
return /edg/i.test(navigator.userAgent.toLowerCase()); |
|
||||||
}, |
|
||||||
|
|
||||||
isChrome: function () { |
let __IEVersion; |
||||||
if(!_global.navigator) { |
|
||||||
return false; |
|
||||||
} |
|
||||||
return /chrome/i.test(navigator.userAgent.toLowerCase()); |
|
||||||
}, |
|
||||||
|
|
||||||
isFireFox: function () { |
export function getIEVersion() { |
||||||
if(!_global.navigator) { |
if (!_global.navigator) { |
||||||
return false; |
return 0; |
||||||
} |
} |
||||||
return /firefox/i.test(navigator.userAgent.toLowerCase()); |
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; |
||||||
|
|
||||||
isOpera: function () { |
return __IEVersion; |
||||||
if(!_global.navigator) { |
} |
||||||
return false; |
|
||||||
} |
|
||||||
return /opera/i.test(navigator.userAgent.toLowerCase()); |
|
||||||
}, |
|
||||||
|
|
||||||
isSafari: function () { |
export function isIE9Below() { |
||||||
if(!_global.navigator) { |
if (!isIE()) { |
||||||
return false; |
return false; |
||||||
} |
} |
||||||
return /safari/i.test(navigator.userAgent.toLowerCase()) && !/chrome/i.test(navigator.userAgent.toLowerCase()); |
|
||||||
}, |
|
||||||
|
|
||||||
isKhtml: function () { |
return getIEVersion() < 9; |
||||||
if(!_global.navigator) { |
} |
||||||
return false; |
|
||||||
} |
|
||||||
return /Konqueror|Safari|KHTML/i.test(navigator.userAgent); |
|
||||||
}, |
|
||||||
|
|
||||||
isMac: function () { |
export function isEdge() { |
||||||
if(!_global.navigator) { |
if (!_global.navigator) { |
||||||
return false; |
return false; |
||||||
} |
} |
||||||
return /macintosh|mac os x/i.test(navigator.userAgent); |
|
||||||
}, |
|
||||||
|
|
||||||
isWindows: function () { |
return /edg/i.test(navigator.userAgent.toLowerCase()); |
||||||
if(!_global.navigator) { |
} |
||||||
return false; |
|
||||||
} |
|
||||||
return /windows|win32/i.test(navigator.userAgent); |
|
||||||
}, |
|
||||||
|
|
||||||
isSupportCss3: function (style) { |
export function isChrome() { |
||||||
if(!_global.document) { |
if (!_global.navigator) { |
||||||
return false; |
return false; |
||||||
} |
} |
||||||
var prefix = ["webkit", "Moz", "ms", "o"], |
|
||||||
i, len, |
|
||||||
humpString = [], |
|
||||||
htmlStyle = document.documentElement.style, |
|
||||||
_toHumb = function (string) { |
|
||||||
if (!BI.isString(string)) { |
|
||||||
return ""; |
|
||||||
} |
|
||||||
|
|
||||||
return string.replace(/-(\w)/g, function ($0, $1) { |
|
||||||
return $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++) { |
return /chrome/i.test(navigator.userAgent.toLowerCase()); |
||||||
if (humpString[i] in htmlStyle) { |
} |
||||||
return true; |
|
||||||
} |
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 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; |
||||||
|
|
||||||
getSafariVersion: function () { |
function _toHumb(string) { |
||||||
if (!_global.navigator) { |
if (!isString(string)) { |
||||||
return 0; |
return ""; |
||||||
} |
} |
||||||
var agent = navigator.userAgent.toLowerCase(); |
|
||||||
var version = agent.match(/version\/([\d.]+)/); |
return string.replace(/-(\w)/g, ($0, $1) => $1.toUpperCase()); |
||||||
if (version && version[1]) { |
}; |
||||||
return version[1] * 1; |
|
||||||
|
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; |
return 0; |
||||||
}, |
} |
||||||
|
const agent = navigator.userAgent.toLowerCase(); |
||||||
getMinimumFontSize: function () { |
const version = agent.match(/version\/([\d.]+)/); |
||||||
// not work for firefox
|
if (version && version[1]) { |
||||||
const el = document.createElement('div'); |
return version[1] * 1; |
||||||
el.style.fontSize = "1px"; |
} |
||||||
document.body.appendChild(el); |
|
||||||
const size = getComputedStyle(el).fontSize; |
return 0; |
||||||
el.remove(); |
} |
||||||
return parseInt(size); |
|
||||||
} |
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); |
||||||
|
} |
||||||
|
@ -0,0 +1,4 @@ |
|||||||
|
export * as DOM from "./dom"; |
||||||
|
export * from "./detectElementResize"; |
||||||
|
export * from "./function"; |
||||||
|
export * from "./load"; |
@ -1,55 +1,56 @@ |
|||||||
BI._.extend(BI, { |
const _LOADED = {}; // alex:保存加载过的
|
||||||
$import: function () { |
function loadReady(src, must) { |
||||||
var _LOADED = {}; // alex:保存加载过的
|
const $scripts = BI.$("head script, body script"); |
||||||
function loadReady (src, must) { |
BI.$.each($scripts, (i, item) => { |
||||||
var $scripts = BI.$("head script, body script"); |
if (item.src.indexOf(src) !== -1) { |
||||||
BI.$.each($scripts, function (i, item) { |
_LOADED[src] = true; |
||||||
if (item.src.indexOf(src) != -1) { |
|
||||||
_LOADED[src] = true; |
|
||||||
} |
|
||||||
}); |
|
||||||
var $links = BI.$("head link"); |
|
||||||
BI.$.each($links, function (i, item) { |
|
||||||
if (item.href.indexOf(src) != -1 && must) { |
|
||||||
_LOADED[src] = false; |
|
||||||
BI.$(item).remove(); |
|
||||||
} |
|
||||||
}); |
|
||||||
} |
} |
||||||
|
}); |
||||||
|
const $links = BI.$("head link"); |
||||||
|
BI.$.each($links, (i, item) => { |
||||||
|
if (item.href.indexOf(src) !== -1 && must) { |
||||||
|
_LOADED[src] = false; |
||||||
|
BI.$(item).remove(); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
// must=true 强行加载
|
/** |
||||||
return function (src, ext, must) { |
* |
||||||
loadReady(src, must); |
* @param src |
||||||
// alex:如果已经加载过了的,直接return
|
* @param ext |
||||||
if (_LOADED[src] === true) { |
* @param must 强行加载 |
||||||
return; |
*/ |
||||||
} |
export function $import(src, ext, must) { |
||||||
if (ext === "css") { |
loadReady(src, must); |
||||||
var link = document.createElement("link"); |
// alex:如果已经加载过了的,直接return
|
||||||
link.rel = "stylesheet"; |
if (_LOADED[src] === true) { |
||||||
link.type = "text/css"; |
return; |
||||||
link.href = src; |
} |
||||||
var head = document.getElementsByTagName("head")[0]; |
if (ext === "css") { |
||||||
head.appendChild(link); |
const link = document.createElement("link"); |
||||||
_LOADED[src] = true; |
link.rel = "stylesheet"; |
||||||
} else { |
link.type = "text/css"; |
||||||
// alex:这里用同步调用的方式,必须等待ajax完成
|
link.href = src; |
||||||
BI.$.ajax({ |
const head = document.getElementsByTagName("head")[0]; |
||||||
url: src, |
head.appendChild(link); |
||||||
dataType: "script", // alex:指定dataType为script,jquery会帮忙做globalEval的事情
|
_LOADED[src] = true; |
||||||
async: false, |
} else { |
||||||
cache: true, |
// alex:这里用同步调用的方式,必须等待ajax完成
|
||||||
complete: function (res, status) { |
BI.$.ajax({ |
||||||
/* |
url: src, |
||||||
* alex:发现jquery会很智能地判断一下返回的数据类型是不是script,然后做一个globalEval |
dataType: "script", // alex:指定dataType为script,jquery会帮忙做globalEval的事情
|
||||||
* 所以当status为success时就不需要再把其中的内容加到script里面去了 |
async: false, |
||||||
*/ |
cache: true, |
||||||
if (status == "success") { |
complete(res, status) { |
||||||
_LOADED[src] = true; |
/* |
||||||
} |
* alex:发现jquery会很智能地判断一下返回的数据类型是不是script,然后做一个globalEval |
||||||
} |
* 所以当status为success时就不需要再把其中的内容加到script里面去了 |
||||||
}); |
*/ |
||||||
} |
if (status === "success") { |
||||||
}; |
_LOADED[src] = true; |
||||||
}() |
} |
||||||
}); |
}, |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
|
Loading…
Reference in new issue