場景
在小程式其它頁面做了操作,資料發生改變,回到webview頁面時需要更新webview裡面的資料。由於小程式沒有提供與webview的即時通訊能力,因此刷新頁面是個可考慮的做法。
方法一
最常見的做法,修改一下webview的url,加點query參數什麼的,頁面就會更新了。但這會增加webview的瀏覽history,導致使用者在後退的時候,會在webview內退到前一個頁面,而不是退到小程式的前一個頁面。
方法二
在小程式內呼叫wx.redirectTo(OBJECT)
方法。這裡填當前頁面的url。其實是關閉目前頁面重新打開,變相達到刷新webview的目的。但是由於重新開啟了小程式頁面,因此耗時會增加一些。並且,使用者會看到前一個頁面閃爍一下,然後出現新頁面。
方法三
首先,讓webview做條件渲染:
<web-view wx:if="{{ webviewUrl }}" src="{{ webviewUrl }}" />
需要刷新時,先把webviewUrl設為空,銷毀目前webview。然後再把webviewUrl設為目前值。如下:
refreshWebview: function () { let tmpUrl = this.data.webviewUrl; this.setData({ webviewUrl: '' }); setTimeout(() => { this.setData({ webviewUrl: tmpUrl }) }, 100); }
這樣便可以在不影響導覽列歷史的情況下刷新頁面,也可以是跳轉url。
這裡setData之後,頁面內容的更新應該是非同步執行的,因此我們後一次修改url需要延時一小段時間,否則會出現error。
猜測setData後頁面實際更新應該是在下次的requestAnimationFrame,因此如果頁面完全不卡頓可能16ms就可以了,保險起見,我設了100ms。
小結
目前我了解到的情況來看,確實沒有一個簡單的API可以直接無副作用地刷新小程式webview。方法三是我自己摸索出來的辦法。但是總覺得這麼簡單的問題應該有更直接的做法才對,奇怪。
相關文章:
以上是微信小程式更新webview頁面的三種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

禪工作室 13.0.1
強大的PHP整合開發環境