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

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

if (this.controller.accessBackward()) {
  this.controller.backward()
} else {
  Router.back()
}

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

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

HarmonyOS
1天前
浏览
收藏 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
    })
  }
}
}

可以参考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
微信
回复
1天前
相关问题
Web调用url怎么重定向
221浏览 • 1回复 待解决
Web中如何判断是否发生重定向
1006浏览 • 1回复 待解决
HarmonyOS page中如何获取返回事件?
471浏览 • 1回复 待解决
HarmonyOS requestInStream重定向问题
36浏览 • 1回复 待解决
HarmonyOS ArkWeb网页重定向问题
57浏览 • 1回复 待解决
CustomDialogController禁用返回
357浏览 • 1回复 待解决
HarmonyOS 物理返回监听
80浏览 • 1回复 待解决
如何屏蔽系统返回
452浏览 • 1回复 待解决
HarmonyOS Web组件拦截返回按钮
32浏览 • 1回复 待解决
HarmonyOS 监听手机物理返回
44浏览 • 1回复 待解决
HarmonyOS 如何监听物理返回
39浏览 • 1回复 待解决
HarmonyOS web组件拦截返回手势
23浏览 • 1回复 待解决
HarmonyOS 返回强制监听及重写
906浏览 • 1回复 待解决
HarmonyOS 弹窗中如何拦截返回
48浏览 • 1回复 待解决
HarmonyOS 全模态怎么拦截系统返回
59浏览 • 1回复 待解决