解决措施准备一个html文件,例如:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>标题</h1> <h5 id="h5"></h5> <h5 id = "h6"></h5> <button onclick="handleFromH5">调用Arkts的方法</button> <script type="text/javascript"> function handleFromH5(){ let result = window.objName.test(); document.getElementById('h6').innerHTML = result; } </script> </body> </html>在ArkTs中使用JavaScriptProxy方法将ArkTs里的对象注册到H5的window对象中,然后在h5中使用window对象调用该方法。比如下面例子,在ArkTs中将testObj这个对象以别名objName注册到h5的window对象上,在上面的h5中就可以使用window.objName去访问这个对象。// xxx.ets import { webview } from '@kit.ArkWeb' class TestObj { constructor() { } test(data1: string, data2: string, data3: string): string { console.log("data1:" + data1) console.log("data2:" + data2) console.log("data3:" + data3) return "AceString" } toString(): void { console.log('toString' + "interface instead.") } } @Entry @Component struct Index { @State message: string = 'Hello World' controller: webview.WebviewController = new webview.WebviewController() testObj = new TestObj(); build() { Row() { Column() { Web({ src:$rawfile('index.html'), controller:this.controller }) .javaScriptAccess(true) .javaScriptProxy({ object: this.testObj, name: "objName", methodList: ["test", "toString"], controller: this.controller, }) } .width('100%') } .height('100%') } }参考链接javaScriptProxy
解决措施
参考链接
javaScriptProxy