微信小程序webview與VUE?H5實時通訊具體步驟
背景:
微信小程序、vue2搭建開發(fā)的H5頁面,需要實現(xiàn)實時通信
在微信小程序開發(fā)中,會遇到嵌套H5頁面,H5頁面需要向微信小程序發(fā)消息觸發(fā)微信小程序某個函數(shù)方法,微信開發(fā)文檔上寫的非常不清楚,導致踩了很多坑,該文章總結(jié)可直接使用方法。
在開發(fā)中 ,微信小程序內(nèi)嵌webview,H5想要與微信小程序發(fā)消息,必須要使用微信文檔中的wx.miniProgram的方法,但想要在H5中使用該方法,必須需要引入JSSDK.js文件,官方其實并沒有給出明確的引入方式。
具體實現(xiàn)步驟
1、配置域名
首先想要實現(xiàn)通訊,我們webview中嵌套的H5必須要配置在微信公眾號開發(fā)平臺的業(yè)務域名
登錄微信公眾平臺-在管理-開發(fā)管理-開發(fā)設(shè)置-業(yè)務域名中配置我們訪問的H5(該權(quán)限需要小程序管理員才能配置)

2、SDK文件引入
在vue項目也就是我們H5項目中引入JSSDK 1.6.0,(目前是這個版本,具體可查看web-view | 微信開放文檔)
踩坑點:有很多文章寫的需要在根項目index.html文件中引入,類似

但是不知道為什么,我在這引入無法實現(xiàn)通訊
后來改用在需要操作的H5頁面上引入(這是我們的H5頁面),這樣引入就能調(diào)用wx.miniProgram里面的方法
mounted() {
this.$nextTick(() => {
const script = document.createElement("script");
script.src = "https://res.wx.qq.com/open/js/jweixin-1.6.0.js";
script.onload = () => {};
document.head.appendChild(script);
});
},
3、使用
H5實例:(注意使用wx.miniProgram.postMessage這個API會有限制:向小程序發(fā)送消息,會在以下特定時機觸發(fā)組件的message事件:小程序后退、組件銷毀、分享、復制鏈接)這些操作才會進行接收,所以我這里直接使用了navigateTo跳轉(zhuǎn)一個新的界面來接收傳遞過來的參數(shù)

<template>
<button @click="submitForm">按鈕</button>
</template>
<script>
import { Toast } from "vant";
export default {
mounted() {
this.$nextTick(() => {
const script = document.createElement("script");
script.src = "https://res.wx.qq.com/open/js/jweixin-1.6.0.js";
script.onload = () => {};
document.head.appendChild(script);
});
},
methods: {
submitForm() {
// 判斷 wx 是否存在(防止在瀏覽器中報錯)
if (typeof wx !== "undefined" && wx.miniProgram) {
wx.miniProgram.navigateTo({
url: "/pages/webview/pay?status=success&orderId=12345", //我這里直接使用了navigateTo做界面跳轉(zhuǎn),并傳遞了參數(shù)
});
Toast("消息已發(fā)送給小程序");
} else {
Toast("當前不在小程序 web-view 環(huán)境,無法發(fā)送消息");
}
}
}
};
</script>
然后在我們的小程序pay.vue中可以這樣接收
<template>
<view></view>
</template>
<script>
export default {
data() {
return {
}
},
onLoad(options) {
console.log(options)
},
}
</script>
4、注意點

在微信開發(fā)文檔中有寫明,wx.miniProgram.postMessage只有在特定時機才會觸發(fā)message事件,什么意思呢,就是我在H5頁面點擊了操作按鈕,向小程序發(fā)送了消息,這時候小程序并不會實時收到我的消息,而是在我 操作了webview或者上面協(xié)議幾種情況才會觸發(fā)小程序端的@message才會收到消息,他們的交互并不是實時的。
所以在實際業(yè)務中,要根據(jù)文檔靈活變通,例如我這里的交互是在H5頁面點擊操作需要跳轉(zhuǎn)到小程序內(nèi)的某個頁面,我這里直接用的是wx.miniProgram.navigateTo,這時候就可以在新的界面接收H5傳遞過來的參數(shù)了。
總結(jié)
到此這篇關(guān)于微信小程序webview與VUE H5實時通訊的文章就介紹到這了,更多相關(guān)微信小程序與VUE H5實時通訊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue網(wǎng)站優(yōu)化實戰(zhàn)之秒開網(wǎng)頁
最近在搭建自己的博客,前端采用Vue技術(shù),發(fā)現(xiàn)首頁加載速度非常之慢,常常達到10S左右,遂開始優(yōu)化之旅,這篇文章主要給大家介紹了關(guān)于vue網(wǎng)站優(yōu)化實戰(zhàn)之秒開網(wǎng)頁的相關(guān)資料,需要的朋友可以參考下2022-08-08
vue的template模板是如何轉(zhuǎn)為render函數(shù)的過程
Vue從template到render函數(shù)的轉(zhuǎn)換經(jīng)歷模板解析、AST構(gòu)建、優(yōu)化、生成渲染函數(shù)等步驟,首先進行詞法分析將模板拆解為tokens,再進行語法分析構(gòu)建AST,然后對AST進行靜態(tài)標記和提升優(yōu)化,最后轉(zhuǎn)換成JavaScript渲染函數(shù),生成虛擬DOM,完成組件的渲染和更新,實現(xiàn)了模板的高效轉(zhuǎn)化2024-10-10
postcss-pxtorem設(shè)置不轉(zhuǎn)換UI框架的CSS單位問題
這篇文章主要介紹了postcss-pxtorem設(shè)置不轉(zhuǎn)換UI框架的CSS單位問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
vuejs如何解決瀏覽器切換頁面后setInterval計時器停止執(zhí)行的問題
setinterval()是定時調(diào)用的函數(shù),可按照指定的周期(以毫秒計)來調(diào)用函數(shù)或計算表達式,這篇文章主要給大家介紹了關(guān)于vuejs如何解決瀏覽器切換頁面后setInterval計時器停止執(zhí)行的問題,需要的朋友可以參考下2024-01-01
Vue 中v-model的完整用法及v-model的實現(xiàn)原理解析
這篇文章詳細介紹了Vue.js中的v-model指令的使用,包括基本用法、原理、結(jié)合不同類型的表單元素(如radio、checkbox、select)以及使用修飾符(如lazy、number、trim)等,感興趣的朋友一起看看吧2025-02-02
Vue3+TypeScript封裝axios并進行請求調(diào)用的實現(xiàn)
這篇文章主要介紹了Vue3+TypeScript封裝axios并進行請求調(diào)用的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04
Vue 數(shù)組和對象更新,但是頁面沒有刷新的解決方式
今天小編就為大家分享一篇Vue 數(shù)組和對象更新,但是頁面沒有刷新的解決方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11

