1
0
Code Issues Pull Requests Projects Releases Wiki Activity GitHub Gitee

Merge remote-tracking branch 'temp/main'

This commit is contained in:
程序员小墨 2023-07-16 11:52:38 +08:00
commit 7d42c5c928
2 changed files with 151 additions and 0 deletions

View File

@ -0,0 +1,150 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<span id='result'></span>
<script>
function uaMatch(userAgent) {
if (!userAgent) userAgent = navigator.userAgent
/**
* 浏览器内核判断
*/
var coreRegEx =
// Gecko
// Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:104.0) Gecko/20100101 Firefox/104.0
/(Gecko)[ \/]([\w.]+)/i.exec(userAgent) ||
// Webkit (Chrome|Safari)
/(Webkit)[ \/]([\w.]+)/i.exec(userAgent) ||
// Trident (IE)
// Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)
/(Trident)[ \/]([\w.]+)/i.exec(userAgent) ||
[];
var core = {
name: coreRegEx[1] || "unknown",
version: coreRegEx.length > 2 && coreRegEx[2] || "0",
};
switch (core.name.toLowerCase()) {
case "chrome": core.name = "Chromium"; break;
case "gecko":
let coreRv = /rv:[ ]*([\w.]+)/i.exec(userAgent)
if (coreRv) core.version = coreRv[1]
break;
}
core.versionNumber = core.version.split(".")[0]
/**
* 浏览器判断
*/
var browserRegEx =
// Windows Edge
// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.62
/(Edg)[ \/]([\w.]+)/i.exec(userAgent) ||
// Windows Firefox
// Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0
// Mac Firefox
// Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:104.0) Gecko/20100101 Firefox/104.0
/(Firefox)[ \/]([\w.]+)/i.exec(userAgent) ||
// Windows Chrome
// Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36
// Mac Chrome
// Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36
/(Chrome)[ \/]([\w.]+)/i.exec(userAgent) ||
// Safari
/(Webkit)[ \/]([\w.]+)/i.exec(userAgent) ||
// IE
/MS(IE) ([\w.]+)/i.exec(userAgent) ||
[];
var browser = {
name: browserRegEx[1] || "unknown",
version: browserRegEx.length > 2 && browserRegEx[2] || "0",
};
switch (browser.name.toLowerCase()) {
case "webkit": browser.name = "Safari"; break;
case "edg": browser.name = "Edge"; break;
}
browser.versionNumber = browser.version.split(".")[0]
/**
* 系统判断
*/
var platformRegEx =
/(Windows) NT ([\w.]+)/i.exec(userAgent) ||
/(Android) ([\w.]+)/i.exec(userAgent) ||
/(Mac) OS X ([\w_]+)/i.exec(userAgent) ||
/(Linux)[ ]*([a-zA-Z0-9]*)/i.exec(userAgent) ||
[];
var platform = {
name: platformRegEx[1] || "unknown",
version: platformRegEx.length > 2 && platformRegEx[2] || "0",
}
if (platform.name === 'unknown') {
if (userAgent.match(/Windows/i)) platform.name = 'Windows'
if (userAgent.match(/Macintosh/i)) platform.name = 'Mac'
}
platform.versionNumber = platform.version.split(/[._]/)[0]
/**
* 浏览器嵌入平台判断
*/
var embeddedRegEx =
// Android QQ
// Mozilla/5.0 (Linux; Android 10; V1921A Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/98.0.4758.102 MQQBrowser/6.2 TBS/046317 Mobile Safari/537.36 V1_AND_SQ_8.9.23_3558_HDBM_T QQ/8.9.23.9800 NetType/WIFI WebP/0.3.0 AppId/537143025 Pixel/1080 StatusBarHeight/85 SimpleUISwitch/0 QQTheme/1000 StudyMode/0 CurrentMode/0 CurrentFontScale/0.9375 GlobalDensityScale/0.90000004 AllowLandscape/false InMagicWin/0
/M(QQ)Browser[ \/]([\w.]+)/i.exec(userAgent) ||
// Windows 微信
// Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x63080029)
// Android 微信
// Mozilla/5.0 (Linux; Android 10; V1921A Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 XWEB/4365 MMWEBSDK/20221012 Mobile Safari/537.36 MMWEBID/3234 MicroMessenger/8.0.30.2260(0x28001E55) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64
/(MicroMessenger)[ \/]([\w.]+)/i.exec(userAgent) ||
// 企业微信 *未测试
/(wxwork)[ \/]([\w.]+)/i.exec(userAgent) ||
// Android 支付宝
// Mozilla/5.0 (Linux; U; Android 10; zh-CN; V1921A Build/QP1A.190711.020) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/69.0.3497.100 UWS/3.22.2.55 Mobile Safari/537.36 UCBS/3.22.2.55_220929181439 ChannelId(0) NebulaSDK/1.8.100112 Nebula AlipayDefined(nt:WIFI,ws:360|0|3.0) AliApp(AP/10.3.26.8210) AlipayClient/10.3.26.8210 Language/zh-Hans useStatusBar/true isConcaveScreen/true Region/CNAriver/1.0.0
/(Alipay)Client[ \/]([\w.]+)/i.exec(userAgent) ||
// Android 飞书
// Mozilla/5.0 (Linux; Android 10; V1921A Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/75.0.3770.156 Mobile Safari/537.36 Lark/5.25.4 LarkLocale/zh_CN ChannelName/Feishu TTWebView/0751130016468
/(Lark)[ \/]([\w.]+)/i.exec(userAgent) ||
// 钉钉 *未测试
/(DingTalk)[ \/]([\w.]+)/i.exec(userAgent) ||
// Android Vivo浏览器
// Mozilla/5.0 (Linux; Android 10; V1921A; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0
/(VivoBrowser)[ \/]([\w.]+)/i.exec(userAgent) ||
[];
var embedded = {
name: embeddedRegEx[1] || "",
version: embeddedRegEx.length > 2 && embeddedRegEx[2] || "0",
};
switch (embedded.name.toLowerCase()) {
case "micromessenger": embedded.name = "Weixin"; break;
case "wxwork": embedded.name = "WeWork"; break;
case "":
if (userAgent.match(/(Weixin|WeChat)/i)) embedded.name = 'Weixin';
if (userAgent.match(/(Alipay)/i)) embedded.name = 'Alipay';
break;
}
embedded.versionNumber = embedded.version.split(".")[0]
return {
userAgent,
core,
browser,
platform,
embedded,
}
}
document.getElementById('result').innerHTML = [
// `<b>user-agent:</b> ${navigator.userAgent}`,
`${JSON.stringify(uaMatch(), null, 8)}`.replace(/\n/g, '<br>').replace(/ /g, '&nbsp;'),
].join('<br>');
</script>
</body>
</html>

1
tools/npm ua-device.txt Normal file
View File

@ -0,0 +1 @@
https://www.npmjs.com/package/ua-device