JavaScript判断系统和浏览器
在做项目的时候,Web端需要适配移动端,且部分参数需要判断对应系统或浏览器。
在IOS中,因为高版本的系统Safari浏览器采用了Mac的内核,所以导致普通的判断无法识别到对应系统。
(userAgent.match(/(Macintosh)/) && navigator.maxTouchPoints > 1) 能有效识别是apple产品,且是触屏的,通过此方法能识别高版本的IOS_Safari。
Navigator
接口的 maxTouchPoints
只读属性返回当前设备支持的最大同时触摸接触点数。
if (navigator.maxTouchPoints > 1) {
// 浏览器支持多点触控
}
识别对应系统和浏览器代码:
/* 匹配系统 */
function detectDeviceType(userAgent) {
if (/(iPhone|iPad|iPod|iOS)/i.test(userAgent) || (userAgent.match(/(macintosh)/) && navigator.maxTouchPoints > 1)) {
return 'iOS';
}
else if (/android/i.test(userAgent)) {
return 'Android';
}
else {
return 'PC';
}
}
/* 匹配浏览器 */
function detectBrowser(userAgent) {
if (/safari/i.test(userAgent) && !/(chrome|crios|crmo|edg|edge)/i.test(userAgent)) {
return 'Safari';
} else if (/(chrome|crios|crmo)/i.test(userAgent) && !/(edg|edge)/i.test(userAgent)) {
return 'Chrome';
} else if (/(edg|edge|edgios|edga|edg)/i.test(userAgent)) {
return 'Edge';
} else if (/(firefox|fxios)/i.test(userAgent)) {
return 'Firefox';
} else if (/xiaomi/i.test(userAgent)) {
return 'Xiaomi';
} else if (/huawei/i.test(userAgent)) {
return 'Huawei';
} else if (/samsung/i.test(userAgent)) {
return 'Samsung';
} else {
return 'Other';
}
}
/*系统_浏览器*/
function joinSource() {
const userAgent = navigator.userAgent.toLowerCase();
var sys = detectDeviceType(userAgent);
if (sys == "PC") {
return "PC_Browser";
} else if (sys == "Android") {
return sys + "_" + detectBrowser(userAgent);
} else if (sys == "iOS") {
return sys + "_" + detectBrowser(userAgent);
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
2021-08-16 Redis安装及使用详解篇