0

我正在使用下面的代码来拖动图像 ( #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";
}
}
4

1 回答 1

2

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

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

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

于 2012-06-15T19:55:26.830 回答