在应用页面里嵌套了h5页面,前端页面调用应用侧函数根据日志打印调用不到
场景:
在加载的h5页面里,通过前端页面调用应用侧函数实现在h5页控制退出当前页面或跳转另一个页面等功能。在前端提供的本地环境调试是顺利的,前端页面可以成功调用应用侧函数。但改为正式环境地址后就失效了,根据日志打印是没有走到应用侧函数内的。
准备工作:
开发这个需求的时候参照了下方官方API和Demo,写法逻辑上基本一致了,就差方法名写一模一样了:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/web-in-page-app-function-invoking
https://developer.huawei.com/consumer/cn/forum/topic/0207150474615269010?fid=0101610563345550409
问题:
有没有大佬知道这是什么原因导致的,前端本地环境是生效的,正式环境就行不通了。现在我和前端同事都不知道这种情况如何调试去解决
关键代码:
// 声明需要注册的对象
@State jsMethod: JsCallH5Class = new JsCallH5Class(getContext(this));
private registerJavaScriptProxySucceed: boolean = false;
build() {
Web({
src: this.url,
controller: this.controller,
renderMode: RenderMode.ASYNC_RENDER // 设置渲染模式:异步渲染(RenderMode.ASYNC_RENDER),仅由Web组件构成,低功耗; 同步渲染模式(RenderMode.SYNC_RENDER)
})
.domStorageAccess(true) // 设置是否开启文档对象模型存储接口(DOM Storage API)权限,默认未开启
.javaScriptAccess(true) //设置是否允许执行JavaScript脚本,默认允许执行。
.databaseAccess(true) //设置是否开启数据库存储API权限,默认不开启。
.mixedMode(MixedMode.All) // 允许HTTP和HTTPS混合内容
.onPageEnd((event) => {
// 重新注册 JavaScript 接口
try {
this.controller.registerJavaScriptProxy(this.jsMethod, "doScanPop", ["backToFinish", "openWeb"], // doScanPop唯一不变
[] // 可选参数, asyncMethodList
);
this.registerJavaScriptProxySucceed = true;
LogUtil.d(TAG, "registerJavaScriptProxy");
} catch (error) {
LogUtil.d(TAG, `ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`);
}
})
.javaScriptProxy({ // 注册 JavaScript 接口
object: this.jsMethod, // 包含原生方法的类实例
name: "doScanPop", // H5中调用的对象名 唯一不变
methodList: ["backToFinish", "openWeb"], // 暴露的方法列表
controller: this.controller,
})
}
class JsCallH5Class {
context: Context
constructor(context: Context) {
this.context = context;
}
backToFinish(): void {
LogUtil.d(TAG, 'H5触发原生返回')
router.back(); // 退出当前页面
}
openWeb(value: string): void {
LogUtil.d(TAG, 'JsCallJavaNewH5: ' + value);
router.pushUrl({ url: Constants.NewWebPageToJump });
}
}
HarmonyOS Next
赞
收藏 0
回答 1
已解决
相关问题
HarmonyOS 前端页面调用应用侧函数的时候获取不到
724浏览 • 1回复 待解决
HarmonyOS 在h5前端侧调用应用侧方法
877浏览 • 1回复 待解决
ArkWeb:前端页面调用应用侧函数是同步还是异步?
1403浏览 • 1回复 待解决
HarmonyOS H5页面中调用系统键盘,会把页面往上顶
1124浏览 • 1回复 待解决
HarmonyOS 通过h5页面拉起应用或者应用市场
1123浏览 • 1回复 待解决
自定义弹窗内加载h5页面,h5页面再跳转登陆页面,弹窗覆盖在登陆页面
1521浏览 • 1回复 待解决
HarmonyOS 前端页面调用应用侧函数registerJavaScriptProxy没有挂载在window上
1212浏览 • 1回复 待解决
web组件中应用侧调用前端页面函数无法传递参数
1484浏览 • 1回复 待解决
HarmonyOS 如何查看WebView中h5页面打印的console.log日志
1217浏览 • 1回复 待解决
h5页面怎么判断是否安装了某个应用?
2168浏览 • 1回复 待解决
HarmonyOS h5页面缩放问题
2496浏览 • 2回复 待解决
HarmonyOS 前端页面调用应用侧函数javascript可运行demo(javaScriptProxy)
1070浏览 • 1回复 待解决
HarmonyOS H5页面使用alert函数不生效
1025浏览 • 1回复 待解决
HarmonyOS H5页面怎么调用原生自定义键盘
1660浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何通过应用侧调用前端页面的JavaScript函数?
1161浏览 • 1回复 待解决
HarmonyOS 页面中嵌套webView,怎么在H5页面中使用客户端接口
1307浏览 • 1回复 待解决
HarmonyOS Web组件前端页面调用应用侧函数,在页面关闭后再次打开无法触发的问题
884浏览 • 1回复 待解决
前端页面调用应用侧函数时,提示参数类型不支持
1435浏览 • 1回复 待解决
ArkTS web组件前端页面调用应用侧函数如何设置多个javaScriptProxy
4141浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何在前端页面调用应用侧的函数?
966浏览 • 1回复 待解决
HarmonyOS webview H5页面事件监听
1899浏览 • 1回复 待解决
HarmonyOS H5页面localstorage为null
1271浏览 • 1回复 待解决
如何从浏览器H5页面打开华为应用市场应用详情页面?
2358浏览 • 1回复 待解决
HarmonyOS H5页面无法自适应展示,类似浏览器展示H5页面
1580浏览 • 1回复 待解决
HarmonyOS 在h5页面怎样判断当前环境?
1186浏览 • 1回复 待解决
双重注册机制冲突! 代码中同时使用了onPageEnd和.javaScriptProxy()事件内的registerJavaScriptProxy(),两种注册方式存在覆盖风险:javaScriptProxy()属于初始化阶段注册,这也是推荐使用的方法;registerJavaScriptProxy()需在Web组件初始化后调用(两种方式都需配合deleteJavaScriptRegister()清理)。
建议保留其中一种注册方式,避免重复注册导致前端页面调用应用侧函数根据日志打印调用不到。