Возможно ли реализовать кросс-браузерное автозаполнение имени пользователя и пароля в GXT? - PullRequest
4 голосов
/ 07 августа 2009

Вчера вечером я сделал быстрый всплеск, чтобы попытаться реализовать автозаполнение имени пользователя и пароля в моем приложении GXT. Под «автозаполнением» я подразумеваю не автозаполнение в стиле Ajax, а автозаполнение на основе браузера. Лучшая информация, которую я нашел об этом через Google, находится в следующем сообщении:

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

Я не использовал эту технику, потому что я использую GXT и не хотел терять внешний вид моей формы входа в систему.

Мне удалось заставить все работать в Firefox (он содержит и имя пользователя, и пароль). В IE он заполняет только имя пользователя, а не пароль. В Safari / Chrome он вообще не работает.

Вот как я это сделал:

  • Создал скрытую форму HTML на моей странице HTML, которая встраивает 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>
  • Когда пользователь нажимает кнопку «Войти» в моем приложении GWT, заполняет поля в этой скрытой форме и «нажимает» на кнопку входа (что ничего не будет делать, поскольку 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();
}-*/;

Это работает в Firefox 3.5 и предлагает мне сохранить пользователя / пароль в верхней части экрана. Мне кажется, я знаю, почему это не работает в Safari / Chrome, и это потому, что действие формы никуда не идет и форма не отправляется. Если я изменю действие на действительный URL-адрес и покажу форму, нажав на кнопку «Форма» формы, вы сохраните ее в этих браузерах.

После ввода этого вопроса в качестве вопроса я подумал, что это может стать хорошим постом в блоге. Поэтому я скопировал все и добавил немного в свой блог:

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

Резюме и вопрос
Хотя я рад, что он работает в Firefox, я разочарован отсутствием в IE автодополнения паролей. Больше всего я не могу не думать, что есть способ заставить эту работу работать в браузерах на основе WebKit.

Кто-нибудь знает, как реализовать кросс-браузерное автозаполнение имени пользователя и пароля в GWT (в частности, GXT)?

Ответы [ 2 ]

1 голос
/ 16 августа 2009
  1. Вместо этого используйте постоянные файлы cookie.
  2. IE сохраняет пароли, если пользователь выбирает, но он работает по-другому. Вам нужно ввести хотя бы имя пользователя, чтобы оно автоматически заполняло пароль.
0 голосов
/ 22 октября 2009

Вам нужна простая ванильная кнопка отправки html. Я думаю, что это исправит.

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

...