Client 客户端信息工具
GB.Client 是一组相互独立的浏览器客户端信息方法,可用于判断操作系统、浏览器、移动端和微信环境,并读取当前页面的 URL、路径及查询参数。它没有实例状态配置过程,也不采用链式调用。
安装与引入
浏览器直接引入
<script src="https://cloud.m775.net/js/client.js"></script>
npm 项目
npm i @gentbo/client
import '@gentbo/client';
基本使用
通过 GB.Client() 选择需要的功能并直接调用。各方法彼此独立,不需要初始化。
const os = GB.Client().os();
const browser = GB.Client().browser(false);
const mobile = GB.Client().isMobile();
const weixin = GB.Client().isWeixin();
console.log({ os, browser, mobile, weixin });
API 速查
.os()返回根据 User-Agent 判断的操作系统名称。.browser(simple?)返回浏览器名称;传入 false 时返回名称和版本对象。.isMobile()返回是否匹配常见移动端 User-Agent。.isWeixin()返回当前页面是否运行在微信内置浏览器中。.query()返回不包含开头问号的原始查询字符串。.param(key?)读取全部查询参数,或读取指定参数。.url()返回 document.URL,即当前页面完整地址。.path()返回 location.pathname,即当前页面路径。判断操作系统
os() 将 User-Agent 转为小写后匹配系统标识,并缓存检测结果。
windowsUser-Agent 包含 win。androidUser-Agent 包含 android。linux / unixUser-Agent 包含对应系统标识。macUser-Agent 同时包含 macintosh 和 pc。iosUser-Agent 包含 iphone 或 ipad。undefined没有匹配到已知系统。if (GB.Client().os() === 'ios') {
document.body.classList.add('is-ios');
}
获取浏览器信息
browser() 默认只返回浏览器名称。传入严格的 false 时返回包含名称和版本的对象。
console.log(GB.Client().browser());
// 例如:chrome
console.log(GB.Client().browser(false));
// 例如:{ name: 'chrome', ver: '126.0.0.0' }
当前检测规则覆盖 Edge、Chrome、Safari、IE、Firefox、Maxthon 和 Opera 等标识。没有匹配时,名称与版本均为字符串 undefined。
移动端与微信环境
.isMobile()匹配 iPhone、iPod、Android、Symbian、Windows Phone 和 mobile 等标识。.isWeixin()检查 User-Agent 中是否包含 MicroMessenger,返回 Boolean。if (GB.Client().isWeixin()) {
showWeixinGuide();
}
if (GB.Client().isMobile()) {
document.body.classList.add('mobile-layout');
}
微信、支付宝等内置浏览器通常也包含 Chrome 或 Safari 标识。判断微信环境时应使用 isWeixin(),不要依赖 browser() 的名称。
读取 URL 与查询参数
假设当前地址为 https://example.com/search?page=2&keyword=gentbo:
GB.Client().url();
// https://example.com/search?page=2&keyword=gentbo
GB.Client().path();
// /search
GB.Client().query();
// page=2&keyword=gentbo
GB.Client().param();
// { page: '2', keyword: 'gentbo' }
GB.Client().param('page');
// '2'
query()保留原始编码,不包含开头的 ?;没有查询字符串时返回空字符串。param()使用 URLSearchParams 解码并返回普通对象;没有参数时返回空对象。param(key)返回对应字符串值;字段不存在时返回 undefined。缓存与使用边界
User-Agent脚本加载时读取一次;os、browser、isMobile 和 isWeixin 的结果还会在首次调用后缓存。查询参数query 字符串在脚本加载时保存,param 对象在首次调用时生成;单页应用修改 URL 后不会自动刷新这两个结果。重复参数param() 使用 Object.fromEntries;同名参数出现多次时只保留最后一个值。检测精度User-Agent 可以被修改或弱化,检测结果适合界面适配,不应作为鉴权或安全判断依据。浏览器环境依赖 navigator、window、document 和 URLSearchParams,不能直接用于 Node.js 服务端。