【发布时间】: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