bug情況:使用米8的微信打開登錄頁,當輸入密碼時,會調起系統默認的小米安全鍵盤,偶發性出現鍵盤已收起,但頁面未落下,底部原輸入法位置變爲空白。如下圖:
首先嚐試通用解決方式,如:
https://www.jianshu.com/p/c8f3a4036251
https://blog.csdn.net/a_small_insect/article/details/85162236
實踐上述類型的解決方式,仍不穩定,經多次測試發現,全部是在輸入密碼時,安全鍵盤頂起頁面導致頁面出現留白。
猜測是系統默認安全鍵盤的問題,無法感應到鍵盤收起,使頁面下滑。
在同事的vivo上也出現類似的問題,考慮到多種機型的兼容性問題,所以決定繞過input type="password"這種輸入框類型,仍使用type="text",調起普通鍵盤即可。
html頁面代碼爲:增加了type="hidden"用來存儲密碼
<input type="text" class="inputT" oninput="myPwd(this)" placeholder="請輸入密碼"/>
<input type="hidden"id="pwd" name="pwd"/>
js代碼:通過對第一個密碼輸入框綁定oninput事件,實時監測密碼格式並賦值給隱藏的密碼輸入框中
function myPwd(e){
var v= trim($(e).val());
var pwdV = trim($("#pwd").val());
var lastV = "";
var totalV = "";
var reg = /^[\u4e00-\u9fa5a-zA-Z0-9]+$/;
if(v.length>pwdV.length){
lastV = v.substr(v.length-1);
if(reg.test(lastV)){
totalV = pwdV + lastV +"";
}else{
totalV = pwdV;
}
}else if(v.length<pwdV.length){
totalV = pwdV.substring(0,pwdV.length-1);
}
$("#pwd").val(totalV);
var vDot = "";
for(var i=0;i<totalV.length;i++){
vDot += "•";
}
$(e).val(vDot);
}
emmm...後來發現密碼框改爲text後,會出現另一個問題,全選密碼刪除或者替換等操作,無法即時更新密碼。後續再尋找更好的解決辦法吧。