Можно ли в GXT реализовать кроссбраузерное автозаполнение имени пользователя и пароля?

Вчера вечером я сделал быстрый всплеск, чтобы попытаться реализовать автозаполнение имени пользователя и пароля в моем приложении 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)?


person Matt Raible    schedule 07.08.2009    source источник


Ответы (2)


  1. Вместо этого используйте постоянные файлы cookie.
  2. IE сохраняет пароли, если пользователь хочет, но работает по-другому. Вам нужно ввести хотя бы имя пользователя, чтобы пароль был введен автоматически.
person Havenard    schedule 15.08.2009

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

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

person David    schedule 22.10.2009