uniapp message
时间: 2023-08-12 16:07:12 浏览: 345
引用[1]:在uni-app中,除了H5之外,其他平台不支持浏览器的js API,因此无法直接在App中使用window.addEventListener('message', function(event) {})来监听消息通知返回事件。[1]引用[3]中提供了一种解决方案,通过在App中使用plus.webview操作来监听扫码结果。具体的实现步骤如下:
1. 在uni-app项目根目录的hybrid->html文件夹下或者static目录下创建一个本地页面,页面中包含一个iframe元素,src属性指向浙里办二维码地址。
2. 在页面中引入uni的SDK,例如uni.webview.1.5.1.js。
3. 在页面中添加以下代码:
```
document.addEventListener('UniAppJSBridgeReady', function() {
var wv = plus.webview.currentWebview();
// 监听扫码结果
window.addEventListener('message', function(event) {
// 这里的event.data就是登录成功的信息
if (event.data && event.data.code) {
uni.postMessage({ data: event.data });
}
});
});
```
这样就可以在App中监听到扫码成功后的消息通知返回事件了。[3]
相关问题
uniapp-app webview @message 事件不触发
uniapp 的 AppWebview 组件中的 `@message` 事件用于接收来自嵌入网页的消息。如果该事件未触发,可能是以下几个原因:
1. **事件监听配置错误**:确保你在 AppWebview 元素上正确设置了 `@message` 事件监听,并传递了正确的回调函数。
```html
<web-view ref="myWebView" :url="url" @message="handleMessage"></web-view>
```
2. **页面发送消息的 JavaScript 问题**:检查嵌入的网页中是否正确调用了 `window.postMessage()` 方法并传递了适当的数据。例如,在 Vue 中:
```javascript
this.$refs.myWebView.postMessage({ type: 'customEvent', data: 'yourData' });
```
3. **跨域策略限制**:如果 Webview 需要从其他域名通信,确保服务器设置了允许跨域的策略 (`Access-Control-Allow-Origin`)。
4. **生命周期阶段问题**:确保 `handleMessage` 函数在 App 或组件的生命周期钩子(如 `onLoad`, `onReady`)中被正确调用。
5. **Vue 实例更新问题**:如果事件处理函数是在模板里写的,而数据或状态改变了,但事件没有重新绑定,试着将事件绑定移动到 `setup` 函数或 `methods` 中。
uniapp uni.postMessage() 从嵌入html5返回小程序
在嵌入的 H5 页面中,可以使用 `uni.postMessage()` 向小程序发送消息,告诉小程序需要返回。具体使用方法如下:
1. 在 H5 页面中,使用 `uni.postMessage()` 向小程序发送消息。
```javascript
uni.postMessage({
type: 'back'
});
```
2. 在小程序中,监听 `onMessage` 事件,当收到 H5 页面发送的返回消息时,调用 `uni.navigateBackMiniProgram()` 方法返回小程序。
```javascript
// 监听 onMessage 事件
uni.onMessage(function (message) {
if (message.type === 'back') {
// 返回小程序
uni.navigateBackMiniProgram({
success: function () {
console.log('navigateBackMiniProgram success');
},
fail: function () {
console.log('navigateBackMiniProgram fail');
}
});
}
});
```
需要注意的是,`uni.navigateBackMiniProgram()` 方法只能在小程序中使用,不能在嵌入的 H5 页面中使用。
阅读全文