touchmove / MSPointerMove事件未在Windows 8中触发

时间:2012-08-21 15:10:13

标签: javascript touch windows-8 tablet internet-explorer-10

我只是一个卑微的uC程序员,正试图为他的老板整理一个小网页界面。到目前为止,我已经完成了所有工作,除了能够使用触摸输入选择画布上的方块。

这是在运行Windows 8和IE10的三星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触摸事件获得了开始和结束事件,但是“move”事件没有注册。

我确信这是非常简单的我在这里失踪了,谢谢你帮助我!

2 个答案:

答案 0 :(得分:25)

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

style =“ - ms-touch-action:none”

这是一篇关于如何在许多浏览器上进行触摸的精彩文章。 http://blogs.msdn.com/b/ie/archive/2011/10/19/handling-multi-touch-and-mouse-input-in-all-browsers.aspx

答案 1 :(得分:0)

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