fastlion-amis
Version:
一种MIS页面生成工具
199 lines (195 loc) • 5.89 kB
text/typescript
/**
*
* @param variable -url上的变量明 最推荐
*/
const getUrlSearchParams = (variable: string) => {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) { return pair[1] }
}
return (false);
}
//开发平台预览
let isMb = getUrlSearchParams('preview') === "mb" || /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
let isAndroid = /Android/i.test(navigator.userAgent)
const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
export var tools = {
/**是否移动端 true:是 false: 否 */
isMb: isMb,
/**是否PC端 true:是 false: 否 */
isPc: !isMb,
/**是否苹果 true:是 false: 否 */
isIOS,
isAndroid: isAndroid,
isComWx: /wxwork/i.test(navigator.userAgent),
isMac: /macintosh|macintel/ig.test(navigator.userAgent.toLowerCase()),
canUseSticky: CSS.supports('position', 'sticky'),
canUseWebKitSticky: CSS.supports('position', '-webkit-sticky'),
toArray<T>(any: T | T[]): T[] {
if (!Array.isArray(any)) {
return [any];
} else {
return any;
}
},
//判断是否是微信浏览器的函数
isWeiXin(): boolean {
return window.navigator.userAgent.toLowerCase().indexOf('micromessenger') !== -1
},
//随机名称生成
randonName(len?: number): string {
var len: number | undefined = len || 32;
var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
var maxPos = chars.length;
var pwd = '';
for (var i = 0; i < len; i++) {
pwd += chars.charAt(Math.floor(Math.random() * maxPos));
}
return pwd
},
os: (() => {
const ua = navigator.userAgent,
os = {
wechat: {
version: ''
},
ios: false,
iphone: false,
ipad: false,
android: false,
version: ''
};
const funcs = [
function () { //wechat
let wechat = ua.match(/(MicroMessenger)\/([\d\.]+)/i);
if (wechat) { //wechat
os.wechat = {
version: wechat[2].replace(/_/g, '.')
};
}
return false;
},
function () { //android
let android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
if (android) {
os.android = true;
os.version = android[2];
// os.isBadAndroid = !(/Chrome\/\d/.test(window.navigator.appVersion));
}
return os.android;
},
function () { //ios
let iphone = ua.match(/(iPhone\sOS)\s([\d_]+)/);
if (iphone) { //iphone
os.ios = true;
os.iphone = true;
os.version = iphone[2].replace(/_/g, '.');
} else {
let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
if (ipad) { //ipad
os.ios = true;
os.ipad = true;
os.version = ipad[2].replace(/_/g, '.');
}
}
return os.ios;
}
];
funcs.every(function (func) {
return !func();
});
return os;
})(),
copy(text: string) {
let input = document.createElement("textarea");
input.style.cssText = 'position: absolute;top: -1px;height: 1px;width: 1px;';
input.value = text;
document.body.appendChild(input);
input.select();
document.execCommand("Copy");
document.body.removeChild(input);
},
utf8ArrayToStr(array: Uint8Array) { // 数据流转化为字符串, 兼容汉字
let out = "",
i = 0,
len = array.length,
char1,
char2,
char3,
char4;
while (i < len) {
char1 = array[i++];
// 当单个字节时, 最大值 '01111111', 最小值 '00000000' 右移四位 07, 00
// 当两个字节时, 最大值 '11011111', 最小值 '11000000' 右移四位 13, 12
// 当三个字节时, 最大值 '11101111', 最小值 '11100000' 右移四位 14, 14
if (char1 >> 4 <= 7) {
out += String.fromCharCode(char1);
} else if (char1 >> 4 == 12 || char1 >> 4 == 13) {
char2 = array[i++];
out += String.fromCharCode(((char1 & 0x1F) << 6) | (char2 & 0x3F));
} else if (char1 >> 4 == 14) {
char2 = array[i++];
char3 = array[i++];
char4 = ((char1 & 0x0F) << 12) | ((char2 & 0x3F) << 6);
out += String.fromCharCode(char4 | ((char3 & 0x3F) << 0));
}
}
return out;
},
//判断变量是否是对象
isObject(obj: any): obj is Object {
return Object.prototype.toString.call(obj) === "[object Object]";
},
isEmptyObject(obj: any): obj is {} {
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
return false;
}
}
return true;
},
//判断变量是否是数组
isArray<T = any>(arr: any): arr is Array<T> {
return Object.prototype.toString.call(arr) === "[object Array]";
},
/**是否无效值 true:是 false:否 */
isEmpty(variable: any) {
var result = false;
if (typeof variable === "string") {
if (
variable === "" ||
variable === "undefined" ||
// variable === "null" ||
variable === "NaN" ||
variable === "Infinity"
) {
result = true;
}
} else if (typeof variable === "number") {
if (isNaN(variable) || !isFinite(variable)) {
result = false;
}
} else if (variable === null) {
result = true;
} else if (typeof variable === "undefined") {
result = true;
} else if (tools.isObject(variable)) {
if (tools.isEmptyObject(variable)) {
result = true;
}
} else if (tools.isArray(variable)) {
if (variable.length === 0) {
result = true;
}
}
return result;
},
getGuid: (function () {
let guid = 999;
return function (prefix = 'guid-') {
return `${prefix}${guid++}`
}
}()),
};