前言:
從以前的項目中找一個問題的解決方案,順帶找到了這個安卓機型調起輸入法,頁面沒有自動上滑導致輸入框被彈起的鍵盤遮擋的解決方案。這個問題只有安卓機型頁面中的輸入框處於底部(也就是底部鍵盤區域)的時候才會出現,近一年的項目中很少有表單輸入比較多的場景,所以一直都沒碰到這種問題。現在記錄下來,以后需要的時候好找些。
示例代碼:
公共方法封裝:
//調起輸入法,鍵盤自動上滑 function inputUp(ele){ //安卓機型,自動上滑露出輸入框 var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android終端 if(isAndroid){ $(ele).on('click', function () { var target = this; setTimeout(function(){ target.scrollIntoViewIfNeeded(); },100); }); $(ele).on('focus', function () { //自動反彈 輸入法高度自適應 var winHeight = $(window).height(); //獲取當前頁面高度 $(window).resize(function() { var thisHeight = $(this).height(); if (winHeight - thisHeight > 50) { //當軟鍵盤彈出,在這里面操作 $('body').css('height', winHeight + 'px'); } else { //當軟鍵盤收起,在此處操作 $('body').css('height', '100%'); } }); }); } }
方法使用:
vue項目為例,需要在頁面渲染的時候進行調用,其中num為輸入文本框的類名。一般頁面頂部的文本框不需要處理,底部需要處理的所有的文本框都要調用這個方法。
1 mounted: function(){ 2 common.inputUp('.num'); 3 }