【发布时间】:2009-05-20 11:04:13
【问题描述】:
Mozilla Firefox 3.x 在监听“ondrag”事件时似乎有一个错误。事件对象不报告被拖动对象的位置,clientX、clientY等屏幕偏移量均设置为零。
这很成问题,因为我想根据被拖动的元素制作一个代理元素,当然还要使用clientX 和clientY 来调整其位置。
我知道有一些很酷的东西,例如 HTML5 中的 setDragImage,但我想为浏览器之间的原生 DD 提供通用抽象。
错误代码:
document.addEventListener('drag', function(e) {
console.log(e.clientX); // always Zero
}, false);
注意:
此问题不会发生在其他事件(dragstart、dragover)上,并且在拖动某些东西时无法捕获mousemove 事件。
【问题讨论】:
-
+1 表示您留下的评论。您可以使用 José 提供的答案。一旦有时间,我也会尝试找出与此相关的内容。
-
我找到了一个解决方案,我在文档级别的“dragover”事件上放置了一个侦听器,现在我获得了可以通过全局共享对象公开的正确 X 和 Y 属性。
-
相同的错误(在我看来)通过 Firefox 10 出现。pageX 和其他坐标属性也是如此。如果它不应该是这个事件的一部分,它应该是未定义的,而不是零,对吧?这很烦人。很遗憾听到您必须使用
dragover事件作为黑客,但至少它确实有效
标签: javascript events drag-and-drop firefox-3