您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“web網(wǎng)頁與小程序間如何進行通信”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
我們的微信小程序采用的web-view的方式內(nèi)嵌H5項目,從而減少開發(fā)量,在實際只用中會遇到網(wǎng)頁與小程序通信的功能需要,下面我簡單總結(jié)了我遇到的問題以及解決方案。
微信提供了網(wǎng)頁向小程序發(fā)送消息的方法:wx.miniProgram.postMessage,該方法向小程序發(fā)送消息,會在特定時機(小程序后退、組件銷毀、分享)觸發(fā)組件的message事件。
簡單介紹一下如果使用,以分享為例,如果頁面A需要特別設(shè)置分享內(nèi)容,比如轉(zhuǎn)發(fā)標(biāo)題、縮略圖等??梢栽倬W(wǎng)頁中設(shè)置好變量值,通過發(fā)送給小程序
網(wǎng)頁
let shareData = { path: '轉(zhuǎn)發(fā)路徑', title: '自定義轉(zhuǎn)發(fā)標(biāo)題', imageUrl: '縮略圖url', }; wx.miniProgram.postMessage({ data: JSON.stringify(shareData) });
小程序
index.wxml
通過bindmessage綁定接收事件
<web-view bindmessage='getMessage' src='{{ src }}'></web-view>
index.js
// 獲取從網(wǎng)頁發(fā)送來的消息 getMessage(e) { const getMessage (e) { // data是多次postMessage的參數(shù)組成的數(shù)組 const { data } = e.detail; // 需要取最后一條數(shù)據(jù) let shareMessage = data[data.length - 1]; this.shareMessage = JSON.parse(shareMessage); }; // 設(shè)置分享 onShareAppMessage(options) { return { title: this.shareMessage.title, path: this.shareMessage.path, imageUrl: this.shareMessage.imageUrl, }; }
這樣一次定制化分享功能就完成了,但是postMessage方法只有特定場景可以獲取消息,所以如果非特定場景怎么獲取通信呢?
我提供的解決方案可能不是最優(yōu)的也不是最通用的,但是如果遇到了問題時可以作為一個備選方案。
1、場景還原
我們的小程序中有城市定位,第一次進入小程序需要選擇所在城市,選擇城市之后會緩存到本地,之后再次進入小程序不再需要重選選擇城市。功能如下截圖
選擇城市之后會在首頁右上角展示
由于城市選擇頁面和首頁都是通過web-view內(nèi)嵌小程序的方式,所以顯然在H5頁面中進入緩存,在小程序中是無法獲取到緩存信息的。
2、解決方案
解決方案很簡單,我跟后端的同伴溝通后,拜托他提供給我一個接口,把城市id和用戶信息關(guān)聯(lián)起來,這樣我就可以再用戶進行小程序的時候獲取用戶上次選擇的城市id,進而再小程序里面緩存處理,這樣用戶再次進入小程序的時候無需再次選擇城市
網(wǎng)頁
// 保存城市信息 const saveCityHandle = () => { saveCity({ cityId: cityId, userId: userId, }).then(() => {}); };
小程序
獲取城市id之后通過wx.setStorageSync緩存下來,以便后續(xù)使用。
wx.login({ success(res) { if (res.code) { wx.request({ url: `${that.domain()}/getUserInfo`, data: { body: { jsCode: res.code }, }, success(res) { wx.setStorageSync('cityId', res.data.cityId); }, }); } else { console.log('登錄失??!' + res.errMsg); } }, });
“溫故而知新,可以為師矣?!?/p>
有時候回過頭來看看某些知識點,也許就會有新的思路,與君共勉。ヾ(?°?°?)??
看了一眼日期,發(fā)現(xiàn)12月,2021年最后一個月了,我之前寫過了一首小詩,有點符合我現(xiàn)在的心境,也有一些祝福送給自己也送給大家。
眼前是一扇窗, 窗外是變換的景色, 夜晚, 墨綠的樹, 散落燈光的高樓大廈, 疾馳的汽車, 或匆忙或悠閑的行人。 我好像記住了每一座樓宇, 卻不記得每一張面孔, 不變的建筑, 變換的路人。 今年, 有一些變化, 每一顆追求人生的心, 都值得期待, 每一個不舍的眼神, 笑容也無法遮掩。 致, 所有開發(fā)的伙伴, 一期一祈, 勿懷猶也, 幸福美好。
“web網(wǎng)頁與小程序間如何進行通信”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。