uniapp 通过 plus.webview.create 创建的webview 如何监听 message 事件?
在uniapp中使用plus.webview.create创建了一个webview页面,现在需要在webview中监听message事件,请问该如何实现?具体代码应该怎么写?是否需要对webview进行特殊配置才能接收消息?
2 回复
在创建webview后,使用addEventListener监听message事件:
let webview = plus.webview.create(url);
webview.addEventListener('message', function(e){
console.log('收到消息:', e.data);
});
注意:需要在webview中通过uni.postMessage发送消息才能触发。
在 UniApp 中,使用 plus.webview.create 创建的 Webview 可以通过 addEventListener 方法监听 message 事件。以下是具体实现步骤和代码示例:
步骤:
- 创建 Webview 对象。
- 使用
addEventListener监听message事件。 - 在事件回调中处理接收到的数据。
代码示例:
// 创建 Webview
let webview = plus.webview.create('https://example.com', 'example', {
// 可选:配置 Webview 参数
});
// 监听 message 事件
webview.addEventListener('message', function(e) {
// e.data 包含从 Webview 页面发送的数据
console.log('收到消息:', e.data);
// 根据数据内容执行操作,例如:
// if (e.data.action === 'close') {
// webview.close();
// }
}, false);
// 显示 Webview(可选)
webview.show();
说明:
- 事件类型:使用
'message'作为事件类型。 - 回调参数:事件对象
e的data属性包含发送的消息(通常是字符串或对象)。 - 数据格式:建议使用 JSON 格式在 Webview 内外传递结构化数据。
- 通信方式:Webview 页面可通过
window.parent.postMessage发送消息(需确保跨域策略允许)。
注意事项:
- 确保 Webview 页面和 UniApp 主页面在同一域名或配置了跨域权限,以避免通信失败。
- 如果消息未触发,检查 Webview 页面是否正确调用了
postMessage。
以上代码简洁实现了监听功能,适用于 UniApp 的 Webview 消息通信场景。

