2009-08-07 103 views
4

昨晚我在GXT應用程序中嘗試實現了用戶名/密碼自動完成功能。通過「自動完成」,我不是指Ajax風格的自動完成,而是基於瀏覽器的自動完成。我通過谷歌在這找到的最好的信息是在下面的帖子:是否可以在GXT中實現跨瀏覽器的用戶名/密碼自動完成?

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應用程序中的「登錄」按鈕,填寫字段在這個隱蔽的形式和登錄按鈕「點擊」(它不會做任何事情,因爲行動= 「的javascript:無效(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)中實現跨瀏覽器的用戶名/密碼自動完成?

回答

1
  1. 改爲使用永久性Cookie。
  2. IE會保存密碼,如果用戶選擇,但它的工作方式不同。您需要至少輸入用戶名,以便自動完成密碼。
相關問題