В Firefox не работает передвижение оюъеката
Здравствуйте, помогите пожалуйста, нашел в сети такой вот код:
<div style="position:relative; width:450px; height:125px; cursor:pointer"> <img src="bear.jpg" style="position:absolute; left:15px; top:10px" onmousedown="Move(this)"> <div style="position:absolute; left:190px; top:10px; width:170px; border: 1px solid; padding:5; text-align:left; background-color:white" onmousedown="Move(this)"> Этот компонент имеет постоянный размер. </div> <div style="position:absolute; left:380px; top:10px" onmousedown="Move(this)"> Этот компонент не имеет постоянный размер. </div> <script type="text/javascript"> var SelectedItem; var SelectedX, SelectedY; var MouseX, MouseY; function Move(ClickedItem) { SelectedItem = ClickedItem; SelectedX = SelectedItem.style.pixelLeft; SelectedY = SelectedItem.style.pixelTop; MouseX = event.clientX; MouseY = event.clientY; document.onmousemove = Drag; document.onmouseup = Drop; } function Drag() { SelectedItem.style.left = SelectedX + (event.clientX - MouseX); SelectedItem.style.top = SelectedY + (event.clientY - MouseY); return false; } function Drop() { document.onmousemove = null; document.onmouseup = null; } </script> Но он не работает в FF, что делать?:help: |
на этом сайте есть статья про drag'n'drop. можно взять код оттуда.
|
Я пробовал, там он длинный и неудобный, этот очень простой и красивый, но в FF не работает(
|
Цитата:
Цитата:
|
Мне не очень понравился код в той статье
|
Цитата:
а по мне этот "красивый" кривее некуда |
Ну вот код из статьи, почему он не работает:
var dragMaster = (function() { var dragObject var mouseOffset // получить сдвиг target относительно курсора мыши function getMouseOffset(target, e) { var docPos = getPosition(target) return {x:e.pageX - docPos.x, y:e.pageY - docPos.y} } function mouseUp(){ dragObject = null // очистить обработчики, т.к перенос закончен document.onmousemove = null document.onmouseup = null document.ondragstart = null document.body.onselectstart = null } function mouseMove(e){ e = fixEvent(e) with(dragObject.style) { position = 'absolute' top = e.pageY - mouseOffset.y + 'px' left = e.pageX - mouseOffset.x + 'px' } return false } function mouseDown(e) { e = fixEvent(e) if (e.which!=1) return dragObject = this // получить сдвиг элемента относительно курсора мыши mouseOffset = getMouseOffset(this, e) // эти обработчики отслеживают процесс и окончание переноса document.onmousemove = mouseMove document.onmouseup = mouseUp // отменить перенос и выделение текста при клике на тексте document.ondragstart = function() { return false } document.body.onselectstart = function() { return false } return false } return { makeDraggable: function(element){ element.onmousedown = mouseDown } } }()) function getPosition(e){ var left = 0 var top = 0 while (e.offsetParent){ left += e.offsetLeft top += e.offsetTop e = e.offsetParent } left += e.offsetLeft top += e.offsetTop return {x:left, y:top} } |
Часовой пояс GMT +3, время: 16:28. |