5

Wie erfassen Sie "Aktualisieren" Schaltfläche oder Ereignis von Firefox Browser mit Javascript und imitieren das Verhalten von IE beim Aktualisieren von Formularen. Firefox füllt die Formulare auf, die meine Ajax-Benutzeroberfläche zerstören.Bypass-Refresh-Verhalten von Firefox

Antwort

1
<form name="form1" id="form1" method="post" autocomplete="off" action="http://www.example.com"> 
</form> 

https://developer.mozilla.org/en/How_to_Turn_Off_Form_Autocompletion

+0

Aber das tut der Benutzerfreundlichkeit des Formulars weh. Benutzer können ihren Formularverlauf nicht sehen, wie E-Mails, die sie früher eingegeben haben, und haben keinen Grund, sie erneut vollständig einzugeben. – neoswf

0

Sie können alles verfolgen (onchange, etc), verschlüsseln und in den lokalen Speicher legen. Wenn die Seite geladen wird, prüfen Sie, ob Sie etwas im lokalen Speicher haben und füllen Sie das Formular mit den Benutzerdaten aus.

Stellen Sie sicher, leerer Speicher bei Bedarf (Form submittal, onbeforeunload, nach dem Lesen der Daten, etc.)

Wenn das Problem Sie versuchen, so schmal, zu lösen ist, können Sie die Daten sehr kurz- machen lebte auch im Speicher. Machen Sie es auch Session-Only wenn Sie können. Sie können das Speichern von Daten auch auf das onbeforeunload-Ereignis beschränken, anstatt bei jeder Änderung zu speichern. Zumindest tun Sie eine setTimeOut() mit einer angemessenen Anzahl von Sekunden nach Onchange gefeuert und speichern Sie im SetTimeOut-Handler, auf diese Weise werden Sie nicht unnötig CPU verbrauchen.

+0

von „local storage“ meine ich HTML5 local aber es gibt Bibliotheken, die abstrahieren und erweitern es um Browser ohne HTML5-Unterstützung durch Blitz verwenden, wenn installiert usw. – martona

+0

ich das Formular möchten genau wie das Verhalten in IE-Browsern neu geladen werden. –

+0

Entschuldigung, es sieht so aus, als hätte ich Ihnen eine ausgeklügelte Art und Weise gegeben, genau das Gegenteil von dem zu machen, was Sie wollten. Sie können immer noch die gleiche Logik verwenden ... In Ihrem Onload-Ereignis löschen Sie einfach die Sachen, die Firefox hilft. Wenn Onload zu früh ist (die erneute Füllung geschieht später), dann verwenden Sie settimeout in onload und die Bereinigung wenn der Timer Feuer. – martona

1

Ich bin mir nicht sicher, wie IE sich verhält, aber wenn Sie möchten, dass das Formular leer ist, bevor Ihre Ajax-Benutzeroberfläche funktioniert, können Sie das Formular beim erneuten Laden löschen, indem Sie window.beforeunload verwenden.