火狐3.x似乎有一种错误的时候听到"ondrag"的事件。对象的事件没有报告对象的位置被拖动,clientx,clientY和其他偏移的屏幕都设置为零。这是很成问题,因为我想做一个代理元件基于元件被拖动和使用的课程,将clientx和clientY调整其位置。

我知道,有很酷的东西周围,例如setDragImage在HTML5但我想提供一般的抽象地DD之间的浏览器。

错误代码:

document.addEventListener('drag', function(e) {
    console.log(e.clientX); // always Zero
}, false);

注:这个问题不会发生在其他事件(dragstart,dragover)和鼠标移动事件无法被捕捉的话,拖的东西.

请帮帮忙!

有帮助吗?

解决方案

我发现了一个解决方案,我已经放置在收听者的“的dragover”事件在文档级别,现在我得到正确的X和Y属性,我可以通过一个全局共享的对象暴露。

其他提示

HTML 5 中的拖动事件在当今的浏览器中尚未完全发挥作用。要模拟拖放情况,您应该使用:

  1. 添加 onmousedown 事件,将 var 设置为 true。
  2. 添加 onmouseup 事件,并将 var 设置为 false。
  3. 添加一个 onmousemove 事件,检查该 var 是否为 true,如果是,则根据坐标移动您的 div。

这一直对我有用。如果您遇到任何问题,请再次联系,我可以提供一些示例。

祝你好运!

我知道,有很酷的东西周围 如setDragImage在HTML5但我 希望提供一般的抽象 对于本机DD之间的浏览器。

但是,为什么做这样的事情,并不存在库喜欢 JQuery & 原型 可用于交叉浏览器拖?

或者如果你想要实现一个DD库的你自己,可以采取帮助他们的方法或延长他们,因为这两个图书馆下面的面向对象的范例。

这将节省很多时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top