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

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

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

这是在运行 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 触摸事件获得了开始和结束事件,但是“移动”事件没有注册。

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

最佳答案

我假设您正在与 Windows 8 桌面 IE 中的 HTML 页面进行交互。在桌面 IE 中,MSPointerMove 不会在该 Canvas 上触发,因为当用户在屏幕上四处移动手指时的默认行为是平移内容。如果您使用以下代码片段设置 Canvas 样式,则应该会检测到您的 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

关于javascript - touchmove/MSPointerMove 事件未在 Windows 8 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12057946/

相关文章:

c# - 如何以编程方式响应 Windows 8 Metro 中的 Snap

c# - 在 WinRT 应用程序中即时本地化

windows-8 - 适用于 Dropbox、EverNote 和 Google Doc (WinRT) 的 SDK

javascript - 在html中动态切换字段集

javascript - React - 动态渲染选择选项

wpf - 禁用鼠标升级

android - 在执行触摸事件时,如何检测正在经过哪个 View ?

javascript - 如何在 NodeJS Web 应用程序中存储和访问大文件

javascript - 谷歌地图如何在不重新加载且不使用历史 API 的情况下更改其 URL?

javascript - 手动触发触摸事件