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

HarmonyOS开发过程中ArkTs和H5之间相互通信

在鸿蒙开发过程中我们常常用到后面中加载一个h5页面就是webview组件中加载可以一个h5的页面但是他们之间有需要有一些通信例如h5需要掉用一些原生的api或者原生的方法。原生页面中又需要掉用h5的函数。通过阅读华为官方文档中是有一些api可以实现我们想要的效果的。如果是h5掉用原生函数的话使用Web()…javaScriptProxy(object: this.testObj,name: “testObjName”,methodList: [“test”],controller: this.webviewController)其中this.testObj是h5掉用原生的方法合集封装的一个类在加载web的页面中new出来name就是在h5中掉用的方法自定义名字methodList就是需要注册到h5中的方法的数组controller就是加载web的controller。在h5中就可以以window.testObjName.test()掉用了如果是原生中掉用h5的话使用this.webviewController.runJavaScript()括号里面可以直接写h5的方法的用包裹即可例如this.webviewController.runJavaScript(function changeColor(){document.getElementById(text).style.color red}),也可以使用this.webviewController.runJavaScript(htmlTest(${param})).当然为了方便统一管理可以封装一个桥JsBridge。import web_webview from ‘ohos.web.webview’;import { contact } from ‘kit.ContactsKit’;// 补充完整类实现export class JsBridge {private controller: web_webview.WebviewController;constructor(controller: web_webview.WebviewController) {this.controller controller;}// JS调用原生方法call (func: string, params: string): void {const paramsObj JSON.parse(params) as SelectContactParams;switch (func) {case ‘selectContacts’:this.handleSelectContact(paramsObj.callID);break;// 添加其他功能case…}}// 处理联系人选择private handleSelectContact(callID: number) {// 实现原生联系人选择逻辑…const contacts: Contact[] [{ name: “张三”, phone: “13800138000” }];let result: Promisestring new Promise((resolve) resolve(‘’));this.chooseContact().then((data: string) {this.executeH5Callback(callID, data);})// this.executeH5Callback(callID, contacts);}// 回调H5方法executeH5Callback(callID: number, data: Object) {const script window.handleNativeCallback(${callID}, ${JSON.stringify(data)});this.controller.runJavaScript(script); // 执行JS回调}callback (id: number, data: string): void {this.controller.runJavaScript(JSBridgeCallback(${id}, ${JSON.stringify(data)}));}chooseContact (): Promisestring {let phone ‘’;let name ‘’;return new Promise((resolve) {let promise contact.selectContact();promise.then((info: Arraycontact.Contact) {info.forEach((item: contact.Contact) {phone item?.phoneNumbers ? item?.phoneNumbers[0].phoneNumber : ‘’;name item?.name ? item?.name?.fullName : ‘’;})resolve(phone ‘_’ name);}).catch((err: object | string) {console.error(selectContact fail: err-${JSON.stringify(err)});});})}// 注册JS代理对象javaScriptProxy(): JavaScriptItem {return {object: {call: this.call},name: “JSBridgeHandle”,methodList: [‘call’],controller: this.controller};}}// 在文件顶部为JavaScriptItem接口添加类型声明export interface callType {call: (func: string, params: string) void}export interface JavaScriptItem {object: callType,name: string,methodList: Arraystring,controller: WebviewController}// 在文件顶部添加联系人接口定义interface Contact {name?: string;phone?: string;}interface SelectContactParams {callID: number,data: Contact}在h5中掉用window.JSBridgeHandle.call(‘selectContacts’, JSON.stringify({ callID }));WebPage页面中private controller: web_webview.WebviewController new web_webview.WebviewController();private jsBridge: JsBridge new JsBridge(this.controller);Web().javaScriptProxy(this.jsBridge.javaScriptProxy())掉用。上面就是arkts和h5通信的全部内容了

相关文章:

HarmonyOS开发过程中ArkTs和H5之间相互通信

在鸿蒙开发过程中,我们常常用到后面中加载一个h5页面,就是webview组件中加载可以一个h5的页面,但是他们之间有需要有一些通信,例如h5需要掉用一些原生的api或者原生的方法。原生页面中又需要掉用h5的函数。 通过阅读华为官方文档中…...

打破运维数据孤岛:燕千云平台CMDB运维监控一体化解决方案

前言如今企业IT架构正向高并发、分布式及混合云环境演进。传统的烟囱式运维工具体系导致了“监控数据孤岛”、“资产配置滞后”以及“故障根因难定位”等核心痛点。燕千云平台立足于CMDB(配置管理数据库)监控(Monitoring)MCM&…...

OpenClaw 史诗级更新:AI 终于 “长脑子”!Context Engine 让记忆自由插拔,Token 成本直降 90%,GPT-5.4 都被卷哭

2026 年 3 月 7 日,OpenClaw 发布 v2026.3.7 版本,被社区称为 “史上最强更新”——89 项提交、200Bug 修复,核心推出Context Engine(上下文引擎)插件接口,彻底解决 AI “健忘症” 难题,实现记忆…...

SGLang部署Qwen3.5-27B量化版及评测

随着人工智能技术的快速发展,大语言模型的本地化部署成为企业和开发者的一项重要需求。Qwen3.5-27B-GPTQ-Int4 作为阿里Qwen3.5系列的重要模型,在保持高性能的同时,通过 INT4 量化大幅降低了部署成本,使其能够在消费级显卡上流畅运…...

Nginx性能优化与监控

一、核心优化方向worker 进程配置worker_processes auto;:自动匹配 CPU 核心数worker_connections 10240;:单进程最大连接数(需配合系统 ulimit)worker_rlimit_nofile 65535;:提升最大文件句柄数事件模型优化nginxeven…...

vector声明初始化

vector<int> sub(5, 10) 确实代表**“给我造 5 个位置&#xff0c;里面全都填上 10”**。这是 vector 最基础的用法之一。 那为什么还能用 (v.begin(), v.begin() 3) 这种长相完全不同的写法呢&#xff1f; 其实&#xff0c;C 的容器非常聪明&#xff0c;它内部提供了好…...

AI赋能软件测试:未来已来,你准备好了吗?

引言 在数字化转型的浪潮中&#xff0c;软件测试作为保障产品质量的关键环节&#xff0c;正面临着前所未有的挑战。 传统的测试方法已难以满足快速迭代和复杂场景的需求&#xff0c;而人工智能&#xff08;AI&#xff09;的引入&#xff0c;则为软件测试带来了革命性的变化。…...

meson使用介绍

Meson 是一个现代化的构建系统&#xff0c;旨在提供比传统 CMake 更加简洁、高效和易用的构建体验。它使用一种类似 Python 的声明式 DSL&#xff08;领域特定语言&#xff09;来描述构建规则&#xff0c;并默认配合 Ninja 作为后端构建工具&#xff0c;能够显著提升增量编译的…...

第1节:现代GPU硬件架构精讲

文章目录前言一、GPU vs CPU&#xff1a;为什么GPU适合并行计算&#xff1f;二、GPU的整体架构&#xff1a;从芯片到核心2.1 GPU的层级结构2.2 A100/H100芯片架构图三、SM内部架构详解3.1 SM&#xff08;流式多处理器&#xff09;内部结构3.2 一个SM的详细数据&#xff08;以A1…...

干饭随心选系统

1. 字典模块&#xff08;数据存储&#xff09;字典嵌套是处理 “结构化多维度数据” 的核心方式&#xff0c;比如 “饭馆” 作为一个实体&#xff0c;包含多个属性&#xff0c;用内层字典封装更清晰&#xff1b;列表适合存储 “有序的序列数据”&#xff08;如历史记录、菜单&a…...

LVGL运行lv_timer_handler时卡死

今天在一块板子上调试LVGL&#xff0c;一运行就卡死&#xff0c;调试半天没有发现问题。LCD驱动确认无误&#xff0c;直接调LCD驱动可以正常显示。调试跟踪&#xff0c;发现是在调用lv_timer_handler时卡死&#xff0c;中间调用了一些内存管理函数&#xff0c;最终进入Hardfalu…...

从单打独斗到团队作战,多智能体协同如何重塑未来工作?

从早期规则化的对话机器人&#xff0c;到具备感知、理解、执行能力的单一智能体&#xff0c;再到可自主分工、协同决策的多智能体系统&#xff0c;AI 正在完成一次从工具 → 助手 → 团队的范式跃迁。 今天&#xff0c;单一智能体已经高度成熟&#xff1a;它能理解自然语言、调…...

hive数据库模糊查询表名

文章目录一、MySQL模糊查询表名二、Hive模糊查询表名一、MySQL模糊查询表名 &#xff08;1&#xff09;查询所有表名 -- 查询所有表名 show tables;(2) 模糊查询表名 -- 查询包含aaa的表名 show tables like %aaa%二、Hive模糊查询表名 &#xff08;1&#xff09;查询所有…...

CTF选手必须收藏的100个实战解题思路,CTF实战解题思路大全,CTF赛前必看解题宝典!

CTF竞赛的核心逻辑 • 核心目标&#xff1a;快速拆解问题&#xff08;Flag导向&#xff09;、工具链协作、模式化思维。 • 关键原则&#xff1a;先广度后深度&#xff08;优先收集信息&#xff09;、分治策略&#xff08;拆解复杂任务&#xff09;。 第一部分&#xff1a;We…...

IO模型与高性能原理

Redis IO模型与高性能原理 引言&#xff1a;Redis为什么这么快&#xff1f; Redis 之所以能够实现极高的性能&#xff0c;主要基于以下三个核心设计&#xff1a; 完全基于内存操作&#xff1a;所有数据存储在内存中&#xff0c;读写速度远超磁盘单线程模型&#xff1a;避免了…...

BNU-25硕信息学奥赛day5

2026.3.17 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录2026.3.17前言一、printf的用法1.直接输出2.数字d3.%数字.数字…...

03.Linux高级管理

1. Linux 中的 firewalld 1.1. 什么是防火墙 防火墙主要用于防范网络攻击&#xff0c;防火墙一般分为软件防火墙、硬件防火墙1.2. 防火墙的作用 主要作用是保护系统免受未经授权的访问和攻击&#xff0c;它有助于防止黑客利用系统中的安全漏洞&#xff0c;以及限制对特定网络服…...

原核表达系统全解析:从原理到应用的技术指南

一、原核表达的技术定位原核表达是指利用原核生物&#xff08;主要是大肠杆菌Escherichia coli&#xff09;作为宿主细胞&#xff0c;通过基因重组技术导入外源基因&#xff0c;实现目标蛋白质表达的技术体系。从技术本质上讲&#xff0c;原核表达系统是最早建立、应用最广泛、…...

自卸车软件市场规模锁定18.15亿元,精准数据勾勒行业进阶新图景

在全球基础设施建设持续扩张与运输监管政策趋严的双重驱动下&#xff0c;自卸车软件作为提升运输效率、降低运营风险的核心工具&#xff0c;正迎来智能化转型的关键期。据恒州诚思调研统计&#xff0c;2025年全球自卸车软件市场规模达18.15亿元&#xff0c;预计至2032年将增长至…...

实测:用自然语言管50台虚拟机是什么体验?青云云易捷Express AIops深度体验

我们最近在客户现场做了一次极限测试&#xff1a;让一个完全没有云平台运维经验的行政人员&#xff0c;用青云云易捷的Express AIops管理50台混合部署的虚拟机和容器应用&#xff0c;结果他只用了10分钟就完成了资深运维工程师需要1小时才能做完的3个任务&#xff1a;1. 找出所…...

OpenClaw“龙虾热”背后:从狂热到冷静的AI工具反思

OpenClaw&#xff1a;从技术圈小众到全民热议的“电子龙虾”2026年春天&#xff0c;一款名叫OpenClaw的AI工具如同一颗石子投入中文互联网的湖面&#xff0c;激起层层涟漪。它由奥地利程序员Peter Steinberger在2025年开发&#xff0c;作为一种“AI智能体”程序&#xff0c;短短…...

从以太坊到跨链宇宙:2026年区块链进化图谱,解锁价值互联新范式

引言2026年&#xff0c;区块链行业彻底告别“单链争霸”的野蛮生长&#xff0c;迈入“跨链互联”的成熟进化期。曾经作为行业标杆的以太坊&#xff0c;不再是区块链的唯一答案&#xff0c;以其为起点&#xff0c;多条公链协同、跨链技术突围、生态互联互通的“跨链宇宙”已然成…...

msdatlst.ocx文件丢失找不到 打不开程序如何修复? 免费下载方法

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…...

JS运算符全解析:从赋值到优先级

1.赋值运算符可以将符号右侧的值赋值给符号左侧的变量<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…...

Canva新功能Magic Layers:重塑图像编辑新体验

Magic Layers&#xff1a;开启图像分层编辑新时代Canva推出的Magic Layers工具&#xff0c;可将平面图像文件和AI生成的视觉内容转化为分层且可完全编辑的设计。该工具目前在美国、英国、加拿大和澳大利亚开启公开测试版&#xff0c;用户能在保留原始布局的同时&#xff0c;单独…...

参考文献没动,正文重复率从35%→12%?百考通降重真香了!

你是否遇到过这种“降重后遗症”&#xff1f; ——正文重复率降下来了&#xff0c;但参考文献列表被查重系统标红&#xff1b; ——引用的句子改写后&#xff0c;文中标注和文末参考文献对不上&#xff1b; ——手动调整GB/T 7714格式时&#xff0c;卷号、页码、DOI漏填&#x…...

AI信创新增量:国产大模型与信创深度融合的五大落地场景解析

摘要&#xff1a;当前&#xff0c;信创产业正从“合规替代”加速迈向“价值创造”的新深水区。国产大模型与信创底座的深度耦合&#xff0c;已成为这一转型期的核心增量引擎。本文将深度拆解政务、金融、工业、传媒及教育五大核心落地场景&#xff0c;探讨如何实现从“可用”到…...

异常表格导致导出docx展示问题,以及转pdf异常问题总结

解决HTML表格首行单列、后续多列导致Word仅导出一列 & PDF转换失败&#xff08;保留合并单元格&#xff09;前言在做 HTML转Word、再转PDF 功能时&#xff0c;非常容易遇到一种经典坑&#xff1a;- 表格第一行只有 1 个 <td> &#xff08;标题行、合并单元格&#x…...

帮助进行word文档编辑的VBA代码记录

word最上栏选择“开发工具”&#xff0c;选择Visual Basic1、将文档中的所有表格均设置为“根据窗口调整表格”Sub AutoFitAllTablesToWindow()Dim tbl As TableFor Each tbl In ActiveDocument.Tablestbl.AutoFitBehavior (wdAutoFitWindow)Next tblMsgBox "已将所有表格…...

浪潮中标沂源县智慧水务平台项目

2026年3月17日&#xff0c;山东淄博发布沂源县沂蒙革命老区农村饮水安全工程&#xff08;沂源县农村供水提升改造工程&#xff09;智慧水务平台采购项目中标结果公示。该项目预算1700.00万元&#xff0c;由浪潮智慧城市科技有限公司以1699.86万元中标&#xff0c;采购单位为沂源…...