搜狗瀏覽器下,會出現把用戶設置記住密碼的表單(用戶名和密碼)亂放在,網站中其他成對出現的用戶名及密碼框中. 如何解決這種不負責任的可恨問題,網上有很多方案,但最終都未果。
一、先把網上搜到的方案放下:
1.在input上使用autocomplete="off",但在有的瀏覽器上還是被記住了用戶名跟密碼。
2.大部分瀏覽器都是根據表單域的type="password"來判斷密碼域的,所以針對這種情況可以采取“動態設置密碼域”的方法:
在搜狗瀏覽器貼樹皮一樣的控制下,依然不好使,確實一開始加載頁面后是不會出現了,可一旦輸入框被點擊, 類型變成了密碼框后依然會馬上被填上不該屬於它的數據(作為輸入框,這也是一種可悲,同情 T_T……)
3.在onload事件,把密碼框的值清空,即:
window.load = function(){ document.getElementById('密碼域ID').value=''; };
這要是好使早就用了,都不用上網查這么多,js也被無情的pass了
4.采用flash做登錄表單,這種情況瀏覽器也不會記錄表單信息。才疏學淺,flash我地不造,沒試驗過是否有效。
5.這個比較麻煩,就是可以把type="password"改成type="text", 因為type不是password就不會出現記住密碼功能,然后設置一個變量如:var val="" 或者是設置一個隱藏域<input type="hidden" name="val">, 最后用onpropertychange(ie)或oninput(其他)把密碼換成一行圓點,並把值賦給val, 提交時再把val的值還原回去,由於效果和*號一樣。 用戶是看不出來的。這種方法有兩個難點:
(1)蒼天啊大地啊,代表密碼的圓點打不出來啊鍵盤上找不到啊找不到……
(2)用來顯示的圓點個數怎么根據用戶的輸入動態變化(請原諒我沒多想),因為這兩個原因這個方法也對我天地無用
二、聰明才智絕頂的我(純粹是個人的非分之想)想到了一個非常簡單還能夠達到目的的方法:
在實驗的過程中發現搜狗瀏覽器是通過記住表單域id的值來確定填寫位置的,但各種取值不允許我去掉id這個神一樣鑲金邊的屬性, 所以我想他搜狗如果是按兩個相鄰的用戶名和密碼輸入框中自動填值的話, 那我把這對鴛鴦中間插一腳讓用戶名框和中間后來的小三三密碼框成為一對,把原來密碼框的id付給小三,再把那三貨隱藏了, 從此原配密碼框就擺脫了被填數據的煩惱(用戶名君也不會被賦值), 當用戶輸入密碼時把值付給中間的密碼框,這樣通過id來取值的語句一點也不用變, 事實證明我是對滴,我在他倆中間加了個密碼輸入框付了id(還沒隱藏),搜狗馬上就老實了:
本來是這樣的: 加工之后: //新加個密碼框替代原來的,把id付給它 //原來的密碼框還是用戶真正接觸使用的,只是id沒有了,搜狗就不會給他填數據了
還有一個方法不用這么麻煩,無意中發現,只要在原來的密碼框后再加個密碼框再隱藏(這個密碼框不用加處理之類亂碼七糟的東西),也會解決問題,不懂其中的科學原理,初步猜測是破壞了用戶名密碼倆一對的搭配形式,可是把簡單的密碼框插到中間卻沒什么效果:
//后加個隱藏的密碼框破壞自動填表符合的結構