HarmonyOS 鸿蒙Next this.webController.runJavaScript()使用

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

HarmonyOS 鸿蒙Next this.webController.runJavaScript()使用

webview中与H5交互,指定.ts文件中的方法

2 回复
楼主您好,webController.runJavaScript只能指定js中的方法,如果您想webview中与H5交互,指定.ts文件中的方法,可以参考registerJavaScriptProxy这个方法,请看:@ohos.web.webview (Webview)-ArkTS API-ArkWeb(方舟Web)-应用框架 - 华为HarmonyOS开发者 (huawei.com)
类似于:
```
// html侧代码
<input type="text" name="number_info" readonly onclick="openWindow()" value=""  style="width:500px;height:100px;font-size:50px;border:1px solid #f00;">
  <script>
     function openWindow() {
     let value = document.getElementsByName('number_info')[0].value;
     window.myJsb.openDialog(value)
     }
</script>

当H5上openWindow方法被调用后会通过jsBridge调用以下两个js代理方法打开自定义弹窗
jsbObject: JsbObject = {
openDialog: (value: string) => {
this.showDialog(this, value);
}
}
showDialog(context: object, value: string) {
// 把自定义弹窗调出来
   this.currentData = value;
   this.dialogController.open()
}

Web({ src: 'resource://rawfile/web_test.html', controller: this.webviewController})
   .javaScriptAccess(true)
  .javaScriptProxy({
     name: 'myJsb',
     object: this.jsbObject,
     methodList: ['openDialog'],
     controller: this.webviewController
 })
```

更多关于HarmonyOS 鸿蒙Next this.webController.runJavaScript()使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,this.webController.runJavaScript() 方法通常用于在Web视图中执行JavaScript代码。这个方法允许开发者在Native应用(即使用Java、Kotlin或C#等语言开发的应用)中直接与WebView交互,执行动态生成的或者预定义的JavaScript脚本。

使用this.webController.runJavaScript()时,需要注意以下几点:

  1. WebView加载完成:确保WebView已经完全加载了页面,再调用此方法执行JavaScript代码,否则可能会导致执行失败。

  2. JavaScript代码安全性:执行的JavaScript代码应来自可信源,避免执行用户输入的未验证代码,防止潜在的安全风险。

  3. 回调处理runJavaScript()方法可能包含回调,用于处理JavaScript执行的结果或异常。确保正确处理这些回调,以便在JavaScript执行完毕后进行相应的逻辑处理。

  4. 权限配置:确保应用具有在WebView中执行JavaScript的权限,这通常在应用的manifest文件中配置。

如果在使用this.webController.runJavaScript()时遇到问题,请检查上述要点是否正确实现。同时,确保使用的HarmonyOS SDK版本支持该方法,并参考官方文档进行开发。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部