You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用CSS通过JavaScript判断网站是否在移动设备打开?

解决方案:纯JS判断设备类型(而非窗口尺寸)

你要的是区分设备本身,而非当前浏览器窗口的尺寸,之前用window.innerWidth或普通max-width媒体查询会被窗口缩放干扰,核心是要针对设备固有属性来判断。下面是几种纯JS实现方案:

1. 利用window.matchMedia结合设备媒体查询

这是最推荐的方式,本质还是用媒体查询,但指定针对设备而非窗口,完全不需要依赖CSS文件:

// 匹配设备屏幕宽度小于768px的移动设备
const isMobile = window.matchMedia('(max-device-width: 767px)').matches;

if (isMobile) {
  // 执行移动端逻辑
  console.log('当前是移动设备');
} else {
  // 桌面端逻辑
  console.log('当前是桌面设备');
}

max-device-width对应的是设备的物理屏幕宽度,不会随浏览器窗口缩放改变,完美解决你提到的电脑窗口缩放误判问题。如果需要监听设备状态变化(比如平板旋转),还可以添加监听:

const mediaQuery = window.matchMedia('(max-device-width: 767px)');
mediaQuery.addEventListener('change', (e) => {
  if (e.matches) {
    // 切换到移动端逻辑
  } else {
    // 切换到桌面端逻辑
  }
});

2. 通过设备屏幕固有尺寸判断

直接读取window.screen对象的属性,这是设备的物理屏幕参数,不受窗口缩放影响:

// 设备屏幕宽度小于768px判定为移动设备
const isMobile = screen.width < 768;

if (isMobile) {
  // 移动端逻辑
}

注意:部分平板设备的屏幕宽度可能超过768px,若需区分平板和手机,可以结合devicePixelRatio或UA进一步判断。

3. 解析User Agent(UA)字符串

通过识别UA里的移动设备关键词判断,适合对设备类型有更细分需求的场景:

function isMobileDevice() {
  return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
}

if (isMobileDevice()) {
  // 移动设备逻辑
}

缺点:UA可以被伪造,部分新设备的UA可能未覆盖,但日常使用足够。


内容的提问来源于stack exchange,提问作者Axel G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 02:30:52