【问题标题】:Touch API (e.g. touchstart) not working in MS Edge触控 API(例如 touchstart)在 MS Edge 中不起作用
【发布时间】:2015-10-23 11:12:54
【问题描述】:

我的应用程序正在使用 Touch API 来检测 JavaScript 中的触摸事件。示例:

$(".element").on("touchstart", function(event){
    alert("TRUE");
});

这适用于任何带有任何浏览器(如 Android 或 iOS)的触控设备,但它不适用于带有或不带有连接键盘的 Windows 10 平板电脑上的 MS Edge。似乎支持 API:Compatibility list。但是,我测试过:'ontouchstart' in window,这在此设备上返回 false。此外,mousedown 似乎被解雇了。

这里发生了什么?如何在 Windows 10 平板电脑上触发触摸事件? 我想只为触摸设备保留该事件。切换到指针事件 API 还包括桌面设备,这不是我想要的。

【问题讨论】:

  • 嗨,您在这个问题上取得进展了吗?
  • 不,事实上我仍在等待解决方案,并没有找到任何解决方法。如果没有人回复解决方案,我认为唯一的选择是同时监听鼠标事件。

标签: javascript mobile touch tablet microsoft-edge


【解决方案1】:

对于触摸 API,您必须在 Edge 上激活一个标志:在地址栏中,输入 about:flags 并按 Enter。在 Touch 部分中,您可以使用相应的下拉菜单启用触摸事件

【讨论】:

  • 我会在新的一年里看看这个。
  • 事实上这个属性被禁用了。我不知道它被禁用的原因,但在激活它之后,触摸事件会被正确触发。可能是 Windows 10 升级问题...
  • 仅供参考 - 我需要这样做并添加样式标签:-ms-touch-action: none; 提到了你的其他答案
  • 这个解决方案一般对 WWW 有帮助吗?大多数用户不会启用此标志,也不会关心/知道启用它。
  • @trismi 默认情况下未启用的功能不存在。没有用户会配置他们浏览器的隐藏功能。他们只是说这行不通。然后我只需要说,获得一个真正的浏览器。 Edge是新的IE?!有希望。
【解决方案2】:

您是否启用了自定义触摸处理?您可以使用以下 css sn-p (在 body 标签上或只是一个手势容器上):

-ms-touch-action: none;

接下来,touch API 是一个 webkit 特性(可能 CanIuse 有错误?)。 IE 和 Edge 有一个类似的功能,称为 Pointer API。但是你可以使用这样的 polyfill 库: https://github.com/CamHenlin/TouchPolyfill

【讨论】:

  • 您将使用此 CSS 禁用触摸操作。正如我已经提到的支持触摸事件,请参阅caniuse.com/#search=touch。而且我不想支持鼠标事件,这就是 Pointer API 的事实。我也描述过。
  • @julmot,这是错误的。启用自定义手势处理需要 ms-touch-action 到 none。否则,您的浏览器将使用默认行为(用于滚动处理、平移、捏合和缩放)。如果要构建自定义手势(并使用 Pointer API),则必须将 ms-touch-action 设置为 none。对于 Edge 的最新版本,“-ms-touch-action”必须替换为“touch-action”。相信我,并尝试在页面正文上使用 PointerMove 事件,触摸操作无和无。你会明白我的意思。
  • @julmot,对于触摸 API,您必须在 Edge 上激活一个标志:在 url 输入中,输入 about:flags。在 Touch 部分,您可以使用相应的下拉菜单启用触摸事件。
  • 感谢您的提示!
【解决方案3】:

尝试使用pointerdown 事件。更多(更多)information。如您所见,touchstart 由 Edge 触发,但并非在所有配置中,例如,当连接/配对键盘时,没有touchstart

【讨论】:

  • 是的,但如果我没有连接键盘,touchstart 事件甚至不会被触发。此外,我想将此事件仅用于触摸设备而不是桌面设备(Pointer API 就是这种情况)。
  • 是蓝牙键盘吗?有一对似乎足以不触发事件,这很愚蠢。
  • 我有一台带有扩展坞的华硕平板电脑。扩展坞包括一个键盘。因此,如果我将它与扩展坞断开连接,我希望它是应该被检测到的“本机”触摸平板电脑。
  • 指针事件也不起作用。因此,Edge 在触摸设备上根本没有提供任何东西。所有的广告都是错误的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
  • 2017-01-09
  • 2016-12-06
  • 1970-01-01
相关资源
最近更新 更多