我有一个音量按钮绑定到touchstart和mousedown事件,以及touchend和mouseup事件(我也尝试过touchleave和touchcancel)。
当用户将手指放在按钮上并抬起手指时,它会按预期调用结束处理程序。但是,如果用户将手指滑离按钮然后抬起手指,则事件永远不会被触发(这会导致无限递减或增加音量控制的问题)。
我尝试将touchend事件绑定到window对象,这似乎没有做任何事情。这就是我现在所拥有的:
$('#volume-wrap button').on('touchstart mousedown', function() {
if (this.id == 'volume-down')
volume_timer = setInterval(function(){main.hud.adjustVolume('down')}, 100);
else
volume_timer = setInterval(function(){main.hud.adjustVolume('up')}, 100);
});
$(window).on('touchend mouseup', function() {
if (volume_timer) {
clearInterval(volume_timer);
volume_timer = 0;
}
});
答案 0 :(得分:0)
尝试将e.preventDefault()添加到touchstart事件中。 Android浏览器中存在一个错误。
请参阅:http://code.google.com/p/android/issues/detail?id=4549
更新: 有关更好的说明,请参阅SystemParadox答案:https://stackoverflow.com/a/11613327/757086