uni-app zero-markdown-view(markdown解析) - zerojs touchmove 和 touchend 事件触发不稳定

发布于 1周前 作者 sinazl 来自 Uni-App

uni-app zero-markdown-view(markdown解析) - zerojs touchmove 和 touchend 事件触发不稳定

微信小程序平台上使用 zero-markdown-view,在流式输出时,touchmove 和 touchend 的事件触发不稳定

@touchstart="onTouchStart"  
@touchmove="onTouchMove"  
@touchend="onTouchEnd"

流式输出时滑动时 onTouchMove 和 touchend 有是会触发,时而不触发。
流式输出结束后就能稳定触发

1 回复

在处理 uni-app 中的 zero-markdown-view 组件时,如果遇到 touchmovetouchend 事件触发不稳定的问题,通常是由于事件冒泡、事件捕获、或者触摸事件处理不当导致的。以下是一个基本的代码示例,展示了如何在 uni-app 中正确处理和调试这些触摸事件。

首先,确保你已经安装了 zero-markdown-view 组件,并在页面中正确引用。接下来,我们通过监听触摸事件来调试和优化事件处理。

1. 页面模板

<template>
  <view class="container">
    <zero-markdown-view :content="markdownContent" @touchmove="handleTouchMove" @touchend="handleTouchEnd"></zero-markdown-view>
  </view>
</template>

2. 脚本部分

<script>
export default {
  data() {
    return {
      markdownContent: '# Hello, Markdown!'
    };
  },
  methods: {
    handleTouchMove(event) {
      console.log('Touch Move', event);
      // 可以在这里添加你的逻辑,比如阻止默认行为或冒泡
      // event.stopPropagation(); // 阻止事件冒泡
      // event.preventDefault();  // 阻止默认行为
    },
    handleTouchEnd(event) {
      console.log('Touch End', event);
      // 同样,可以在这里添加你的逻辑
    }
  }
};
</script>

3. 样式部分

<style>
.container {
  height: 100vh;
  overflow-y: scroll; /* 确保容器可以滚动,以触发 touchmove 事件 */
}

zero-markdown-view {
  width: 100%;
  height: 100%;
  /* 其他样式可以根据需要调整 */
}
</style>

4. 调试和优化

  • 检查事件冒泡:如果事件处理函数被频繁触发,尝试使用 event.stopPropagation() 阻止事件冒泡。
  • 检查滚动冲突:如果 zero-markdown-view 内部有滚动条,确保没有与外层容器的滚动事件冲突。
  • 使用事件捕获:在极端情况下,如果事件冒泡和捕获仍然无法解决问题,可以考虑使用事件捕获模式监听事件(addEventListener 的第三个参数设置为 true)。

5. 注意事项

  • 确保 zero-markdown-view 组件内部没有自己处理触摸事件,否则可能会导致外部监听器无法正常工作。
  • 如果 zero-markdown-view 是一个自定义组件,检查其内部是否有阻止事件冒泡或默认行为的代码。

通过上述步骤,你应该能够更稳定和可靠地处理 touchmovetouchend 事件。如果问题依旧存在,可能需要更深入地检查 zero-markdown-view 组件的实现细节。

回到顶部