Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 处理基于触摸的事件_Javascript_Touch - Fatal编程技术网

Javascript 处理基于触摸的事件

Javascript 处理基于触摸的事件,javascript,touch,Javascript,Touch,我目前在我的触控事件中有: 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.addEv

我目前在我的触控事件中有:

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
事件


我能做些什么来确保它工作?

touchstart
一旦触发
touchend
事件(->如果它没有被取消),就会触发
click
事件。因此,您应该删除else子句,这样就可以了


微软在IE10中的触控事件中采取了不同的方式来协调所有指针设备,您可以在其中检查它是否由鼠标、笔或手指触发,或者将来是否由kinect风格的设备触发。

我不确定它是否有帮助,但Modernizer使用
if((窗口中的“ontouchstart”)| | | window.DocumentTouch&&documentinstanceof DocumentTouch){
。我想知道这是否有助于缩小范围?当我重新阅读你的问题时,我不确定我是否在回答/帮助任何事情。如果你去掉
else{
}怎么办
,然后离开它,使
mousemove
click
事件始终被绑定?这样,如果有触摸事件,则这些事件被绑定,但正常的鼠标事件始终被绑定。如果触摸屏,则会发生触摸事件,否则会发生鼠标事件。或者某些事件是否重叠?例如
touchmove
mousemove
events?我体验到,虽然支持触摸事件,但如果使用USB鼠标(可能取决于操作系统),则可能会发生鼠标事件(没有触摸事件)。我总是选择:当touchstart第一次启动时,同时观察并取消设置鼠标事件侦听器…这可以节省不必要的事件侦听器,并提供控制。好吧,这就是我最初尝试的。问题是,我的手机会触发
mousemove
事件,产生奇怪的结果,导致闪烁并使其无法使用。试试看在click/touchstart函数中附加mousemove/touchmove事件。我想打开src我的代码,但我不被允许,抱歉。这仍然没有多大好处,因为手机会在第一次类似click的触摸时触发
click
事件,然后后续的触摸将出现问题。