2013-02-28 52 views
0

Chrome在提示保存密碼時似乎並不一致。從我的網站,請考慮以下兩個過程...jquerymobile - Chrome不會提示在標準POST中保存密碼提交

  1. 回到主頁

  2. 點擊登錄(這需要你的login.php)

  3. 輸入登錄/密碼

  4. 你登錄了,但Chrome的沒有提示您保存密碼

但是......

  1. 回到主頁

  2. 點擊登錄

  3. 刷新頁面

  4. 登錄輸入賬號/密碼

  5. 你登錄了,和Chrome 提示保存密碼...

是怎麼回事?唯一的區別是打「刷新」。爲login.php中的代碼是非常非常簡單的...本質:

<form id="LoginForm1" action="Login.php" method="POST"> 
    <input type="text" name="UserName" /> 
    <input type="password" name="Password" /> 
    <input type="submit" value="Login" /> 
</form> 

還有的JavaScript(jQuery的1.7.2和jquery.mobile-1.3.0)的主頁上,而不是在login.php中。它似乎繼續,但是,因爲Login.php上的表單樣式看起來像jquerymobile,直到刷新。誰能解釋這種行爲? (此外,爲什麼jquery/jquerymobile禁止保存密碼功能?)

在此先感謝...這是我問的第一個問題。

回答

2

簡短的回答

從我的主頁上的login.php鏈接在A HREF標籤需要數據阿賈克斯= 「假」

我重新包括的jquery移動到的login.php完成後,在所述的login.php形式標籤還需要數據AJAX =「假」

 

龍答案

第1部分

更多的挖掘後,我發現,對於正常行爲的jQuery移動is to "hijack" all a href links and process them through its ajax functionality。這意味着它將轉移到Login.php作爲ajax樣式的傳輸,而不是標準的傳輸。標準傳輸會檢查Login.php中是否包含其特定的javascript包含文件,但通過javascript包含的ajax傳輸包含在主頁中。

但是,當您強制瀏覽器僅查看Login.php(通過單擊刷新)時,它發現沒有任何JavaScript包含,因此Chrome瀏覽器查看裸頁並正確處理它。

 

第2部分

你必須滿足幾個要求Chrome瀏覽器提示保存密碼。其中包括:

  1. 你必須使用一個形式元素

  2. 你必須使用一個提交,不是一個按鈕

  3. 的提交必須是一個真正的提交。 (如果用一些javascript/Ajax覆蓋提交功能...它可能不會提示保存密碼。)

  4. 頁面加載時窗體必須可見。

     

當使用jQuery移動,3和4可以發覺你的工作。

 

對於3 ...

jQuery的移動自動劫持表單提交過程中,它的鏈接的方式做......所以有必要增加數據阿賈克斯=」假「形式元素,以防止它做到這一點。

 

對於4 ...

我的網站的第一個版本已經在主頁上登錄panel在登錄按鈕從「下」的頁面顯示面板。這種方法不會提示輸入密碼,直到我強制面板to be visible on page load

由於我不希望登錄面板始終在主頁上可見,我決定使用單獨的登錄頁面(Login.php)。然而,jquery-mobile處理鏈接到單獨頁面的固有方式是用它的ajax功能劫持它們......瀏覽器解釋爲停留在同一頁面上。因此,對於Chrome瀏覽器,導航到Login.php與使用隱藏面板相同......因爲Chrome將這兩個請求解釋爲停留在主頁上......無論哪種情況,表單元素在最初加載頁面時都不可見。