为什么不在Firefox中使用JavaScript工作拖动图像?

时间:2012-06-14 13:01:15

标签: javascript firefox javascript-events drag-and-drop mouseevent

我正在使用下面的代码来拖动图片(#StndSoln1)。它完全适用于Chrome和所有,但不适用于Firefox。这里startDrag()是我附加到mousedown事件监听器的函数。请有人帮助我。

function initialFunction(){


document.getElementById("StndSoln1").addEventListener('mousedown',startDrag,false);
document.getElementById("StndSoln1").addEventListener('mousemove',drag,false);
document.getElementById("StndSoln1").addEventListener('mouseup',stopDrag,false);


}


function startDrag()

{

if (!moveFlag){


currentTraget=document.getElementById("StndSoln1");

offsetX=currentTraget.offsetLeft;
offsetY=currentTraget.offsetTop;
ImgPlaced=false;    
moveFlag=true;

x=window.event.clientX;
y=window.event.clientY; 

event.preventDefault();
}
}

   // Fn for drag the current target object...
  function drag(){

if (moveFlag && !ImgPlaced){    
    currentTraget.style.left=(offsetX+window.event.clientX-x)+"px";
    currentTraget.style.top=(offsetY+window.event.clientY-y)+"px";
}
}

1 个答案:

答案 0 :(得分:2)

我实际上遇到了类似的问题,所以即使没有您正在使用的代码,我也可以尝试提供帮助。

请参阅,Firefox开发人员有这样一个明智的想法:当您拖动图像时,您可以“移动”它并可能将其放在资源管理器窗口中以快速轻松地下载它,或者到选项卡栏以在新选项卡中打开图像。明显的缺点是它会导致其他浏览器没有的默认行为。

简单的解决方案是确保您的所有活动都正确取消默认操作(event.preventDefaultreturn false,这类事情)。如果这也失败了,那么您应该使用<div>元素而不是background-image元素。