現版本小程式暫時無法監聽webview頁面高度改變

qylcx7758發表於2018-09-13

現版本小程式暫時無法監聽webview頁面高度改變

  1. 能實現的方式有在web-view組建的小程式js內,實時監聽高度,當通過拉起導航欄等操作導致視窗高度不一致的時候,將更改的高度當作新的網址引數,將會重新載入網頁,或者類似ajax獲取部分引數,將變化的高度傳送到伺服器上,然後html網頁內通過ajax請求伺服器獲取這個高度; 只有每次onshow的時候能監聽到新的高度,定時器監聽不到改變;
			//小程式內
		setIntervar(findHeight,5000)
	function findHeight(){
	  wx.getSystemInfo({
	    success: function (res) {
	      console.log(res.screenHeight)
	      console.log(res.windowHeight)
	      console.log(res)
	    },
	  })
	}
複製程式碼
  1. 在html網頁對應的js內讀取此時的螢幕解析度,可用高度,onresize,offsetBottom這些也無法監聽到視窗高度的改變;
	//web頁面內
    setInterval(function(){
        console.log("document.body.offsetHeight: "+document.body.offsetHeight)
        console.log("document.body.clientHeight "+document.body.clientHeight)
        console.log("document.body.scrollHeight "+document.body.scrollHeight)  
        console.log("window.screen.availHeight "+window.screen.availHeight)   
        //舉例在小程式web-view網頁內,拉起和隱藏手機導航欄
        //未拉起導航欄時,前三個值為568,第四個值為640
        //小程式內的拉伸起導航欄,前三個值為526,第四個值為640
        //無論哪種情況,只要web-view的頁面一載入進來,就不會隨導航欄的拉伸高度而發生任何改變
    },10000)
複製程式碼
  1. 提供的一種實現根據導航欄是否拉起的不同樣式實現的思路,在某些場景下:
  • 當發現導航欄拉起,導致此時的某兩個元素的offsetTop距離接近,或者為負數時,考慮設定margin-top等css樣式來改變,但可能會存在以下4的問題;
  1. 建議不用考慮華為等手機是否拉起導航欄的問題,高度用百分比,因為如果不能讀取高度改變,那麼某些手機的導航欄是無法隱藏的,可能會發生導致初始的樣式有問題;

相關文章