HarmonyOS webview自定义长按手势事件?

webview长按会显示"复制/全选"等菜单操作栏,现在需要拦截长按事件,不要显示菜单操作栏,并且响应自定义长按事件。

阅读 701
1 个回答

参考示例demo:

Web({src:$rawfile('index2.html'), controller: this.webController})
  .domStorageAccess(true)
  .gesture(
    LongPressGesture({ repeat: true,duration:400 })
      .onAction((event: GestureEvent) => {
        promptAction.showToast({
          message: '长按',
          duration: 2000
        });
      })
        // 长按动作一结束触发
      .onActionEnd(() => {
        promptAction.showToast({
          message: '长按结束',
          duration: 2000
        });
      })
  )
index.html
<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>
  </body>
  </html>
  <script>
  // 禁用长按手势的函数
  function disableLongPress() {
    // 禁用上下文菜单
    document.addEventListener('contextmenu', (e) => e.preventDefault());
    document.addEventListener('selectstart', (e) =&gt; e.preventDefault());
  }
// 页面加载完成后执行禁用函数
window.onload = function() {
  disableLongPress();
};
</script>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进