Javascript 如何让clientX和clientY在我的;拖拽;Firefox上的事件处理程序?

Javascript 如何让clientX和clientY在我的;拖拽;Firefox上的事件处理程序?,javascript,events,drag-and-drop,firefox-3,Javascript,Events,Drag And Drop,Firefox 3,Mozilla firefox 3.x在收听“ondrag”事件时似乎有一个bug。事件对象不报告正在拖动的对象的位置,clientX、clientY和其他屏幕偏移都设置为零。这是一个相当大的问题,因为我想在拖动元素的基础上创建一个代理元素,并使用clientX和clientY来调整其位置 我知道HTML5中有一些很酷的东西,比如setDragImage,但我想为浏览器之间的本地DD提供一个通用的抽象 错误代码: document.addEventListener('drag', functio

Mozilla firefox 3.x在收听“ondrag”事件时似乎有一个bug。事件对象不报告正在拖动的对象的位置,clientX、clientY和其他屏幕偏移都设置为零。这是一个相当大的问题,因为我想在拖动元素的基础上创建一个代理元素,并使用clientX和clientY来调整其位置

我知道HTML5中有一些很酷的东西,比如setDragImage,但我想为浏览器之间的本地DD提供一个通用的抽象

错误代码:

document.addEventListener('drag', function(e) {
    console.log(e.clientX); // always Zero
}, false);
注: 此问题不会发生在其他事件(dragstart、dragover)上,并且在拖动某个事件时无法捕获mousemove事件


请帮忙

HTML 5中的拖动事件在当今的浏览器中无法完全正常工作。要模拟拖放情况,应使用:

  • 添加onmousedown事件,将var设置为true
  • 添加onmouseup事件,将var设置为false
  • 添加onmousemove事件,检查该变量是否为true,如果为true,则根据坐标移动div
  • 这对我来说一直很有效。如果您遇到任何问题,请再次联系,我可以提供一些例子

    祝你好运

    我知道周围有很酷的东西 比如HTML5中的SetDragage,但是我 想要提供一个通用的抽象吗 用于浏览器之间的本机DD

    但是为什么要这样做呢,难道没有像&这样的库可用于跨浏览器拖放吗

    或者,如果您想要实现自己的DD库,您可以利用它们的方法或扩展它们,因为这两个库都遵循面向对象的范例


    这将节省很多时间。

    我找到了一个解决方案,我在文档级别为“dragover”事件设置了一个侦听器,现在我获得了正确的X和Y属性,可以通过全局共享对象公开。

    JQuery和Prototype只提供了模拟的D&D,这不是我想要的,原生DD比任何其他模拟解决方案都更加健壮和快速。您可以使用José提供的答案。一旦我有时间,我也会尝试找出一些与此相关的东西。我找到了一个解决方案,我在文档级别的“dragover”事件上放置了一个侦听器,现在我得到了正确的X和Y属性,我可以通过一个全局共享对象公开。在我看来,Firefox 10也出现了同样的错误。pageX和其他坐标属性也是如此。如果它不应该是这个事件的一部分,它应该是未定义的,而不是零,对吗?这很烦人。很遗憾听到您不得不将
    dragover
    事件用作黑客攻击,但至少这是可行的