1、去除字符串左右兩端的空格
trim: function(str) {
return str.replace(/(^\s*)|(\s*$)/g, "");
}
2、取時間戳
createTimestamp: function() { // 取時間撮
// 201508061018417065
var dt = new Date()
var y = dt.getFullYear()
var M = dt.getMonth() + 1
var d = dt.getDate()
var h = dt.getHours()
var m = dt.getMinutes()
var sec = dt.getSeconds()
var minsec = dt.getMilliseconds()
var str = y + ''
M = M < 10 ? '0' + M : M
d = d < 10 ? '0' + d : d
h = h < 10 ? '0' + h : h
m = m < 10 ? '0' + m : m
sec = sec < 10 ? '0' + sec : sec
minsec = minsec < 1000 ? '0' + minsec : minsec
str +='-'+ M +'-'+ d
// str += M + d + h + m + sec + minsec
return str
},
3、設置本地存儲
setCookie: function(name, value, days, domain) { // 兩個參數,一個是cookie的名子,一個是值
try {
if(window.localStorage) {
window.localStorage.setItem(name, value)
return
}
} catch(e) {
var Days
var exp = new Date()
if(typeof(days) === 'object') {
Days = days
} else {
days = (days === undefined) ? 30 : days // 此 cookie 將被保存 30 天
Days = exp.getTime() + days * 24 * 60 * 60 * 1000
}
// new Date('December 31, 9998')
exp.setTime(Days)
document.cookie = name + '=' + escape(value) + 'expires=' + exp.toGMTString() + 'path=/' + (domain ? 'domain=' + domain : '')
}
},
4、取出本地存儲的數據
getCookie: function(name) { // 取cookies函數
try {
if(window.localStorage && window.localStorage.getItem(name)) {
return window.localStorage.getItem(name)
}
} catch(e) {
var arr = document.cookie.match(new RegExp('(^| )' + name + '=([^]*)(|$)'))
if(arr != null) return unescape(arr[2])
}
return null
},
5、刪除本地數據
delCookie: function(name) { // 刪除cookie
try {
window.localStorage && window.localStorage.removeItem(name)
document.cookie = name + '=xexpires=Fri, 31 Dec 1999 23:59:59 GMT'
document.cookie = name + '=xexpires=Fri, 31 Dec 1999 23:59:59 GMTpath=/'
document.cookie = name + '=xexpires=Fri, 31 Dec 1999 23:59:59 GMTpath=/domain=tcl.com'
} catch(e) {}
},
6、URL取值
parseQuery: function(pkey) { // url 取值
var search = window.location.search
var args = search.substring(1).split('&')
var argsParsed = {}
var i, arg, kvp, key, value
for(i = 0; i < args.length; i++) {
arg = args[i]
if(arg.indexOf('=') === -1) {
argsParsed[decodeURIComponent(arg).replace(/(^\s*)|(\s*$)/g, '')] = true
} else {
kvp = arg.split('=')
key = decodeURIComponent(kvp[0]).replace(/(^\s*)|(\s*$)/g, '')
value = decodeURIComponent(kvp[1]).replace(/(^\s*)|(\s*$)/g, '')
argsParsed[key] = value
}
}
if(pkey) {
return argsParsed[pkey]
}
return argsParsed
},
7、生成uuid
uuid: function() {
var uuid = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15)
return uuid
},
8、檢測密碼強度
checkStrong: function(v, l1, l2) { // 檢測密碼強度
let modes = 0
let _l1 = l1 || 8
let _l2 = l2 || 16
if(v.length < _l1 || v > _l2) {
return false
}
(/\d/.test(v)) && modes++ // 數字
(/[a-z]/.test(v)) && modes++ // 字母小寫
(/[A-Z]/.test(v)) && modes++ // 字母大寫
(/\W/.test(v)) && modes++ // 特殊字符
return modes > 1
},
9、時間格式化函數
formatDate: function(datespan, isfull, lan) { // 時間格式化
let date = new Date(datespan)
let Y = date.getFullYear()
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1)
let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
let h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()) + ':'
let m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ':'
let s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds())
return lan ? Y + '年' + M + '月' + D + '日' + h + m + s : (isfull ? Y + '-' + M + '-' + D + ' ' + h + m + s : Y + '-' + M + '-' + D)
},
10、截取字符串以‘***’代替
getAyName: function(str) { // 截取字符串中間以*號代替
if(!str || str.length <= 2) {
return str
}
str = str.toString()
return str.substring(0, 2) + '***' + str.substring(str.length - 3, str.length - 1)
},
11、地址傳參轉數組
urlTojson: function(url) { // 地址傳參轉數組
if(!url || url.length === 0) return ''
url = decodeURIComponent(url)
var obj = {}
obj.url = url.split('?')[0]
var args = url.split('?')[1]
if(args && args.length > 0) {
var arg = args.split('&')
if(arg && arg.length >= 1) {
arg.map(function(m) {
var ar = m.split('=')
if(ar && ar.length > 1) {
obj[ar[0]] = ar[1]
}
})
}
}
return obj
},
12、判斷微信瀏覽器
iswx: function() {
return navigator.userAgent.toLowerCase().match(/MicroMessenger/i) === 'micromessenger'
},
13、URL驗證正則
urlRegStr: "/^((https|http|ftp|rtsp|mms)?://)?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!~*'()-]+\.)*([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6})(:[0-9]{1,4})?((/?)|(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$/",
14、拷貝對象
copyObject: function(target, add) {
function isObject(obj) {
if(typeof obj == "object") {
for(var key in obj) {
if(obj.hasOwnProperty(key)) {
return true; // search for first object prop
}
}
}
return false;
}
var _this = this;
for(var key in add) {
if(add.hasOwnProperty(key)) {
if(target[key] && isObject(target[key]) && isObject(add[key])) {
_this.copyObject(target[key], add[key]);
} else {
target[key] = add[key];
}
}
}
return target;
},
15、btoa和atob
btoa: function (str) {
var out, i, len, c1, c2, c3, char = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
len = str.length
i = 0
out = ''
while(i < len) {
c1 = str.charCodeAt(i++) & 0xff
if(i === len) {
out += char.charAt(c1 >> 2)
out += char.charAt((c1 & 0x3) << 4)
out += '=='
break
}
c2 = str.charCodeAt(i++)
if(i === len) {
out += char.charAt(c1 >> 2)
out += char.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4))
out += char.charAt((c2 & 0xF) << 2)
out += '='
break
}
c3 = str.charCodeAt(i++)
out += char.charAt(c1 >> 2)
out += char.charAt(((c1 & 0x3) << 4) | ((c2 & 0xF0) >> 4))
out += char.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >> 6))
out += char.charAt(c3 & 0x3F)
}
return out
}
atob: function(str) {
var c1, c2, c3, c4, i, len, out,
char = new Array(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1)
len = str.length
i = 0
out = ''
while(i < len) {
/* c1 */
do {
c1 = char[str.charCodeAt(i++) & 0xff]
}
while (i < len && c1 === -1)
if(c1 === -1) {
break
}
/* c2 */
do {
c2 = char[str.charCodeAt(i++) & 0xff]
}
while (i < len && c2 === -1)
if(c2 === -1) {
break
}
out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4))
/* c3 */
do {
c3 = str.charCodeAt(i++) & 0xff
if(c3 === 61) {
return out
}
c3 = char[c3]
}
while (i < len && c3 === -1)
if(c3 === -1) {
break
}
out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2))
/* c4 */
do {
c4 = str.charCodeAt(i++) & 0xff
if(c4 === 61) {
return out
}
c4 = char[c4]
}
while (i < len && c4 === -1)
if(c4 === -1) {
break
}
out += String.fromCharCode(((c3 & 0x03) << 6) | c4)
}
return out
},
16、移動端動態設置font-size和meat標籤
resize: () => {
let i = window
var l, c, f, g = i.document,
a = g.documentElement,
j = g.querySelector('meta[name="viewport"]'),
k = g.querySelector('meta[name="flexible"]')
if (j) {
var b = j.getAttribute("content").match(/initial\-scale=(["']?)([\d\.]+)\1?/)
if (b) {
c = parseFloat(b[2]);
l = parseInt(1 / c)
}
} else {
if (k) {
var b = k.getAttribute("content").match(/initial\-dpr=(["']?)([\d\.]+)\1?/)
if (b) {
l = parseFloat(b[2])
c = parseFloat((1 / l).toFixed(2))
}
}
}
if (!l && !c) {
var d = (i.navigator.appVersion.match(/android/gi), i.navigator.appVersion.match(/iphone/gi))
l = i.devicePixelRatio
l = d ? l >= 3 ? 3 : l >= 2 ? 2 : 1 : 1, c = 1 / l
}
if (a.setAttribute("data-dpr", l), !j) {
if (j = g.createElement("meta"), j.setAttribute("name", "viewport"), j.setAttribute("content", "initial-scale=" + c + ", maximum-scale=" + c + ", minimum-scale=" + c + ", user-scalable=no"), a.firstElementChild) {
a.firstElementChild.appendChild(j)
} else {
var e = g.createElement("div")
e.appendChild(j), g.write(e.innerHTML)
}
}
i.dpr = l
i.addEventListener("resize", function () {
clearTimeout(f), f = setTimeout(h, 300)
}, false)
i.addEventListener("pageshow", function (m) {
m.persisted && (clearTimeout(f), f = setTimeout(h, 300))
}, false)
let h = () => {
var m = a.getBoundingClientRect().width
if (m / l > 640) {
m = 640 * l
}
i.rem = m / 16
a.style.fontSize = i.rem + "px"
}
h()
},
17、圖片放大
viewImg: function(imgUrl) {
let name = util.getCookie("user");
var ld = document.createElement('div')
ld.className = 'sync-loding'
ld.innerHTML = '<div class="viewImgBox"><div class="shuiyin">'+name+'</div><img src="' + imgUrl + '"/><input type="button" class="close" value="×"></div>'
document.body.appendChild(ld)
ld.querySelector('.close').addEventListener('click', function() {
document.body.removeChild(ld)
})
return ld
},
18、字符串轉義字符
unhtml(str) {
/** 將text中的html字符轉義, 僅轉義 ', ", <, > 四個字符
* @param { String } str 需要轉義的字符串
* @returns { String } 轉義後的字符串
*/
return str ? str.replace(/[<">'()]/g, (a) => {
return {
'<': '<',
'"': '"',
'>': '>',
"'": ''',
'(': '(',
')': ')',
}[a]
}) : '';
},
19、下載文件
downFile: function(data, fileName) {
var blob = new Blob([data], {
type: 'application/vnd.ms-excel;charset=utf-8'
});
if(window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName);
} else {
var link = document.createElement('a');
// var force_saveable_type = 'application/vnd.ms-excel;charset=utf-8';
// if (type && type != force_saveable_type) { // 強制下載,而非在瀏覽器中打開
// var slice = blob.slice || blob.webkitSlice || blob.mozSlice;
// blob = slice.call(blob, 0, blob.size, force_saveable_type);
// }
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
link.click();
// var event = document.createEvent('MouseEvents');
// event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
// save_link.dispatchEvent(event);
window.URL.revokeObjectURL(link.href);
}
},
20、關閉瀏覽器
close() //author: sunlei
{
var isIE = document.all ? true : false;
if(isIE) { //IE瀏覽器
// var n = window.event.screenX - window.screenLeft;
// var b = n > document.documentElement.scrollWidth - 20;
// if(b && window.event.clientY < 0 || window.event.altKey) {
// util.delCookie('token')
// util.delCookie('user')
// util.delCookie('userRole')
// } else {
// }
} else { //火狐瀏覽器
if(document.documentElement.scrollWidth != 0) {
} else {
util.delCookie('token')
util.delCookie('user')
util.delCookie('userRole')
}
}
},
21、轉Excel文件
dataToExcel: function(cols, data, fileName) {
var excel = '<table>';
//設置表頭
var row = '<tr>';
cols.map((o) => {
if(o.title && o.key) {
row += '<th>' + o.title + '</th>'
}
})
//換行
excel += row + '</tr>';
data.map((o) => {
excel += '<tr>'
for(var x in o) {
excel += '<td>' + (o[x] || '') + '</td>'
}
excel += '</tr>'
})
excel += "</table>";
var excelFile = `<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'><meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8"><meta http-equiv="content-type" content="application/vnd.ms-excel;charset=UTF-8"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body>` + excel + `</body></html>`
var uri = 'data:application/vnd.ms-excel;charset=utf-8,' + encodeURIComponent(excelFile);
var link = document.createElement("a");
link.href = uri;
link.style = "visibility:hidden";
link.download = fileName; // + ".xls";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
},
22、檢測密碼強度
checkPwdStrong(str) {
if(str && str.length > 0) {
let modes = 0;
let c = 0;
var b = 'a';
(/\d/.test(str)) && modes++ // 數字
(/[a-z]/.test(str)) && modes++ // 字母小寫
(/[A-Z]/.test(str)) && modes++ // 字母大寫
(/\W/.test(str)) && modes++ // 特殊字符
if(modes == 1) {
} else if(modes == 2 || modes == 3) {
c = 40, b = '中'
}
switch(modes) {
case 1:
c = 20, b = '弱'
break;
case 2:
c = 40, b = '中'
break;
case 3:
c = 80, b = '高'
break;
case 4:
case 5:
case 6:
c = 100, b = '強'
break;
default:
c = 0, b = '弱'
break;
}
if(str.length < 8) {
c = 20, b = '弱'
}
return {
key: b,
value: c
}
}
return {
key: '弱',
value: 0
}
},
個人博客:jilezhainanshe.com