8

我有一个使用触摸屏的 javascript Web 应用程序,浏览器是基于 webkit 的。

我对此有疑问:

addEventListener("mousedown", function(event){  
    console.log('down fired');
    event.target.classList.add('down');
}, true);

使用鼠标时,按住鼠标时会立即添加目标元素类,但使用触摸屏时,将手指放在元素上时不会改变目标元素类。

然而,奇怪的是,控制台日志消息是在鼠标单击和 ts 按下的 down 事件中发送的。

关于如何解决这个问题的任何建议?

谢谢

编辑

我添加了 touchstart 事件侦听器,但它不会触发触摸事件:

addEventListener("touchstart", function(event){ 
    cl('touch fired');
}, true);
4

3 回答 3

16

为时已晚,但也许其他人可以使用它:

event.target在触摸屏上不起作用,因为您可以使用超过 1 个手指,因此有更多目标:

addEventListener("mousedown", function(event){  
  console.log('down fired');
  var t = /touch/.test(event.type) ? event.targetTouches[0] : event.target;
  t.classList.add('down');
}, true);
于 2014-07-22T08:16:29.260 回答
5

请改用 touchstart 和 touchend 事件。

addEventListener("touchstart", function(event){  
    console.log('down fired');
    event.target.classList.add('down');
}, true);
于 2013-02-15T02:49:33.097 回答
1

尽管通常触摸设备确实会按预期发送鼠标事件,但触摸屏也有特殊事件。具体来说,“touchstart”相当于“mousedown”,“touchend”/“touchcancel”相当于“mouseup”。如果您不检查正在触摸的按钮或位置,通常可以直接替换它们。

顺便说一句,touchend 意味着用户停止触摸屏幕。touchcancel 发生在发生拦截触摸的事情(如非浏览器警报)时。

于 2013-02-15T02:46:01.623 回答