Drag&Drop объекта
Всем привет!
Есть небольшая проблемка перетаскивания объекта в мозилле. Мозилла воспринимает div, который перетаскивается, как картинку, чтоли и из-за этого див прилипает к курсору, посмотрите сами, плз. В то время как другие браузеры исполняют скрипт как надо. До этого драгом и дропом не интересовался.
var changePosition=null,offX=null,offY=null;
function elemPhysics()
{
this.move=function a(id,event)
{
if(changePosition)
{
changePosition=document.getElementById(id);
var x=event.clientX-offX;
var y=event.clientY-offY;
changePosition.style.left=x+"px";
changePosition.style.top=y+"px";
}
}
this.release=function b()
{
changePosition=null;
}
this.capture=function c(event)
{
offX=event.offsetX || event.layerX;
offY=event.offsetY || event.layerY;
if(!changePosition)
{
changePosition=document.getElementById("el");
}
}
}
var element=new elemPhysics();
<body onmousemove="element.move('el',event)">
<div onmouseup="element.release()" onmousedown="element.capture(event)" id="el" style="width:300px; height:200px; position:absolute; border:1px solid #000000; background-color:#996600;" ></div>
</body>
|
Ой, не в той теме тему создал)
|
Нашёл в инете
//// отключаем обработку событий по умолчанию, связанных с перемещением блока (это убирает глюки с выделением текста в других HTML-блоках, когда мы перемещаем объект)
if( e.preventDefault ) e.preventDefault();
else e.returnValue = false;
исправленный вариант:
var changePosition=null,offX=null,offY=null;
function elemPhysics()
{
this.move=function a(id,e)
{
e = e || window.event;
if( e.preventDefault ) e.preventDefault();
else e.returnValue = false;
if(changePosition)
{
changePosition=document.getElementById(id);
var x=e.clientX-offX;
var y=e.clientY-offY;
changePosition.style.left=x+"px";
changePosition.style.top=y+"px";
}
}
this.release=function b()
{
changePosition=null;
}
this.capture=function c(e)
{
e = e || window.event;
if( e.preventDefault ) e.preventDefault();
else e.returnValue = false;
offX=e.offsetX || e.layerX;
offY=e.offsetY || e.layerY;
if(!changePosition)
{
changePosition=document.getElementById("el");
}
}
}
var element=new elemPhysics();
|
| Часовой пояс GMT +3, время: 06:24. |