鸿蒙项目实战(十):web和js交互
1、实现android的addJavascriptInterface操作
即鸿蒙注入JavaScript对象到window对象中
javaScriptProxy
javaScriptProxy(javaScriptProxy: JavaScriptProxy)
// 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"; } asyncTest(data: string): void { console.log("async data:" + data); } toString(): void { console.log('toString' + "interface instead."); } } @Entry @Component struct WebComponent { controller: webview.WebviewController = new webview.WebviewController(); testObj = new TestObj(); build() { Column() { Button('deleteJavaScriptRegister') .onClick(() => { try { this.controller.deleteJavaScriptRegister("objName"); } catch (error) { console.error(`ErrorCode: ${(error as BusinessError).code}, Message: ${(error as BusinessError).message}`); } }) Web({ src: 'www.example.com', controller: this.controller }) .javaScriptAccess(true) .javaScriptProxy({ object: this.testObj, name: "objName", methodList: ["test", "toString"], asyncMethodList: ["asyncTest"], controller: this.controller, }) } } }
2、runJavaScriptExt
执行JavaScript脚本,并通过回调方式返回脚本执行的结果
Web().onPageEnd(async () => { // 执行js方法 this.controller.runJavaScriptExt("javascript:window.addEventListener('downFile',function(e){control.downLoadExportFile(JSON.stringify(e.detail))})").then((result) =>{ LogUtil.info("返回的result"+JSON.stringify(result)); })
作者:听着music睡
出处:http://www.cnblogs.com/xqxacm/
Android交流群:38197636
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
浙公网安备 33010602011771号