Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.01.2010, 03:46
жажду знаний
Отправить личное сообщение для bushstas Посмотреть профиль Найти все сообщения от bushstas
 
Регистрация: 17.07.2009
Сообщений: 202

скрипт для перетаскивания объектов
все-таки я допер как написать скрипт чтобы можно было перетаскивать объекты (я перетаскивал <div>) и в опере и в мозилле, а IE то вроде понимает onDrag (или что-то типа того), работает прекрасно только вот блин одно плохо одновременно с перетаскиванием происходит выделение текста если таковой попадается под курсор. хотя я не понимаю почему ведь текст то в слое который под перетаскиваемым, это в моей опере, а мозилла нормально, текст не выделяется. Еще один минус если объект маленький а скорость перетаскивания высока то объект просто вываливается из фокуса чем меньше объект тем медленнее его надо перетаскивать

может кому пригодится
<div id="some_object" style="position:absolute;"  onmousedown="start_dragging(event)" onmousemove="dragging(event)" onmouseup="stop_dragging()"></div>

// на событие mouseDown

function start_dragging(event){
drag=1;                      // говорит что перетаскивание началось
x2=event.clientX;        //запоминаем начальное X курсора 
y2=event.clientY;        //запоминаем начальное Y курсора 

// далее сбрасываем marginы объекта если таковые есть
// иначе объект сместится в сторону если его left или top были заданы
// в процентах и были заданы marginы скажем например для его 
//оцентровки

var position_x =center_window.offsetLeft; 
var position_y =center_window.offsetTop; 

document.getElementById('some_object').style.marginLeft="0px";
document.getElementById('some_object').style.marginRight="0px";
document.getElementById('some_object').style.left=position_x;

document.getElementById('some_object').style.marginTop="0px";
document.getElementById('some_object').style.marginBottom="0px";
document.getElementById('some_object').style.top=position_y;
}

function dragging(event){
// проверяем началось ли перетаскивание
if (drag==1){

x1=event.clientX;    // определяем текущую позицию курсора по Х
y1=event.clientY;    // определяем текущую позицию курсора по Y

shift_x=x1-x2                 // вычисляем разницу (сдвиг) между текущими и 
shift_y=y1-y2                // предыд. позициями курсора 

// сдвигаем объект
document.getElementById('some_object').style.left=some_object.offsetLeft+shift_x
document.getElementById('some_object').style.top=some_object.offsetTop+shift_y

x2=x1; y2=y1; // запоминаем предыдущие координаты курсора
}
}	

// на событие mouseUp то есть когда закончили перетаскивать и 
// отпустили кнопку

function stop_dragging(){drag=0;}


ну вот хотел сделать чтобы на событие mouseDown курсор менялся на "move" но не работает меняется только при следующем событие mouseover

код небольшой для чего-то невеликого сгодится
может у кого есть скрипт покрасивее? я только учусь

Последний раз редактировалось bushstas, 11.01.2010 в 16:59. Причина: http://javascript.ru/formatting
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хочу написать скрипт для прайса Lisenok Общие вопросы Javascript 2 10.04.2016 10:44
Небольшой скрипт для контакта - логин man Элементы интерфейса 2 22.08.2009 13:53
скрипт multibox для joomla - не работает в опере lamanzh Opera, Safari и др. 17 26.06.2009 12:35
Скрипт для уведомлений о не правильном браузере. djanonym Я не знаю javascript 12 06.06.2009 18:38
Как изменить скрипт, что бы им его можно было использовать для нужной страницы Nick50_70 Общие вопросы Javascript 0 28.04.2009 23:30