鸿蒙 Next 开发实践:使用 WebView 适配移动端网站

devtools/2025/2/9 1:22:27/

在移动应用开发中,有时我们需要将已有的移动端网站嵌入到原生应用中,以实现快速开发和功能扩展。鸿蒙 Next 提供了强大的 WebView 组件,可以轻松实现这一目标。本文将通过一个简单的示例,展示如何在鸿蒙 Next 应用中使用 WebView 适配已经做好的移动端网站。

效果图 

 场景背景

假设我们已经有一个移动端网站,例如一个查询系统https://lefu.lesaosao.cn/chaxun/#/Indexhttps://lefu.lesaosao.cn/chaxun/#/Index%EF%BC%89%EF%BC%8C%E7%8E%B0%E5%9C%A8%E9%9C%80%E8%A6%81%E5%B0%86%E5%85%B6%E5%B5%8C%E5%85%A5%E5%88%B0%E9%B8%BF%E8%92%99 现在需要将其嵌入到鸿蒙Next 应用中,让用户可以在原生应用中直接访问该网站的功能。

鸿蒙 Next WebView 组件介绍

WebView 是鸿蒙 Next 提供的一个用于加载网页的组件。它支持加载本地 HTML 文件或网络 URL,并且可以与原生应用进行交互。通过 WebView,我们可以在鸿蒙应用中无缝嵌入网页内容。

示例代码

以下是一个简单的示例代码,展示如何在鸿蒙 Next 应用中嵌入移动端网站。

import { webview } from '@kit.ArkWeb';@Entry
@Component
struct WebComponent {controller: webview.WebviewController = new webview.WebviewController();build() {Column() {Web({ src: 'https://lefu.lesaosao.cn/chaxun/#/Index', controller: this.controller }).domStorageAccess(true)}}onBackPress() {// 当前页面是否可前进或者后退给定的step步(-1),正数代表前进,负数代表后退if (this.controller.accessStep(-1)) {this.controller.backward(); // 返回上一个web页// 执行用户自定义返回逻辑return true;} else {// 执行系统默认返回逻辑,返回上一个page页return false;}}
}

代码解析

导入 WebView 模块

import { webview } from '@kit.ArkWeb';

通过导入@kit.ArkWeb模块,我们可以使用 WebView 相关的功能。

定义组件

@Entry
@Component
struct WebComponent {controller: webview.WebviewController = new webview.WebviewController();
}

定义一个名为WebComponent的组件,并初始化一个WebviewController,用于控制 WebView 的行为。

构建界面

build() {Column() {Web({ src: 'https://lefu.lesaosao.cn/chaxun/#/Index', controller: this.controller }).domStorageAccess(true)}
}

build方法中,我们使用Column布局,并嵌入一个Web组件。通过src属性指定要加载的网页地址,并将controller绑定到Web组件上。domStorageAccess(true)允许网页使用 DOM 存储功能。

处理返回按键

onBackPress() {if (this.controller.accessStep(-1)) {this.controller.backward();return true;} else {return false;}
}

重写onBackPress方法,当用户点击返回按键时,检查 WebView 是否可以后退。如果可以后退,则调用backward方法返回上一个网页;否则,执行系统默认的返回逻辑。

适配移动端网站的注意事项

  1. 网页响应式设计 确保嵌入的移动端网站采用了响应式设计,能够自适应不同尺寸的屏幕。如果网站未进行响应式设计,可能需要与前端开发团队合作,优化网页的适配性。

  2. 交互体验 考虑到用户体验,可以在 WebView 中添加一些原生的交互功能。例如,自定义返回按钮、加载进度条等。

  3. 安全问题 加载网络 URL 时,需要注意网络安全问题。确保加载的网站是可信的,避免加载恶意网站内容。

总结

通过鸿蒙 Next 的 WebView 组件,我们可以轻松地将已有的移动端网站嵌入到原生应用中。这不仅可以节省开发时间,还可以充分利用现有的网页资源。在实际开发中,需要注意网页的适配性、交互体验和安全问题,以提供更好的用户体验。


http://www.ppmy.cn/devtools/157224.html

相关文章

DeepSeek-R1:开源机器人智能控制系统的革命性突破

目录 引言 一、DeepSeek-R1 的概述 1.1 什么是 DeepSeek-R1? 1.2 DeepSeek-R1 的定位 二、DeepSeek-R1 的核心特性 2.1 实时控制能力 2.2 多传感器融合 2.3 路径规划与导航 2.4 人工智能集成 2.5 开源与模块化设计 2.6 跨平台支持 三、DeepSeek-R1 的技术…

开源安全一站式构建!开启企业开源治理新篇章

在如今信息技术日新月异、飞速发展的数字化时代,开源技术如同一股强劲的东风,为企业创新注入了源源不断的活力,然而,正如一枚硬币有正反两面,开源技术的广泛应用亦伴随着不容忽视的挑战。安全风险如影随形,…

Unity3D开发之2019.4.5f1版本IPointerClickHandler Bug

实际代码测试ui物体挂载的脚本里: 如果实现IPointerDownHandler和IPointerClickHandler接口,则会触发OnPointerClick和OnPointerDown函数调用。如果只实现IPointerClickHandler接口,则不会触发OnPointerClick函数调用。如果只实现IPointerDo…

从 .NET Framework 升级到 .NET 8 后 SignalR 问题处理与解决方案

随着 .NET Framework 向 .NET 8 的迁移,许多开发者在使用 SignalR 时遇到了一些前后端连接、配置、调用等方面的问题。尤其是在处理 SignalR 实时通信功能时,升级后的一些兼容性问题可能导致应用程序无法正常工作。本文将介绍在从 .NET Framework 升级到…

STM32 简介

STM32 简介 1. STM32性能2. STM32命名规则3. STM32分类4. 传统嵌入式方向 1. STM32性能 STM32 的优异性体现在如下几个方面: 超低的价格。8 位机的价格,32 位机的性能,是 STM32 最大的优势。超多的外设。STM32 拥有包括:FMC、TIME…

安全实验作业

一 拓扑图 二 要求 1、R4为ISP,其上只能配置IP地址;R4与其他所有直连设备间均使用共有IP 2、R3-R5-R6-R7为MGRE环境,R3为中心站点; 3、整个OSPF环境IP基于172.16.0.0/16划分; 4、所有设备均可访问R4的环回&#x…

CTRL: 一种用于可控生成的条件Transformer语言模型

CTRL: 一种用于可控生成的条件Transformer语言模型 摘要 大规模语言模型展现了令人瞩目的文本生成能力,但用户难以轻易控制生成文本的特定方面。我们发布了CTRL,一个拥有16.3亿参数的条件Transformer语言模型,它通过控制代码进行训练&#…

@emotion/styled / styled-components创建带有样式的 React 组件

一、安装依赖 npm install emotion/styled styled-components 二、使用 import styled from emotion/styled; import styled from styled-components;// 创建一个带样式的按钮 const StyledButton styled.buttonbackground-color: #4caf50;color: white;padding: 10px 20px…