触摸API(如touchstart)不能在MS Edge中工作

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

本文关键字:MS Edge 工作 不能 API touchstart 触摸      更新时间:2023-09-26

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

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

这适用于任何带有Android或iOS等浏览器的触摸设备,但它不适用于带有或不带有连接键盘的Windows 10平板电脑的MS Edge。该API似乎得到了支持:兼容性列表。但是,我已经测试了:'ontouchstart' in window,并且在此设备上返回false。此外,mousedown似乎被解雇了。

这是怎么回事?如何在Windows 10平板电脑上触发触摸事件?我希望这个事件只适用于触摸设备。切换到指针事件API也将包括桌面设备,这不是我想要的。

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

启用触摸事件

是否启用自定义触摸处理?你可以用下面的css代码片段(在body标签上,或者只是一个姿态的容器上):

-ms-touch-action: none;

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

尝试使用pointerdown事件。更多的信息。如您所见,touchstart由Edge触发,但不是在所有配置中触发,例如,当键盘连接/配对时,没有touchstart