HarmonyOS 鸿蒙Next WebView.ScrollController 在用户触发了滚动,且在滚动未停止的时候调用了scrollTo,这个时候 scrollTo 会不生效,无法scrollTo 到预期的 offsetY 的地方

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

HarmonyOS 鸿蒙Next WebView.ScrollController 在用户触发了滚动,且在滚动未停止的时候调用了scrollTo,这个时候 scrollTo 会不生效,无法scrollTo 到预期的 offsetY 的地方 ScrollViewWebView.ScrollController 在用户触发了滚动,且在滚动未停止的时候调用了scrollTo,这个时候 scrollTo 会不生效,无法scrollTo 到预期的 offsetY 的地方

2 回复

使用scroll嵌套web组件,使用scroll的scrollTo进行跳转:

import { webview } from '@kit.ArkWeb';

@Entry
@Component
struct WebComponent {

  @State controller: webview.WebviewController = new webview.WebviewController();

  private scrollerForScroll: Scroller = new Scroller()

  build() {

    Column() {

      Button('跳转').onClick(()=>{

        console.info('点击跳转scrollTo')

        this.scrollerForScroll.scrollTo({ xOffset: 0, yOffset: 5000})

      })

      Scroll(this.scrollerForScroll){
        Web({ src: 'https://consumer.huawei.com/cn/', controller: this.controller ,renderMode:RenderMode.SYNC_RENDER})
          .layoutMode(WebLayoutMode.FIT_CONTENT)
          .domStorageAccess(true)
          .javaScriptAccess(true)
      }
    }
  }
}

更多关于HarmonyOS 鸿蒙Next WebView.ScrollController 在用户触发了滚动,且在滚动未停止的时候调用了scrollTo,这个时候 scrollTo 会不生效,无法scrollTo 到预期的 offsetY 的地方的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,当使用WebView的ScrollController时,如果在用户已经触发滚动且滚动尚未停止的情况下调用scrollTo方法,确实可能出现scrollTo不生效的问题。这是因为WebView的滚动状态管理在滚动过程中可能会覆盖外部调用的scrollTo指令。

具体来说,WebView的滚动是由其内部的滚动机制控制的,当用户进行滚动操作时,这个机制会接管滚动行为,直到滚动完全停止。如果在这个期间外部代码尝试改变滚动位置(如调用scrollTo),由于内部滚动机制还在运行,这个改变可能会被忽略或覆盖。

然而,这些方法的有效性取决于具体的应用场景和WebView的实现细节。如果问题依旧没法解决请联系官网客服,官网地址是

回到顶部