Ich versuche onbeforeunload
konsistent auf meiner Seite zu arbeiten, die eine Form hat, die Benutzer ausfüllen. Ich erwarte folgendes:In Rails, onbeforeunload funktioniert nicht konsistent für Chrome-Browser
- Wenn ich einen Link auf eine andere Seite klicken, würde es dem Benutzer
- Prompt Wenn ich die Seite aktualisieren, würde es dem Benutzer
prompt Ich bin Derzeit testen wir unter Google Chrome, und ich verwende jetzt das Folgende - obwohl ich einige Variationen ausprobiert habe.
<script>
$(document).on('ready page:load', function() {
$(window).on('beforeunload', function() {
return "You should keep this page open.";
});
});
</script>
Ich war in der Lage, die Aufforderung zu bekommen, manchmal aber nicht konsequent zu erscheinen. Ich dachte, dies könnte auf einen Konflikt mit dem obigen Code und turbolinks
hinweisen. Es ist mir jedoch nicht gelungen, eine Lösung zu finden, um die oben genannten erwarteten Ergebnisse zu erzielen.
--- Update:
Hier ist der Code, den ich schließlich verwendet.
<script data-turbolinks-eval="false">
$(document).ready(function() {
form_modified=0;
$('#report-form *').change(function(){
form_modified=1;
});
$("#report-form input[name='commit']").click(function() {
form_modified = 0;
});
});
$(document).on('page:before-change', function() {
if ($("#report-form").length > 0) {
if (form_modified==1) {
if (confirm("There are unsaved changes, click \"Cancel\" to remain on the page.")) {
// clicks "OK", nothing here means
} else {
// clicks "Cancel"
event.preventDefault();
}
}
}
});
</script>
Diese Methode funktioniert nicht für die Aktualisierung der Seite oder durch das Fenster „X“ jedoch verlässt aus ...