2009-08-07 8 views
4

Hier soir, j'ai fait un pic rapide pour essayer d'implémenter la saisie semi-automatique du nom d'utilisateur/mot de passe dans mon application GXT. Par "autocomplete", je ne veux pas dire autocomplete de style Ajax, mais plutôt autocomplétion basée sur le navigateur. La meilleure information que je trouve sur ce via Google est dans le post suivant:Est-il possible d'implémenter la saisie semi-automatique du nom d'utilisateur et du mot de passe dans GXT?

http://osdir.com/ml/GoogleWebToolkit/2009-04/msg01838.html

Je ne pas utiliser cette technique parce que je suis en utilisant GXT et ne voulait pas perdre le look-and-feel de mon formulaire de connexion

J'ai réussi à tout faire fonctionner dans Firefox (il remplit à la fois le nom d'utilisateur et le mot de passe). Dans IE, il ne remplit que le nom d'utilisateur, pas le mot de passe. Dans Safari/Chrome, cela ne fonctionne pas du tout.

Voilà comment je l'ai fait:

  • créé un formulaire HTML caché sur ma page HTML qui intègre GWT.
 
<form method="post" action="javascript:void(0)" style="display: none"> 
    <input type="text" id="username" name="username" value=""/> 
    <input type="password" id="password" name="password" value=""/> 
    <input type="submit" value="Login" id="login"/> 
</form> 
  • Lorsqu'un utilisateur clique sur le bouton « Login » dans mon application GWT, remplir les champs sous cette forme cachée et « cliquez » sur le bouton de connexion (qui ne fera rien puisque l'action = « javascript: void (0) »..
 
// Set the hidden fields to trigger the browser to remember 
DOM.getElementById("username").setAttribute("value", username.getValue()); 
DOM.getElementById("password").setAttribute("value", password.getValue()); 
clickFormLogin(); 

... 

public static native void clickFormLogin() /*-{ 
$doc.getElementById("login").click(); 
}-*/; 

cela fonctionne dans Firefox 3.5 et me demande d'enregistrer l'utilisateur/pass en haut de l'écran, je crois que je sais pourquoi cela ne fonctionne pas Safari/Chrome et c'est parce que l'action du formulaire ne va nulle part et le formulaire n'est pas soumis. Si je change l'action pour qu'elle devienne une URL réelle et affiche le formulaire, cliquer sur le bouton Connexion du formulaire l'enregistrera dans ces navigateurs. Après avoir tapé ceci comme une question ici, j'ai commencé à penser que cela pourrait faire un bon article de blog. Par conséquent, je copiais tout et ajouté un peu sur mon blog:

http://raibledesigns.com/rd/entry/browser_based_username_password_autocomplete

Résumé et Question
Même si je suis content d'avoir obtenu ce travail dans Firefox, je suis déçu par le manque d'IE saisie automatique du mot de passe. Plus que tout, je ne peux pas m'empêcher de penser qu'il existe un moyen de faire fonctionner cela dans les navigateurs WebKit. Quelqu'un sait comment implémenter la saisie semi-automatique du nom d'utilisateur et du mot de passe dans GWT (en particulier GXT)?

Répondre

1
  1. Utilisez plutôt des cookies persistants.
  2. IE enregistrer les mots de passe, si l'utilisateur choisit de le faire, mais cela fonctionne différemment. Vous devez taper au moins le nom d'utilisateur pour qu'il remplisse automatiquement le mot de passe.
Questions connexes