解決iOS微信底部返回橫條問題
阿新 • • 發佈:2019-02-13
最近做微信公眾號的開發,遇到 iOS新版微信的底部會出現返回小橫條的坑。從公眾號開啟頁面,底部有個返回的小橫條,會遮擋頁面底部。但是再重新整理一下該元件頁面,就不會遮擋了。其實就是第一次出現小白條時,頁面高度獲取會有問題。
一、解決部分問題
查資料得知 小橫條的出現是因為頁面跳轉產生歷史紀錄。 所以我想,使網站不存在歷史紀錄,沒有返回,從而不出現小橫條。那麼可以使用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)
},
加點延時,解決問題!!!
如果有更好的方法,請多多指教!