1. 程式人生 > >解決iOS微信底部返回橫條問題

解決iOS微信底部返回橫條問題

最近做微信公眾號的開發,遇到 iOS新版微信的底部會出現返回小橫條的坑。從公眾號開啟頁面,底部有個返回的小橫條,會遮擋頁面底部。但是再重新整理一下該元件頁面,就不會遮擋了。其實就是第一次出現小白條時,頁面高度獲取會有問題。
底部有個返回的小橫條,會遮擋頁面底部.gif

一、解決部分問題

查資料得知 小橫條的出現是因為頁面跳轉產生歷史紀錄。 所以我想,使網站不存在歷史紀錄,沒有返回,從而不出現小橫條。那麼可以使用location.replace() 代替location.href = '';使用 this.$router.replace();代替 this.$router.push(); 特別是,進入H5 微信授權一定會跳轉,使用location.replace(),避免首頁就出現不必要的返回小橫條。

 //獲取微信 code,進行微信授權
 getWxCode() {
     location.replace(`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${this.wxAppId}&redirect_uri=${window.location.href}&response_type=code&scope=snsapi_base&state=123&connect_redirect=1#wechat_redirect`);
},

二、完全解決問題

但是,我們有的頁面想要存在返回,畢竟返回上一步還是蠻好的體驗。

所以小橫條的問題還是不可逃避的。頁面的高度是用window.innerHeight;獲取的,而且是在頁面dom載入完成後再獲取,想著等小橫條出來後,再獲取高度,結果還是有問題的。有問題程式碼如下:

//該程式碼不能實現預想效果
mounted() {
      //所有的dom載入完成後 載入函式
      this.$nextTick(() => {
        //計算列表元件的高度的函式
        this.remainder();
      });
    },

而且有一個神奇的現象,第一次進來的時候是擋著的,但是重新整理一下就不擋了。
難道第一次載入頁面,所有的dom載入完成後,小白條還沒有出現,所以此時獲取的頁面高度還是未加小白條的高度。怎麼樣做到小白條出來後再獲取頁面高度呢?


我先加了2S的定時器,驗證想法,果然2S後獲取的頁面高度是去掉小白條的高度。所以該想法是正確的!於是程式碼改成:

mounted(){
   //等微信多出來底部的返回條後,再獲取高度,解決iOS新版微信底部返回橫條問題
   setTimeout(()=> {
      this.remainder();
   },20)
},

加點延時,解決問題!!!

如果有更好的方法,請多多指教!