一个网页横向展示若干个 100x100 的链接方格,不换行,用 javascript 实现可以按住鼠标左右拖拽来实现内容的左右滚动。
https://jsfiddle.net/1r6k4b7n/现在的问题是,如果拖拽滚动后,松开鼠标会直接打开鼠标下方的链接
需求是如果进行拖拽则不会激活方格的链接。
在我之前的理解中,只需要在 mouseup 事件中加一个阻止事件冒泡即可实现:
const stopDragging = () => {
isDragging = false;
e.stopPropagation(); //阻止事件冒泡
e.preventDefault(); //或者加这个,阻止默认事件
}
但事实不是如此,仍然会在拖拽后激活链接。
然后针对这个问题与 ChatGPT 进行了长时间对话,ChatGPT 给的方案就是在拖拽时移除所有 a 的 click 事件,然后 mouseup 后加回去,但实际的情况是打开链接是在 mouseup 后激活的,所以无效。
所以求助各位大神,就是拖拽滚动松开鼠标后不要打开链接,应该如何优雅的实现?
例子代码非常简单,放在:
https://jsfiddle.net/1r6k4b7n/
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/999218
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.