2011-05-12 80 views
3

我有一個登錄表單,我需要做到以下幾點:如何檢測是否通過自動填充填充了任何表單元素?

  • 允許自動填充所以誰想要無需鍵入登錄的用戶可以繼續這樣做
  • 檢測是否在表單上使用自動填充,所以當用戶後來嘗試訪問需要登錄而無需自動填寫的網站部分,如果他們在第一個表單上使用了自動填充功能,我只提示用戶再次登錄(使用不同版本的登錄表單,而不允許自動填充)

目前我還沒有找到一種方法來可靠地檢測自動填充是我們編輯(IE,Firefox,Chrome,Google工具欄等) - >在沒有用戶輸入的情況下填寫表單字段的任何機制將在這裏算作「自動填充」)。所以現在我只是讓用戶首次登錄不自動填充(因爲這是一個重要的業務需求),然後促使他們從自動填寫禁用表單進行登錄時,他們到達現場的敏感部位,即使他們有事實上在第一種形式中輸入了他們的用戶名和密碼。

如果有人發現一個可靠的方式檢測(而不是阻止)所有形式的自動填充,我很想聽聽它。

謝謝!

+0

附:一種方法的粗略想法是使用javascript記錄每次在任何輸入字段中出現擊鍵(測量手動輸入多少信息,確保處理用戶單擊刪除或退格時的特殊情況),然後檢查提交時輸入字段中有多少個字符。如果數量不同,這似乎表明自動填充已被使用。但這僅僅是一個未經測試的想法,IE6 +,FF3 +,Chrome,Safari等是否會繼續發揮作用還有待觀察。假設所有輸入都有空的默認值。 – Benissimo 2011-09-06 09:00:59

+1

計時鍵擊+檢查輸入長度與擊鍵次數(考慮退格,刪除等)將是一個不完美的方式去做。但它仍然不是傻瓜證明或完美。我們無法區分自動填充的數據和粘貼的數據(來自剪貼板)。 – techfoobar 2011-12-26 08:50:46

回答

0

我討厭這樣說,但,你不能,更重要的是你(開發商)預計不能夠太。

你必須想象今天的內置瀏覽器自動填充是昔日的老自動填充的應用。他們坐在瀏覽器的DOM影響範圍之外,並直接查詢已知屬性的已知窗口,即窗體並直接發送按鍵,就好像用戶鍵入了它們一樣。

目前的瀏覽器有自動補建於選擇,但他們仍然是非標準的舊應用程序,因此不能(可靠)檢測。

中忽略他們或通過JavaScript總是空白輸入字段。