Web 注入需要注入多个JsObject - HarmonyOS 鸿蒙Next

Web 注入需要注入多个JsObject - HarmonyOS 鸿蒙Next

Web({ src: 'www.example.com', controller: this.controller })
.javaScriptAccess(true)
.javaScriptProxy({
    object: this.testObj,
    name: "objName",
    methodList: ["test", "toString"],
    controller: this.controller,
})

这个javaScriptProxy只能注入单个, 但实际是需要多个。 类似android 的WebView注入是多个的。

// 这是Android的webview
public void addJavascriptInterface(Object obj, String interfaceName) {
}

更多关于Web 注入需要注入多个JsObject - HarmonyOS 鸿蒙Next的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

Web组件暂不支持javaScriptProxy属性方法注入多个JavaScript对象,最后注入的对象会覆盖之前的。

如果需要注入多个对象,可以在例如Web组件onControllerAttached生命周期中通过WebviewController.registerJavaScriptProxy接口注入多个JavaScript对象。

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-webview-V5#registerjavascriptproxy

更多关于Web 注入需要注入多个JsObject - HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS中,Web注入多个JsObject可以通过WebViewJavaScriptProxy机制实现。首先,创建多个自定义的JsObject类,每个类包含需要在Web页面中调用的方法。然后,通过WebViewaddJavaScriptProxy方法将这些JsObject注入到Web页面中。每个JsObject会被映射为Web页面中的一个JavaScript对象,允许Web页面直接调用这些对象的方法。

例如,假设有两个JsObject类JsObjectAJsObjectB,分别包含方法methodAmethodB。可以通过以下代码将它们注入到WebView中:

let webView = new WebView();
let jsObjectA = new JsObjectA();
let jsObjectB = new JsObjectB();

webView.addJavaScriptProxy(jsObjectA, "jsObjectA");
webView.addJavaScriptProxy(jsObjectB, "jsObjectB");

在Web页面中,可以直接通过jsObjectA.methodA()jsObjectB.methodB()调用这些方法。通过这种方式,可以灵活地将多个JsObject注入到Web页面中,实现更复杂的前端与原生代码的交互。

回到顶部