DSbridge HarmonyOS适配问题

由于我们app里面很多模块是用h5写的,h5写的基于DSBridge,但是HarmonyOS版本的DSBridge js回调给h5不能直接传递给对象,直接转成string,这改变很大,这如果h5改的话,太多地方要改了。

@JavaScriptInterface() 
getSafeArea(data: string, handler: CompleteHandler) { 
  let safeAreaMap: Record<string, number> = { 
    "top": 0, 
    "left": 0, 
    "right": 0, 
    "bottom": 0 
  } 
 
  handler.complete(JSON.stringify(safeAreaMap)) 
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

请问有什么办法吗?

HarmonyOS
2024-11-06 10:10:34
906浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
superinsect

是可以直接传递对象的,下面是demo:

import { CompleteHandler, JavaScriptInterface, WebViewControllerProxy } from '@hzw/ohos-dsbridge' 
@Entry 
@Component 
struct webView { 
  private controller: WebViewControllerProxy = WebViewControllerProxy.createController() 
 
  aboutToAppear() { 
    this.controller.addJavascriptObject(new JsBridge()) 
  } 
  build() { 
    Column() { 
      Text('DsBridge 测试') 
      Web({ src: $rawfile('index.html'), controller: this.controller.getWebViewController() }) 
        .javaScriptAccess(true) 
        .javaScriptProxy(this.controller.getJavaScriptProxy()) 
    } 
    .height('100%') 
    .width('100%') 
  } 
} 
export class JsBridge { 
  @JavaScriptInterface() 
  testAsync(p: string, handler: CompleteHandler) { 
    let safeAreaMap: Record<string, number> = { 
      "top": 0, 
      "left": 0, 
      "right": 0, 
      "bottom": 0 
    } 
    handler.complete(safeAreaMap) 
  } 
}
<!-- index.html --> 
  <!DOCTYPE html> 
  <html> 
  <body id="box"> 
  <p>Hello World</p> 
  </body> 
  <script src="./dsbridge.js"></script> 
  <script> 
 
  dsBridge.call('testAsync', JSON.stringify({data: 200}), (msg) => { 
    document.body.innerHTML = JSON.stringify(msg) 
    updateMsg(msg) 
  }) 
  </script> 
  </html>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
分享
微博
QQ
微信
回复
2024-11-06 17:45:42
相关问题
DSbridge HarmonyOS版本有开发计划吗?
1411浏览 • 1回复 待解决
HarmonyOS 请提供dsbridge样例代码
881浏览 • 1回复 待解决
HarmonyOS 屏幕适配,字体适配问题
968浏览 • 1回复 待解决
HarmonyOS JsBridge适配问题
737浏览 • 1回复 待解决
适配HarmonyOS相关问题
968浏览 • 1回复 待解决
HarmonyOS 字体适配问题
564浏览 • 1回复 待解决
HarmonyOS Flutter版本适配问题
1041浏览 • 1回复 待解决
HarmonyOS 手机、平板适配问题
883浏览 • 1回复 待解决
HarmonyOS UI 单位适配问题
1052浏览 • 1回复 待解决
HarmonyOS 关于Web组件适配问题
594浏览 • 1回复 待解决
HarmonyOS 适配-输入框问题
815浏览 • 1回复 待解决
HarmonyOS tencent mars库适配问题
1277浏览 • 1回复 待解决
HarmonyOS Navigation的折叠屏适配问题
853浏览 • 1回复 待解决
HarmonyOS cocod2d-x适配问题
691浏览 • 1回复 待解决
有关FA的多端适配问题
7249浏览 • 1回复 待解决
HarmonyOS 折叠屏H5适配问题
2049浏览 • 1回复 待解决
HarmonyOS 一处开发多平台适配问题
667浏览 • 1回复 待解决
HarmonyOS 希望适配SVGAPlayer SDK适配
702浏览 • 1回复 待解决
有人知道关于折叠机适配问题吗?
1510浏览 • 1回复 待解决