Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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 为什么在为touchstart事件调用preventDefault()时抑制onclick事件?_Javascript_Ios_Ipad - Fatal编程技术网

Javascript 为什么在为touchstart事件调用preventDefault()时抑制onclick事件?

Javascript 为什么在为touchstart事件调用preventDefault()时抑制onclick事件?,javascript,ios,ipad,Javascript,Ios,Ipad,我尝试为我的Ipad设备实现一些javascript函数。我想在画布div上使用一些滑动操作和单击操作 我实现了水平和垂直滑动功能。我必须在touchstart事件上使用preventDefault来防止在刷卡时滚动整个页面。它工作得很好,但在此之后,我注意到它禁用了这个div上的每个click事件。当preventDefault被删除时,click事件再次工作 有解决这个问题的办法吗 dojo.connect(this.node, "ontouchstart", this, "touchsta

我尝试为我的Ipad设备实现一些javascript函数。我想在画布div上使用一些滑动操作和单击操作

我实现了水平和垂直滑动功能。我必须在touchstart事件上使用preventDefault来防止在刷卡时滚动整个页面。它工作得很好,但在此之后,我注意到它禁用了这个div上的每个click事件。当preventDefault被删除时,click事件再次工作

有解决这个问题的办法吗

dojo.connect(this.node, "ontouchstart", this, "touchstart"); 

...   

touchstart: function(e){
    this.touch = dojo.clone(e.changedTouches[0]);
    e.preventDefault();   
}
this.node=document.getElementById('aa')



您可以尝试阻止touchmove事件的默认操作。

我知道Prusse已经正确地回答了这个问题,但它缺乏我在答案中寻找的信心。touchstart中preventDefault()抑制单击事件的原因是,任何已连接的事件以及随后的touchstart都将被抑制解决方案是将preventDefault()添加到touchmove事件中。

这在处理点击下的中有更详细的解释:

在touchstart或第一次touchmove上调用preventDefault()后 事件防止相应的鼠标事件触发, 在touchmove上调用preventDefault()而不是 touchstart。那样的话,鼠标事件仍然可以触发 链接将继续工作


你可以发布你的Javascript和HTML代码吗?我刚刚添加了代码的相关部分。嗯,你也可以发布这个节点是什么吗?添加了一些HTML代码,完整的代码非常复杂,这可能会产生同样的坏结果。目前我正在考虑模拟鼠标点击,此时touchstart和touchend之间的距离非常短。刚刚测试过,这个点击模拟就像一个魅力。
<div id="aa" style="width: 600px; height: 400px;">
  <div onclick="alert('asd');" style="width: 100px; height: 100px; background-color: #ff0000; margin: auto;">

  </div>
</div>