Encontrei uma solução completa para esta pergunta. (Eu testei isso no Chrome 27 e Firefox 21).
Há duas coisas a saber:
- Acione 'Salvar senha' e
- Restaurar o nome de usuário / senha salvos
1. Acione 'Salvar senha':
No Firefox 21 , 'Salvar senha' é acionado quando detecta que existe um formulário contendo o campo de texto de entrada e o campo de senha de entrada é enviado. Então, só precisamos usar
$('#loginButton').click(someFunctionForLogin);
$('#loginForm').submit(function(event){event.preventDefault();});
someFunctionForLogin()
faz o login do ajax e recarrega / redireciona para a página event.preventDefault()
conectada enquanto bloqueia o redirecionamento original devido ao envio do formulário.
Se você lida apenas com o Firefox, a solução acima é suficiente, mas não funciona no Chrome 27. Em seguida, você perguntará como acionar 'Salvar senha' no Chrome 27.
Para o Chrome 27 , 'Salvar senha' é acionado após ser redirecionado para a página, enviando o formulário que contém o campo de texto de entrada com o atributo name = 'nome de usuário' e o campo de senha de entrada com o atributo name = 'password' . Portanto, não podemos bloquear o redirecionamento devido ao envio do formulário, mas podemos fazer o redirecionamento após o login no ajax. (Se você deseja que o login do ajax não recarregue a página ou não o redirecione para uma página, infelizmente, minha solução não funciona.) Em seguida, podemos usar
<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>
O botão com o tipo = 'botão' fará com que o formulário não seja enviado quando o botão for clicado. Em seguida, vincule uma função ao botão para login no ajax. Por fim, a chamada $('#loginForm').submit();
redireciona para a página conectada. Se a página conectada for a página atual, você poderá substituir 'assinadoIn.xxx' pela página atual para fazer a 'atualização'.
Agora, você descobrirá que o método para o Chrome 27 também funciona no Firefox 21. Portanto, é melhor usá-lo.
2. Restaure o nome de usuário / senha salvos:
Se você já possui o código de login codificado como HTML, não encontrará nenhum problema para restaurar a senha salva no código de login.
No entanto, o nome de usuário / senha salvos não serão vinculados ao formulário de login se você usar js / jquery para criar o formulário de login dinamicamente, porque o nome de usuário / senha salvo será vinculado apenas quando o documento for carregado.
Portanto, você precisava codificar o loginForm como HTML e usar js / jquery para mover / mostrar / ocultar o loginForm dinamicamente.
Observação:
se você fizer o login do ajax, não adicione um autocomplete='off'
formulário de tag como
<form id='loginForm' action='signedIn.xxx' autocomplete='off'>
autocomplete='off'
fará com que o nome de usuário / senha da restauração no formulário de login falhe porque você não permite que ele 'complete automaticamente' o nome de usuário / senha.