uniapp webview子页面向父页面发送数据和触发事件,重点在第3条!!!

1、众所周知H5中iframe可以用过postmessage进行,从H5子页面向H5父页面进行通信。方法如下:

bash 复制代码
// 子页面
window.parent.postMessage({ data: '你的消息' }, '*');


// 父页面
<iframe src="xxxxxxxxxxx"></iframe>
window.addEventListener('message', function(event) {
    console.log('收到父页面的消息:', event.data);
});

以上方法也适用在uniapp webview 子页面向父页面进行通信。

页面卸载是记得将事件removeEventListener

2、 在uniapp微信小程序webview中,H5子页面向微信小程序父页面进行通信。方法如下:

bash 复制代码
// 首先需要引入jssdk
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>


// 子页面
window.parent.postMessage({ data: '你的消息' }, '*');
// 但在以上特定时机才会触发组件的message事件:小程序后退、组件销毁、分享、复制链接
// 这时候可以通过上面jssdk注册的方法进行触发
// 注意:如果父页面是H5页面,并且注册了window.addEventListener('message')方法。
// 那么执行以下方法,该addEventListener方法还会再触发一次。
// 其他返回方法不会触发addEventListener!!!!!!!!
wx.miniProgram.navigateBack();


// 父页面
<web-view src="xxxxxxxxxxx" @message="onMessage"></web-view>
onMessage(e) {
	console.log('收到父页面的消息:', e);
}

3、在第2种情况下,有个特殊情况很坑!!!!!,因为注册的wx方法会冲突。

在uniapp微信小程序webview中,uniapp H5子页面向微信小程序父页面进行通信。

如果还是用第2种方法。wx.miniProgram将会是undefined,因为uniapp定义的wx 将覆盖jssdk注册的wx 方法。

这时通过再引入一个uni-webview.js 文件得以解决,

下载链接:https://download.csdn.net/download/guoqu1919/88864022?utm_source=bbsseo

整体代码如下:

bash 复制代码
// 首先需要引入jssdk和js文件
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
<script src="uni-webview.js"></script>


// 子页面(其实与第2种逻辑相同,只不过换了方法)
uniWebView.webView.postMessage({data: {}})
uniWebView.webView.navigateBack();


// 父页面
<web-view src="xxxxxxxxxxx" @message="onMessage"></web-view>
onMessage(e) {
	console.log('收到父页面的消息:', e);
}

这个方法使用于H5子页面微信小程序webview父页面 通信,也就是适用于第2种第3种情况。

相关推荐
西洼工作室1 天前
unipp+vue3+python h5+app极验验证码集成全流程解析
前端·uni-app·全栈·极验
RuoyiOffice2 天前
SpringBoot+Vue3 实现 OA 公文外来文与归档台账:外部收文、BPM办理、三类公文统一归档
spring boot·微服务·uni-app·vue·ruoyi·anti-design-vue·ruoyioffice
云起SAAS3 天前
私域直播系统UniApp源码 多商户商城+直播带货 微信小程序+H5+安卓iOS
android·微信小程序·uni-app·私域直播系统
专科3年的修炼5 天前
uni-app移动应用开发第四章
开发语言·javascript·uni-app
q5507071775 天前
uniapp/uniappx实现原生图片编辑涂鸦、贴图、滤镜、旋转、裁剪等
uni-app
计算机学姐6 天前
基于微信小程序的校园失物招领管理系统【uniapp+springboot+vue】
java·vue.js·spring boot·mysql·信息可视化·微信小程序·uni-app
2501_915921436 天前
HTTPS前端劫持 新一代流量劫持解决方案
前端·网络协议·ios·小程序·https·uni-app·iphone
爱怪笑的小杰杰6 天前
优化 UniApp 日历组件的多语言切换:告别 setLocale 引起的 App 重启
java·前端·uni-app
计算机学姐6 天前
基于微信小程序的宠物服务系统【uniapp+springboot+vue】
java·vue.js·spring boot·mysql·微信小程序·uni-app·宠物
2501_915909066 天前
iOS应用签名的三种方法全解析:从官方到第三方工具
android·ios·小程序·https·uni-app·iphone·webview