我正在使用下面的代码来拖动图像(#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";
}
}
我实际上遇到了类似的问题,因此即使没有您正在使用的代码,我也可以尝试提供帮助。
[请参阅,Firefox开发人员的想法很聪明,因此,当您拖动图像时,可以“移动”它,并可以将其放在资源管理器窗口中,以快速,轻松地将其下载到选项卡或选项卡栏在新标签页中打开图像。显而易见的缺点是,它导致其他浏览器没有默认行为。
简单的解决方案是确保所有事件都正确取消了默认操作(event.preventDefault
,return false
等)。如果同样失败,则应将<div>
元素与background-image
一起使用,而不是<img>
元素。