微信小程序與webview?H5交互的方法(內(nèi)嵌H5跳轉(zhuǎn)原生頁(yè)面)
前言
在開(kāi)發(fā)中,使用web-view組件內(nèi)嵌H5頁(yè)面是非常常見(jiàn)的,但很多人不知道webview內(nèi)嵌H5如何與原生小程序 交互。下面介紹下實(shí)現(xiàn)微信小程序與webview H5交互的方法。
web-view功能描述
承載網(wǎng)頁(yè)的容器。會(huì)自動(dòng)鋪滿整個(gè)小程序頁(yè)面,個(gè)人類型的小程序暫不支持使用。
客戶端 6.7.2 版本開(kāi)始,navigationStyle: custom 對(duì) web-view 組件無(wú)效
web-view 內(nèi)嵌 H5 給原生小程序傳參
方式一、使用postMessage
在web-view組件上有一個(gè)屬性“bindmessage”,官方是這么介紹的:
網(wǎng)頁(yè)向小程序 postMessage 時(shí),會(huì)在特定時(shí)機(jī)(小程序后退、組件銷毀、分享)觸發(fā)并收到消息。e.detail = { data },data是多次 postMessage 的參數(shù)組成的數(shù)組
在 web-view 組件上綁定 “message”事件
在 H5 中 觸發(fā) message 事件即可在小程序中接收 H5傳遞的數(shù)據(jù)
例子:
小程序 /pages/test/test.wxml :
<web-view src="" bindmessage="receiveMessage"></web-view>
小程序 /pages/test/test.js :
receiveMessage(e){ console.log(e.detail)//接收H5傳過(guò)來(lái)的數(shù)據(jù) }
H5:
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script> <script> wx.miniProgram.postMessage({ data: {foo: 'bar'} }) </script>
利用postMessage可以實(shí)現(xiàn)小程序與H5之間通訊,但只在小程序后退、組件銷毀、分享時(shí)觸發(fā),所以在一些情況可能不滿足開(kāi)發(fā)需求
方式二、利用頁(yè)面跳轉(zhuǎn)帶參
接口名 | 說(shuō)明 | 最低版本 |
---|---|---|
wx.miniProgram.navigateTo | 參數(shù)與小程序接口一致 | 1.6.4 |
wx.miniProgram.navigateBack | 參數(shù)與小程序接口一致 | 1.6.4 |
wx.miniProgram.switchTab | 參數(shù)與小程序接口一致 | 1.6.5 |
wx.miniProgram.reLaunch | 參數(shù)與小程序接口一致 | 1.6.5 |
wx.miniProgram.redirectTo | 參數(shù)與小程序接口一致 | 1.6.5 |
wx.miniProgram.postMessage | 向小程序發(fā)送消息,會(huì)在特定時(shí)機(jī)(小程序后退、組件銷毀、分享)觸發(fā)組件的 message 事件 | 1.7.1 |
wx.miniProgram.getEnv | 獲取當(dāng)前環(huán)境 | 1.7.1 |
例如現(xiàn)在有一個(gè)場(chǎng)景: H5為一個(gè)列表頁(yè)面,點(diǎn)擊列表子項(xiàng)時(shí)跳轉(zhuǎn)到原生小程序的詳情頁(yè)
H5:
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script> <script> function handleClick(e){ let id = e.target.dataset.id let url = `/pages/detail/detail?id=${id}`; wx.miniProgram.navigateTo({ url, }); } </script>
小程序 /pages/detail/detail.js:
onLoad: function (options) { console.log(options.id)//接收H5傳過(guò)來(lái)的數(shù)據(jù) }
原生小程序 給 web-view內(nèi)嵌H5 傳參
原生小程序 給 web-view內(nèi)嵌H5 傳參就很簡(jiǎn)單了,原生小程序直接通過(guò)修改 web-view 的src屬性就行了
'xxx.com?arg=123'
h5頁(yè)面獲取url上的參數(shù),這種方式會(huì)使頁(yè)面重新加載,如果不想引起頁(yè)面加載可以通過(guò)修改hash
'xxx.com#123'
H5頁(yè)面監(jiān)聽(tīng)hash值變化:
window.onhashchange=function(){ alert('hash值改變') console.log(window.location.hash)//獲取當(dāng)前hash值 }
總結(jié)
到此這篇關(guān)于微信小程序與webview H5交互的文章就介紹到這了,更多相關(guān)微信小程序與webview H5交互內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
刷新頁(yè)面實(shí)現(xiàn)方式總結(jié)(HTML,ASP,JS)
多種方法實(shí)現(xiàn)頁(yè)面的刷新代碼2008-11-11基于JavaScript 實(shí)現(xiàn)拖放功能
本文通過(guò)實(shí)例代碼給大家介紹了JavaScript 實(shí)現(xiàn)拖放功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09JavaScript比較當(dāng)前時(shí)間是否在指定時(shí)間段內(nèi)的方法
這篇文章主要介紹了JavaScript比較當(dāng)前時(shí)間是否在指定時(shí)間段內(nèi)的方法,涉及javascript時(shí)間與字符串的轉(zhuǎn)換及比較操作相關(guān)技巧,需要的朋友可以參考下2016-08-08基于JavaScript實(shí)現(xiàn)簡(jiǎn)單抽獎(jiǎng)功能代碼實(shí)例
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)簡(jiǎn)單抽獎(jiǎng)功能代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10javascript下利用for( in )語(yǔ)句 獲得所有事件名稱的代碼
2008-02-02通過(guò)隱藏iframe實(shí)現(xiàn)文件下載的js方法介紹
本篇文章主要是對(duì)通過(guò)隱藏iframe實(shí)現(xiàn)文件下載的js方法進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02