IE10 MSPointerUp在不释放手指的情况下触发(触摸保持)

时间:2012-10-09 06:32:28

标签: javascript internet-explorer javascript-events touch internet-explorer-10

所以我一直在搞乱IE10 touch API(在三星Slate上测试),我发现在触摸后触摸释放动作被触发了。

所以这是我在屏幕上按下手指时被触发的事件过程:

  • 0ms = MSPointerDown,其中pointerId = 0
  • 1ms = MSPointerMove,其中pointerId = 0
  • ~1000ms = MSPointerUp with pointerId = 0
  • ~1001ms =具有pointerId = 1 REPEAT POINT的MSPointerDown
  • ~1002ms = MSPointerMove with pointerId = 1
  • ~1250ms = MSPointerUp with pointerId = 1

然后在递增指针ID的情况下在REPEAT POINT处重复。

以下是代码:

// Setup the css on the canvas (allows for detection of MSPointerMove)
$(canvas).css("-ms-touch-action", "none");

// Initialize regular touch actions
canvas.addEventListener('MSPointerDown', TouchStart, false);
canvas.addEventListener('MSPointerMove', TouchMove, false);
canvas.addEventListener('MSPointerUp', TouchEnd, false);

// Initialize the revoking of gestures/other unwanted pieces
canvas.addEventListener("MSPointerCancel", function (e) { e.preventDefault(); }, false);
canvas.addEventListener("MSGestureInit", function (e) { if (e.preventManipulation) e.preventManipulation(); }, false);
canvas.addEventListener("MSHoldVisual", function (e) { e.preventDefault(); }, false);

这绝对只​​是一个Slate问题,但我认为要确保我没有遗漏任何东西是明智的。如果这不仅仅是一个Slate问题,那么我如何允许用户在一秒左右之后按住他们的手指而不会触发不需要的“MSPointerUp”事件。

1 个答案:

答案 0 :(得分:0)

事实证明,这个问题是W7 / W8三星平板电脑的常见问题,这些平板电脑尚未更新其驱动程序。

能够通过更新驱动程序让它工作: http://www.samsung.com/ca/support/win8upgrade/