我已经创建了一个 Web 应用程序,它可以很好地处理触摸事件和点击事件以及它们各自的处理程序。
但是,在移动到 touch IE11 时遇到问题。触摸在其他平台上工作正常。 IE11 上的鼠标效果很好。但是,如果您同时使用触摸屏和 IE11,那么触摸事件将被包装为指针事件,而不是触摸事件或点击事件。
有什么方法可以将指针触摸事件全局映射到整个窗口/文档的预定义触摸事件?似乎它已经默认为 IE11 中的点击事件执行此操作...
我尝试了以下代码示例,如下所示:JavaScript mapping touch events to mouse events
最后是:
if(window.PointerEvent)
{
...
document.onpointerdown = function(e){
var event = document.createEvent("TouchEvent");
...
}
...
}
但是,IE 会在 document.crateEvent("TouchEvent") 处出错,声称它“不受支持”。但是,TouchEvent 对象在 IE 中被记录为受支持:https://msdn.microsoft.com/en-us/subscriptions/dn792856(v=vs.85) 如 http://www.w3.org/TR/touch-events/#list-of-touchevent-types 中所述
我也试过改成
var event = document.createEvent("UIEvent");
IE 允许,但后来不识别
event.initTouchEvent(someParameters);
我开始相信 IE11 不支持创建触摸事件。
我还看到有关更改 .css 文件以包含以下组合的讨论:
touch-action: none
ms-touch-action: none
pointer-events: none
但完全禁用触摸往往会以我希望避免的其他方式破坏应用程序。
有什么方法可以触发触摸事件而不是 Microsoft 的指针事件吗?
最佳答案
我会说你实际上是在以错误的方式解决这个问题。有几个 pollyfill 库可以将触摸事件映射到指针事件。 HandJS和 jQuery PEP是两个运作良好的例子。鉴于目前唯一不支持指针事件的现代浏览器是 Safari,这似乎是更好的方法 (Who wants pointer events...)。
关于javascript - IE11 将指针事件分流为触摸事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30891974/