Ich habe eine vollständige Lösung für diese Frage gefunden. (Ich habe dies in Chrome 27 und Firefox 21 getestet).
Es gibt zwei Dinge zu wissen:
- Lösen Sie 'Passwort speichern' und
- Stellen Sie den gespeicherten Benutzernamen / das Passwort wieder her
1. Lösen Sie 'Passwort speichern' aus:
In Firefox 21 wird "Kennwort speichern" ausgelöst, wenn festgestellt wird, dass ein Formular mit einem Eingabetextfeld und einem Eingabekennwortfeld gesendet wurde. Also müssen wir nur verwenden
$('#loginButton').click(someFunctionForLogin);
$('#loginForm').submit(function(event){event.preventDefault();});
someFunctionForLogin()
führt die Ajax-Anmeldung durch und lädt / leitet auf die angemeldete Seite um, während event.preventDefault()
die ursprüngliche Umleitung aufgrund des Absendens des Formulars blockiert wird.
Wenn Sie nur mit Firefox arbeiten, reicht die oben genannte Lösung aus, funktioniert jedoch nicht in Chrome 27. Anschließend werden Sie gefragt, wie Sie in Chrome 27 das Kennwort "Speichern" auslösen können.
Bei Chrome 27 wird "Kennwort speichern" ausgelöst, nachdem es auf die Seite umgeleitet wurde, indem das Formular gesendet wird, das ein Eingabetextfeld mit dem Attributnamen = "Benutzername" und ein Eingabekennwortfeld mit dem Attributnamen = "Kennwort" enthält . Daher können wir die Umleitung aufgrund des Absendens des Formulars nicht blockieren, aber wir können die Umleitung vornehmen, nachdem wir die Ajax-Anmeldung durchgeführt haben. (Wenn Sie möchten, dass der Ajax-Login die Seite nicht neu lädt oder nicht auf eine Seite umleitet, funktioniert meine Lösung leider nicht.) Dann können wir verwenden
<form id='loginForm' action='signedIn.xxx' method='post'>
<input type='text' name='username'>
<input type='password' name='password'>
<button id='loginButton' type='button'>Login</button>
</form>
<script>
$('#loginButton').click(someFunctionForLogin);
function someFunctionForLogin(){
if(/*ajax login success*/) {
$('#loginForm').submit();
}
else {
//do something to show login fail(e.g. display fail messages)
}
}
</script>
Mit der Schaltfläche mit dem Typ = 'Schaltfläche' wird das Formular nicht gesendet, wenn auf die Schaltfläche geklickt wird. Binden Sie dann eine Funktion an die Schaltfläche für die Ajax-Anmeldung. Zum Schluss werden $('#loginForm').submit();
Weiterleitungen zur angemeldeten Seite aufgerufen. Wenn es sich bei der angemeldeten Seite um die aktuelle Seite handelt, können Sie 'signierteIn.xxx' durch die aktuelle Seite ersetzen, um die 'Aktualisierung' durchzuführen.
Jetzt werden Sie feststellen, dass die Methode für Chrome 27 auch in Firefox 21 funktioniert. Daher ist es besser, sie zu verwenden.
2. Stellen Sie den gespeicherten Benutzernamen / das Passwort wieder her:
Wenn Sie die loginForm bereits als HTML fest codiert haben, ist es kein Problem, das gespeicherte Kennwort in der loginForm wiederherzustellen.
Der gespeicherte Benutzername / das gespeicherte Kennwort wird jedoch nicht an die Anmeldeform gebunden, wenn Sie js / jquery verwenden, um die Anmeldeform dynamisch zu erstellen, da der gespeicherte Benutzername / das gespeicherte Kennwort nur beim Laden des Dokuments gebunden wird.
Daher mussten Sie die loginForm als HTML fest codieren und js / jquery verwenden, um die loginForm dynamisch zu verschieben / anzuzeigen / auszublenden.
Anmerkung:
Wenn Sie das Ajax-Login durchführen, fügen Sie es nicht autocomplete='off'
in Tag-Form wie hinzu
<form id='loginForm' action='signedIn.xxx' autocomplete='off'>
autocomplete='off'
Die Wiederherstellung des Benutzernamens / Passworts in der LoginForm schlägt fehl, da Sie nicht zulassen, dass der Benutzername / das Passwort automatisch vervollständigt wird.