150 lines
7.7 KiB
HTML
150 lines
7.7 KiB
HTML
<!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, ' '),
|
|
].join('<br>');
|
|
</script>
|
|
</body>
|
|
|
|
</html> |