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
A
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
- 1. Wie finde ich heraus, wer einen CloudFormation-Stack erstellt hat?
- 2. Wie finde ich heraus, wer SendMessage angerufen hat?
- 3. Wie finde ich heraus, wer eine Garnanwendung getötet hat?
- 4. Wie finde ich heraus, wer eine Methode aufgerufen hat?
- 5. Wie finde ich heraus, was UITextField eine UIKeyboardWillShowNotification verursacht hat?
- 6. Wie finde ich das heraus?
- 7. Finde heraus, wer eine Goroutine gestartet hat (pprof)
- 8. Wie finde ich heraus, wer der Scriptbesitzer ist?
- 9. Wie finde ich heraus, wer mit ActionCable verbunden ist?
- 10. Wie finde ich heraus, wer mir auch folgt mit Gremlin
- 11. Wie finde ich heraus, wer eine AWS RDS DB Instanz erstellt hat?
- 12. Wie finde ich heraus, wer den SQL Server Agent-Job geändert hat?
- 13. Wie finde ich heraus, welche Visual Studio-Erweiterung Speicherlecks verursacht?
- 14. Wie finde ich heraus, wer eine Aufgabe in Process Portal beansprucht hat?
- 15. Wie finde ich heraus, wie viele Webseiten Nutch gekrochen hat?
- 16. Wie finde ich heraus, welcher Aufruf den symbolischen Haltepunkt verursacht hat?
- 17. Wie finde ich heraus, was einen Laufzeitfehler in Erlang verursacht hat?
- 18. Wie finde ich heraus, welcher Edelstein eine bestimmte Abhängigkeit hat?
- 19. Wie finde ich heraus, welche Gruppe ein bestimmter Benutzer hat?
- 20. Wie finde ich heraus, welches Objekt gerade Fokus hat?
- 21. Finde heraus, ob eine Funktion hat
- 22. Wie finde ich heraus, welcher Spieler das nächstbeste Gebot hat? Price is Right game java?
- 23. Wie finde ich heraus, wer der globale Administrator für ein Verzeichnis ist, zu dem ich gehöre?
- 24. Wie finde ich heraus, ob das System die Schriftart hat, die ich in MFC benötigte?
- 25. Wie kann ich überprüfen, wer auf Github Schreibzugriff auf das Repository einer öffentlichen Organisation hat?
- 26. Wie finde ich heraus, wer (welcher Benutzer) die gelöschten Codezeilen für einen gegebenen Git-Commit festschreibt?
- 27. Wie finde ich heraus, welches Javascript ausgelöst wird?
- 28. Wie finde ich heraus, wo NUnit hängt?
- 29. Wie finde ich heraus, ob der Benutzer Youtube-Kanal abonniert hat oder nicht?
- 30. Wie finde ich meinen ISP heraus?
Beachten Sie, dass die beiden genannten Optionen nicht die einzigen beiden Möglichkeiten sind, ein 'onbeforeunload' auszulösen. – nnnnnn
Ich möchte nur Bestätigungsdialog nur von F5s anzeigen - nicht unterstellt –
Fügen Sie also einen Übergabe-Ereignishandler hinzu, der den Beforeunload-Handler entfernt. – nnnnnn