您好,登錄后才能下訂單哦!
這篇文章主要介紹小程序怎樣更新webview頁面,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
在小程序其它頁面做了操作,數據發生改變,回到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。
以上是“小程序怎樣更新webview頁面”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。