You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
2.9 KiB
99 lines
2.9 KiB
/** |
|
* 判断终端以及浏览器 |
|
* userAgent string User-Agent信息 |
|
*/ |
|
export const readUserAgent = ua => { |
|
const data = { |
|
terminal: '', |
|
browser: '', |
|
terminalType: {} |
|
} |
|
data.terminalType = { |
|
trident: ua.indexOf('Trident') > -1, // IE内核 |
|
presto: ua.indexOf('Presto') > -1, // opera内核 |
|
webKit: ua.indexOf('AppleWebKit') > -1, // 苹果、谷歌内核 |
|
gecko: ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1, // 火狐内核 |
|
mobile: !!ua.match(/AppleWebKit.*Mobile.*/), // 是否为移动终端 |
|
ios: !!ua.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // ios终端 |
|
android: ua.indexOf('Android') > -1 || ua.indexOf('Adr') > -1, // android终端 |
|
iPhone: ua.indexOf('iPhone') > -1, // 是否为iPhone或者QQHD浏览器 |
|
iPad: ua.indexOf('iPad') > -1, // 是否iPad |
|
webApp: ua.indexOf('Safari') === -1, // 是否web应该程序,没有头部与底部 |
|
weixin: ua.indexOf('MicroMessenger') > -1, // 是否微信 (2015-01-22新增) |
|
qq: ua.match(/\sQQ/i) === ' qq' // 是否QQ |
|
} |
|
if ( |
|
data.terminalType.ios || |
|
data.terminalType.iPhone || |
|
data.terminalType.iPad |
|
) { |
|
data.terminal = '苹果' |
|
} else if (data.terminalType.android) { |
|
data.terminal = '安卓' |
|
} else { |
|
data.terminal = 'PC' |
|
} |
|
if (/msie/i.test(ua) && !/opera/.test(ua)) { |
|
data.browser = 'IE' |
|
} else if (/firefox/i.test(ua)) { |
|
data.browser = 'Firefox' |
|
} else if (/chrome/i.test(ua) && /webkit/i.test(ua) && /mozilla/i.test(ua)) { |
|
data.browser = 'Chrome' |
|
} else if (/opera/i.test(ua)) { |
|
data.browser = 'Opera' |
|
} else if (/iPad/i.test(ua)) { |
|
data.browser = 'iPad' |
|
} else if ( |
|
/webkit/i.test(ua) && |
|
!(/chrome/i.test(ua) && /webkit/i.test(ua) && /mozilla/i.test(ua)) |
|
) { |
|
data.browser = 'Safari' |
|
} else { |
|
data.browser = '未知' |
|
} |
|
return data |
|
} |
|
|
|
// 格式化文件大小 单位:B、KB、MB、GB |
|
const renderSize = value => { |
|
if (value == null || value == '') { |
|
return "0 B" |
|
} |
|
var unitArr = new Array("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB") |
|
var index = 0 |
|
var srcsize = parseFloat(value) |
|
index = Math.floor(Math.log(srcsize) / Math.log(1024)) |
|
var size = srcsize / Math.pow(1024, index) |
|
size = size.toFixed(2) |
|
if (unitArr[index]) { |
|
return size + unitArr[index] |
|
} |
|
return '文件太大' |
|
} |
|
|
|
const convertEnum = obj => { |
|
const list = [] |
|
if (obj) { |
|
for (const key in obj) { |
|
list.push({ |
|
text: obj[key], |
|
value: key |
|
}) |
|
} |
|
} |
|
return list |
|
} |
|
|
|
const copy = msg => { |
|
if (msg) { |
|
const oInput = document.createElement('input') // 创建一个隐藏input(重要!) |
|
oInput.value = msg // 赋值 |
|
document.body.appendChild(oInput) |
|
oInput.select() // 选择对象 |
|
document.execCommand("Copy") // 执行浏览器复制命令 |
|
oInput.className = 'oInput' |
|
oInput.style.display = 'none' |
|
} |
|
} |
|
|
|
export { renderSize, convertEnum, copy }
|
|
|