// 判断是否是PC
export function IsPC() {
const userAgentInfo = navigator.userAgent;
const agentList = new Array('Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod');
let flag = true;
for (let i = 0; i < agentList.length; i++) {
if (userAgentInfo.indexOf(agentList[i]) > 0) {
flag = false;
break;
}
}
return flag;
}
//设置meta属性,实现适配
export function setMeta(isDefault) {
const _meta = document.querySelector("meta[name='viewport']");
if (isDefault) {
_meta.setAttribute('content', 'width=device-width, initial-scale=1.0');
} else {
const _vwidth = window.screen.width;
const _scale = _vwidth / 1080;
_meta.setAttribute('content', 'width=device-width,user-scalable=no,initial-scale=' + _scale);
}
}
//拷贝
export function copy(text: string): Promise<void> {
if (navigator.clipboard.writeText) {
try {
return navigator.clipboard.writeText(text);
} catch (err) {
// fall through...
}
}
legacyCopy(text);
}
function legacyCopy(text: string): void {
const input = document.createElement('input');
document.body.appendChild(input);
try {
input.value = text;
input.focus();
if (input.setSelectionRange) {
input.setSelectionRange(0, input.value.length);
} else {
input.select();
}
const result = document.execCommand('copy');
if (!result) {
throw new Error('unsupported');
}
} finally {
document.body.removeChild(input);
}
}
//判断两个数组是否相等
export function arrayEqual(arr1,arr2){
if(arr1 === arr2) return true;
if(arr1.length !== arr2.length) return false;
for(let i = 0; i < arr1.length; i++){
if(arr1[i] !== arr2[i]) return false
}
return true;
}
//获取Cookie
export function getCookie(name) {
var arr = document.cookie.replace(/\s/g, "").split(';');
for (var i = 0; i < arr.length; i++) {
var tempArr = arr[i].split('=');
if (tempArr[0] == name) {
return decodeURIComponent(tempArr[1]);
}
}
return '';
}
// 设置cookie
export function setCookie(name, value, days) {
var date = new Date();
date.setDate(date.getDate() + days);
document.cookie = name + '=' + value + ';expires=' + date;
}
// 删除cookie
export function removeCookie(name) {
// 设置已过期,系统会立刻删除cookie
setCookie(name, '1', -1);
}
// url参数转对象
export function parseQueryString(url) {
url = !url ? window.location.href : url;
if(url.indexOf('?') === -1) {
return {};
}
var search = url[0] === '?' ? url.substr(1) : url.substring(url.lastIndexOf('?') + 1);
if (search === '') {
return {};
}
search = search.split('&');
var query = {};
for (var i = 0; i < search.length; i++) {
var pair = search[i].split('=');
query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
}
return query;
}
// 对象序列化
export function stringfyQueryString(obj) {
if (!obj) return '';
var pairs = [];
for (var key in obj) {
var value = obj[key];
if (value instanceof Array) {
for (var i = 0; i < value.length; ++i) {
pairs.push(encodeURIComponent(key + '[' + i + ']') + '=' + encodeURIComponent(value[i]));
}
continue;
}
pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]));
}
return pairs.join('&');
}
// 判断是否为16进制颜色,rgb 或 rgba
function isColor(str) {
return /^(#([0-9a-fA-F]{3}){1,2}|[rR][gG][Bb](\((\s*(2[0-4]\d|25[0-5]|[01]?\d{1,2})\s*,){2}\s*(2[0-4]\d|25[0-5]|[01]?\d{1,2})\s*\)|[Aa]\((\s*(2[0-4]\d|25[0-5]|[01]?\d{1,2})\s*,){3}\s*([01]|0\.\d+)\s*\)))$/.test(str);
}
//判断是否为邮箱地址
function isEmail(str) {
return /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/.test(str);
}
//判断是否为身份证号
function isIdCard(str) {
return /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/.test(str)
}
//判断是否为手机号
function isPhoneNum(str) {
return /^(\+?0?86\-?)?1[3456789]\d{9}$/.test(str)
}
//判断是否为URL地址
function isUrl(str) {
return /[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/i.test(str);
}
// 判断`obj`是否为空
function isEmptyObject(obj) {
if (!obj || typeof obj !== 'object' || Array.isArray(obj))
return false
return !Object.keys(obj).length
}
//深拷贝,支持常见类型
function deepClone(values) {
var copy;
// Handle the 3 simple types, and null or undefined
if (null == values || "object" != typeof values) return values;
// Handle Date
if (values instanceof Date) {
copy = new Date();
copy.setTime(values.getTime());
return copy;
}
// Handle Array
if (values instanceof Array) {
copy = [];
for (var i = 0, len = values.length; i < len; i++) {
copy[i] = deepClone(values[i]);
}
return copy;
}
// Handle Object
if (values instanceof Object) {
copy = {};
for (var attr in values) {
if (values.hasOwnProperty(attr)) copy[attr] = deepClone(values[attr]);
}
return copy;
}
throw new Error("Unable to copy values! Its type isn't supported.");
}
前端工具函数
最新推荐文章于 2024-09-27 15:27:45 发布