是否可以在GXT中实现跨浏览器用户名/密码自动完成?

时间:2009-08-07 14:45:12

标签: gwt autocomplete cross-browser gxt

昨晚,我在我的GXT应用程序中尝试实现用户名/密码自动完成功能。通过“自动完成”,我不是指Ajax样式的自动完成,而是基于浏览器的自动完成。我通过谷歌发现的最佳信息如下:

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

我没有使用这种技术,因为我正在使用GXT,并且不想失去登录表单的外观。

我成功地让一切都在Firefox中运行(它填充了用户名和密码)。在IE中,它只填充用户名,而不是密码。在Safari / Chrome中,它根本不起作用。

我是这样做的:

  • 在我的HTML页面上创建了一个嵌入GWT的隐藏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"/>
</form>
  • 当用户点击我的GWT应用程序中的“登录”按钮时,填写此隐藏表单中的字段并单击“登录”按钮(由于操作=“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 个答案:

答案 0 :(得分:1)

  1. 改为使用持久性Cookie。
  2. IE会保存密码,如果用户选择,但它的工作方式不同。您需要至少键入用户名,以便自动填写密码。

答案 1 :(得分:0)

您需要一个简单的vanilla html提交按钮。我想这会解决它。

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