2017-06-03 8 views
0

SCENARIO: Ich möchte nur Benutzer bei Fensterwechsel warnen; so habe ich jQuery Fenster Unschärfe & JavaScript's Dialogfeld bestätigen verwendet. Wenn der Benutzer auf die Schaltfläche OK klickt, wird die Anwendung auf eine andere Seite umgeleitet: &, wenn der Benutzer auf die Schaltfläche CANCEL (Abbrechen) klickt, wird nichts passieren. Er kann seine Arbeit auf derselben Seite fortsetzen.JavaScript bestätigen Dialogfeld wird beim Abbrechen Ereignis neu generiert

AUSGABE: Die OK-Taste funktioniert einwandfrei, aber wenn ich auf die ABBRECHEN-Taste klicke, wird die Dialogbox vom Browser neu erstellt. Wie höre ich damit auf?

CODE:

$(window).blur(function (e) { 

     var closeWindow = window.confirm("Your test will be cancelled if you switch the tabs."); 

     if (closeWindow) { 

      // redirect to another page 

     } 
     else { 

      // do nothing. 
     } 
}); 
+2

Der Benutzer klickt auf eine andere Registerkarte, wodurch das Ereignis 'blur' ausgelöst wird, aber bevor der Browser die Registerkarte ändert, wird er durch den 'confirm'-Dialog gestoppt. Nachdem der Benutzer den Vorgang abgebrochen hat, versucht der Browser weiterhin, den Tab zu ändern, das Ereignis "Unschärfe" auszulösen und erneut unterbrochen zu werden ... und dies geht wahrscheinlich für immer weiter (gerade in Chrome 58 getestet). – ROAL

Antwort

0

Wie @ROAL erklärt, das erste Event blur ist wegen der tatsächlichen Unschärfe und Rest sind wegen des Browsers von der Registerkarte zu bewegen versucht, weg. Eine einfache Lösung hierfür wäre die Verwendung eines Flags, um zwischen dem vom Benutzer generierten Ereignis und dem vom Browser generierten Ereignis zu unterscheiden. Probieren Sie es aus:

+0

Danke, Nisarg. Es funktioniert wie erwartet. –

+0

Gern geschehen! – Nisarg

Verwandte Themen