Нужен код JavaScript для нажатия и удержания кнопки
-
09-06-2019 - |
Вопрос
Мне нужна короткая наименьшая возможная процедура Javascript, которая, когда происходит нажатие кнопки мыши на кнопке, сначала реагирует так же, как щелчок мышью, а затем, если пользователь удерживает кнопку нажатой, она реагирует так, как если бы пользователь постоянно отправлял щелчки мышью, и через некоторое время с помощью Удерживаемая кнопка действует так, как будто пользователь ускоряет щелчки мышью... по сути, думайте об этом как о повторении нажатия клавиши с ускорением во времени.
то естьпользователь удерживает кнопку мыши (x=вызов функции) - x___x___x___x__x__x_x_x_x_xxxxxxx
Решение
function holdit(btn, action, start, speedup) {
var t;
var repeat = function () {
action();
t = setTimeout(repeat, start);
start = start / speedup;
}
btn.mousedown = function() {
repeat();
}
btn.mouseup = function () {
clearTimeout(t);
}
};
/* to use */
holdit(btn, function () { }, 1000, 2); /* x..1000ms..x..500ms..x..250ms..x */
Другие советы
При нажатии кнопки позвоните window.setTimeout
с вашим предполагаемым временем и функцией x
, и снова установите таймер в конце x
но на этот раз с меньшим интервалом.
Очистите тайм-аут, используя window.clearTimeout
после отпускания кнопки мыши.
Просто поместите приведенный ниже переключатель On в OnMouseDown и toggleOff в OnMouseUp кнопки.
var tid = 0;
var speed = 100;
function toggleOn(){
if(tid==0){
tid=setInterval('ThingToDo()',speed);
}
}
function toggleOff(){
if(tid!=0){
clearInterval(tid);
tid=0;
}
}
function ThingToDo{
}
что-то вроде псевдокода ниже может работать.
var isClicked = false;
var clickCounter = 100;
function fnTrackClick(){
if(isClicked){
clickCounter--;
setTimeout(clickCounter * 100, fnTrackClick);
}
}
<input type="button" value="blah" onmousedown="isClicked=true;" onmouseover="fnTrackClick();" onmouseup="isClicked = false;" />