小程序開(kāi)發(fā)中遇到的問(wèn)題:小程序中嵌套了一個(gè)webview頁(yè)面,webview頁(yè)面中有靜默授權(quán)(A1頁(yè)面靜默授權(quán)后重定向到A2頁(yè)面),點(diǎn)小程序原生的返回按鈕會(huì)返回到A1頁(yè)面,然后頁(yè)面就會(huì)反復(fù)靜默授權(quán)
讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、虛擬主機(jī)、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、烏魯木齊網(wǎng)站維護(hù)、網(wǎng)站推廣。
預(yù)期表現(xiàn):點(diǎn)小程序原生的返回按鈕后返回到小程序上個(gè)頁(yè)面
解決方案:通過(guò)history.pushState添加歷史記錄名目,history.onpopstate監(jiān)聽(tīng)歷史記錄條目發(fā)生變化時(shí),調(diào)用小程序APIwx.navigateBack
window.addEventListener('popstate', (event) => { wx.miniProgram.navigateBack(); }); const code = getSearch('code'); // 偽代碼,獲取查詢(xún)參數(shù) if (!code) { // 頁(yè)面A1 if (isWeixin()) { // 微信環(huán)境 const redirectUrl = window.location.href + '&code=1'; window.location. + '?appid=' + appId + '&redirect_uri=' + encodeURIComponent(redirectUrl) + '&response_type=code&scope=snsapi_userinfo' + '#wechat_redirect'; // 靜默授權(quán)偽代碼 } else { alert('當(dāng)前不是微信環(huán)境'); } } else { // 頁(yè)面A2 history.pushState({page: 1}, null, window.location.href); }
剛開(kāi)始想的解決辦法是用localStorage,跳轉(zhuǎn)到A2時(shí)存儲(chǔ)一個(gè)值,返回到A1時(shí)獲取這個(gè)值,如果有值就清除這個(gè)值并且回退到小程序頁(yè)面。聽(tīng)起來(lái)似乎也可行,但小程序的緩存和微信的緩存是同步的,如果在微信環(huán)境中直接訪問(wèn)A1頁(yè)面,重定向到A2會(huì)存值,如果直接關(guān)閉頁(yè)面,不會(huì)被清除,那么在小程序中訪問(wèn)時(shí)就直接回退了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。