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, время: 11:56. |