it-swarm.com.de

Verhindern, dass Firefox erneut geladen wird

Ich zeige bestimmte Datensätze in einer bearbeitbaren Tabelle an. Wenn der Benutzer versucht, die Tabelle während der Bearbeitung eines Datensatzes neu zu laden, erscheint ein Popup, der den Datensatz vor den nicht gespeicherten Daten warnt.

function cancelProcess()
{
    if(noEditedRecords !=0)//number of edited records in the table
    {
        var processConfirmation = confirm("You've Edited "+ noEditedRecords +" Records. Are You sure to undo the Changes made?");

        if (processConfirmation ==true){
            window.onbeforeunload = null;
            window.location.reload();
        }
    }
}

Wenn er auf OK klickt, um die Seite neu zu laden, fordert Firefox als auf 

Um diese Seite anzuzeigen, muss Firefox Informationen senden, mit denen alle zuvor durchgeführten Aktionen (z. B. Suche oder Auftragsbestätigung) wiederholt werden.

Wenn Sie dieselbe Seite in Chrome öffnen, wird keine solche Aufforderung angezeigt.

Ich habe versucht, dies durch die Einstellung von window.onbeforeunload = null; zu vermeiden, aber es erscheint immer noch das Eingabeaufforderungsfenster.

Ich habe auch versucht, die Firefox-Konfiguration zu ändern:

browser.sessionstore.postdata

Geändert von 0 in 1 , wie auf der Mozilla-Support-Seite vorgeschlagen.

Aber nichts hat funktioniert .. Wie verhindere ich die Aufforderung?

16
Emmi

Verwenden

window.location=window.location;

Anstatt 

location.reload();

arbeite für mich.

35
Ricardo Huertas

Ich habe das Problem gelöst und Daten als nurGETanstelle vonPOSTgesendet,

Es entspricht nicht allen Bedürfnissen, aber es funktioniert ....

Ich habe auch location.reload () verwendet;

1
Mikeys4u
window.opener.location.href = window.opener.location;

Ich habe die Entscheidung gefunden hier

(Getestet mit Firefox 32 und Chrome 38 erfolgreich.)

1
Seva Bityukov

Das Verhalten ist korrekt. Gemäß w3schools verfügt reload über einen Parameter forceGet , der standardmäßig voreingestellt ist. Wenn Sie also ein POST Submit haben, versucht der Browser, das POSTerneut zu senden. _ Daten, und als solche benötigt es Ihre Bestätigung. Firefox macht dies richtig, und Google Chrome verhält sich so, als hätte es einen Standardwert für forceGet .

http://www.w3schools.com/jsref/met_loc_reload.asp

während window.location=window.location oder window.location=window.location.href (oder eine andere Variation davon) meistens funktioniert, wenn Sie eine Anker-URL wie http: //www.google.com#test verwenden, wird diese Methode nicht aktualisiert. Der Browser tut genau das gleiche wie er, wenn Sie bereits auf google.com sind und die URL durch Hinzufügen von #test ändern. Der Browser versucht nur, das Ankertag in der Seite zu finden, auf der der Name test ist, und zu diesem zu scrollen, ohne Ihren Browser zu aktualisieren. 

Die Lösung, die in diesem Fall sowie in jedem anderen Fall, dem ich begegnet bin, funktioniert, wäre window.location.reload(true);

Hoffe das hilft,

Alexandru Cosoi

1
Alexandru Cosoi

Um diese Aufforderung zu vermeiden, erstellen Sie keine Situation, in der ein Benutzer versucht, eine Ergebnisseite von POST neu zu laden.

0
Boris Zbarsky

Versuche dies.

setTimeout (function () {
    window.location.reload();
},0);
0
CookieMonster