微信小程式 webview 頁面重新整理
微信小程式 webview 頁面重新整理
問題描述
在微信小程式原生頁面做了操作,資料發生改變,回到 webview 頁面時需要更新 webview 裡面的資料。由於小程式沒有提供與 webview 的實時通訊能力,因此重新整理頁面是個可考慮的做法。
解決方案
首先,解決回到 webview 重新整理的問題,webview 自帶快取,直接物理鍵返回,或者 back api 返回,都不會更新實時資料,這個問題可以利用 onShow 生命週期,在 onShow 生命週期中改變 webview 的 src 屬性;
注意:
在 onShow 中改變 src 連結時,需要改變 src 的原連結,如果直接賦值原連結,不會起作用,所以需要在 query 引數再加上時間戳,才能讓當前 webview 重新整理頁面;
引發的問題:
這種處理方式頁面是會更新了。但是會增加webview的瀏覽history,導致使用者在後退的時候,會在webview內退到前一個頁面,而不是退到小程式的前一個頁面。
處理方式:
首先,讓webview做條件渲染;需要重新整理時,先把webviewUrl設為空,銷燬當前webview。然後再把webviewUrl設為當前值。最終綜合解決方式如下:
<template>
<div>
<!--此處是重點-->
<web-view v-if="webViewUrl.length" :src="webViewUrl"></web-view>
</div>
</template>
<script>
import api from "common/js/util/util";
export default {
data() {
return {
webViewUrl:''
}
},
onShow(){
//此處是重點
if(wx.getStorageSync('isJournalBack')){
let urlTemp = this.webViewUrl;
this.webViewUrl = '';
wx.removeStorageSync('isJournalBack');
setTimeout( () => {
this.webViewUrl=urlTemp.split('?')[0]+'?flag='+Date.parse(new Date())+'&' + urlTemp.split('?')[1];
}, 100)
}
},
onLoad(option) {
if(wx.getStorageSync('isJournalBack')){
wx.removeStorageSync('isJournalBack');
}
let str='/dist/journalList.html';
if(JSON.stringify(option) !== '{}'){
str+='?';
for (var i in option){
str+=i+'='+option[i]+'&'
}
str=str.slice(0,str.length-1);
}
this.webViewUrl = `${api.httpEnv()}${decodeURIComponent(str)}`
console.log(this.webViewUrl)
},
}
</script>
這樣便可以在不影響導航欄歷史的情況下重新整理頁面,也可以是跳轉url。
這裡重新賦值 url 之後,頁面內容的更新應該是非同步執行的,因此我們後一次修改 url 需要延時一小段時間,否則會出現 error 。
猜測重新賦值 url 後頁面實際更新應該是在下一次的 requestAnimationFrame ,因此如果頁面完全不卡頓可能16ms就可以了,保險起見,我設了100ms。
相關文章
- angular 開發微信小程式及webview不重新整理問題Angular微信小程式WebView
- 微信小程式開發系列七:微信小程式的頁面跳轉微信小程式
- 獲取微信小程式頁面路徑微信小程式
- 模擬微信小程式頁面Page方法微信小程式
- 小程式頁面下拉重新整理
- 微信小程式頁面功能-----標籤切換微信小程式
- 微信小程式開發系列 (四) :微信小程式的頁面跳轉路由設計微信小程式路由
- 直擊根源:vue專案微信小程式頁面跳轉web-view不重新整理Vue微信小程式WebView
- 微信小程式蘋果手機上下拉重新整理,回彈時頁面越界問題微信小程式蘋果
- 微信小程式攜帶引數跳轉頁面/獲取頁面棧微信小程式
- 移動端(微信)後退重新整理頁面
- 微信小程式-自定義下拉重新整理微信小程式
- 微信小程式之匯出頁面為doc檔案微信小程式
- 微信小程式WXML頁面常用語法(講解+示例)微信小程式XML
- 微信小程式中頁面間跳轉傳參方式微信小程式
- 小程式webview呼叫微信掃一掃的“曲折”思路WebView
- 微信小程式分頁載入微信小程式
- 關於微信 H5 頁面切換 webview 的問題H5WebView
- 微信小程式入門教程之二:頁面樣式微信小程式
- 微信小程式開發07-列表頁面怎麼做微信小程式
- 微信小程式頁面的生命週期微信小程式
- 微信小程式setData區域性重新整理列表微信小程式
- Appium 關於微信 H5 頁面切換 webview 的問題APPH5WebView
- 微信小程式開發系列8----頁面配置--事件繫結微信小程式事件
- Java Web專案,Android和微信小程式的初始頁面配置JavaWebAndroid微信小程式
- 微信開發之小程式頁面間如何傳遞引數
- 記微信網頁開發單頁面返回不重新整理的實現網頁
- 09_微信小程式之無感知重新整理token微信小程式
- 微信小程式(mpvue) wx.openSetting 無法調起設定頁面微信小程式Vue
- Android Studio微信頁面Android
- 小程式頁面返回重新整理資料onLoad和onShow頁面傳參解決
- 微信小程式點贊、評論區域性重新整理微信小程式
- 微信小程式怎麼開通,小程式頁面如何開發微信小程式
- Day7-微信小程式實戰-交友小程式首頁UI微信小程式UI
- 微信小程式微信小程式
- SAP BSP, Java Web Project,Android和微信小程式的初始頁面設定JavaWebProjectAndroid微信小程式
- 微信小程式在頁面,自定義元件中使用資料監聽器微信小程式元件
- 深入解析微信小程式頁面中實現的儲存圖片(附程式碼)微信小程式