FireFox onDrag Pagex PageY总是为零;(

rup*_*pps 5 firefox events drag-and-drop

嗨,我正在实现一个可视化编辑器,允许用户将图像拖到页面上,并将这些先前拖动的图像中的其他图像拖动(类似于"添加另一个图像").

我基本上只需要在拖动过程中使用鼠标坐标:元素hiliting等...我根据这些坐标使用自定义函数.

问题是,在Webkit上,我可以使用event.clientX和event.clientY来获取它们,在Firefox(v.16.0.1 OSX)下,他们的'对应'pageX和pageY在拖动过程中总是为零.

但是,在mouseMove期间它们不是零.

像我一样聪明,我做了一个

$(document).on("mouseMove",function(e){_ PX = e.pageX, _PY = e.pageY})

总是有最新的PageX和PageY所以我可以在onDrag处理程序中使用它们但是......

OnMouseMove在拖放操作期间不会触发:( :(

在DnD期间我有什么办法可以获得鼠标X和Y吗?我不想让我的代码混乱,因为它应该(并且已经确实)在不同的平台上工作,但是在Firefox上.

任何人都可以给我一些指示吗?Thanx提前.

rup*_*pps 6

对不起,我在这里找到了答案:

如何在Firefox上的"拖动"事件处理程序中使用clientX和clientY?

我已经解决了这个问题:

(___NODRAGEVENT=$.browser.mozilla) 
    && $(document)
            .on("dragover",function(e) {
                e=e.originalEvent; 
                ___PAGEX=e.clientX||e.pageX; 
                ___PAGEY=e.clientY||e.pageY;
             });
Run Code Online (Sandbox Code Playgroud)

我真的很惊讶和困惑,onDragOver包括clientX和clientY.为什么****不会将它们填充到ondrag事件中?

  • 这个答案在 2021 年仍然有效,Firefox 团队没有任何改变 (4认同)