HarmonyOS 鸿蒙Next如何在H5页面调用应用侧自定义的等待层
HarmonyOS 鸿蒙Next如何在H5页面调用应用侧自定义的等待层
想要通过javaScriptProxy的方式使H5调用应用侧的自定义等待层弹窗,但是代码都走了,执行了this.dialogController.open(),等待层却没有弹出来,是怎么回事呀,真纠结
export default class NativePlugin {
dialogController: CustomDialogController | null = new CustomDialogController({
builder: WaitDialog(),
customStyle: true,
autoCancel: true, // 点击蒙层是否自动消失
alignment: DialogAlignment.Center // 弹框在竖直方向上的对齐方式
})
constructor() {
}
showWaitDialog(): void {
console.log(‘NativePlugin---->showWaitDialog’)
if (this.dialogController==null) {
this.dialogController = new CustomDialogController({
builder: WaitDialog(),
customStyle: true,
autoCancel: true, // 点击蒙层是否自动消失
alignment: DialogAlignment.Center // 弹框在竖直方向上的对齐方式
})
}
this.dialogController.open()
}
}
页面
Web({ src: this.url, controller: this.controller, })
.javaScriptProxy({
object: this.nativePlugin,
name: “testObjName”,
methodList: [‘test’, ‘showWaitDialog’,‘hideWaitDialog’],
controller: this.controller
})
和下面这个问题是一样的,CustomDialogController仅在作为[@CustomDialog](/user/CustomDialog)和[@Component](/user/Component) struct的成员变量,且在[@Component](/user/Component) struct内部定义时赋值才有效。
参考:https://developer.huawei.com/consumer/cn/forum/topic/0201145156538931753?fid=0102683795438680754
这限制了我们封装公共组件,变得很麻烦,如果你要使用全局的,可以尝试使用Window
参考:https://developer.huawei.com/consumer/cn/blog/topic/03152984411920042
在HarmonyOS鸿蒙Next中,若想在H5页面调用应用侧自定义的等待层,可以通过以下方式实现:
首先,开发者需要在应用侧将等待层相关的函数或对象注册到Web组件中。这通常可以通过javaScriptProxy()
或registerJavaScriptProxy()
接口来完成。注册后,H5页面就可以通过JavaScript访问到这些应用侧的方法或对象。
具体来说,可以在应用侧的ETS文件中创建一个包含等待层逻辑的对象,并使用上述接口将其注册到Web组件中。在H5页面中,通过调用这个注册的对象的方法,就可以触发应用侧的等待层显示逻辑。
需要注意的是,注册对象时需要设置适当的权限,以确保H5页面能够访问到这些应用侧的方法。同时,也需要处理好跨组件通信的问题,确保H5页面与应用侧能够正确地传递数据和事件。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html