8

我只是一个低级的 uC 程序员,他正试图为他的老板组装一个小的 web 界面。到目前为止,我已经完成了所有工作,除了能够使用触摸输入在画布上选择一个正方形。

这是在运行 Windows 8 和 IE10 的 Samsung Slate 7 平板电脑上

我在这里将代码提炼成几乎最基本的要素:

var cxt;
var c;

window.onload = function () {

c = document.getElementById('displayCanvas');

cxt = c.getContext('2d');


/*
c.addEventListener("MSPointerUp", mouseUp, false);
c.addEventListener("MSPointerMove", mouseMove, false);
c.addEventListener("MSPointerDown", mouseDown, false);
*/
c.addEventListener("touchend", mouseUp, false)
c.addEventListener("touchmove", mouseMove, false);
c.addEventListener("touchstart", mouseDown, false);

}


function mouseDown(downE) {
    window.console &&  console.log("down");
};


function mouseMove(moveE){
    window.console && console.log("move");
}


function mouseUp() {
    window.console && console.log("end");
}

我使用 MSPointer 和“正常”javascript 触摸事件同时获得了开始和结束事件,但是“移动”事件没有注册。

我确定这是我在这里想念的非常简单的东西,感谢您帮助我!

4

2 回答 2

25

我假设您正在与 Windows 8 上的桌面 IE 中的 HTML 页面进行交互。在桌面 IE 中,MSPointerMove 不会在该画布上触发,因为用户在屏幕上移动手指时的默认行为是平移内容。如果您使用以下代码段设置画布样式,则应该检测到您的 MSPointerMove 事件。

style="-ms-touch-action: 无"

这是一篇很棒的文章,介绍了如何在许多浏览器上工作。http://blogs.msdn.com/b/ie/archive/2011/10/19/handling-multi-touch-and-mouse-input-in-all-browsers.aspx

于 2012-08-22T15:35:23.353 回答
0

三星 Slate 7 平板电脑在可能相关的旧版本驱动程序中存在错误。我看到另一个标记为 [internet-explorer-10] 的答案,其中包含详细信息。你更新驱动了吗?

于 2012-10-20T00:36:20.923 回答