IE11将指针事件分流到触摸事件中?

时间:2015-06-17 12:43:24

标签: javascript css windows events internet-explorer-11

我已经创建了一个适用于触摸事件和点击事件的Web应用程序,并且可以使用各自的处理程序。

但是,移动触摸IE11时会遇到问题。 Touch在其他平台上运行良好。 IE11上的鼠标效果很好。但是如果同时使用触摸屏和IE11,则触摸事件将被包装为指针事件,而不是触摸事件或单击事件。

有没有办法将指针触摸事件全局映射到整个窗口/文档的预定义触摸事件?对于IE11中的点击事件,它似乎已默认执行此操作...

我尝试按照此处显示的代码示例:JavaScript mapping touch events to mouse events

结束了:

if(window.PointerEvent)
{
    ...
    document.onpointerdown = function(e){
        var event = document.createEvent("TouchEvent");
        ...
    }
    ...
}

但是,document.crateEvent(" TouchEvent")中的IE错误声称它不被支持。"但是,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

但完全禁用触摸往往会以我希望避免的其他方式破坏应用程序。

有没有办法触发触摸事件而不是微软的指针事件?

1 个答案:

答案 0 :(得分:0)

我会说你实际上是错误的。有几个pollyfill库可以将触摸事件映射到指针事件。 HandJSjQuery PEP是两个运作良好的示例。鉴于此时唯一不支持指针事件的现代浏览器是Safari,这似乎是更好的方法(Who wants pointer events...)。