- 使用create方式创建webview,plus.globalEvent.addEventListener('plusMessage', function() {...})监听webview内部的消息
- 内嵌页面中通过uni.postMessage()回传消息
- 运行时会抛出错误,且app端没有收到回传消息
[ERROR] : TypeError: undefined is not an object (evaluating 'window.plus._plusready_dispatch') - 使用VM黑苹果镜像,操作系统如反馈信息,用safari-开发-模拟-内嵌网页检查器跟踪抛出错误部分的代码,发现在dispatchPlusReadyEvent方法中,window.plus被window.backupplus__赋值为undefined
- 页面本身对非5+ plus的调用(plus.load(1))也出问题了
- 发布:2021-04-04 13:56
- 更新:2021-04-06 18:30
- 阅读:1679
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: macOS Big Sur 11.2.3
HBuilderX类型: 正式
HBuilderX版本号: 3.1.7
手机系统: iOS
手机系统版本号: IOS 14
手机厂商: 模拟器
手机机型: iPad Pro 14.4模拟
页面类型: vue
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
内嵌页面的postMessage应该被app的事件监听到,并继续程序的流程处理
内嵌页面的postMessage应该被app的事件监听到,并继续程序的流程处理
实际结果:
内嵌页面postMessage无反应,app端可以向内嵌页面发出信息,但内嵌页面无法回传信息
内嵌页面postMessage无反应,app端可以向内嵌页面发出信息,但内嵌页面无法回传信息
bug描述:
iOS端 webview内嵌页面postMessage消息无法在app端接收到,app端可以通过evalJs调用内嵌页面的方法。安卓端不存在该问题。
初步推测是因为H5页面本身存在一个layer的plus全局对象,app内嵌网页初始化5+plus时出现冲突。
因为业务关系,需要H5页面回传消息给app端,所以不能设置plusrequire为none。