2009-12-01 7 views
5

Ich möchte, dass die AutoFill-Funktion von Safari die Formulare in meiner Webanwendung bearbeitet. Alle unsere Formular senden Ereignisse werden verhindert und wir senden Daten an den Server über XHR (Ajax) POST.Safari-Formular AutoFill-Eintrag erzwingen, wenn JavaScript verwendet wird, um das Senden des Formulars zu verhindern

Das Problem ist, Safari standardmäßig für in ihm einen neuen Eintrag zu schaffen ist die automatische Ausfüllen (Autocomplete) „Datenbank“ erfordert das einreichen Ereignis des Formulars und Blase des ganzen Weg bis zu feuern. Aus meinen Tests ist das, was ich für form GET und POST Methoden abgeschlossen habe und arbeite.

Dieses Problem ist nicht in Firefox vorhanden; Alle unsere Formulare behalten die vorherigen Werte bei, die für jedes Feld "gesendet" wurden. Dies ist das gewünschte Verhalten in Safari.

In unserer App wird ein Benutzer das gleiche Formular mehrmals über mehrere Sitzungen ausfüllen. In einigen Fällen wäre es nützlich, wenn der Browser diese Felder für den Benutzer basierend auf den zuvor übermittelten Werten automatisch vervollständigt (im Fall von Safari).

Ich habe mich gefragt, ob jemand anderes in dieses Problem mit Safari geraten ist? Und noch besser, wenn sie eine Lösung haben (selbst wenn Safari-spezifisch), Safari zu sagen (oder zu zwingen), Formularfeldwerte in seine AutoFill-Datenbank zu speichern, selbst wenn das Sendeereignis des Formulars verhindert wird?

Ich habe versucht preventDefault() höher im DOM, lassen Sie das Übergeben Ereignis Bubble-up zu den übergeordneten DOM-Knoten des Formulars; kein Unterschied im Verhalten. Es ist möglich, dass dies nur ein Fehler in Safari ist ...

+0

Ich habe das gleiche Problem in Safari und Chrome (nicht überraschend). Kann keine Antwort finden. Haben Sie seit letztem Jahr eine Lösung gefunden? –

+0

Jean, ich habe nicht :-(und dieses Verhalten ist sehr ärgerlich. –

+0

Alle Updates zu diesem Problem? – mkurz

Antwort

0

Für ein Formular, das HTTPS verwendet, ist dies das erwartete Verhalten für Safari, das gegen die W3C-Standards ist.

Die einzige Möglichkeit besteht darin, ein Bild oder ein ähnliches Tag einzufügen, das auf eine HTTP-Ressource verweist. Natürlich verlieren Sie Ihr Vorhängeschloss und Ihre Seite wird als unsicher angesehen.

Verwandte Themen