返回
划重点!uniapp小程序如何与web-view承载的H5实现通讯
前端
2023-06-04 08:56:20
划重点!详解 Uniapp 小程序与 H5 的通讯机制
一、小程序向 H5 传递参数
Uniapp 小程序可以通过在 URL 后接参数的方式向 H5 页面传递数据。例如:
uni.navigateTo({
url: 'https://xxxxx.com?params=aaa'
})
H5 页面加载后,可以通过 window.location.href
获取到传递的参数。
二、H5 向小程序发送消息
1. 在 Uniapp 项目中创建模板 HTML 文件
- 创建一个名为
template
的文件夹。 - 在
template
文件夹下新建一个名为index.html
的文件。
2. 在 index.html
中监听小程序消息
<script>
// 监听小程序发来的消息
window.addEventListener('message', function (event) {
// 从事件参数中获取小程序发来的消息
const message = event.data
// 处理小程序发来的消息
console.log(message)
})
// 向小程序发送消息
function sendMessageToApp(message) {
// 将消息发送给小程序
window.postMessage(message, '*')
}
</script>
3. 在 Uniapp 项目的 app.vue
中发送消息
export default {
data() {
return {
message: ''
}
},
methods: {
sendMessageToH5() {
// 向 H5 页面发送消息
uni.postMessageToWebview({
data: this.message,
success: function (res) {
console.log('消息发送成功')
},
fail: function (err) {
console.log('消息发送失败')
}
})
}
}
}
4. 在 Uniapp 项目的 index.vue
中显示输入框
<template>
<view>
<input type="text" v-model="message" placeholder="请输入要发送的消息" />
<button @click="sendMessageToH5">发送消息</button>
</view>
</template>
<script>
import { uni } from '@dcloudio/uni-mp-weixin'
export default {
data() {
return {
message: ''
}
},
methods: {
sendMessageToH5() {
// 向 H5 页面发送消息
uni.postMessageToWebview({
data: this.message,
success: function (res) {
console.log('消息发送成功')
},
fail: function (err) {
console.log('消息发送失败')
}
})
}
}
}
</script>
三、常见问题
- 小程序向 H5 传递参数时,参数名和参数值之间必须用等号连接,且不能有空格。
- H5 向小程序发送消息时,消息必须是一个字符串。
- 小程序和 H5 页面之间只能单向通讯,即小程序只能向 H5 页面发送消息。
- 如果 H5 页面需要向小程序发送消息,可以使用
window.postMessage()
方法。 - 如果小程序需要向 H5 页面发送消息,可以使用
uni.postMessageToWebview()
方法。
结论
以上就是 Uniapp 小程序与 H5 之间实现通讯的详细步骤,希望对开发者有所帮助。通过掌握这些方法,开发者可以轻松实现小程序和 H5 页面之间的消息传递,为用户提供更丰富、更交互性的体验。