Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Drag-n-Drop с использованием jquery
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Drag-n-Drop с использованием jquery

Страниц (1): [1]
 

1. Phantik - 09 Февраля, 2010 - 21:53:09 - перейти к сообщению
Написал простое перетаскивание дива по экрану:

http://as3[dot]web-prog[dot]com/dnd.php

Возникло несколько проблем. Идеально работает только в IE8. В других браузерах появляется ряд проблем:

Например если двигать мышью слишком быстро, то окно не успевает за мышью и отрывается. После этого возникают некоторые глюки с перетаскиванием в целом и в частности. То начинает перетаскиваться без нажатия, то вобще не хочет перетаскиваться, то снова нормально, пока скорость мыши не большая. Так же во всех браузерах кроме IE8 курсор меняется криво и не понятно в какие моменты. Но в основном почему то в cursor : text;

Если есть возможность посмотреть в IE8 - то это идеал, которого я хочу добиться в остальных браузерах.

Что нужно поправить в данном коде или в основной идее данного алгоритма?
Заранее благодарен.

P.S. Перетаскивать за верхнюю полоску окна.
(Добавление)
Еще заметил 1 нюанс. Что див не успевает за мышью только при движении курсора вверх. При движении курсора в другие стороны, окно за мышью всегда успевает.
2. valenok - 10 Февраля, 2010 - 07:56:25 - перейти к сообщению
Можете воспользоваться jquery UI draggable
или поискать о том, как предотвратить выделение текста
3. JustUserR - 10 Февраля, 2010 - 09:37:10 - перейти к сообщению
Phantik пишет:
Если есть возможность посмотреть в IE8 - то это идеал, которого я хочу добиться в остальных браузерах
Это действительно самый лучший бразуер на текущий момент - я не пишу ИМХО потому что его функционал и производительность объективно выигрышная Улыбка
Phantik пишет:
Еще заметил 1 нюанс. Что див не успевает за мышью только при движении курсора вверх
Наверное это особенность алгоритмов библиотеки jquery - попробуйте также повысить частоту времени реагирования с помощью понижения величина timeout в функции window.setTimeout
Также надо чтобы окно имело параметры display:block и position:absolute чтобы браузер не пересчитывал другие компоненты и тогда перемещения будет максимально быстрым
Если само перемещаемое окно достаточно большое по количеству содержимого то лучше перемещать его рамку а при остановке drag-drop-а уже показывать окно в новом месте
4. Phantik - 10 Февраля, 2010 - 10:54:37 - перейти к сообщению
Все оказалось гораздо проще

Поставил $(document).bind("mousemove",MouseMoveEvent);
вместо $("body").bind("mousemove",MouseMoveEvent);

Работает как надо: http://as3[dot]web-prog[dot]com/dnd2.php

Остался только маленький глючок. В Хроме курсор меняется на cursor : text вместо
cursor : move.
5. JustUserR - 10 Февраля, 2010 - 16:15:37 - перейти к сообщению
Phantik пишет:
В Хроме курсор меняется на cursor : text вместо cursor : move.
Может в chrome нет встроенного курсора для указания стрелок передвижения - попробуйте сохранить курсор в файл и рагружать его в CSS-свойство через URL - также можно заранее подгружить его при загрузке документа Улыбка
6. Phantik - 10 Февраля, 2010 - 16:30:09 - перейти к сообщению
А какой будет синтаксис?
Что то вроде

div#window
{
....
cursor : img('/images/mycursor.png');
....
}

?
7. JustUserR - 11 Февраля, 2010 - 14:55:27 - перейти к сообщению
Phantik пишет:
А какой будет синтаксис?
Немного не так - а именно для div-слоя с идентификатором widnow будет такой стиль div#windows {cursor:url('/path/to/image')} - кстати это стандартный синтаксис CSS для указания URL-адресов файлов - такое же есть при указанни пути в картинке для фона

 

Powered by ExBB FM 1.0 RC1