HarmonyOS 鸿蒙Next Refresh组件中加入webview,无法触发refresh操作

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

HarmonyOS 鸿蒙Next Refresh组件中加入webview,无法触发refresh操作 在refresh中 加入一个webview 和 text 。

只有在text上,下拉滑动,才会触发refresh,在webview中 无法触发refresh。 请问下该如何处理?

Refresh({
  refreshing: $$this.isRefreshing,
  offset: 120,
  friction: 100,
  builder: this.customRefreshComponent()
}) {
  Column()
  {
    Text('header!!!!!!!!!!!!')

    Web({
      src: 'http://www.baidu.com',
      controller: this.controller
    }).width('100%').height(130)

  }.height('100%')
}.height('100%')
.onStateChange((refreshStatus: RefreshStatus) => {
  EDULogger.d(TAG,'Refresh onStatueChange state is ' + refreshStatus)
})
.onRefreshing(() => {

})

更多关于HarmonyOS 鸿蒙Next Refresh组件中加入webview,无法触发refresh操作的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

web嵌套在refresh里下拉不支持刷新,可以使用PullToRefresh来实现下拉刷新、上拉加载 参考地址:https://gitee.com/openharmony-sig/PullToRefresh

import web_webview from '@ohos.web.webview'
import { PullToRefresh } from '@ohos/pulltorefresh'

@Entry
@Component
struct refreshWeb {
  @State dataArray: Array<string> = []
  @Builder
  getContentView() {
    Column() {
      Web({ src: $rawfile("index.html"), controller: this.controller })
    }
    .width('100%')
    .height('50%')
  }

  build() {
    Scroll(this.scroller) {
      PullToRefresh({
        // 必传项,列表组件所绑定的数据,不是列表传个空数据
        data: $dataArray,
        // 必传项,需绑定传入主体布局
        scroller: this.scroller,
        // 必传项,自定义主体布局
        customList: () => {
          // 一个用@Builder修饰过的UI方法,web组件定义在此@Builder
          this.getContentView();
        },
        // 可选项,下拉刷新回调
        onRefresh: () => {
          this.isRefreshing = true;
          return new Promise<(resolve, reject) => {
            setTimeout(() => {
              resolve('刷新成功');
              this.isRefreshing = false
              // this.controller.loadUrl($rawfile("indexA.html"))
            }, 2000);
          });
        },
      })
    }
    .width('100%')
    .height('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next Refresh组件中加入webview,无法触发refresh操作的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,如果在Next Refresh组件中加入webview后无法触发refresh操作,可能是由于webview与Refresh组件的事件交互存在问题。以下是一些可能的原因及解决方法:

  1. 事件拦截:检查webview是否拦截了下滑或上拉事件。在鸿蒙系统中,webview可能需要特别设置以允许这些事件传递给父组件。尝试调整webview的事件处理逻辑,确保刷新事件能够被正确识别并传递给Refresh组件。

  2. 布局层级:确认webview和Refresh组件的布局层级关系。如果webview覆盖了Refresh组件的触发区域,那么刷新操作将无法被触发。调整布局,确保Refresh组件的触发区域可见且未被遮挡。

  3. 组件属性:检查Refresh组件的属性设置,确保已正确配置刷新触发条件。同时,确认webview是否启用了某些可能影响事件传递的属性。

  4. 版本兼容性:检查所使用的鸿蒙系统版本是否与组件库版本兼容。在某些情况下,系统更新可能导致组件行为发生变化。

如果上述方法均无法解决问题,可能是组件内部存在bug或特定环境下的兼容性问题。此时,建议直接联系鸿蒙系统的官方技术支持团队进行进一步排查。

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

回到顶部