HarmonyOS 鸿蒙Next webview H5 原生手势返回怎么写啊,目前直接回到桌面了

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

HarmonyOS 鸿蒙Next webview H5 原生手势返回怎么写啊,目前直接回到桌面了

请教一下 webview H5 的原生手势返回怎么写啊 , 目前直接回到桌面了

4 回复

在struct下,重写onBackPress

  onBackPress(): boolean | void {
    return true
  }

参考:https://developer.huawei.com/consumer/cn/forum/topic/0201146243265408284?fid=0109140870620153026

我想让webview里面的H5能正常返回,加了这个函数后,都没法返回了

        src: MyHost.getWebHttp(this.loadUrl),
        controller: this.controller
      })
        .onLoadIntercept((event) => {

          if (event) {
            let url = event.data.getRequestUrl();
            console.log(`onLoadIntercept url:${url}`); 
             if(url是xxx){
                //拦截到url后,
                1、可以 router.back()返回上一页
                2、可以  this.controller.backward()
 回退h5返回重定向之前的页面 参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-webview-0000001813416660#ZH-CN_TOPIC_0000001813416660__backwardh+-/$%-+                return true;
              }
            }

          }
          return false;
        })

在HarmonyOS的WebView中实现原生手势返回(如侧滑返回),通常需要在你的页面或Fragment中拦截并处理系统的侧滑事件。可以通过重写onTouchEventdispatchTouchEvent方法来实现。对于WebView,你可能需要设置一个WebChromeClientWebViewClient来辅助处理,但直接控制侧滑返回通常不直接通过这些客户端实现。

确保你的页面或Activity已经启用了侧滑返回(如使用DrawerLayout等)。对于WebView内部的内容,可能需要JavaScript接口来辅助实现更复杂的逻辑。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部