2016-09-23 2 views
0

Ich arbeite an einer kleinen Web-App und ich muss bestätigen Dialog nach Benutzer aktualisiert seinen Browser. Ich mache es mit window.onbeforeunload = function() { ...}. Das Problem ist, dass es nicht nur bei Aktualisierungen, sondern auch nach der Übermittlung aufgerufen wird. Ich habe eine Frage: kann ich irgendwie herausfinden, ob window.onbeforeunload durch Refresh oder durch ein Submit-Element verursacht wurde?JS: Wie finde ich heraus, wer das window.onbeforeunload() verursacht hat: F5 oder submit?

+0

Beachten Sie, dass die beiden genannten Optionen nicht die einzigen beiden Möglichkeiten sind, ein 'onbeforeunload' auszulösen. – nnnnnn

+0

Ich möchte nur Bestätigungsdialog nur von F5s anzeigen - nicht unterstellt –

+0

Fügen Sie also einen Übergabe-Ereignishandler hinzu, der den Beforeunload-Handler entfernt. – nnnnnn

Antwort

0

Sie können Ereignishandler für verschiedene Ereignisse schreiben, die Sie von der Seite wegführen und eine Kennung zur Verwaltung des Status haben. Dann können Sie diesen Bezeichner in der onbeforepageunload-Funktion verwenden, um alle Aktionen auszuführen, die Sie ausführen möchten. Hier ist ein Codebeispiel, das nach dem Eingabetyp submit sucht und den Bezeichner festlegt. Ähnlich können Sie einen für Anker-Tags haben und so weiter.

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 

</head> 
<body> 
<form action=""> 
    <input type="submit" value="Submit"> 
</form> 
</body> 
    <script> 
    var submit_was_clicked = false; 

    window.addEventListener("beforeunload", function (event) { 
     if(submit_was_clicked){ 
     console.log('submit button clicked') 
     }else{ 
     console.log('on before unload'); 
     } 
    }); 

    document.addEventListener("click", function(e) { 
     if (e.target.type.toLowerCase() === 'submit') { 
      submit_was_clicked = true; 
     } 
    }, true); 
    </script> 
</html> 
Verwandte Themen