1. 程式人生 > >H5軟鍵盤彈起收回(IOS與Android)

H5軟鍵盤彈起收回(IOS與Android)

蘋果 row turn andro client 微信 app mes hide

IOS下中,軟鍵盤處於窗口最頂層,與原有的窗口不沖突,所以底部導航條不會被頂起,但是在android下,軟鍵盤與窗口處於同一層,所以當軟鍵盤彈起時,當前窗口縮小,那麽窗口內容自然要被擠;

解決辦法:

安卓機:通過判斷當前窗口的resize來判斷窗口是否變化;

//判斷當前設備
var browser = {
    versions: function () {
        var u = navigator.userAgent, app = navigator.appVersion;
        return {
            trident: u.indexOf(‘Trident‘) > -1, //
IE內核 isOpera: u.indexOf("Opera") > -1, isIEbrowser: u.indexOf("compatible") > -1 && u.indexOf("MSIE") > -1 && !(u.indexOf("Opera") > -1),//判斷是否IE<11瀏覽器 isEdge: u.indexOf("Edge") > -1, presto: u.indexOf(‘Presto‘) > -1, //
opera內核 webKit: u.indexOf(‘AppleWebKit‘) > -1, //蘋果、谷歌內核 gecko: u.indexOf(‘Gecko‘) > -1 && u.indexOf(‘KHTML‘) === -1,//火狐內核 mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否為移動終端 ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios終端 android: u.indexOf(‘Android‘) > -1 || u.indexOf(‘Adr‘) > -1, //
android終端 iPhone: u.indexOf(‘iPhone‘) > -1, //是否為iPhone或者QQHD瀏覽器 iPad: u.indexOf(‘iPad‘) > -1, //是否iPad webApp: u.indexOf(‘Safari‘) === -1, //是否web應該程序,沒有頭部與底部 weixin: u.indexOf(‘MicroMessenger‘) > -1, //是否微信 (2015-01-22新增) qq: u.match(/\sQQ/i) === " qq" //是否QQ }; }(), language: (navigator.browserLanguage || navigator.language).toLowerCase() }; function judgeDeviceType(){ if(browser.versions.android){ var originalHeight=document.documentElement.clientHeight ||document.body.clientHeight; $(window).resize(function(){ var resizeHeight=document.documentElement.clientHeight || document.body.clientHeight; if(resizeHeight<originalHeight){//軟鍵盤彈起 $(‘footer‘).hide(); }else{ $(‘footer‘).show(); } }); } }

IOS下,用resize方法監測不出軟鍵盤的收起,只能用輸入框獲取焦點與失去焦點的方式判斷;

H5軟鍵盤彈起收回(IOS與Android)