В 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, время: 10:48. |