如何禁止瀏覽器自動填充

2022-02-28 12:08:20 字數 1696 閱讀 8254

瀏覽器的儲存賬戶密碼功能,給我們帶來了很大的便利,但是在有些情況下,我們並不希望瀏覽器幫我們填充一些表單,然而autocomplete的一些引數項並不能阻止瀏覽器回填,這裡我們來看下如何解決這個問題。

專案註冊部分的表單有三項,分別為手機號驗證碼密碼,當完成註冊操作後,瀏覽器提醒是否儲存密碼,使用者名稱部分顯示的是驗證碼,點選儲存後,開啟登入頁面,手機號密碼項被分別填充為了驗證碼密碼,給使用者帶來了一定的不便。

1.第一反應考慮到的是,給登入表單的標籤,增加autocomplete="off"

mdn autocomplate 文件

"off"

在autocomplete的文件中說明了value為off時,瀏覽器禁止給當前字段自動的輸入或者選中乙個值,但下方note言明:在大多數現代瀏覽器中,off 值不能阻止瀏覽器的密碼管理工具自動填充,所以第一次嘗試失敗;

2.動態設定密碼 input 標籤 type

<``input` `type="text" onfocus="this.type='password'">
這樣設定 可以保證使用者在點選密碼框之前,避免瀏覽器識別為登入表單、自動填充。

這裡多說兩句,瀏覽器是如何判斷當前表單需要 autocomplete,瀏覽器自動儲存表單是當前 form 存在 type 為 password 的input、且該 input 為表單中的第二個 input 輸入框。

所以,這裡給 password 設定初始 type 為 text,在使用者 點選 input 聚焦後 設定 type 為 password ,避免瀏覽器在 頁面 onload 之後判斷登入表單進行回填。這樣可以解決大部分場景下對於避免回填的需要。然而我們的業務需要 依據跳轉鏈結中的 param 給使用者填充 密碼,這就導致了在使用者 主動 focus 之前,密碼會被明文展示,聚焦後又會隱藏,操作體驗不佳;

3.page.onload 後 js 控制 input type

方法同上,問題點在於 頁面load 後手動設定 input type 為 password,而後根據 page url 引數 填充表單。

但存在問題是 瀏覽器填充的時機無法控制,導致業務填充表單被自動填充覆蓋;方案pass;

4.autocomplete 設定 其他引數

autocomplete除了 on、off 之外,還有很多引數:name、email、username、new-password、current-password、street-address 等等;

當 input type 為 password 但 autocomplete 為new-password, 即可解決瀏覽器自動填充問題,瀏覽器將當前輸入框識別為新密碼,便不會自動填充值。(ps:有例子提到,設定 autocomplete 為乙個 任意字串 ,也能達到相同效果,大家可以試一下)

綜上所述

直接將autocomplete設定 其他引數 即可

參考:

禁止瀏覽器自動填充到表單

有乙個登入頁,有乙個新建使用者頁。他們都有form表單,有username和password 兩個input。type text name username type password name password form 在登入頁的時候瀏覽器記住了密碼,如果去到新建使用者頁則 username 和...

禁止chrome瀏覽器自動填充到表單

今天碰到乙個瀏覽器回填的問題,其實這個現象出現在chrome。一開始我嘗試了jquery的resetform方法 yigeform 0 reset 還以為可以搞定,但是沒有效果還是能填充,挺淡疼的。於是找了其他的blog。嘗試過這種,要不靠譜 window.load function 感覺成功就在咫...

怎麼禁止自動填充瀏覽器記住的密碼?

禁止瀏覽器儲存密碼和禁止瀏覽器填充密碼 瀏覽器儲存密碼是根據input password 來判斷的,所有我們只要保證瀏覽器在dom結構中識別不到密碼框即可。so 密碼輸入位置預設為input text 在輸入框上新增 nf cus this.type password 輸入框獲得焦點時改變輸入框格式...