Created
March 9, 2021 03:07
-
-
Save KiligFei/891d7bb906d0986da62f1b3d7743017f to your computer and use it in GitHub Desktop.
[常用方法] 封装基本方法 #Javascript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import md5 from "js-md5"; | |
var U = (function () { | |
var _logEnabled = false; | |
var log = function () { | |
if (!_logEnabled || !console || !console.log) { | |
} | |
}; | |
var isLogEnabled = function () { | |
return _logEnabled; | |
}; | |
var enableLog = function (enabled) { | |
_logEnabled = enabled; | |
}; | |
var str = (function () { | |
var isNull = function (s) { | |
return typeof s === "undefined" || s === null; | |
}; | |
var isNotNull = function (s) { | |
return !isNull(s); | |
}; | |
var isEmpty = function (s) { | |
if (isNull(s)) { | |
return true; | |
} | |
if (typeof s != "string") { | |
return false; | |
} | |
return s.length == 0; | |
}; | |
var isNotEmpty = function (s) { | |
return !isEmpty(s); | |
}; | |
var isNumber = function (s) { | |
if (isEmpty(s)) { | |
return false; | |
} | |
return /^[0-9]*$/.test(s); | |
}; | |
var startsWith = function (s, prefix) { | |
return s.indexOf(prefix) == 0; | |
}; | |
var endsWith = function (str, suffix) { | |
return str.indexOf(suffix, str.length - suffix.length) !== -1; | |
}; | |
var replaceAll = function (s, s1, s2) { | |
if (isEmpty(s)) { | |
return ""; | |
} | |
return s.replace(new RegExp(s1, "gm"), s2); | |
}; | |
var trim = (s) => { | |
return s.replace(/^\s+|\s+$/gm, ""); | |
}; | |
let isUrl = (s) => { | |
if (isNotEmpty(s)) { | |
let reg = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/; | |
if (reg.test(s)) { | |
return true; | |
} | |
} | |
return false; | |
}; | |
let randomString = (len) => { | |
let chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; | |
let maxIndex = chars.length; | |
let s = ""; | |
for (let i = 0; i < len; i++) { | |
s += chars.charAt(Math.floor(Math.random() * maxIndex)); | |
} | |
return s; | |
}; | |
let isChinaMobile = (mobile) => { | |
if (isNull(mobile)) { | |
return false; | |
} | |
if (mobile.indexOf("-") > 0) { | |
mobile = mobile.split("-")[1]; | |
} | |
let cm_reg = /^(((13[0-9]{1})|(15[0-9]{1})|(17[0-9]{1})|(18[0-9]{1}))+\d{8})$/; | |
return cm_reg.test(mobile); | |
}; | |
let isTel = (tel) => { | |
let reg = /^([0-9]{3,4}-)?[0-9]{7,8}$/; | |
return reg.test(tel); | |
}; | |
let trimChinaMobile = (mobile) => { | |
if (mobile) { | |
if (mobile.indexOf("-") > -1 && mobile.indexOf("86-") > -1) { | |
return mobile.split("-")[1]; | |
} | |
return mobile; | |
} | |
return ""; | |
}; | |
let rn2br = (str) => { | |
return str.replace(/(\r\n)|(\n)/g, "<br>"); | |
}; | |
let num2Chinese = (num) => { | |
let chnNumChar = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"]; | |
let chnUnitChar = ["", "十", "百", "千"]; | |
let strIns = "", | |
chnStr = ""; | |
let unitPos = 0; | |
let zero = true; | |
while (num > 0) { | |
let v = num % 10; | |
if (v === 0) { | |
if (!zero) { | |
zero = true; | |
chnStr = chnNumChar[v] + chnStr; | |
} | |
} else { | |
zero = false; | |
strIns = chnNumChar[v]; | |
strIns += chnUnitChar[unitPos]; | |
chnStr = strIns + chnStr; | |
} | |
unitPos++; | |
num = Math.floor(num / 10); | |
} | |
chnStr = replaceAll(chnStr, "一十", "十"); | |
return chnStr; | |
}; | |
return { | |
isNull, | |
isNotNull, | |
isEmpty, | |
isNotEmpty, | |
startsWith, | |
endsWith, | |
replaceAll, | |
trim, | |
rn2br, | |
isTel, | |
isChinaMobile, | |
isUrl, | |
randomString, | |
isNumber, | |
trimChinaMobile, | |
num2Chinese, | |
}; | |
})(); | |
var date = (function () { | |
var pad = function (n) { | |
return n < 10 ? "0" + n : n; | |
}; | |
var inAnHour = function (date) { | |
var mins = parseInt((Math.floor(new Date()) - Math.floor(new Date(date))) / (1000 * 60)); | |
if (mins > -60) { | |
return true; | |
} | |
return false; | |
}; | |
var in24Hour = function (date) { | |
var mins = parseInt((Math.floor(new Date()) - Math.floor(new Date(date))) / (1000 * 60)); | |
if (mins > -1440) { | |
return true; | |
} | |
return false; | |
}; | |
var countdownTimers = function (date) { | |
var timers = [0, 0, 0, 0]; | |
var time = parseInt(Math.floor(new Date(date) - Math.floor(new Date())) / 1000 / 60); | |
var mins = parseInt(time / 60); | |
if (mins < 10) { | |
timers[0] = 0; | |
timers[1] = mins; | |
} else { | |
timers[0] = parseInt(mins / 10); | |
timers[1] = parseInt(mins % 10); | |
} | |
var seconds = time % 60; | |
if (seconds < 10) { | |
timers[2] = 0; | |
timers[3] = seconds; | |
} else { | |
timers[2] = parseInt(seconds / 10); | |
timers[3] = parseInt(seconds % 10); | |
} | |
return timers; | |
}; | |
var foreshowTimeout = function (timers) { | |
if (timers[0] === 0 && timers[1] === 0 && timers[2] === 0 && timers[3] === 0) { | |
return true; | |
} | |
return false; | |
}; | |
var foreshowTimeouted = function (timers) { | |
if (timers[0] <= 0 && timers[1] <= 0 && timers[2] <= 0 && timers[3] <= 0) { | |
return true; | |
} | |
return false; | |
}; | |
var seconds2HMS = function (time) { | |
let h = 0, | |
m = 0, | |
s = 0, | |
_h, | |
_m, | |
_s, | |
ret = ""; | |
h = Math.floor(time / 3600); | |
time = Math.floor(time % 3600); | |
m = Math.floor(time / 60); | |
s = Math.floor(time % 60); | |
if (h > 0) { | |
_h = h < 10 ? "0" + h : h; | |
ret += _h + ":"; | |
} | |
_s = s < 10 ? "0" + s : s; | |
_m = m < 10 ? "0" + m : m; | |
ret += _m + ":" + _s; | |
return ret; | |
}; | |
var format = function (date, fmt) { | |
if (!date || !fmt) { | |
return null; | |
} | |
var o = { | |
"M+": date.getMonth() + 1, // 月份 | |
"d+": date.getDate(), // 日 | |
"h+": date.getHours() % 12 == 0 ? 12 : date.getHours() % 12, // 小时 | |
"H+": date.getHours(), // 小时 | |
"m+": date.getMinutes(), // 分 | |
"s+": date.getSeconds(), // 秒 | |
"q+": Math.floor((date.getMonth() + 3) / 3), // 季度 | |
S: date.getMilliseconds(), | |
}; | |
var week = { | |
0: "\u65e5", | |
1: "\u4e00", | |
2: "\u4e8c", | |
3: "\u4e09", | |
4: "\u56db", | |
5: "\u4e94", | |
6: "\u516d", | |
}; | |
if (/(y+)/.test(fmt)) { | |
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); | |
} | |
if (/(E+)/.test(fmt)) { | |
fmt = fmt.replace( | |
RegExp.$1, | |
(RegExp.$1.length > 1 ? (RegExp.$1.length > 2 ? "\u661f\u671f" : "\u5468") : "") + | |
week[date.getDay() + ""] | |
); | |
} | |
for (var k in o) { | |
if (new RegExp("(" + k + ")").test(fmt)) { | |
fmt = fmt.replace( | |
RegExp.$1, | |
RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length) | |
); | |
} | |
} | |
return fmt; | |
}; | |
var formatISO8601 = function (d) { | |
if (!d) { | |
return null; | |
} | |
return ( | |
d.getUTCFullYear() + | |
"-" + | |
pad(d.getUTCMonth() + 1) + | |
"-" + | |
pad(d.getUTCDate()) + | |
"T" + | |
pad(d.getUTCHours()) + | |
":" + | |
pad(d.getUTCMinutes()) + | |
":" + | |
pad(d.getUTCSeconds()) + | |
"Z" | |
); | |
}; | |
var getInt = function (s) { | |
var offset = 0; | |
for (var i = 0; i < s.length; i++) { | |
if (s.charAt(i) == "0") { | |
continue; | |
} | |
offset = i; | |
break; | |
} | |
if (offset == 0) { | |
return parseInt(s); | |
} | |
return parseInt(s.substr(offset)); | |
}; | |
var parse = function (v, timezoneOffset) { | |
if (!v) { | |
return null; | |
} | |
if (!isNaN(v)) { | |
return new Date(v); | |
} | |
// yyyy-MM-ddTHH:mm:ssZ | |
// yyyy-MM-ddTHH:mm:ss.SSSZ | |
// yyyy-MM-dd HH:mm:ss.SSS | |
var index = 0; | |
var year = getInt(v.substr(index, 4)); | |
index += 5; | |
var month = getInt(v.substr(index, 2)) - 1; | |
index += 3; | |
var day = getInt(v.substr(index, 2)); | |
index += 3; | |
var hour = index >= v.length ? 0 : getInt(v.substr(index, 2)); | |
index += 3; | |
var minute = index >= v.length ? 0 : getInt(v.substr(index, 2)); | |
index += 3; | |
var second = index >= v.length ? 0 : getInt(v.substr(index, 2)); | |
// TODO more format | |
if (v.charAt(v.length - 1) == "Z") { | |
var millSecond = v.indexOf(".") > 0 ? getInt(v.substring(v.indexOf(".") + 1, v.length - 1)) : 0; | |
var d = new Date(); | |
d.setUTCFullYear(year); | |
d.setUTCMonth(month); | |
d.setUTCDate(day); | |
d.setUTCHours(hour); | |
d.setUTCMinutes(minute); | |
d.setUTCSeconds(second); | |
d.setUTCMilliseconds(millSecond); | |
return d; | |
} else { | |
var millSecond = v.indexOf(".") > 0 ? getInt(v.substring(v.indexOf(".") + 1)) : 0; | |
var date = new Date(year, month, day, hour, minute, second, millSecond); | |
if (!str.isNull(timezoneOffset)) { | |
var diff = timezoneOffset - date.getTimezoneOffset(); | |
date.setTime(date.getTime() - diff * 60 * 1000); | |
} | |
return date; | |
} | |
}; | |
var parseDate = function (v) { | |
//yyyyMMdd | |
if (!v) { | |
return null; | |
} | |
v = v.toString(); | |
var index = 0; | |
var year = getInt(v.substr(index, 4)); | |
index += 4; | |
var month = getInt(v.substr(index, 2)) - 1; | |
index += 2; | |
var day = getInt(v.substr(index, 2)); | |
var d = new Date(); | |
d.setFullYear(year); | |
d.setMonth(month); | |
d.setDate(day); | |
return d; | |
}; | |
let isToday = function (date) { | |
let d = U.date.format(U.date.parse(date), "yyyy-MM-dd"); | |
let today = U.date.format(new Date(), "yyyy-MM-dd"); | |
return d === today; | |
}; | |
let getPastDate = (past) => { | |
let dd = new Date(); | |
dd.setDate(dd.getDate() + past); //获取AddDayCount天后的日期 | |
let y = dd.getFullYear(); | |
let m = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1; //获取当前月份的日期,不足10补0 | |
let d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate(); //获取当前几号,不足10补0 | |
return y + "-" + m + "-" + d; | |
}; | |
let daysBetween = (since, until) => { | |
let OneMonth = since.substring(5, since.lastIndexOf("-")); | |
let OneDay = since.substring(since.length, since.lastIndexOf("-") + 1); | |
let OneYear = since.substring(0, since.indexOf("-")); | |
let TwoMonth = until.substring(5, until.lastIndexOf("-")); | |
let TwoDay = until.substring(until.length, until.lastIndexOf("-") + 1); | |
let TwoYear = until.substring(0, until.indexOf("-")); | |
let cha = | |
(Date.parse(OneMonth + "/" + OneDay + "/" + OneYear) - | |
Date.parse(TwoMonth + "/" + TwoDay + "/" + TwoYear)) / | |
86400000; | |
return Math.abs(cha); | |
}; | |
let period2Str = (period, options) => { | |
let units = { | |
I: "分钟", | |
H: "小时", | |
D: "天", | |
W: "周", | |
M: "个月", | |
Y: "年", | |
}; | |
if (str.isEmpty(period) || period.length < 2) { | |
return (options && options.defaultStr) || "--"; | |
} else { | |
let length = period.length; | |
let unit = period.substring(length - 1); | |
let num = parseInt(period.substring(0, length - 1)); | |
if (period === "1S") { | |
return "无"; | |
} else if (num === 0) { | |
return "永久"; | |
} else { | |
let prefix = (options && options.prefix) || ""; | |
return prefix + num + units[unit]; | |
} | |
} | |
}; | |
return { | |
parse: parse, | |
inAnHour: inAnHour, | |
in24Hour: in24Hour, | |
seconds2HMS: seconds2HMS, | |
countdownTimers: countdownTimers, | |
foreshowTimeout: foreshowTimeout, | |
foreshowTimeouted: foreshowTimeouted, | |
format: format, | |
isToday, | |
formatISO8601: formatISO8601, | |
getDayOfYear: function (date) { | |
var start = new Date(date.getFullYear(), 0, 0); | |
var diff = date.getTime() - start.getTime(); | |
var oneDay = 1000 * 60 * 60 * 24; | |
return Math.floor(diff / oneDay); | |
}, | |
daysBetween, | |
getPastDate, | |
parseDate, | |
period2Str, | |
}; | |
})(); | |
let array = (function () { | |
let swap = function (arr, index1, index2) { | |
arr[index1] = arr.splice(index2, 1, arr[index1])[0]; | |
return arr; | |
}; | |
let remove = function (arr, index) { | |
if (isNaN(index) || index > arr.length) { | |
return []; | |
} | |
arr.splice(index, 1); | |
return arr; | |
}; | |
let insert = function (arr, index, item) { | |
arr.splice(index, 0, item); | |
return arr; | |
}; | |
let insertLast = function (arr, item) { | |
arr.splice(arr.length, 0, item); | |
return arr; | |
}; | |
return { | |
swap, | |
remove, | |
insert, | |
insertLast, | |
}; | |
})(); | |
var getHashParameter = function (name) { | |
var hash = window.location.hash; | |
if (!hash) { | |
return null; | |
} | |
var offset = hash.indexOf("?"); | |
if (offset < 0) { | |
return null; | |
} | |
hash = hash.substr(offset + 1); | |
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); | |
var r = hash.match(reg); | |
if (r == null) { | |
return null; | |
} | |
return unescape(r[2]); | |
}; | |
var getParameter = function (name) { | |
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); | |
var r = window.location.search.substr(1).match(reg); | |
if (r != null) { | |
return unescape(r[2]); | |
} | |
return null; | |
}; | |
var getVisitNumber = function (num) { | |
let val = parseInt(num); | |
if (val < 1000) { | |
return val; | |
} | |
if (val > 1000 && val < 10000) { | |
return ">" + val; | |
} | |
if (val > 10000) { | |
return ">1万"; | |
} | |
}; | |
var getParameters = function () { | |
var params = {}; | |
var loc = window.location; | |
if (loc.search) { | |
var query = loc.search.substr(1); | |
var queries = query.split("&"); | |
queries.forEach(function (q) { | |
var kv = q.split("="); | |
params[kv[0]] = U.str.isEmpty(kv[1]) ? "" : decodeURIComponent(kv[1]); | |
}); | |
} | |
return params; | |
}; | |
var getDomainFromUrl = function (url) { | |
var offset = url.indexOf("//"); | |
var offset2 = url.indexOf("/", offset + 2); | |
if (offset2 == -1) { | |
return url.substring(offset + 2); | |
} | |
return url.substring(offset + 2, offset2); | |
}; | |
var countryCode = [ | |
{ | |
code: "86", | |
name: "中国", | |
}, | |
{ | |
code: "852", | |
name: "香港", | |
}, | |
{ | |
code: "853", | |
name: "澳门", | |
}, | |
{ | |
code: "886", | |
name: "台湾", | |
}, | |
{ | |
code: "65", | |
name: "新加坡", | |
}, | |
{ | |
code: "66", | |
name: "泰国", | |
}, | |
{ | |
code: "1", | |
name: "美国", | |
}, | |
{ | |
code: "60", | |
name: "马来西亚", | |
}, | |
]; | |
var convertBigDecimal = function (num) { | |
if (num > 10000) { | |
return (num / 10000).toFixed(1) + "万"; | |
} | |
return num; | |
}; | |
let toFixed = (num, s) => { | |
if (!(num.toString() === "-" || num.toString() === "+")) { | |
let times = Math.pow(10, s); | |
let offset = num > 0 ? 0.5 : -0.5; | |
let des = num * times + offset; | |
des = parseInt(des, 10) / times; | |
return des + ""; | |
} | |
return num; | |
}; | |
var isIOS = function () { | |
let u = navigator.userAgent; | |
var isIOS = /(iPhone|iPad|iPod|iOS)/i.test(u); | |
return isIOS; | |
}; | |
var formatCurrency = function (s, n) { | |
if (s) { | |
/* | |
* 参数说明: | |
* s:要格式化的数字 | |
* n:保留几位小数 | |
* */ | |
n = n > 0 && n <= 20 ? n : 2; | |
s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + ""; | |
var l = s.split(".")[0].split("").reverse(), | |
r = s.split(".")[1]; | |
let t = ""; | |
for (let i = 0; i < l.length; i++) { | |
t += l[i] + ((i + 1) % 3 == 0 && i + 1 != l.length ? "," : ""); | |
} | |
return t.split("").reverse().join("") + "." + r; | |
} else { | |
return 0; | |
} | |
}; | |
let htmlstr = (() => { | |
let components2pureHtml = (cs) => { | |
let html = ""; | |
cs.map((c, index) => { | |
if (c.type === 1) { | |
if (c.text.length > 0) { | |
let text = c.text; | |
text = text.replace(/<[^>]+>/g, ""); | |
text = text.replace(/\r\n/g, "<br/>"); | |
text = text.replace(/\n/g, "<br/>"); | |
text = text.replace(/\s/g, " "); | |
html += "<p>" + text + "</p>"; | |
} | |
} else { | |
if (c.url !== "") { | |
html += '<img src="' + c.url + '"/>'; | |
} | |
} | |
}); | |
return html; | |
}; | |
let html2components = (html) => { | |
let div = document.createElement("div"); | |
div.innerHTML = html; | |
let nodes = div.childNodes; | |
let cs = []; | |
for (let i = 0; i < nodes.length; i++) { | |
let n = nodes[i]; | |
let name = n.nodeName.toLowerCase(); | |
if (name === "p") { | |
let html = n.innerHTML.toLowerCase(); | |
html = html.replace(/(<br\/>|<br>)/g, "\r\n"); | |
html = html.replace(/ /g, " "); | |
cs.push({ | |
type: 1, | |
text: html, | |
}); | |
} else if (name === "img") { | |
cs.push({ | |
type: 2, | |
url: n.src, | |
}); | |
} | |
} | |
return cs; | |
}; | |
let html2dom = (html) => { | |
let dom = document.createElement("div"); | |
dom.innerHTML = html; | |
return dom; | |
}; | |
let html2nodes = (html) => { | |
let div = document.createElement("div"); | |
div.innerHTML = html; | |
let nodes = div.childNodes; | |
return nodes; | |
}; | |
return { | |
components2pureHtml, | |
html2components, | |
html2nodes, | |
html2dom, | |
}; | |
})(); | |
let base64 = (() => { | |
let seed = 0; | |
let toFile = function (dataURL) { | |
var arr = dataURL.split(","), | |
mime = arr[0].match(/:(.*?);/)[1], | |
bstr = atob(arr[1]), | |
n = bstr.length, | |
u8arr = new Uint8Array(n); | |
while (n--) { | |
u8arr[n] = bstr.charCodeAt(n); | |
} | |
var offset = mime.indexOf("/"); | |
var suffix = offset > 0 ? mime.substring(offset + 1) : null; | |
const uid = `${+new Date()}-${seed++}`; | |
var fileName = suffix ? `${uid}.` + suffix : `${uid}`; | |
return new File([u8arr], fileName, { type: mime }); | |
}; | |
return { toFile }; | |
})(); | |
let debounce = function (func, wait, immediate) { | |
let timeout, | |
args, | |
context, | |
timestamp, | |
result, | |
time = 0; | |
let later = function () { | |
// 据上一次触发时间间隔 | |
let last = new Date().getTime() - timestamp; | |
// 上次被包装函数被调用时间间隔last小于设定时间间隔wait | |
if (last < wait && last > 0) { | |
timeout = setTimeout(later, wait - last); | |
} else { | |
timeout = null; | |
if (!immediate) { | |
result = func.apply(context, args); | |
if (!timeout) { | |
context = args = null; | |
} | |
} | |
} | |
}; | |
return function () { | |
context = this; | |
args = arguments; | |
timestamp = new Date().getTime(); | |
let callNow = immediate && !timeout; | |
// 如果延时不存在,重新设定延时 | |
if (!timeout) { | |
timeout = setTimeout(later, wait); | |
} | |
if (callNow) { | |
result = func.apply(context, args); | |
context = args = null; | |
} | |
return result; | |
}; | |
}; | |
let pageUtils = (() => { | |
let detectZoom = () => { | |
let ratio = 0, | |
screen = window.screen, | |
ua = navigator.userAgent.toLowerCase(); | |
if (window.devicePixelRatio !== undefined) { | |
ratio = window.devicePixelRatio; | |
} else if (~ua.indexOf("msie")) { | |
if (screen.deviceXDPI && screen.logicalXDPI) { | |
ratio = screen.deviceXDPI / screen.logicalXDPI; | |
} | |
} else if (window.outerWidth !== undefined && window.innerWidth !== undefined) { | |
ratio = window.outerWidth / window.innerWidth; | |
} | |
if (ratio) { | |
ratio = Math.round(ratio * 100); | |
} | |
// let platform = navigator.platform; | |
// let isMac = (platform === 'Mac68K') || (platform === 'MacPPC') || (platform === 'Macintosh') || (platform === 'MacIntel'); | |
// if (!(ratio === 100 || (isMac && ratio === 200))) { | |
// Modal.warning({ | |
// title: '提示', | |
// content: '为了您的体验效果,请不要缩放页面', | |
// }); | |
// } | |
return ratio; | |
}; | |
return { detectZoom }; | |
})(); | |
let ensureValue = function (v, defaultValue) { | |
if (typeof v === "undefined" || v === null) { | |
return defaultValue; | |
} | |
return v; | |
}; | |
var obj = { | |
copy: function copy(obj) { | |
var newobj = {}; | |
for (var attr in obj) { | |
if (obj.hasOwnProperty(attr)) { | |
newobj[attr] = obj[attr]; | |
} | |
} | |
return newobj; | |
}, | |
deepCopy: function (_obj) { | |
if (typeof _obj != "object") { | |
return _obj; | |
} | |
var newobj = {}; | |
for (var attr in _obj) { | |
newobj[attr] = obj.deepCopy(_obj[attr]); | |
} | |
return newobj; | |
}, | |
}; | |
function getValueFromEvent(e) { | |
// To support custom element | |
if (!e || !e.target) { | |
return e; | |
} | |
const { target } = e; | |
if (target.type === "checkbox") { | |
return target.checked ? 1 : 0; | |
} | |
return target.value; | |
} | |
let genCheckCode = (mobile) => { | |
let t = new Date().getTime().toString(); | |
let p = "web"; | |
let d = genUUID(); | |
let v = md5(t.length + t + p.length + p + d.length + d + mobile); | |
return { | |
t, | |
p, | |
d, | |
v, | |
}; | |
}; | |
let genUUID = () => { | |
var s = []; | |
var hexDigits = "0123456789abcdef"; | |
for (var i = 0; i < 36; i++) { | |
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); | |
} | |
s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010 | |
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 | |
s[8] = s[13] = s[18] = s[23] = "-"; | |
let ret = s.join(""); | |
ret = str.replaceAll(ret, "-", ""); | |
return ret; | |
}; | |
var serializeParameters = (params) => { | |
var dataStr = ""; | |
if (!params) { | |
return dataStr; | |
} | |
for (var key in params) { | |
if (dataStr.length > 0) { | |
dataStr += "&"; | |
} | |
var value = params[key]; | |
if (value === undefined || value === null) { | |
value = ""; | |
} | |
dataStr += `${key}=${encodeURIComponent(value)}`; | |
} | |
return dataStr; | |
}; | |
return { | |
getValueFromEvent: getValueFromEvent, | |
val: ensureValue, | |
htmlstr, | |
log: log, | |
isLogEnabled: isLogEnabled, | |
enableLog: enableLog, | |
str: str, | |
date: date, | |
debounce, | |
array, | |
getParameter: getParameter, | |
getHashParameter: getHashParameter, | |
getVisitNumber: getVisitNumber, | |
getDomainFromUrl: getDomainFromUrl, | |
countryCode: countryCode, | |
convertBigDecimal: convertBigDecimal, | |
isIOS: isIOS, | |
formatCurrency, | |
base64, | |
pageUtils, | |
toFixed, | |
obj, | |
genCheckCode, | |
getParameters, | |
serializeParameters, | |
}; | |
})(); | |
export default U; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment