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
事件,然后后续的触摸将出现问题。