HarmonyOS 管理页面跳转及浏览记录导航
历史记录导航
使用者在前端页面点击网页中的链接时,Web组件默认会自动打开并加载目标网址。当前端页面替换为新的加载链接时,会自动记录已经访问的网页地址。可以通过forward()和backward()接口向前/向后浏览上一个/下一个历史记录。
在下面的示例中,点击应用的按钮来触发前端页面的后退操作。
// xxx.ets import web_webview from '@ohos.web.webview'; @Entry @Component struct WebComponent { webviewController: web_webview.WebviewController = new web_webview.WebviewController(); build() { Column() { Button('loadData') .onClick(() => { if (this.webviewController.accessBackward()) { this.webviewController.backward(); return true; } }) Web({ src: 'https://www.example.com/cn/', controller: this.webviewController}) } } }
如果存在历史记录,accessBackward()接口会返回true。同样,您可以使用accessForward()接口检查是否存在前进的历史记录。如果您不执行检查,那么当用户浏览到历史记录的末尾时,调用forward()和backward()接口时将不执行任何操作。
页面跳转
当点击网页中的链接需要跳转到应用内其他页面时,可以通过使用Web组件的onUrlLoadIntercept()接口来实现。
在下面的示例中,应用首页Index.ets加载前端页面route.html,在前端route.html页面点击超链接,可跳转到应用的ProfilePage.ets页面。
● 应用首页index.ets页面代码。
// index.ets import web_webview from '@ohos.web.webview'; import router from '@ohos.router'; @Entry @Component struct WebComponent { webviewController: web_webview.WebviewController = new web_webview.WebviewController(); build() { Column() { Web({ src: $rawfile('route.html'), controller: this.webviewController }) .onUrlLoadIntercept((event) => { let url: string = event.data as string; if (url.indexOf('native://') === 0) { // 跳转其他界面 router.pushUrl({ url:url.substring(9) }) return true; } return false; }) } } }
● route.html前端页面代码。
<!-- route.html --> <!DOCTYPE html> <html> <body> <div> <a href="native://pages/ProfilePage">个人中心</a> </div> </body> </html>
● 跳转页面ProfilePage.ets代码。
@Entry @Component struct ProfilePage { @State message: string = 'Hello World'; build() { Column() { Text(this.message) .fontSize(20) } } }
跨应用跳转
Web组件可以实现点击前端页面超链接跳转到其他应用。
在下面的示例中,点击call.html前端页面中的超连接,跳转到电话应用的拨号界面。
● 应用侧代码。
// xxx.ets import web_webview from '@ohos.web.webview'; import call from '@ohos.telephony.call'; @Entry @Component struct WebComponent { webviewController: web_webview.WebviewController = new web_webview.WebviewController(); build() { Column() { Web({ src: $rawfile('xxx.html'), controller: this.webviewController}) .onUrlLoadIntercept((event) => { let url: string = event.data as string; // 判断链接是否为拨号链接 if (url.indexOf('tel://') === 0) { // 跳转拨号界面 call.makeCall(url.substring(6), (err) => { if (!err) { console.info('make call succeeded.'); } else { console.info('make call fail, err is:' + JSON.stringify(err)); } }); return true; } return false; }) } } }
● 前端页面call.html代码。
<!-- call.html --> <!DOCTYPE html> <html> <body> <div> <a href="tel://xxx xxxx xxx">拨打电话</a> </div> </body> </html>
本文由博客一文多发平台 OpenWrite 发布!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Harmony Codelab样例—弹窗基本使用
一、介绍 本篇Codelab主要基于dialog和button组件,实现弹窗的几种自定义效果,具体效果有: 1. 警告弹窗,点击确认按钮弹窗关闭。 2. 确认弹窗,点击取消按钮或确认按钮,触发对应操作。 3. 加载弹窗,展示加载中效果。 4. 提示弹窗,支持用户输入内容,点击取消和确认按钮,触发对应操作。 5. 进度条弹窗,展示进度条以及百分比。 相关概念 dialog组件:自定义弹窗容器组件。 button组件:按钮组件。 完整示例 gitee源码地址 源码下载 弹窗基本使用(JS).zip 二、环境搭建 我们首先需要完成HarmonyOS开发环境搭建,可参照如下步骤进行。 软件要求 DevEco Studio版本:DevEco Studio 3.1 Release。 HarmonyOS SDK版本:API version 9。 硬件要求 设备类型:华为手机或运行在DevEco Studio上的华为手机设备模拟器。 HarmonyOS系统:3.1.0 Developer Release。 环境搭建 1. 安装DevEco Studio,详情请参考下载和安装软件...
- 下一篇
高性能+分布式,Python Parser 在量化因子计算场景中的应用
面向读者 有 Python 编程基础的 DolphinDB 初学者 本教程教学内容 如何在 DolphinDB 中用 Python 语言开发因子代码,并完成计算和入库存储 如何在 DolphinDB 中用 Python 语言创建各种不同频率的因子存储库表 如何在 DolphinDB 中用 Python 语言开发各种场景的因子计算代码 DolphinDB Python Parser (简称 Python Parser)是 Python 语言的一个 DolphinDB 实现。目前 Python Parser 支持了 Python 中最常用的语法,并兼容了 DolphinDB 部分独有的语法。通过 Python Parser,用户可以在 DolphinDB 支持的编程 IDE 中用 Python 语言编写脚本,然后提交给 DolphinDB Server 进行解析执行并得到结果。Python Parser 打破了全局解释锁(GIL, Global Interpreter Lock)的限制,能够方便地实现分布式并行计算。Python Parser 对 Python 语法的兼容,降低了用户上手 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2整合Redis,开启缓存,提高访问速度
- MySQL8.0.19开启GTID主从同步CentOS8