버튼을 길게 누르려면 자바스크립트 코드가 필요합니다.
-
09-06-2019 - |
문제
버튼에 마우스 다운이 발생하면 먼저 마우스 클릭처럼 반응하고 사용자가 버튼을 계속 누르고 있으면 마치 사용자가 계속해서 마우스 클릭을 보내는 것처럼 반응하고 잠시 후 누르고 있는 버튼은 마치 사용자가 마우스 클릭을 가속화하는 것처럼 작동합니다. 기본적으로 시간에 따라 가속을 사용하여 키 누르기를 반복하는 것과 같다고 생각하세요.
즉.사용자가 마우스 버튼을 누르고 있습니다(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
마우스 버튼을 놓았을 때.
OnMouseDown에 아래의 토글On을 넣고 버튼의 OnMouseUp에 토글Off를 넣기만 하면 됩니다.
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;" />
제휴하지 않습니다 StackOverflow