问一下,WebView有没有长按事件? HarmonyOS 鸿蒙Next

问一下,WebView有没有长按事件? HarmonyOS 鸿蒙Next 【设备信息】Mate60

【API版本】Api13

【DevEco Studio版本】5.0.7.200

【问题描述】

问一下,WebView有没有长按事件?是针对整个Html进行长按事件(不是争对Html中的某个图片或链接长按),要实现长按要怎么写?

2 回复

可以参考下面的demo,看能否满足要求:

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

@Component
struct Index {
  controller: webview.WebviewController = new webview.WebviewController();

  build() {
    Column() {
      Web({ src: $rawfile('index.html'), controller: this.controller })
        .domStorageAccess(true)
        .gesture(
          LongPressGesture({ repeat: true, duration: 400 })
            .onAction((event: GestureEvent) => {
              promptAction.showToast({
                message: '长按',
                duration: 2000
              });
            })// 长按动作一结束触发
            .onActionEnd(() => {
              promptAction.showToast({
                message: '长按结束',
                duration: 2000
              });
            })
        )
    }
    .height('100%')
    .width('100%')
  }
}

index.html:

<!DOCTYPE html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Open New Window Example</title>
</head>
<body>
<p>sadadasdadas</p>
<p>sadadasdadas</p>
<p>sadadasdadas</p>
<p>sadadasdadas</p>
<p>sadadasdadas</p>
<p>sadadasdadas</p>
<p>sadadasdadas</p>
<p>sadadasdadas</p>
<p>sadadasdadas</p>
<script>
// 禁用长按手势的函数
function disableLongPress() {
  // 禁用上下文菜单
  document.addEventListener('contextmenu', (e) => e.preventDefault());
  // 以及其他相关操作
  document.addEventListener('selectstart', (e) => e.preventDefault());
}
// 页面加载完成后执行禁用函数
window.onload = function() {
  disableLongPress();
};
</script>
</body>
</html>

更多关于问一下,WebView有没有长按事件? HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)中,WebView组件支持长按事件。鸿蒙的WebView组件继承自ComponentContainer,具备处理触摸事件的能力。通过监听WebView的触摸事件,可以检测到长按操作。开发者可以通过重写onTouchEvent方法或使用GestureDetector来捕获长按事件。具体实现时,可以结合鸿蒙的事件处理机制,确保在WebView中长按触发相应的回调函数。

回到顶部