Touch API(例如touchstart)无法在MS Edge中运行

dud*_*ude 16 javascript mobile touch tablet microsoft-edge

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

$(".element").on("touchstart", function(event){
    alert("TRUE");
});
Run Code Online (Sandbox Code Playgroud)

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

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

t.o*_*vre 17

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

  • 这个解决方案一般对WWW有用吗?大多数用户不会启用此标志,也不会关心/了解启用此标志. (5认同)
  • @trismi 默认情况下未启用的功能不存在。没有用户会配置其浏览器的隐藏功能。他们只是说这不起作用。那我只想说,买一个真正的浏览器。Edge 是新的 IE?!还有希望。 (2认同)

t.o*_*vre 5

您是否启用了自定义触摸处理?您可以使用以下css片段(在body标签上或仅用于geastures的容器)来执行此操作:

-ms-touch-action: none;
Run Code Online (Sandbox Code Playgroud)

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