小程序webview跳轉頁面後沒有返回按鈕完美解決方案
發表時(shí)間:2021-1-6
發布人(rén):融晨科技
浏覽次數:206
随着小程序越來(lái)越火爆,使一個(gè)産品如果隻有公衆号H5頁面
和(hé / huò)APP
顯得不(bù)怎麽完美,總感覺不(bù)搭上(shàng)小程序這(zhè)趟流量車,就(jiù)會少了(le/liǎo)點什麽,心裏别扭地(dì / de)很。在(zài)此驅動下,我所在(zài)公司也(yě)決定趕緊上(shàng)車。
但是(shì),如果要(yào / yāo)按照小程序的(de)套路重新寫一份的(de)話,又感覺付出(chū)的(de)時(shí)間成本太大(dà)了(le/liǎo),非常的(de)不(bù)劃算。于(yú)是(shì)乎,腦子(zǐ)靈光一閃,想起了(le/liǎo)小程序貌似有個(gè)小弟叫webview
,webview
是(shì)啥,按字面意思就(jiù)是(shì)網頁視圖(來(lái)自百度翻譯)。官方是(shì)這(zhè)麽定義的(de):
web-view 組件是(shì)一個(gè)可以(yǐ)用來(lái)承載網頁的(de)容器,會自動鋪滿整個(gè)小程序頁面。個(gè)人(rén)類型與海外類型的(de)小程序暫不(bù)支持使用。
簡單的(de)講就(jiù)是(shì)我們可以(yǐ)在(zài)小程序内放置一個(gè)<web-view>
組件來(lái)鏈接我們的(de)HTML
頁面了(le/liǎo)。也(yě)就(jiù)是(shì)說(shuō),已經寫好的(de)微信公衆号H5頁面
可以(yǐ)直接挪到(dào)小程序了(le/liǎo)。一行代碼就(jiù)完成公衆号到(dào)小程序的(de)轉移,一行代碼就(jiù)讓我們多了(le/liǎo)一個(gè)流量入口,一行代碼就(jiù)解決了(le/liǎo)重新開發一套小程序代碼的(de)難題。想到(dào)這(zhè)真的(de)是(shì)激動死了(le/liǎo)。
當我興緻沖沖的(de)把鏈接放進webview
中,就(jiù)像這(zhè)樣:
但是(shì)點擊跳轉頁面的(de)時(shí)候。唉喲,我去,我當時(shí)就(jiù)真的(de)楞了(le/liǎo)一下,頁面左上(shàng)角沒有!!返回按鈕!!導緻回不(bù)去了(le/liǎo),隻能不(bù)停的(de)往下點,沒有回頭路,這(zhè)不(bù)是(shì)搞笑的(de)嗎。。。
當時(shí)想了(le/liǎo)一種方案,就(jiù)是(shì)在(zài)每個(gè)H5頁面
都加上(shàng)一個(gè)帶返回按鈕的(de)導航欄,但是(shì)想了(le/liǎo)一下,這(zhè)種方案不(bù)可取,因爲(wéi / wèi)小程序的(de)頭部已經有個(gè)導航欄了(le/liǎo),再加一個(gè)的(de)話就(jiù)顯得非常的(de)不(bù)協調,可以(yǐ)用一個(gè)字來(lái)形容——【醜到(dào)爆】。果斷棄用!
看了(le/liǎo)下其他(tā)的(de)小程序,發現如果是(shì)兩個(gè)小程序頁面跳轉的(de)話,第二個(gè)頁面的(de)左上(shàng)角是(shì)會有返回按鈕的(de)。那我們可以(yǐ)想到(dào),如果在(zài)第二個(gè)頁面也(yě)放個(gè)webview
組件,用來(lái)顯示跳轉之(zhī)後的(de)鏈接,不(bù)就(jiù)完美解決了(le/liǎo)嗎?那麽問題來(lái)了(le/liǎo),怎麽把主頁點擊的(de)鏈接傳到(dào)第二個(gè)頁面呢?
我們可以(yǐ)在(zài)H5頁面
使用jssdk
中H5
頁面跳轉到(dào)小程序頁面的(de)方法wx.miniProgram.navigateTo
,然後再攜帶一個(gè)weburl
參數:
//H5頁面js
navigate(modelName) { //控制頁面跳轉---小程序、公衆号、非微信跳轉方式 【modelName---vue路由名字】
this.isMiniProgram((res)=>{//判斷是(shì)否是(shì)小程序頁面的(de)回調函數
if (res) {//小程序頁面
wx.miniProgram.navigateTo({url: '../webview/webview?weburl=https://www.hxkj.vip/#/' + modelName});
} else {
this.$router.push({name: modelName});//非小程序頁面使用vue路由跳轉
}
})
},
isMiniProgram(callback) { //是(shì)否爲(wéi / wèi)小程序環境
//是(shì)否在(zài)微信環境
if (!isWeixin()) {
callback(false);
} else {
//微信API獲取當前運行環境
wx.miniProgram.getEnv((res) => {
if (res.miniprogram) {//小程序環境
callback(true);
} else {
callback(false);
}
})
}
}
接着在(zài)小程序第二個(gè)頁面webview.js
中接收weburl
參數,注意配置分享的(de)頁面鏈接:并賦值給
webview.wxml
中的(de)src
屬性
<!--pages/webview/webview.wxml-->
<web-view src="{{ url }}"></web-view>
來(lái)源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出(chū)處。