Wie kann die automatische Passwort-Speicherung in Browsern ausgelöst werden?

9

Ich habe eine Web-Anwendung, die in reinem JavaScript geschrieben ist (kein vorgenerierter HTML-Code außer dem Dokument, das alle JS-Dateien lädt).

Diese App enthält ein Anmeldeformular, das dynamisch erstellt wird, wenn das Ereignis document.ready ausgelöst wird. Ich Trick den Browser in die Anzeige der "Passwort merken?" Dialog, indem Sie das Login-Formular in einen versteckten iFrame posten, bevor Sie sich mit ajax einloggen (in Firefox erscheint das Passwort in der gespeicherten Passwortliste, so dass dieser Teil offensichtlich funktioniert), aber gespeicherte Passwörter werden nie ausgefüllt, nachdem der Login-Bildschirm später wieder geladen wird Zeit. Das Gleiche passiert in Firefox und Safari.

Gibt es etwas, was ich tun kann oder eine Funktion, die ich aufrufen kann, um AutoFill auszulösen?

UPDATE: AutoFill funktioniert in Safari beim ersten Laden der Seite, aber nicht, wenn sich der Benutzer abmeldet und das Anmeldeformular ohne erneutes Laden der Seite neu erstellt wird. In Firefox funktioniert es nie.

    
Aleksander Kmetec 12.04.2010, 09:20
quelle

3 Antworten

4

Zusätzlich zum Umbrechen der Formularelemente in ein form -Element stellen Sie sicher, dass alle Eingaben (und möglicherweise sogar das Formular) eindeutige name - und id -Attribute haben, die sich nicht ändern. Der Name sollte wahrscheinlich etwas beschreibendes wie password für das Passwort usw. sein, nicht wirklich sicher, in welchem ​​Grad Browser diese Informationen verwenden, aber "Autosuggest" / "Zauberstab" -Funktionen funktionieren möglicherweise besser, wenn Sie einen Standardnamen verwenden.

Und natürlich sollten Sie sicherstellen, dass Sie keine Autosuggest / AutoFill-Attribute auf false setzen (das js-Framework könnte dies aus irgendeinem Grund tun, wenn Sie eines verwenden).

Eine dritte Möglichkeit besteht darin, dass einige Browser möglicherweise automatisch gefüllt werden, bevor das Skript das Formular lädt und auf die Seite schreibt. Versuchen Sie, eine statische HTML-Version des Formulars zu erstellen und zu sehen, ob das funktioniert.

Die einfachste Lösung (wenn statische Formulare funktionieren) besteht darin, das Neuladen einer Seite beim Abmelden zu erzwingen (wahrscheinlich möchten Sie den "Zustand" des laufenden javascript nach dem Abmelden trotzdem verwerfen, so dass das Auffrischen wirklich eine gute Sache ist) / p>     

Stein G. Strindhaug 19.04.2010, 07:07
quelle
1

Einige Browser benötigen ein "Formular" -Tag, um den lokalen Nutzernamen & amp; Passwortspeicherung. Hatte das gleiche Problem in der AJAX-Anwendung, und in meinem Fall habe ich gerade

hinzugefügt %Vor%

Tags.

    
Andrew Bashtannik 12.04.2010 14:41
quelle
0

Können Sie nicht einen ähnlichen Trick verwenden - verwenden Sie einen iframe, um das Formular zu laden, und dann, wenn das Login-Formular eingereicht wird, senden Sie in Wirklichkeit das iframe-Formular, das das gespeicherte Passwort enthält.

Um das "Passwort" in der sichtbaren Form erscheinen zu lassen, glaube ich, dass Sie die Länge des Passworts im Iframe-Formular messen und dann das Passwortfeld des sichtbaren Formulars mit der gleichen Anzahl von * füllen können.

    
wheresrhys 12.04.2010 14:13
quelle

Tags und Links