微信小程式 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方法微信小程式
- 微信小程式之頁面攔截器微信小程式
- 微信小程式頁面跳轉傳參微信小程式
- 獲取微信小程式頁面路徑微信小程式
- 微信小程式開發之webview元件內網頁實現微信原生支付微信小程式WebView元件內網網頁
- 微信小程式蘋果手機上下拉重新整理,回彈時頁面越界問題微信小程式蘋果
- 微信小程式頁面功能-----標籤切換微信小程式
- 關於微信小程式webview的使用微信小程式WebView
- 微信小程式攜帶引數跳轉頁面/獲取頁面棧微信小程式
- 直擊根源:vue專案微信小程式頁面跳轉web-view不重新整理Vue微信小程式WebView
- 微信小程式開發系列 (四) :微信小程式的頁面跳轉路由設計微信小程式路由
- 微信小程式如何像webview一樣載入html5網頁微信小程式WebViewHTML網頁
- 小程式頁面返回重新整理資料onLoad和onShow頁面傳參解決
- 微信小程式WXML頁面常用語法(講解+示例)微信小程式XML
- 微信小程式中頁面間跳轉傳參方式微信小程式
- 微信小程式之匯出頁面為doc檔案微信小程式
- 現版本小程式暫時無法監聽webview頁面高度改變WebView
- 微信小程式開發07-列表頁面怎麼做微信小程式
- 微信小程式入門教程之二:頁面樣式微信小程式
- 微信小程式-自定義下拉重新整理微信小程式
- 關於微信 H5 頁面切換 webview 的問題H5WebView
- 小程式webview跳轉頁面後沒有返回按鈕完美解決方案WebView
- 小程式webview呼叫微信掃一掃的“曲折”思路WebView
- 微信開發之小程式頁面間如何傳遞引數
- Vue.js和微信小程式路由(頁面)跳轉攔截Vue.js微信小程式路由
- 微信小程式開發系列8----頁面配置--事件繫結微信小程式事件
- javascript重新整理當前頁面程式碼JavaScript
- a連結重新整理頁面與js重新整理頁面總結JS
- 記微信網頁開發單頁面返回不重新整理的實現網頁
- js重新整理頁面JS
- 微信小程式分頁載入微信小程式
- Java Web專案,Android和微信小程式的初始頁面配置JavaWebAndroid微信小程式
- 微信小程式多頁面傳參通訊的探索與實踐微信小程式
- 動手擼一個微信小程式學生課程表頁面微信小程式