Написал простое перетаскивание дива по экрану:
http://as3[dot]web-prog[dot]com/dnd.php
Возникло несколько проблем. Идеально работает только в IE8. В других браузерах появляется ряд проблем:
Например если двигать мышью слишком быстро, то окно не успевает за мышью и отрывается. После этого возникают некоторые глюки с перетаскиванием в целом и в частности. То начинает перетаскиваться без нажатия, то вобще не хочет перетаскиваться, то снова нормально, пока скорость мыши не большая. Так же во всех браузерах кроме IE8 курсор меняется криво и не понятно в какие моменты. Но в основном почему то в cursor : text;
Если есть возможность посмотреть в IE8 - то это идеал, которого я хочу добиться в остальных браузерах.
Что нужно поправить в данном коде или в основной идее данного алгоритма?
Заранее благодарен.
P.S. Перетаскивать за верхнюю полоску окна.
(Добавление)
Еще заметил 1 нюанс. Что див не успевает за мышью только при движении курсора вверх. При движении курсора в другие стороны, окно за мышью всегда успевает.
1. Phantik - 09 Февраля, 2010 - 21:53:09 - перейти к сообщению
2. valenok - 10 Февраля, 2010 - 07:56:25 - перейти к сообщению
3. JustUserR - 10 Февраля, 2010 - 09:37:10 - перейти к сообщению
Phantik пишет:
Это действительно самый лучший бразуер на текущий момент - я не пишу ИМХО потому что его функционал и производительность объективно выигрышная Если есть возможность посмотреть в IE8 - то это идеал, которого я хочу добиться в остальных браузерах
Phantik пишет:
Наверное это особенность алгоритмов библиотеки jquery - попробуйте также повысить частоту времени реагирования с помощью понижения величина timeout в функции window.setTimeoutЕще заметил 1 нюанс. Что див не успевает за мышью только при движении курсора вверх
Также надо чтобы окно имело параметры 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.
Поставил $(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 пишет:
Может в chrome нет встроенного курсора для указания стрелок передвижения - попробуйте сохранить курсор в файл и рагружать его в CSS-свойство через URL - также можно заранее подгружить его при загрузке документа
В Хроме курсор меняется на cursor : text вместо cursor : move.
6. Phantik - 10 Февраля, 2010 - 16:30:09 - перейти к сообщению
А какой будет синтаксис?
Что то вроде
div#window
{
....
cursor : img('/images/mycursor.png');
....
}
?
Что то вроде
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-адресов файлов - такое же есть при указанни пути в картинке для фона
А какой будет синтаксис?