【发布时间】:2021-08-10 11:36:03
【问题描述】:
我在 codesandbox.io (https://codesandbox.io/s/seekbar-with-thumbnail-and-time-tooltips-forked-h5x8k?file=/src/Progressbar.tsx) 上创建了一个视频播放器进度条,它在 chrome 上运行良好,但在其他浏览器上却不行。
特别是在 Firefox 上,进度条滑块不起作用,dragStart 和 dragEnd 事件触发得很好,但 onDrag 事件没有触发。
onDrag 事件对于 clientX clientY 等具有所有错误的值。
经过一番谷歌搜索后,我发现了有关 dataTransfer 并将其添加到拖动启动事件处理程序...
event.dataTransfer.setData("application/x-moz-node", event.target.id);
和我的 dragEnd 事件处理程序上的 event.preventDefault(),但仍然相同。
有人可以帮我吗?
整个代码都可以在我上面粘贴的代码框链接中找到。
编辑:ON DRAG 事件正在触发,但以下属性每次都相同
screenX: 0
screenY: 0
clientX: 0
clientY: 0
pageX: 0
pageY: 0
导致问题。为什么这一切都是 0?
【问题讨论】:
-
您确定没有触发
drag事件吗?虽然clientX为 0 并且因此没有通过if条件,但它对我来说已经被解雇了。 -
嘿@DanMacák 你是对的,拖动事件正在触发,但所有值(clientX clientY 等)都是 0。那么如何在 firefox 中实现滑块?这么多 UI 库中已经有这么多滑块了……你知道吗?
-
我的猜测是库使用基于指针而不是基于拖动的方法。让我在答案中对此进行扩展。
标签: javascript html css reactjs