HarmonyOS 带有web组件的page,重定向后,返回键无法返回

我开发了一个page,里面有一个返回键,和一个web组件。其中,返回键的逻辑是:

if (this.controller.accessBackward()) {
  this.controller.backward()
} else {
  Router.back()
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

意思是如果web组件可以backward,就返回到上一层页面,不行就关闭这个page。

这样有个问题,如果这个web组件打开一个链接,一开始就重定向了,那再按返回键,就会无限重定向,有没有什么api是可以判断这类情况的?

HarmonyOS
2024-12-25 15:14:23
875浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
superinsect

可以进行重定向监听,类似这样

import web_webview from ‘@ohos.web.webview’;

@Entry
@Component
struct WebComponent {
  controller: web_webview.WebviewController = new web_webview.WebviewController();
  @State loadUrl:string|null=null
  build() {
    Column() {

      Web({ src: ‘https://xxx’, controller: this.controller })
        .onLoadIntercept((event) => {

        if(this.loadUrl==null)//判断首次加载
        {
        console.log(“loginfo:首次加载”)
        this.loadUrl=event.data.getRequestUrl()
      }

      if(this.loadUrl!=event.data.getRequestUrl()&&this.loadUrl!=null)//非首次加载判断
      {
        console.log(“loginfo:两次url不一样—上次加载url:”+(this.loadUrl==null?‘null’:this.loadUrl)+"----本次加载URL:"+event.data.getRequestUrl())//打印加载url 可以删掉

        this.loadUrl=event.data.getRequestUrl()//将此次加载路径保存入变量中,为下次对比做参照

        if(event.data.isRedirect())//判断服务器重定向
        {
          console.log(“loginfo:服务器重定向”)
        }else{
          if(event.data.isRequestGesture())//判断是否发生了交互,未交互就跳转认定为代码重定向,发生了交互认定为正常页面跳转
          {
            console.log(“loginfo:页面跳转”)//,用户交互发生的页面跳转属于正常页面跳转,不属于重定向
          }else{
            console.log(“loginfo:客户端页面代码重定向”)//若未发生交互,直接进行页面跳转则认定发生了重定向
          }
        }
      }else{
        console.log(“两次url相同,未生重定向”)//两次url相同,为发生重定向
      }
      return false
    })
  }
}
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.

可以参考web的onLoadIntercept API

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#onloadintercept10

和onInterceptRequest拦截api

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#oninterceptrequest9

分享
微博
QQ
微信
回复
2024-12-25 18:03:24


相关问题
HarmonyOS flutter_webview重定向无法返回
913浏览 • 1回复 待解决
HarmonyOS Web组件如何添加重定向监听
777浏览 • 1回复 待解决
Web调用url怎么重定向
860浏览 • 1回复 待解决
HarmonyOS 怎么在page中监听返回
663浏览 • 1回复 待解决
Web中如何判断是否发生重定向
1630浏览 • 1回复 待解决
HarmonyOS page中如何获取返回事件?
1020浏览 • 1回复 待解决
HarmonyOS hilog重定向文件
800浏览 • 1回复 待解决
HarmonyOS requestInStream重定向问题
689浏览 • 1回复 待解决
HarmonyOS http请求重定向处理
883浏览 • 1回复 待解决
HarmonyOS ArkWeb网页重定向问题
682浏览 • 1回复 待解决
CustomDialogController禁用返回
964浏览 • 1回复 待解决
HarmonyOS Web组件拦截返回按钮
790浏览 • 1回复 待解决
HarmonyOS 物理返回监听
783浏览 • 1回复 待解决
如何屏蔽系统返回
892浏览 • 1回复 待解决
HarmonyOS 如何监听物理返回
675浏览 • 1回复 待解决
HarmonyOS 监听手机物理返回
579浏览 • 1回复 待解决
HarmonyOS web组件拦截返回手势
640浏览 • 1回复 待解决
HarmonyOS 返回强制监听及重写
1652浏览 • 1回复 待解决