瀏覽器自動填充表單的解決方式

           以前在做項目的時候遇到過這個問題,當時年少太輕狂,沒有想過是爲什麼會發生這樣的問題,只覺得作爲一個用戶,每次在登錄網站的時候很有用,很便捷,甚至覺得這個自動填充功能,嗯, 真棒!但是,這次又遇到了這個問題,我不禁陷入了沉思。。。爲什麼會有自動填充呢?爲什麼會變成黃色框框呢?作爲一個開發者,在我不需要它自動填充的時候,它真的,很礙事!

  首先,在瀏覽器有點擊過記住密碼的操作的前提下,在直接寫兩個input,type分別等於text和password的情況下,它就會變成這個樣子:

  借別人的文,發現是在以下情況下會自動填充用戶和密碼信息:

    1、在用戶和密碼包含在form的情況下,同時包含一個 type="text"和 type="password"元素且不包含readonly和disabled屬性,兩個元素可以沒有name和id屬性

    2、在沒有form的情況下,同時包含一個 type="text"和 type="password"元素且不包含readonly和disabled屬性,且兩個元素至少都有name或id屬性(但name和id可以是任意值但不能是空或空格)。

  當然,這兩種方式我就不一一驗證了, 不廢話,我們直接看解決方式,共兩種:

  1、添加input隱藏框來填充

複製代碼
 1 <input name="old-userName" type="text">
 2 <input name="old-pwd" type="password">
 3 <ul class="ul-info">
 4     <li><label>賬號:</label>
 5           <input id="userName" type="text">
 6     </li>
 7     <li><label>密碼:</label>
 8       <input class="0" type="password">
 9     </li>
10 </ul>
複製代碼

  這種方式是百度了很多,最終發現真心有效的一種方式,呈現如下圖:

  

  需要注意幾點的是:  

    1、我們寫了兩個input框來讓瀏覽器自動填充,這兩個input必須是放在用戶真實輸入的input框的前面;

    2、自動填充的input框需要設置display:  none;的樣式;

    3、自動填充的input框需要有設置一個name或者是id(class不行偶~~), 否則會出現這種情況:type='text'正常,type='password'隨便focus一個都會有密碼提示

 

 

   2、修改選擇器

1 <li><label>賬號:</label>
2<input id="a" type="text">
3</li>
4<li><label>密碼:</label>
5    <input type="password">
6</li>

   這種方式是我自己閒着無聊,試着玩兒試出來的,感覺這種方式還是比較合理的,畢竟DOM那麼金貴,不需要多餘的input,這種方式需要注意的幾點就是:

    1、一定要給type='text'一個id;

    2、type='password'不能有id或者name(有其一都會導致自動填充),可以有class;

    3、目測這種方式在360上行不通,谷歌沒有問題,謹慎;

   3、使用js控制

  這方式我就不多加介紹了,網上可以找到,文章最底部也有鏈接可以查看,我也不是太提倡。

  看着乾乾淨淨的輸入框,我的內心毫無波瀾~~~

 

 

  附加一個小提示:如果只是想要去掉那個黃色的背景保留填充的值的話,以下兩種css樣式取其一,都是可以做到的,因爲我們改的樣式不在用戶代理樣式表裏面。

1 input:-webkit-autofill {
2     -webkit-box-shadow: 0 0 0 1000px white inset !important;
3 }
4 input:-webkit-autofill {
5   transition: background-color 5000s ease-in-out 0s;
6 }

  

參考:

避免瀏覽器自動填充表單的解決方式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章