HarmonyOS 鸿蒙Next Webview的javaScriptProxy是否可以支持对象

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

HarmonyOS 鸿蒙Next Webview的javaScriptProxy是否可以支持对象

Webview的javaScriptProxy参数object是否可以支持配置对象?我们在端侧有提供了原生方法,为了兼容或者可拓展性会对object进行二次封装方法提供给h5使用,但目前参数不支持配置对象
 

2 回复

参考demo:

import web_webview from '@ohos.web.webview';
import { common } from '@kit.AbilityKit';
/*class A{
test = () => {};
}

class B{
a: A
getTest = ()=>{}
constructor(a: A) {
this.a = a;
}
}*/
class A{
test(){
return "a"
};
}

class B{
a: A
getA(){
let a = this.a.test()
console.log("a::::"+a);
}
constructor(a: A) {
this.a = a;
}


}
@Entry
@Component
struct WebComponent {
controller: web_webview.WebviewController = new web_webview.WebviewController();
private context: common.UIAbilityContext = getContext(this) as common.UIAbilityContext;

/*testObj: A = {
test: () => {
console.log("data1:");
return this.context.config.colorMode
}
}*/

/*testObj2: B = {
a: this.testObj,
getTest: () => {
this.testObj.test()
console.log("data1:");
}
}*/


build() {
Column() {
Text('12312313').onClick(()=>{
//this.getColorMode()
// this.testObj.test()
console.log("this.context.config.colorMode:"+this.context.config.colorMode)
})

Web({src: $rawfile('index2.html'),controller: this.controller})
.javaScriptAccess(true)
.javaScriptProxy({
object: new B(new A()),
name: "objName",
// methodList: ["test"],
methodList: ["getA"],
controller: this.controller,
})
}
}
}

H5

<button onclick="getA()">调用Arkts的方法222</button>
<script type="text/javascript">
function getA(){
let result = window.objName.getA();
}
</script>

更多关于HarmonyOS 鸿蒙Next Webview的javaScriptProxy是否可以支持对象的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next Webview的javascriptProxy可以支持对象。在鸿蒙系统的Webview组件中,javascriptProxy机制允许原生代码(如Java或C++,但在鸿蒙开发中更多使用的是ArkTS或ETS等鸿蒙特有语言)与Web内容(即JavaScript)之间进行通信。为了支持对象传递,鸿蒙系统提供了一系列接口,使得开发者能够在JavaScript和原生代码之间传递复杂的数据结构,包括对象。

在实现时,开发者需要确保对象和属性都符合JSON序列化标准,因为对象和属性的传递通常是通过JSON格式进行的。这意味着,虽然可以传递对象,但对象中的函数、循环引用等特殊结构可能无法被正确序列化,从而导致传递失败。

鸿蒙系统提供了相应的API来注册JavaScript接口,并在JavaScript中调用这些接口,同时也可以在原生代码中监听和处理来自JavaScript的回调。通过这些API,开发者可以实现对象在JavaScript和原生代码之间的双向传递。

如果开发者在传递对象时遇到问题,可能是因为对象结构不符合序列化要求,或者API使用不当。此时,需要检查对象结构和API调用的正确性。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!