2016-12-19 3 views
0

Ich arbeite an einer Website, die Web-Zugriff auf Altdaten bietet.
Der grundlegende Ablauf ist für den Benutzer, ein Abfrageformular aus einem Menü auszuwählen, das Formular auszufüllen und es zu senden. Der Server generiert den entsprechenden HTML-Code und gibt ihn an den Browser zurück. So weit, ist es gut.Ist es möglich, JavaScript nach einem Browser wieder auszuführen?

Einige Berichte können einige Zeit zum Generieren benötigen. Für diese Berichte zeige ich beim Übermitteln des Formulars ein "Verarbeitungs" -Indikator an. Dieser Indikator ist normalerweise versteckt <div> enthält ein animiertes Symbol.

Das Problem tritt auf, wenn ein Benutzer die Schaltfläche Zurück des Browsers verwendet, um zum Abfragebogen zurückzukehren. Wenn der Browser die Seite mit dem Abfrageformular erneut anzeigt, ist der Verarbeitungsindikator weiterhin sichtbar. Der einzige Weg, um es loszuwerden, scheint zu sein, die Seite an diesem Punkt zu aktualisieren.

Gibt es eine Möglichkeit, es nach der Rückseite zu verstecken?

+0

Verbergen Sie den Verarbeitungsindikator für das Load-Ereignis? –

+0

Onload-Ereignis wird nicht auf historyBack ausgelöst, außer wahrscheinlich auf IE. –

Antwort

0

Sie können ein JavaScript-Ereignis festlegen, um den Indikator nach dem Laden der Seite automatisch zu entfernen. Auf diese Weise wird der Indikator nicht angezeigt, es sei denn, das Skript teilt dem Indikator später die Anzeige mit. Um zu vermeiden, dass der Indikator nie angezeigt wird, können Sie den Code, der den Indikator anzeigt, nach dem Ereignis platzieren, das ihn automatisch ausblendet.

+0

Wie @Bekim Bacaj erwähnt, feuert das Load-Ereignis nicht auf einer Rückseite. Soweit ich kann, werden nach einem Zurück auf der Originalseite keine Ereignisse ausgelöst. –

0

Ich habe endlich eine Lösung dafür, die in dieser Anwendung gut genug funktioniert.

Einige Browser, wie Firefox, feuern ein Ereignis document.focus, wenn die Seite erneut angezeigt wird. Andere, wie Safari, feuern stattdessen ein window.popstate Ereignis.

Ich haken jetzt diese beiden Ereignisse und es funktioniert wie erwartet 99,9% der Zeit.

Verwandte Themen