当前位置: 首页 > news >正文

鸿蒙项目实战(十):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));})

 

 

http://www.gsyq.cn/news/9720.html

相关文章:

  • 函数计算进化之路:AI 应用运行时的状态剖析
  • 详细介绍:Day20 K8S学习
  • opencv学习记录3
  • 统计分析神器 NCSS 2025 功能亮点+图文安装教程
  • Gentoo安装配置
  • 3 网络基础知识+web基础知识+部署Server
  • 简单理解java虚拟机
  • 洛谷题单指南-进阶数论-P1516 青蛙的约会
  • electron中的几个概念
  • 保护眼睛小程序
  • 001_string操作
  • hbase 面试题
  • mall项目学习笔记
  • 存储多边形网格的文件格式:OBJ、FBX、RenderMan、glTF、USD 等。
  • 实用指南:Unity 游戏引擎中 HDRP(高清渲染管线) 的材质着色器选择列表
  • 安防监控中常见的报警类型有哪些?国标GB28181平台EasyGBS的报警能力解析
  • LAMP 环境一键部署脚本(Apache+MySQL+PHP) - 实践
  • 【ubuntu24.04】NFS机械硬盘无法挂载成功 - 实践
  • VTable-Sheet:重新定义Web电子表格的开源解决方案
  • Coolmuster Android Assistant:Windows架构下的Android设备管理专家
  • Linux服务器单网卡如何配置多个的IP地址?
  • day38大模型程序开发-GraphRAG实操
  • 深入解析MS12-020关键漏洞CVE-2012-0002:远程桌面协议的安全风险与缓解方案
  • 鸿蒙项目实战(九):get请求参数的处理
  • 20250806_信安一把梭_test
  • 专业 RAW 图像处理利器!DxO PhotoLab 让你的照片质感飙升
  • mysql时间转字符串,自定义格式将日期时间值转换为字符串
  • 其他与其它的区别
  • 实用指南:数据库造神计划第十七天---索引(2)
  • 指令流水线