问题: 在较新的 iPad (iPad9) 上面,使用 @nuxtjs/device
提供的 $device.isDesktop
,返回 true
。
原因: iPad 默认开启了桌面模式,即会修改 userAgent ,来获取桌面版的网页。
// 默认
console.log(navigator.userAgent);
// Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Safari/605.1.15
// 关闭桌面模式
console.log(navigator.userAgent);
// Mozilla/5.0 (iPad; CPU OS 15_0_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.0 Mobile/15E148 Safari/604.1
解决:
- 一、关闭桌面模式
设置路径:设置 > Safari浏览器 > 请求桌面网站
- 二、修改判断方式
function isMobile() {
try {
document.createEvent("TouchEvent"); return true;
} catch(e) {
return false;
}
}