关键词:鸿蒙、ArkTs、Web组件、通讯、数据
官方文档Web组件用法先容:文档中心
Web 组件加载沙箱中页面可参考我的另一篇文章:【HarmonyOS NEXT】 怎样将rawfile中文件复制到沙箱中_鸿蒙rawfile 复制到沙箱-CSDN博客
目次
怎样在鸿蒙应用中加载一个Web页面
一、加载网络所在页面
编辑
二、加载本地H5页面
实现Web组件H5层与应用层举行相互通讯
一、鸿蒙应用向H5页面发送数据
鸿蒙侧
H5侧
案例结果
二、H5页面向鸿蒙应用发送数据(附代码)
H5侧 (附代码)
鸿蒙侧(附代码)
案例结果
其他方案
创建消息端口来实现两端的通讯
通过h5公共变乱的方式实现
怎样在鸿蒙应用中加载一个Web页面
一、加载网络所在页面
1. 导入webview
- import web_webview from '@ohos.web.webview'
复制代码 2. 创建WebviewController
- controller: web_webview.WebviewController = new web_webview.WebviewController();
复制代码 3. 创建Web组件
- Web({ src: "http://www.example.com/", controller: this.controller })
复制代码 4. 在module.json5中添加网络权限
- "requestPermissions": [
- {
- "name": "ohos.permission.INTERNET"
- }
- ]
复制代码 案例结果:
二、加载本地H5页面
1. 在项目的 rowfile 中存放 html 代码
2. 在 Web组件 中使用 $rawfile 加载本地html
- Web({ src: $rawfile('webTo.html'), controller: this.controller })
复制代码
实现Web组件H5层与应用层举行相互通讯
一、鸿蒙应用向H5页面发送数据
在创建的WebviewController中使用 runJavaScript() 方法可直打仗发 H5 页面中的方法
鸿蒙侧
同样也可以使用模板字符串拼接参数举行传参
H5侧
案例结果
二、H5页面向鸿蒙应用发送数据(附代码)
在原生代码侧使用 javaScriptProxy 方法向 h5 的 window 对象中注册方法,此处我注册的对象名叫 JSBridge ,在该对象中写入了一个 nativeMethod 方法,h5 中直接调用 nativeMethod() 方法即可向原生发送消息。
H5侧 (附代码)
h5侧直接调用 window 对象下的 JSBridge.nativeMethod 方法,第一个参数对应原生侧对应的 channelName 方法名,第二个参数为 h5 自界说参数,可带入回调方法,供原生侧完成调用的回调结果。
附代码:
鸿蒙侧(附代码)

附代码:
- import { webview } from '@kit.ArkWeb';
- export interface IParamsCallback {
- name: string
- key: string
- success: (data?: string) => void
- fail: (data?: string) => void
- }
- @Entry
- @Component
- export struct MyWeb {
- webController: WebviewController = new webview.WebviewController()
- webUrl: string | Resource = "";
- build() {
- Column() {
- Web({ src: this.webUrl, controller: this.webController })
- .javaScriptProxy({
- object: {
- nativeMethod: (channelName: string, paramsCallback: IParamsCallback) => {
- if (!channelName || !paramsCallback) {
- return
- }
- switch (channelName) {
- case "openNativePage":
- paramsCallback.success()
- console.log("luvi > h5调用 openNativePage 方法,携带参数" + paramsCallback.name)
- break;
- case "getCity":
- paramsCallback.success()
- console.log("luvi > h5调用 getCity 方法,携带参数" + paramsCallback.name)
- break;
- default:
- break;
- }
- },
- },
- name: 'JSBridge',
- methodList: ['nativeMethod'],
- controller: this.webController,
- })
- .fileAccess(true)
- .domStorageAccess(true)
- .zoomAccess(false)
- .width("100%")
- .height("100%")
- }
- }
- }
复制代码
案例结果
其他方案
创建消息端口来实现两端的通讯
对于单页面应用,如vue,代码编译后方法名会举行肴杂,可使用端口消息监听的方式向h5约定消息端口发送消息,参考文章:文档中心
通过h5公共变乱的方式实现
使用 runjavascript 方法运行 h5 发送公共变乱代码,h5 监听公共变乱回调即可
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |