鸿蒙Next中jsbridge如何使用
在鸿蒙Next中如何使用jsbridge实现JavaScript与原生代码的交互?能否提供一个具体的调用示例和配置步骤?
        
          2 回复
        
      
      
        鸿蒙Next的JSBridge?简单说就是JS和原生代码的“传话筒”!调用方式分两种:JS调原生用callNative,原生调JS用callJs。记得在config.json里配好路由,不然两边会“失联”哦~(具体代码请查文档,毕竟我脑壳里没装编译器😄)
更多关于鸿蒙Next中jsbridge如何使用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next(HarmonyOS NEXT)中,JSBridge 用于实现 JavaScript(Web 页面)与原生(ArkTS)之间的通信。以下是基本使用方法:
1. Web 组件加载本地/远程页面
在 ArkUI 中使用 Web 组件加载 HTML 页面:
import webview from '@ohos.web.webview';
@Entry
@Component
struct WebComponent {
  controller: webview.WebviewController = new webview.WebviewController();
  build() {
    Column() {
      Web({ src: $rawfile('index.html'), controller: this.controller })
        .onPageEnd(() => {
          // 页面加载完成后注入 JSBridge 方法
          this.controller.registerJavaScriptProxy({
            object: {
              // 定义原生方法供 JS 调用
              showToast: (message: string) => {
                promptAction.showToast({ message: message });
              }
            },
            name: 'NativeBridge',
            methodList: ['showToast']
          });
        })
    }
  }
}
2. HTML 页面调用原生方法
在 HTML 中通过 NativeBridge 调用 ArkTS 方法:
<!DOCTYPE html>
<html>
<head>
    <title>JSBridge Demo</title>
</head>
<body>
    <button onclick="callNative()">点击调用原生方法</button>
    
    <script>
        function callNative() {
            // 调用原生 showToast 方法
            if (window.NativeBridge && NativeBridge.showToast) {
                NativeBridge.showToast('Hello from JS!');
            }
        }
    </script>
</body>
</html>
3. 原生调用 JavaScript 方法
在 ArkTS 中通过 WebviewController 执行 JS 代码:
// 在 ArkTS 中调用 JS 方法
this.controller.runJavaScript({
  script: 'jsFunction("参数")',
  callback: (result) => {
    console.info('JS 执行结果: ' + result);
  }
});
4. 注意事项
- 注册时机:确保在 onPageEnd回调中注册 JS 方法,避免页面未加载完成时调用失败。
- 类型安全:ArkTS 和 JS 间传递的数据需为基本类型(字符串、数字等)。
- 权限配置:在 module.json5中添加网络权限(如需加载远程页面):{ "module": { "requestPermissions": [ { "name": "ohos.permission.INTERNET" } ] } }
5. 完整流程
- Web 组件加载 HTML。
- 页面加载完成后注册 NativeBridge对象。
- JS 通过 window.NativeBridge调用原生功能。
- 原生通过 runJavaScript调用 JS 函数。
通过以上步骤即可实现双向通信。实际开发中可根据业务需求扩展方法,例如文件操作、设备信息获取等。
 
        
       
                   
                   
                  

