HarmonyOS 鸿蒙Next api 12上,this.controller.accessBackward() 返回值一直返回false

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

HarmonyOS 鸿蒙Next api 12上,this.controller.accessBackward() 返回值一直返回false 判断当前网页是否可以返回方法一直返回false

2 回复

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

建议在setCustomUserAgent方法后,调用loadUrl,且使用onControllerAttached替换onLoadIntercept进行applyCustomUserAgent方法的调用,参考demo如下:

import { webview } from '@kit.ArkWeb'

@Entry
@Component
export struct PageWeb {
  readonly webUrl: string | Resource = 'www.baidu.com'
  readonly controller: WebviewController = new webview.WebviewController()
  userAgentAlreadySet: boolean = false
  @State customUserAgent?: string = undefined

  build() {
    if (this.customUserAgent){
      Web({ src:'', controller: this.controller })
        .size({ width: '100%', height: '100%' })
        .javaScriptAccess(true)
        .fileAccess(true)
        .domStorageAccess(true)
        .databaseAccess(true)
        .mixedMode(MixedMode.Compatible)
        .zoomAccess(true)
        .geolocationAccess(true)
        .multiWindowAccess(false)
        .overviewModeAccess(false)
        .darkMode(WebDarkMode.Auto)
        .pinchSmooth(true)
        .onControllerAttached(() => {
          this.applyCustomUserAgent()
        })}
  }

  aboutToAppear(): void {
    // 模拟异步构建 customUserAgent 过程
    setTimeout(() => this.customUserAgent = 'ua/value', 200)
  }

  applyCustomUserAgent(): void {
    if (this.userAgentAlreadySet || !this.customUserAgent) return
    this.userAgentAlreadySet = true
    let defaultUserAgent = this.controller.getUserAgent()
    this.controller.setCustomUserAgent(defaultUserAgent + ' ' + this.customUserAgent)
    this.controller.loadUrl(this.webUrl)
  }

  onBackPress(): boolean | void {
    if (this.controller.accessBackward()) {
      this.controller.backward()
      return true
    }
  }
}

更多关于HarmonyOS 鸿蒙Next api 12上,this.controller.accessBackward() 返回值一直返回false的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next API 12上,this.controller.accessBackward() 方法返回值一直为 false,这通常意味着该方法的执行条件未满足或当前上下文不允许后退操作。

  1. 检查权限:首先确认你的应用是否已经获得了执行后退操作所需的权限。鸿蒙系统对于某些系统级操作有严格的权限控制,确保你的应用已在manifest文件中声明了必要的权限。

  2. 上下文状态:accessBackward() 方法可能依赖于特定的上下文状态,例如当前页面或视图是否允许后退。如果应用处于首页或没有前一个页面可供返回,该方法自然会返回 false

  3. API限制:确认你使用的API版本是否支持该方法的预期行为。有时API的更新会改变方法的行为或增加新的限制条件。

  4. 调试与日志:使用鸿蒙提供的调试工具查看详细的日志信息,以获取更多关于为什么 accessBackward() 返回 false 的线索。

  5. 文档与示例:查阅鸿蒙官方文档或示例代码,了解 accessBackward() 方法的具体使用场景和限制。

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

回到顶部