javascript - 如何在 MS Edge 中可靠地检测触摸设备
问题描述
我相信 EDGE 最近改变了它的行为,当在桌面非触摸设备上使用时,现在报告 navigator.maxTouchPoints 的值 > 0
这破坏了我们用来检测触摸设备的以下 JS 代码:
function is_touch_device() {
var touch = false;
if ( window.PointerEvent && ('maxTouchPoints' in navigator) ) {
// if Pointer Events are supported, just check maxTouchPoints
if (navigator.maxTouchPoints > 0) {
touch = true;
}
} else {
// no Pointer Events...
if ( window.matchMedia && window.matchMedia("(any-pointer:coarse)").matches ) {
// check for any-pointer:coarse which mostly means touchscreen
touch = true;
} else if ( window.TouchEvent || ('ontouchstart' in window) ) {
// last resort - check for exposed touch events API / event handler
touch = true;
}
}
return touch;
}
有谁知道在触摸设备上使用 MS Edge 时检测(在 JS 中)的可靠方法吗?我什么都没找到。
我知道Edge快要死了,但就目前而言,我必须支持它。
谢谢!
解决方案
您可以使用以下代码来检查它是否是触摸设备。
<script type="text/javascript">
if ("ontouchstart" in document.documentElement) {
document.write("your device is a touch screen device.");
}
else {
document.write("your device is NOT a touch device");
}
</script>
推荐阅读
- c - C - 使用链表的队列| 代码在某一时刻永远运行
- python - 从 Tkinter 的第二个弹出对话框中检索用户输入的问题
- hive - 在 HIVE 中使用 NVL (),() 作为列
- r - 为什么我在 R 中看到带有 ggplot 的 geom_line 的条形图?
- python - 比较两个 CSV 文件并搜索相似的表情符号
- javascript - 为什么我不能导入这个国家代码选择器?有一个更好的方法吗?
- excel-formula - 在excel中使用左右函数返回许多争论
- flutter - 在 2 个选项之间切换的小部件:RenderFlex 子项具有非零 flex 但传入的高度约束是无界的
- c - 在 C 中对字节数组元素进行位移位有什么作用
- mongodb - MongoDB count() 与 countDocuments()