javascript - 如何在 iOS 13 及更高版本中检测 iPad 和 iPad OS 版本?
问题描述
我可以在 iPhone 上检测到 iOS 13,但在 iPad OS 13navigator.platform
中是 MacIntel。因此,无法使用以下代码识别 iPad,但它在 iPhone 上完美运行。
if (/iP(hone|od|ad)/.test(navigator.platform)) {
var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
var version = [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
return version;
}
当我们在 iPad 上使用浏览器请求移动网站时,navigator.platform
将返回为 iPad 并完美运行。
谁能建议一种方法来识别在 iOS 13 及更高版本上运行的 iPad使用 Javascript?
解决方案
我能够通过检查navigator.maxTouchPoints
以及navigator.platform
. 它并不完美(如下面的评论中所讨论的),但它是迄今为止我遇到的最好的解决方案,所以我想分享一下。
const iPad = (userAgent.match(/(iPad)/) /* iOS pre 13 */ ||
(navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1) /* iPad OS 13 */);
推荐阅读
- reactjs - 使用带有 React 的 Ant Design ANTD 的问题
- ios - 单元格的父 vc 中的 Swift -AVPlayer' KVO 导致 Xcode 冻结
- r - R中的正则表达式,匹配字符串
- java - 在刷新按钮单击时刷新 JTable 行内容时获取 TableModel 的当前状态的问题
- download - 在 Swiftui 中,如何检查 URLsession 中的内容?
- php - 从 iframe 调用时停止执行 php 脚本
- javascript - Formik 初始值与 Redux 不同步
- javascript - Javascript 中的承诺不变性
- tabs - Kivy:Shift+Tab 不适用于 TextInput
- php - @error 指令未在 laravel 视图中显示错误