UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

199 lines (195 loc) 5.89 kB
/** * * @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++}` } }()), };