w***@163.com
w***@163.com
  • 发布:2021-07-07 16:25
  • 更新:2022-08-30 15:48
  • 阅读:1960

【报Bug】使用plus.webview.create创建的webview调用uni.postMessage无效

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 11.4

HBuilderX类型: 正式

HBuilderX版本号: 3.1.18

手机系统: iOS

手机系统版本号: IOS 14

手机厂商: 模拟器

手机机型: ipone12 pro max

页面类型: vue

打包方式: 离线

项目创建方式: HBuilderX

示例代码:

<!-- h5部分代码 -- >
payment() {
const { formData } = this
const uni = window.uni
if (window.UniAppJSBridge) {
uni.postMessage({
data: {
action: 'postMessage'
}
})
} else {
document.addEventListener('UniAppJSBridgeReady', function() {
uni.postMessage({
data: {
message: '我是子页面发出的数据'
}
})
})
}
}

<!-- uni-app 部分代码 -->

onLoad (params) {
// #ifdef APP-PLUS
const sys = uni.getSystemInfoSync()
wv = plus.webview.create("", "custom-webview", {
'uni-app': 'none',
height: '90%',
top: sys.statusBarHeight + 44,
popGesture: 'close',
scrollIndicator: 'none'
})
wv.loadURL('/hybrid/html/index.html')
var currentWebview = this.$scope.$getAppWebview()
currentWebview.append(wv)
uni.setNavigationBarTitle({
title: config.MEMBERSHIP_PAYMENT.title
})
plus.globalEvent.addEventListener('plusMessage', function(msg){
console.log(msg.data.args.data.name)
if(msg.data.args.data.name == 'postMessage'){
console.log(msg.data.args.data.arg);
}
})
// #endif
}

操作步骤:

在h5点击按钮触发点击事件,在点击事件里面进行postMessage,在uni-app里面接受数据

预期结果:

能够接收到数据

实际结果:

没有接收到postMessage事件的数据,并且console.log(msg.data.args.data.name)打印出来都是undefined

bug描述:

使用plus.create.webviewAPI创建的webview,在H5页面(使用的vue框架)调用postMessage发送数据在app使用plus.globalEvent.addEventListener('plusMessage')接受的时候发现没有postMessage事件的数据,而且console.log(msg.data.args.data.name)打印出来都是undefined

2021-07-07 16:25 负责人:无 分享
已邀请:
w***@163.com

w***@163.com (作者)

发现问题所在了,原因是引入的sdk版本太低导致的,更新成<script type="text/javascript" src="//js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
即可

这是谁的部将

这是谁的部将 - 测试

大佬你是的是不是nvue页面。我的nvue页面plus.globalEvent.addEventListener('plusMessage')不走

清茶涩

清茶涩

问下这个监听上了怎么移除,我现在移除就报错

该问题目前已经被锁定, 无法添加新回复