HarmonyOS 鸿蒙Next WebviewController accessBackward 返回false

发布于 1周前 作者 zlyuanteng 最后一次编辑是 5天前 来自 鸿蒙OS

使用webview加载远程页面,页面上点击发生跳转,onPageEnd中URL发生变化,但是调用this.controller.accessBackward(),返回false,不能回退。 代码如下:

Stack() {
  Web({ src: this.link, controller: this.controller })
    .onControllerAttached(() => {
      let userAgent = 'Android' + this.controller.getUserAgent()
      this.controller.setCustomUserAgent(userAgent);
    })
    .javaScriptAccess(true)
    .onlineImageAccess(true)
    .mixedMode(MixedMode.All)
    .zoomAccess(true)
    .domStorageAccess(true)
    .overviewModeAccess(true)
    .onPageBegin((event) => {
      if (event) {
        console.log('onPageBegin url:' + event.url)
      }
    })
    .onProgressChange((event) => {
      if (event) {
        console.log('onProgressChange:' + event.newProgress)
      }
    })
    .onPageEnd((event) => {
      if (event) {
        console.log('onPageEnd url:' + event.url)
        this.setBackViewVisibility(event.url)
      }
    })
    .onTitleReceive((event) => {
      if (event) {
        console.log('onTitleReceive title:' + event.title)
      }
    })
    .onResourceLoad((event) => {
      console.log('onResourceLoad: ' + event.url)
    })
  Stack() {
    Row().width(32).height(32).backgroundColor($r('app.color.C2')).borderRadius(50)
    Image($r('app.media.icon_paper_back_new')).width(24).height(24)
  }
  .width(60)
  .height(60)
  .margin({ bottom: 30 })
  .alignContent(Alignment.Center)
  .visibility(this.backViewVisibility)
  .onClick(() => {
    console.log(`clickBack`)
    if (this.controller.accessBackward()) {
      console.log(`accessBackward`);
      this.controller.backward()
    }
  })
}.alignContent(Alignment.BottomStart)


更多关于HarmonyOS 鸿蒙Next WebviewController accessBackward 返回false的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
setCustomUserAgent设置后与web页面的跳转时序是web跳转后才设置UserAgent,这就导致页面跳转了但新agent关联的页面堆栈数仍只有一个,webviewController.accessBackward()总是返回false。
参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-webview-V13#setcustomuseragent10

更多关于HarmonyOS 鸿蒙Next WebviewController accessBackward 返回false的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,针对WebviewControlleraccessBackward方法返回false的问题,通常这表示Web视图控制器不允许向后导航(即浏览历史记录中的上一页)。这种情况可能由几个因素引起:

  1. 浏览历史为空:如果Web视图尚未加载任何页面或已经清空了浏览历史,调用accessBackward自然会返回false

  2. 配置限制:开发者可能在Web视图的配置中禁用了向后导航的功能。

  3. 页面限制:某些页面可能通过JavaScript或其他技术手段阻止了浏览器的后退操作。

  4. 生命周期状态:在Web视图的特定生命周期状态下,向后导航可能被禁用。

  5. 内存管理:系统可能出于内存管理考虑,自动清理了旧的浏览历史记录。

要解决这个问题,你可以检查以下几点:

  • 确保Web视图已经加载并显示了一个或多个页面。
  • 查阅Web视图的配置,确认是否启用了向后导航。
  • 检查加载的页面是否有脚本阻止后退操作。
  • 监控Web视图的生命周期状态,确保在合适的时机调用accessBackward

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部