【问题标题】:navigator.MaxTouchPoints returns 2 on Edge browser on windows laptop even though it is not a touch devicenavigator.MaxTouchPoints 在 Windows 笔记本电脑的 Edge 浏览器上返回 2,即使它不是触摸设备
【发布时间】:2022-01-25 00:37:28
【问题描述】:

Edge 浏览器为 navigator.MaxTouchPoints 返回 2。我们使用该属性来检测触摸设备。有没有其他方法可以做到这一点?

【问题讨论】:

    标签: touch microsoft-edge


    【解决方案1】:

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

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

    测试代码:

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

    输出:

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

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

    【讨论】:

    • 感谢您的回复。很可能我使用的是旧版本。这是我使用的版本:Microsoft Edge 44.17763.831.0。当我运行 sn-p 时,它返回 2。您使用的是哪个版本?
    • 我正在使用 MS Edge 44.18362.1.0 我可以看到你的版本不是太旧。我怀疑这个问题可能与您使用的笔记本电脑有关。我建议您尝试在另一台机器上运行代码以查看结果。它可以帮助您缩小问题范围。
    【解决方案2】:

    我也有这种行为。当笔记本电脑具有多点触控功能的触摸板时会引起这种情况。甚至还有一个 microsoft issue 用于此(但已被删除)

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

    还有一些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 日之后,当旧边缘 EOL 结束时,我将删除该代码...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多