4

昨夜、GXT アプリケーションにユーザー名とパスワードのオートコンプリートを実装しようと、簡単なスパイクを実行しました。「オートコンプリート」とは、Ajax スタイルのオートコンプリートではなく、ブラウザー ベースのオートコンプリートを意味します。Google 経由でこれについて見つけた最良の情報は、次の投稿にあります。

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

私は GXT を使用しており、ログイン フォームのルック アンド フィールを失いたくなかったので、この手法は使用しませんでした。

Firefox ですべてを機能させることに成功しました (ユーザー名とパスワードの両方が読み込まれます)。IE では、パスワードではなくユーザー名のみが入力されます。Safari/Chrome では、まったく動作しません。

これが私がそれをした方法です:

  • GWT を埋め込む HTML ページに非表示の HTML フォームを作成しました。
<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"/>
</フォーム>
  • ユーザーが GWT アプリケーションの「ログイン」ボタンをクリックすると、この非表示のフォームのフィールドにデータが入力され、ログイン ボタンが「クリック」されます (action="javascript:void(0)" であるため、これは何もしません)。
// 非表示フィールドを設定して、ブラウザが記憶するようにトリガーします
DOM.getElementById("ユーザー名").setAttribute("値", ユーザー名.getValue());
DOM.getElementById("パスワード").setAttribute("値", password.getValue());
clickFormLogin();

...

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

これは Firefox 3.5 で機能し、画面の上部にユーザー/パスを保存するように求められます。これが Safari/Chrome で機能しない理由はわかっていると思います。それは、フォームのアクションがどこにも行かず、フォームが送信されないためです。アクションを実際の URL に変更してフォームを表示すると、フォームの [ログイン] ボタンをクリックすると、それらのブラウザーにフォームが保存されます。

これを質問としてここに入力した後、これは良いブログ投稿になるのではないかと考えました。したがって、すべてをコピーして、ブログに少し追加しました。

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

まとめと質問
Firefox で動作したことには満足していますが、IE にパスワードのオートコンプリートがないことに失望しています。何よりも、これを WebKit ベースのブラウザーで機能させる方法があると思わずにはいられません。

GWT (特に GXT) でクロスブラウザのユーザー名/パスワードのオートコンプリートを実装する方法を知っている人はいますか?

4

2 に答える 2

1
  1. 代わりに永続的な Cookie を使用してください。
  2. ユーザーが選択した場合、IEはパスワードを保存しますが、動作は異なります。パスワードがオートコンプリートされるように、少なくともユーザー名を入力する必要があります。
于 2009-08-15T23:36:44.170 に答える
0

プレーンなバニラの html 送信ボタンが必要です。それで直ると思います。

http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/2b2ce0b6aaa82461

于 2009-10-22T03:04:53.303 に答える