2010-12-13 21 views
2

Ich bin ein div mit einer Lademeldung und Bild zeigt, wenn ein Formular abgeschickt wird:Zeige Laden Nachricht auf Formular - Zurück-Button woes

$("#some_form").submit(function(){ 
    $("#some_form #loading").show(); 
}); 

Dies funktioniert wie ich erwartet hatte. Wenn Sie jedoch die Zurück-Schaltfläche verwenden, um zurückzugehen, ist das Lade-Div immer noch sichtbar, da der Browser die Seite nicht neu geladen hat.

Gibt es ein Browserereignis, das ich verwenden könnte, um die Lade-Div zu verstecken, wenn die Zurück-Taste verwendet wird? Oder gehe ich die ganze Sache falsch herum?

Danke für jede Hilfe!

Antwort

1

Wie wäre es mit einem Header Cache-Control: no-cache dem Browser sagen, nicht die ursprüngliche Seite zu cachen? Wenn Sie im Verlauf zurück navigieren, sollten Sie die Seite neu laden.

Wie wäre es mit window.onunload?

+0

window.onunload hat den Job erledigt. Vielen Dank! – idlefingers

2

Da Sie das Bild zum Laden anzeigen, arbeiten Sie wahrscheinlich mit AJAX. Recht? Sie sollten die Ajax-Start und Ajax-complete Veranstaltungen =)

EDIT: Sie könnten versuchen:

window.onbeforeunload = function() { 

    $("#some_form #loading").hide(); 

} 

Oder diese:

http://www.bajb.net/2010/02/browser-back-button-detection/

+0

Nein, es ist nicht mit Ajax .. Es ist nur versuchen, die Tatsache zu kompensieren, dass das Formular zu etwas, das wir wissen, einige Zeit zu rendern und wir wollen vermeiden, dass Menschen das Formular mehrmals einreichen. Ich wollte vermeiden, es zu ändern, um Ajax nur für das Laden Bild zu verwenden, es sei denn, es gibt keinen anderen Weg. – idlefingers

+0

Bearbeitete meine Antwort x) – Icid

+0

onbeforeunload entfernt das Element wie erwartet und so stoppt das Bild da, wenn ich zurück gehe, aber es tut Es ist zu früh - das Ladebild wird entfernt, während die nächste Seite geladen wird (also verhält es sich nicht wie eine Ladezeile). Das Auffinden des Zurück-Knopfdruckes wäre zu früh im Prozess - ich möchte den Zurück-Knopf nicht erkennen und damit umgehen, ich brauche die Seite, auf die er zurückgeht, um davon zu erfahren. – idlefingers

0

Sie

könnte hinzufügen
<script> 
$(function() { 
    $("#some_form #loading").hide(); 
}); 
</script> 

in Ihrem Kopf. So versteckt es das div, wenn die Seite vollständig geladen ist. Dies sollte auch funktionieren, wenn die Zurück-Taste gedrückt wird, soweit ich weiß.

+0

Dies ist, was ich anfangs versuchte, aber nicht funktioniert, weil der Browser eine zwischengespeicherte Version der Seite verwendet und die Seite nicht vollständig neu lädt. – idlefingers