javascript - IE11 将指针事件分流为触摸事件?

标签 javascript css windows events internet-explorer-11

我已经创建了一个 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 库可以将触摸事件映射到指针事件。 HandJSjQuery PEP是两个运作良好的例子。鉴于目前唯一不支持指针事件的现代浏览器是 Safari,这似乎是更好的方法 (Who wants pointer events...)。

关于javascript - IE11 将指针事件分流为触摸事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30891974/

相关文章:

css - CSS 位置 :absolute 的奇怪问题

python - Python : is it ok to threads read/write simultaneously to same TCP socket?

java - 如何查找 java.exe 是 32 位还是 64 位?

javascript - 什么是 HTML DOM #text 元素?

javascript - 多线图

html - 为什么文本链接和图标链接不是垂直居中的?

javascript - 垂直居中垂直文本

windows - 在应用程序中包含 Visual C++ 运行时

javascript - 如何仅使用按钮而不是整行拖放?

javascript - Jade 逃逸问题?