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

鸿蒙开发--web组件

一、web组件概述

        web组件用于在应用程序中显示web页面内容为开发者提供页面加载页面交互页面调试

                页面加载:提供基础的前端页面加载的能力

                页面交互:提供丰富的页面交互方式

                页面调试:支持使用Devtools工具调用前端页面

二、使用web组件加载页面

        ①、加载网络页面

                1、配置ohos.permission.INTERNET网络访问权限

"requestPermissions": [{"name": "ohos.permission.INTERNET"}
]

                2、在页面中加入web组件

//src:要显示的网页地址。// controller: Web 的控制器。Web({src:'openharmony.cn',controller:this.controller})

                3、开发者可以在web组件创建的时候指定默认加载的网络页面。在默认页面加载完成后,如果开发者需要变更此web组件显示的网路页面,可以通过loadUrl()接口加载指定网络页面

//loadUrl,加载数据或 URL
this.controller.loadUrl('')

        ②、加载本地页面 

                1、将本地页面文件放在应用的rawfile目录下

                2、编写页面代码,加入web组件

//src:要显示的网页地址。
// controller: Web 的控制器。
Web({src:$rawfile('Local.html'),controller:this.controller})

                3、开发者可以在web组件创建的时候指定默认加载的本地页面,并且加载完成后可通过调用loadUrl()接口变更当前Web组件的页面 

//loadUrl,加载数据或 URL
this.controller.loadUrl($rawfile('Local.html'))

        ③、加载HTML格式的文件数据 

                1、在页面中接入Web组件

//src:要显示的网页地址。
// controller: Web 的控制器。
Web({src:'',controller:this.controller})

                2、通过loadData()接口实现加载HTML格式的文本数据

//loadUrl,加载数据或 URL
this.controller.loadData('<div style="font-size:100px">Hello  OpenHarmony </div>','text/html','UTF-8'
)

                3、当开发者不需要加载整个页面,只需要显示一些页面片段时,可通过此功能来快速加载页面

三、设置基本属性和事件

        ①、设置深色模式

                通过darkMode()接口可以配置不同的深色模式

                        WebDarkMode.off:关闭深色模式

                        WebDarkMode.On:开启深色模式,并且深色模式 跟随前端页面

                        WebDarkMode.Auto:开启深色模式,并且深色模式跟随系统

                通过forceDarkAccess()接口可将前端页面强制配置深色模式 ,且深色模式不跟随前端页面和系统。配置该模式的时候,需要将深色模式配置为WebDarkMode.On

import webview from '@ohos.web.webview'@Entry
@Component
struct web {controller: webview.WebviewController = new webview.WebviewController()@State mode: WebDarkMode = WebDarkMode.On@State access: boolean = truebuild() {Column() {Stack() {//src:要显示的网页地址。// controller: Web 的控制器。Web({ src: 'https://blog.csdn.net/2402_89033269', controller: this.controller }).darkMode(this.mode)//设置Web深色模式,默认关闭。当深色模式开启时,Web将启用媒体查询prefers-color-scheme中网页// 所定义的深色样式,若网页未定义深色样式,则保持原状。如需开始强制深色模式,建议配合forceDarkAccess使用.forceDarkAccess(this.access)//设置网页是否开启强制深色模式。默认关闭,该属性仅在darkMode开启深色模式时生效}}.width('100%').height('100%')}
}

         ②、上传文件

                Web组件支持前端页面选择文件上传功能,应用开发者可以使用onShowFileSelector()接口来处理前端页面文件上传的请求 

import webview from '@ohos.web.webview'
import picker from '@ohos.file.picker'@Entry
@Component
struct web {controller: webview.WebviewController = new webview.WebviewController()build() {Column() {Stack() {//加载本地upload.htmlWeb({ src: $rawfile('upload.html'), controller: this.controller })//result FileSelectorResult 用于通知Web组件文件选择的结果//fileSelector FileSelectorParam 文件选择器的相关信息 .onShowFileSelector((event) => {let photoPicker = new picker.PhotoViewPicker()let fileList: Array<string> = []photoPicker.select((err, result: picker.PhotoSelectResult) => {fileList = result.photoUrisevent.result.handleFileList(fileList)})return true})}}.width('100%').height('100%')}
}

        ③、在新窗口中打开页面 

                Web组件提供了在新窗口打开页面的能力,开发者可以通过multiWindowAccess()接口来设置是否允许网页在新窗口打开

                当有新窗口打开时,应用侧会在onWindowNew()接口中收到Web组件新窗口事件,开发者需要在此接口事件中,新建窗口来处理Web组件窗口请求

        ④、管理位置权限

                Web组件提供位置权限管理能力。开发者可以通过onGeolocationShow()接口对某个网站进行位置权限管理。Web组件根据接口响应结果,决定是否赋予前端页面权限。获取设备位置,需要开发者配置ohos.permission.LOCATION权限。

四、在应用中使用前端页面JavaScript

        ①、应用侧调用前端页面函数

                应用侧可以通过runJavaScript()方法调用前端页面的JavaScript相关函数。

import webview from '@ohos.web.webview'@Entry
@Component
struct web {controller: webview.WebviewController = new webview.WebviewController()build() {Column() {Stack() {Web({ src: $rawfile('upload.html'), controller: this.controller })Button('runJavaScript').onClick(()=>{this.controller.runJavaScript('htmlTest()')})}}.width('100%').height('100%')}
}
<!DOCTYPE html>
<html>
<body>
<div style="font-size:100px">Hello  OpenHarmony</div>
<script>function htmlTest(){document.getElementById("content").style.color="#61A9B2"}
</script>
</body>
</html>

         ②、前端页面调用应用侧函数

                开发者使用Web组件将应用侧代码注册到前端页面中,注册完成之后,前端页面中使用注册的对象名称就可以调用应用侧的函数,实现在前端页面中调用应用侧方法。
注册应用侧代码有两种方式,一种在Web组件初始化使用调用,使用javaScriptProxy()接口。另外一种在Web组件初始化完成后调用,使用registerJavaScriptProxy()接口。

五、使用Dev Eco Studio调用前端页面

                Web组件支持使用DevTools工具调试前端页面:DevTools是一个 Web前端开发调试工具,提供了电脑上调试移动设备前端页面的能力。开发者通过setWebDebuggingAccess()接口开启Web组件前端页面调试能力,利用DevTools工具可以在电脑上调试移动设备上的前端网页

http://www.dtcms.com/a/316578.html

相关文章:

  • Java技术栈/面试题合集(5)-SpringBoot篇
  • SpringBoot3.x入门到精通系列:4.1 整合 MongoDB 详解
  • 《四种姿势用Java玩转AI大模型:从原生HTTP到LangChain4j》
  • Ubuntu24.04环境下非DOCKER方式安装Mysql5.7
  • 今日行情明日机会——20250805
  • 呼叫中心系统录音管理功能的应用
  • 初学docker
  • 深度拆解Dify:开源LLM开发平台的架构密码与技术突围
  • QUdpSocket发送组播和接受组播数据
  • 【类与对象(上)】C++封装之美:类与this指针解析
  • Nginx 单一端点上高效部署多个 LLM 模型
  • ES 模块动态导入
  • 海上电磁波传播:两径模型 vs 抛物方程模型传播损耗对比
  • 37.字典树
  • Redis集群模式下确保Key在同一Slot的实现方法
  • 按位运算 - C++
  • Velero 简介和部署
  • Linux进程信号——初步认识信号、信号的产生
  • 《UE教程》第一章第六回——迁移独立项目(资源)
  • IAR软件中变量监控的几种方法
  • 如何在 FastAPI 中优雅处理后台任务异常并实现智能重试?
  • Wireshark安装过程 Npcap Setup: Failed to create the npcap service: 0x8007007e.
  • 信息系统项目管理中的沟通管理实战精解
  • 智慧能源场景设备缺陷漏检率↓76%:陌讯多模态融合检测方案实战解析
  • SpringCloud学习------Gateway详解
  • Claude Code 完整指南:入门到应用
  • Qt事件系统学习笔记
  • 嵌入式软件架构设计之七:双机通信及通信协议之字符串协议
  • 大语言模型安全攻防:从提示词注入到模型窃取的全面防御浅谈
  • 与功能包相关的指令ros2 pkg