2017-05-30 1 views
1

Ich muss einen Weg müssen folgendes tun:Navigieren Sie zu anderen Seite, wenn ‚Aufenthalt‘ Benutzer klickt auf beforeunload

  1. Wenn ein Benutzer das Fenster verlassen klickt, sollte sie fragen, ob sie bleiben wollen oder verlassen
  2. Wenn ein Benutzer klickt bleiben, es sie zu einer neuen Seite
  3. Wenn ein Benutzer klickt verlassen, sollte das Fenster schließen

Im Moment habe ich den folgenden Code direkt soll:

Die Warnungen werden zwar korrekt ausgeführt, aber wenn ein Benutzer auf "Bleiben" klickt, wird die versuchte Navigation zu einer anderen Seite erneut ausgeführt, bevor sie erneut geladen wird, und Sie werden erneut aufgefordert. Dies bleibt in einer Endlosschleife stecken, bis Sie sich entscheiden, die Seite zu verlassen, auf der Sie zu der Seite navigiert sind, zu der Sie navigieren sollen, wenn Sie "Bleiben" wählen.

Antwort

1

ein boolesches Flag Verwenden Sie die Benachrichtigung zu verhindern, wenn Sie wirklich der Benutzer auf eine andere Seite umgeleitet werden soll:

var timeout; 
var redirecting = false; 
$(window).on('beforeunload', function(){ 
    if (redirecting) { return; } 
    timeout = setTimeout(function() { 
     alert('You stayed'); 
     redirecting = true; 
     window.location.href = 'desktop/salvage'; 
    }, 1000); 
    return "You save some unsaved data, Do you want to leave?"; 
}); 

function noTimeout() { 
    alert("You're leaving!"); 
    clearTimeout(timeout); 
} 

window.unload = noTimeout; 
+0

Das funktionierte perfekt, danke! – Linx

Verwandte Themen