He aquí una implementación de JavaScript pura de las soluciones suministradas que tiene soporte extendido para pantallas táctiles. Usted suministra el id
, action
para realizar (function(){}
) y el interval
(ms) para repetir el action
. Tenga en cuenta que esta implementación también ejecutará el action
inmediatamente, en lugar de esperar a que caduque el interval
.
// Configures an element to execute a function periodically whilst it holds the user's attention via a mouse press and hold.
function assertPeriodicPress(id, action, interval) {
// Listen for the MouseDown event.
document.getElementById(id).addEventListener('mousedown', function(ev) { action(); timeout = setInterval(action, interval); return false; }, false);
// Listen for mouse up events.
document.getElementById(id).addEventListener('mouseup', function(ev) { clearInterval(timeout); return false; }, false);
// Listen out for touch end events.
document.getElementById(id).addEventListener('touchend', function(ev) { clearInterval(timeout); return false; }, false);
}
Eche un vistazo a mi pregunta, que se basa en esta. Hay una mejora en este caso: http://stackoverflow.com/questions/36316638/jquery-mousdown-with-setinterval-endless – Steckdoserich