我需要在JavaScript书签中识别长按操作,因此不能使用jQuery,也不能使用onclick()事件等。是否有可能实现,并如何实现?
我需要在JavaScript书签中识别长按操作,因此不能使用jQuery,也不能使用onclick()事件等。是否有可能实现,并如何实现?
onmousedown
,在长按期间调用setTimeout()
。如果超时时间到了,它会调用其函数执行您希望在长按上执行的操作。然而,在onmouseup
时,如果超时时间尚未到期,则取消setTimeout()
。
<script type='text/javascript'>
// t will hold the setTimeout id
// Click for 1 second to see the alert.
var t;
</script>
<button onmousedown='t=setTimeout(function(){alert("hi");}, 1000);' onmouseup='clearTimeout(t);'>Clickme</button>
长按不就是一个点击事件,其中mousedown
和mouseclick
事件相距较远吗?为了解决这个问题,您可以测量从mousedown
事件到单击事件所需的时间,并检查它是否超过了两秒钟(或任何您想要的时间)。
您可以通过new Date().getTime()
访问自1970年1月1日以来的当前毫秒数。鉴于此,我会直观地检查“长按”这样的事件。
$(".selector").mousedown(function() {
$(this).data("timestamp", new Date().getTime());
}).click(function(event) {
var e = $(this);
var start = e.data("timestamp");
e.removeData("timestamp");
if (start && new Date().getTime() - start > YOUR_DESIRED_WAIT_TIME_IN_MILLISECONDS) {
// Trigger whatever you want to trigger
} else {
event.preventDefault();
event.stopPropagation();
}
});
<div>
,<span>
,你需要什么就用什么。 - Michael Berkowski