Skip to content

浏览器(Browser)

常用浏览器方法集合。

使用指引(做什么、何时用)

  • 判断运行环境与设备:isBrowser/isAppleMobileDevice/isWeChatBrowser/getDeviceInfo
  • 响应式与适配:getViewportSize/getScreenSize/getDPR/isMobileViewport/onResize
  • 主题联动:isDarkMode/getTheme/onThemeChange → 与 CSS 变量/设计系统联动
  • 文本与滚动:getSelect/scrollToTop → 基础交互
  • 粘贴板:copyToClipboard → 分享与复制(自动处理权限/回退)

控制台(Console Ready)

  • 文档站已注入对象:window.browserUtilswindow.Http
  • 直接在 DevTools 调用:browserUtils.getLocaleInfo('en-GB')browserUtils.getCommonLocaleTable()browserUtils.getPublicIP()

能力检测

  • browserUtils.isBrowser()
  • browserUtils.isAppleMobileDevice()
  • browserUtils.isWeChatBrowser()
  • browserUtils.isTouchDevice()
  • browserUtils.prefersReducedMotion()

选择与滚动

  • browserUtils.getSelect() 获取当前选中文本
  • browserUtils.scrollToTop() 平滑滚动到顶部

剪贴板

  • browserUtils.copyToClipboard(text)
ts
import { browserUtils } from 'nex-lib'
await browserUtils.copyToClipboard('hello')
text
true // 或 false,取决于环境权限

类名与样式

  • browserUtils.addClass(el, cls)
  • browserUtils.removeClass(el, cls)
  • browserUtils.toggleClass(el, cls)
  • browserUtils.setStyle(el, styles)
  • browserUtils.getStyle(el, name)

网络信息

  • browserUtils.getPublicIP() 获取公网 IP(依赖外部服务)

设备与 UA

  • browserUtils.getDeviceInfo(){ os, browser, isMobile }
  • browserUtils.getUserAgent()
  • browserUtils.getLanguage()

视口与屏幕

  • browserUtils.getViewportSize(){ width, height }
  • browserUtils.getScreenSize(){ width, height }
  • browserUtils.getDPR()number
  • browserUtils.isMobileViewport()boolean
ts
import { browserUtils } from 'nex-lib'
browserUtils.getViewportSize()
browserUtils.getScreenSize()
browserUtils.getDPR()
browserUtils.isMobileViewport()
json
{ "width": 1200, "height": 800 }
{ "width": 2560, "height": 1440 }
1
false

能力检测(Capabilities)

  • browserUtils.isBrowser()boolean
  • browserUtils.isAppleMobileDevice()boolean
  • browserUtils.isWeChatBrowser()boolean
  • browserUtils.isTouchDevice()boolean
  • browserUtils.prefersReducedMotion()boolean
  • browserUtils.getLanguage()'zh-CN,en-US,...'
  • browserUtils.getPreferredLocale()'zh-CN' / 'en-US'` 等规范 Locale
ts
import { browserUtils } from 'nex-lib'
browserUtils.isBrowser()
browserUtils.isAppleMobileDevice()
browserUtils.isWeChatBrowser()
browserUtils.isTouchDevice()
browserUtils.prefersReducedMotion()
browserUtils.getLanguage()
browserUtils.getPreferredLocale()
text
true
false
false
true
false
zh-CN,en-US
zh-CN

选择与滚动(Selection & Scroll)

  • browserUtils.getSelect() → 当前选中文本 string
  • browserUtils.scrollToTop() → 平滑滚动到顶部(无返回值)
ts
import { browserUtils } from 'nex-lib'
document.getSelection()?.selectAllChildren(document.body)
browserUtils.getSelect()
browserUtils.scrollToTop()
text
"...当前选中文本..."

语言与国家对照(Locale Table)

  • browserUtils.getLocaleInfo(locale?) → 返回语言/国家的规范信息
  • browserUtils.getCommonLocaleTable() → 常用 Locale 列表(语言/国家英文名)
ts
import { browserUtils } from 'nex-lib'
browserUtils.getLocaleInfo('zh-CN')
browserUtils.getLocaleInfo('en-GB')
browserUtils.getCommonLocaleTable()
json
{"code":"zh-CN","language":{"code":"zh","name":"Chinese"},"country":{"code":"CN","name":"China"}}
{"code":"en-GB","language":{"code":"en","name":"English"},"country":{"code":"GB","name":"United Kingdom"}}
[
  {"code":"zh-CN","language":"Chinese","country":"China"},
  {"code":"en-US","language":"English","country":"United States"},
  {"code":"ja-JP","language":"Japanese","country":"Japan"},
  {"code":"ko-KR","language":"Korean","country":"South Korea"}
]

IP 获取(Public IP)

  • browserUtils.getPublicIP() → 返回公网 IP 字符串(内置超时与重试)
ts
import { browserUtils } from 'nex-lib'
const ip = await browserUtils.getPublicIP()
text
"203.0.113.42"

主题(Dark/Light)与监听

  • browserUtils.isDarkMode()boolean
  • browserUtils.getTheme()'dark' | 'light'
  • browserUtils.onThemeChange(listener) → 返回取消监听函数
ts
import { browserUtils } from 'nex-lib'
browserUtils.getTheme()
const off = browserUtils.onThemeChange((t) => console.log('theme:', t))
off()
text
light

Released under the ISC License.