JSFiddle - React, Tailwind, and code Playground
HTML
<div>clica-me!</div>
JavaScript
var longclick = function (cb) {
var min = 2000;
var max = 4000;
var time, self, timeout, event;
function reset() {
clearTimeout(timeout);
timeout = null;
}
window.addEventListener('mouseup', reset);
return function (e) {
if (!self) {
self = this;
self.addEventListener('mouseup', function (e) {
e.stopPropagation();
var interval = new Date().getTime() - time;
if (timeout && interval > min) cb.call(self, event);
reset();
});
}
event = e;
time = new Date().getTime();
if (e.type == 'mousedown') timeout = setTimeout(reset, max);
};
};
var div = document.querySelector('div');
var handler = longclick(function (e) {
alert('clicado entre 2 e 4 segundos! ' + e.type);
this.style.backgroundColor = '#ccf';
});
div.addEventListener('mousedown', handler);