我使用下面的代码来拖动图像(#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";
}
}发布于 2012-06-16 03:55:27
我实际上遇到了类似的问题,所以即使没有您正在使用的代码,我也可以尝试帮助您。
看,Firefox开发人员有了这个聪明的想法,当您拖动图像时,您可以将其“移动”,并可能将其放在资源管理器窗口中,以便快速轻松地下载它,或者到选项卡栏中在新选项卡中打开图像。这样做的明显缺点是,它导致了其他浏览器所没有的默认行为。
简单的解决方案是确保您的所有事件都正确地取消了默认操作(event.preventDefault、return false等)。如果这也失败了,那么应该使用带有background-image的<div>元素,而不是<img>元素。
https://stackoverflow.com/questions/11033604
复制相似问题