我試圖檢測mouseup或touchend事件,而沒有它發射兩次。完整的示例在這裏:preventDefault()不停止在Android上的mouseup事件
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#t").on("touchend mouseup", function(e){$("body").append(e.type + "<br>"); e.preventDefault();});
});
</script>
</head>
<body>
<div id="t" style="position: absolute; left: 200px; width: 200px; height: 200px; background: blue;"></div>
</body>
</html>
在平板電腦上,在touchend事件觸發,然後再延遲一段時間後,鼠標鬆開事件觸發。所以我包含e.preventDefault()行,並根據需要在iPad上停止mouseup事件。但它對Android沒有影響。這兩件事仍然發生。使用「返回false」,stopPropagation()和/或stopImmediatePropagation()也沒有效果。請注意,我可以刪除touchend事件,但我不希望平板電腦上的延遲等待mouseup啓動。我需要爲非平板設備包含mouseup。我也不想測試觸摸功能,然後解除鼠標支持,因爲有人可以同時擁有支持觸摸和鼠標的筆記本電腦並使用它們。我只想讓Android停止觸發mouseup事件。
你可以嘗試從回調中返回false嗎? – bitoiu
@bitoiu,我在文章中提到「return false」。它也沒有工作。 – kbriggs