Wenn ich die mittlere Maustaste drücke, erscheint nach einer Sekunde "nach 1 Sekunde" in der Konsole. Es ist in Ordnung, es ist was ich brauche. Aber ich möchte auch 1 Sekunde Verzögerung stoppen, wenn ich die mittlere Maustaste loslasse (Mouse Up Listener). Aber jetzt, während die 'wait' Funktion ausgeführt wird, wird 'mouseup' Listener natürlich die 'delay' Variable nicht in 'false' ändern (erst nachdem 1 Sek. Vergangen ist). Aber mb kann ich es irgendwie machen? (Zu stoppen 'wait' Funktion, zB wenn er 0,5 sec auf mouseup mittlere Taste verzögert, nicht mehr als 1 sec)Stopp/Interrupt-Funktionsausführung, die mit getTime funktioniert
function wait(ms){
var start = new Date().getTime();
var end = start;
while((end < start + ms) && delay == true) {
end = new Date().getTime();
}
}
var delay = false;
document.addEventListener("mousedown", function(e) {
if (e.button == 1) { // 1 - middle mouse button
delay = true;
wait(1000); // delay 1 sec
console.log("after 1 sec");
}
});
document.addEventListener("mouseup", function(e) {
if (e.button == 1) {
delay = false;
}
});
Update: Ich werde console.log("after 1 sec");
mit document.execCommand("copy");
ersetzen, können wir verzögern Kopie Zwischenablage maximal 1 Sekunde lang in Chrome-Browser setTimeout()
func, aber es wird mit setTimeout()
, aber wait(999); document.execCommand('copy');
Werken für Firefox (999 ms maximal zulässige)
Ich hätte dann erwähnen sollen, was ich wirklich will. Ich ersetze 'console.log (" nach 1 sek ");' mit 'document.execommand (" copy ");', Wir können die Kopie maximal 1 Sekunde lang im Chrome-Browser mit 'setTimeout() in die Zwischenablage verschieben. 'func, aber es funktioniert nicht in Firefox mit' setTimeout() ', aber' wait (999); document.execommand ('copy'); 'funktioniert für Firefox (maximal 999 ms). – user25
Dann gibt es keine Lösung für Sie, wenn Sie die Zwischenablage nicht von setTimeout() kopieren können. Bei einer langen Wartezeit wird Ihr mouseup-Ereignis immer blockiert. –