文档章节

HarmonyOS 管理页面跳转及浏览记录导航

HarmonyOS开发者
 HarmonyOS开发者
发布于 09/19 18:01
字数 700
阅读 388
收藏 0

历史记录导航

使用者在前端页面点击网页中的链接时,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 发布!

HarmonyOS开发者
粉丝 0
博文 167
码字总数 60111
作品 0
深圳
私信 提问
加载中
点击引领话题?
1行代码,提取Word中的图片

大家好,这里是程序员晚枫。 今天给大家分享一个读者(逍遥土)开发的功能:从word里提取图片。 代码 该功能已经集成到poword这个库里了,下载命令: pip install poword -U 代码如下: im...

Python自动化办公社区
今天
43
0
TiDB 7.x 源码编译之 TiUP 篇

作者: ShawnYan 原文来源:https://tidb.net/blog/1970f2ba 引言 前文 TiDB 源码编译之 PD/TiDB Dashboard 篇 演示了如何编译 PD 和 TiDB Dashboard 组件,本文继续谈谈 TiUP,对于 TiUP 组...

TiDB社区干货传送门
08/08
21
0
华为回应卫星电话造假;任正非:苹果是华为的老师;波兰一公司聘请人工智能 CEO:24 小时待命,全年无休 | EA周报

EA周报 2023年9月22日 每个星期1分钟,元宝带你喝一杯IT人的浓缩咖啡,了解天下事、掌握IT核心技术。 周报看点 1、华为正式发文:靳玉志接任 BU CEO,余承东升任董事长 2、印度产 iPhone 被指...

EAWorld
前天
69
0
在Oracle中,在sqlplus下调用pl/sql过程的方法是?

在Oracle中,在sqlplus下调用pl/sql过程的方法是? A、使用过程名 B、使用call C、使用run D、使用exec ?点此立即答题,最高可领10墨值 戳阅读原文,立即参与 本文分享自微信公众号 - 墨天...

墨天轮
09/20
22
0
地理信息数据处理的“完美搭档”来啦!

当前,在政府、军事、城市规划、自然资源管理等领域,企业对地理信息的需求迅速增加,人们需要更有效地管理和分析地理数据,以进行决策和规划。在此背景下,“GIS 基础平台”应运而生,它通常...

涛思数据TDengine
09/21
26
0

没有更多内容

加载失败,请刷新页面

加载更多

{{formatHtml(o.title)}}

{{i}}-{{formatHtml(o.content)}}

{{o.author.name}}
{{o.pubDate | formatDate}}
{{o.viewCount | bigNumberTransform}}
{{o.replyCount | bigNumberTransform}}

暂无文章

便宜云服务器
登录后可查看更多优质内容
返回顶部
顶部
http://www.vxiaotou.com