navigator.MaxTouchPoints returns 2 在 windows 笔记本电脑的 Edge 浏览器上,即使它不是触摸设备

navigator.MaxTouchPoints returns 2 on Edge browser on windows laptop even though it is not a touch device

Edge 浏览器 returns 2 个 navigator.MaxTouchPoints。我们使用 属性 来检测触摸设备。还有其他方法可以实现吗?

不确定您使用的是 MS Edge (EdgeHtml) 浏览器还是 MS Edge chromium 浏览器。你也没有提到浏览器的版本。

我用两种浏览器进行了测试,根据我的测试,我发现 navigator.MaxTouchPoints returns 0.

测试代码:

<!DOCTYPE html>
<html>
<head>
<script>
alert("navigator.maxTouchPoints = " + navigator.maxTouchPoints);
</script>
</head>
<body>

</body>
</html>

输出:

如果您使用的是旧版本,那么我建议将其更新为最新版本并再次进行测试。

如果问题仍然存在,请尝试提供带有快照的详细信息可能有助于缩小问题范围。

我也有这种行为。这是由于笔记本电脑具有支持 multi-touch 的触摸板。甚至还有一个 microsoft issue(但已被删除)

如果我 运行 以下 test 从我的边缘(Microsoft Edge 44.18362.449.0 和 HTML 18.18362)所有值都是绿色的(这是无效的)。

还有一些proposed fixes here.

更新:

不幸的是,来自 patrickhlauke 测试页的第一个测试使用真正的触摸屏和旧边缘显示以下内容:

“触摸功能检测”=> 全红 这显然是错误的。 但是 navigator.maxTouchPoints 不同:

navigator.maxTouchPoints (real touchdisplay) = 10 
navigator.maxTouchPoints (Touchpad) = 2

所以我会做这样的事情:

if(Browser=edge && maxTouchPoints > 2) => real Touchdisplay
if(Browser == edge && maxTouchPoints <=2) only tochpad not real touch display

=> 2021 年 3 月 9 日之后,当旧边缘停产时,我将删除该代码...