【发布时间】:2013-05-09 07:16:40
【问题描述】:
我目前有这个用于我的触摸事件:
if( 'ontouchstart' in document.body) {
usevkeys = true;
canvas.addEventListener("touchstart",function(e) {evt.call(this,e);},false);
canvas.addEventListener("touchend",function(e) {evt.call(this,e);},false);
canvas.addEventListener("touchmove",function(e) {evt.call(this,e);},false);
}
else {
canvas.addEventListener("mousemove",function(e) {evt.call(this,e);},false);
canvas.addEventListener("click",function(e) {evt.call(this,e);},false);
}
这在我的笔记本电脑和手机上运行良好。但是,我想知道,这在同时具有触摸屏和普通鼠标的环境中会有什么反应?鼠标触发触摸事件,像手机触发mousemove事件一样吗?
我可以做些什么来确保它有效?
【问题讨论】:
-
我不确定它是否有帮助,但 Modernizr 使用
if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {。我想知道这是否有助于缩小范围?当我重新阅读您的问题时,我不确定我是否在回答/帮助任何事情。 -
如果你摆脱了
else {和},只留下它,所以mousemove和click事件总是被绑定?这样,如果有触摸事件,它们就会被绑定,但普通的鼠标事件总是被绑定。如果他们触摸屏幕,则发生触摸事件,否则发生鼠标事件。还是某些事件重叠?比如touchmove和mousemove事件? -
我体验到,虽然支持触摸事件,但如果使用 USB 鼠标(可能取决于操作系统),鼠标事件可能会发生(没有触摸事件)。我一直追求:在第一次触发 touchstart 时同时观察并取消设置鼠标事件侦听器...这可以节省不需要的事件侦听器并为您提供控制
标签: javascript touch