HarmonyOS 鸿蒙Next webview 注册两个javaScriptProxy 第一个注册的会失效

发布于 1周前 作者 gougou168 来自 鸿蒙OS

HarmonyOS 鸿蒙Next webview 注册两个javaScriptProxy 第一个注册的会失效

如何注册两个javaScriptProxy 同时注册两个 后注册的会报找不到

代码
private jsBridge: UnionJsBridge = new UnionJsBridge(this.webController);
private zgphJsBridge: CashierJsBridge = new CashierJsBridge(this.webController,this.toCashierPage);

get javaScriptProxy(): JavaScriptItem {
let result: JavaScriptItem = {
  object: {
    postMessage: this.postMessage
  },
name: “ohosCallNative”,
methodList: [‘postMessage’],
controller: this.controller
}
return result;
}

get javaScriptProxy(): JavaScriptItem {
let result: JavaScriptItem = {
  object: {
    startPayment: this.startPayment
  },
name: “androidZgph”,
methodList: [‘startPayment’],
controller: this.controller
}
return result;
}



Web({ src: this.webUrl, controller: this.webController })
.mixedMode(MixedMode.All)
.javaScriptAccess(true)
.javaScriptProxy(this.jsBridge.javaScriptProxy)
.javaScriptProxy(this.zgphJsBridge.javaScriptProxy)
.cacheMode(CacheMode.Online)
.layoutWeight(1)
.domStorageAccess(true)
.backgroundColor($r(“app.color.color_FFFFFF”))
.onShowFileSelector((event) => {
Log.debug(“onShowFileSelector”)
AppUtil.selectPhoto(1, (data) => {
let uri: string = data.photoUris[0];
event?.result.handleFileList([uri]);


})

return true

})
.onPageBegin(e => {
Log.debug(this.webUrl)
})



log
[CONSOLE:106] “TypeError: Cannot read properties of undefined (reading ‘postMessage’)”
找不到注册对象

2 回复

Cannot read properties of undefined

这提示不是空指针吗,你的 this.postMessage this不到东西,换成写死的字符串试试看。

在HarmonyOS鸿蒙系统中,当在webview中注册多个JavaScriptProxy时,确实可能会遇到第一个注册的代理失效的问题。这通常是由于JavaScriptProxy的注册机制或内部处理逻辑导致的冲突。

在鸿蒙的webview组件中,JavaScriptProxy用于实现Java与JavaScript之间的双向通信。如果多个代理被注册到同一个webview实例上,并且它们尝试监听或处理相同的JavaScript事件或对象,就可能会发生覆盖或冲突,导致先注册的代理无法正常工作。

为了解决这个问题,你可以尝试以下方法:

  1. 确保代理注册的顺序:虽然这不一定能解决问题,但检查注册顺序可以帮助排除其他潜在问题。

  2. 使用不同的标识符:为每个JavaScriptProxy使用唯一的标识符,确保它们不会相互冲突。

  3. 分开处理不同的事件:如果可能,尽量让每个代理处理不同的事件或对象,避免直接竞争。

  4. 更新鸿蒙系统:确保你的鸿蒙系统是最新的,因为开发者可能已经在新版本中修复了此类问题。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部