Touch API(例如 touchstart)在 MS Edge 中不起作用

Touch API (e.g. touchstart) not working in MS Edge

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

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

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

这是怎么回事?我该怎么做才能在 Windows 10 平板电脑上触发触摸事件? 我想只为触摸设备保留事件。切换到指针事件 API 也会包括桌面设备,这不是我想要的。

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

您是否启用了自定义触摸处理?您可以使用以下 css 代码片段(在正文标签上或只是一个手势容器):

-ms-touch-action: none;

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

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