小程序開發(fā)中遇到的問題:小程序中嵌套了一個webview頁面,webview頁面中有靜默授權(quán)(A1頁面靜默授權(quán)后重定向到A2頁面),點小程序原生的返回按鈕會返回到A1頁面,然后頁面就會反復(fù)靜默授權(quán)
預(yù)期表現(xiàn):點小程序原生的返回按鈕后返回到小程序上個頁面
解決方案:通過history.pushState添加歷史記錄名目,history.onpopstate監(jiān)聽歷史記錄條目發(fā)生變化時,調(diào)用小程序APIwx.navigateBack
window.addEventListener('popstate', (event) => { wx.miniProgram.navigateBack();});const code = getSearch('code'); // 偽代碼,獲取查詢參數(shù)if (!code) { // 頁面A1 if (isWeixin()) { // 微信環(huán)境 const redirectUrl = window.location.href + '&code=1'; window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize' + '?appid=' + appId + '&redirect_uri=' + encodeURIComponent(redirectUrl) + '&response_type=code&scope=snsapi_userinfo' + '#wechat_redirect'; // 靜默授權(quán)偽代碼 } else { alert('當(dāng)前不是微信環(huán)境'); }} else { // 頁面A2 history.pushState({page: 1}, null, window.location.href);}
剛開始想的解決辦法是用localStorage,跳轉(zhuǎn)到A2時存儲一個值,返回到A1時獲取這個值,如果有值就清除這個值并且回退到小程序頁面。聽起來似乎也可行,但小程序的緩存和微信的緩存是同步的,如果在微信環(huán)境中直接訪問A1頁面,重定向到A2會存值,如果直接關(guān)閉頁面,不會被清除,那么在小程序中訪問時就直接回退了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點
疑難解答