【问题标题】:IE11 shunting pointer events into touch events?IE11 将指针事件分流到触摸事件中?
【发布时间】:2015-06-17 12:43:24
【问题描述】:

我创建了一个 Web 应用程序,该应用程序可以很好地处理触摸事件和点击事件以及它们各自的处理程序。

但是,在移动到触摸 IE11 时遇到问题。触控在其他平台上也能正常工作。 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

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

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

【问题讨论】:

  • 您是尝试通过桌面 IE11 还是通过 Metro IE11 进行操作
  • 从技术上讲,两者兼而有之。两个版本的 IE11 以及 windows 8.1 原生 webview(Visual Studio .jsproj 应用程序)似乎在这里支持/不支持相同的东西。

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


【解决方案1】:

我会说你实际上是在错误地处理这个问题。有几个 pollyfill 库可以将触摸事件映射到指针事件。 HandJSjQuery PEP 是两个运行良好的示例。鉴于目前唯一不支持指针事件的现代浏览器是 Safari,这似乎是更好的选择 (Who wants pointer events...)。

【讨论】:

  • 不幸的是,并非我使用的所有库都同意这一点。他们中的许多人完全忽略了指针事件,或者是不需要的映射功能。最后,我最终自己更改了他们的库,并根据需要更改元素的样式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 2016-05-01
相关资源
最近更新 更多