js 移動端關於頁面布局,如果底部有position:fixed的盒子,又有input,當軟鍵盤彈出收起都會影響頁面布局。這時候Android可以監聽resize事件,代碼如下,而ios沒有相關事件。
var winHeight = $(window).height(); //獲取當前頁面高度 $(window).resize(function(){ var thisHeight=$(this).height(); if(winHeight - thisHeight >50){ //當軟鍵盤彈出,在這里面操作 }else{ //當軟鍵盤收起,在此處操作 } });
/** * 解決ios鍵盤彈出遮擋input */ function iosInput() { if(isIos()){ $('.chart-footer').css('position','absolute');//解決第三方軟鍵盤喚起時底部input輸入框被遮擋問題 var bfscrolltop = document.body.scrollTop;//獲取軟鍵盤喚起前瀏覽器滾動部分的高度 $(".chart-input").focus(function(){//在這里‘input.inputframe’是我的底部輸入欄的輸入框,當它獲取焦點時觸發事件 interval = setInterval(function(){//設置一個計時器,時間設置與軟鍵盤彈出所需時間相近 document.body.scrollTop = document.body.scrollHeight;//獲取焦點后將瀏覽器內所有內容高度賦給瀏覽器滾動部分高度 },100) }).blur(function(){//設定輸入框失去焦點時的事件 clearInterval(interval);//清除計時器 document.body.scrollTop = bfscrolltop;//將軟鍵盤喚起前的瀏覽器滾動部分高度重新賦給改變后的高度 }); } } iosInput();