![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Innuendo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 24.12.2005 Где: Молдова Репутация: 2 Всего: 6 |
12345c,
ну я просто нажал на ссылку в сообщении Alx'a.. FireFox 1.5.0... заработало ![]() -------------------- =) |
|||
|
||||
12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
А, понятно. Я-то приведённый код смотрел.
-------------------- Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go |
|||
|
||||
Alx |
|
|||
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 10 Всего: 78 |
вот этот код работает абсолютно замечательно, во всех браузерах
![]()
давай ![]() ![]() |
|||
|
||||
12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
О, вот стилей там не хватало., теперь работает (не везде, см. ниже).
Критика: 1) событий не навешаешься на объекты, если их много, лучше перехват событий на документе с анализом класса; 2) нет никакой надобности иметь признаки таскаемости при каждом объекте - мышь одна. Поэтому is_moving может быть переменной окна. 3) не соблюдён принцип поднимания затронутых слоёв - они возвращаются на своё место по уровню z-index. (Кстати, в FF, Opera он не срабатывает, из-за setAttribute, что ли, или строку присваиваешь вместо числа.) Для соблюдения достаточно присваивать ему номер, на 1 больший, чем имеется, и оставлять такой(переменная zMax). 4) совершенно забыл, что позиция мыши в ie не e.pageX, а e.pageX+document.body.scrollLeft . -------------------- Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go |
|||
|
||||
Alx |
|
|||
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 10 Всего: 78 |
12345c,
мдя, в принципе, согласен, сейчас подправлю ![]() кроме третьего, зачем ставить перетаскиваемый объект выше других? и потом, если z-index будет всё время расти, это тоже совсем не красиво. я наконец-то понял, вначале ты имел ввиду: > obj.style.left = parseInt( _left - parseInt(obj.style.width) / 2 );
а почему нельзя? ![]() Добавлено @ 15:19 хех, а с чего ты взял, что стили не понимают дробных чисел? у меня width и height по 105, на 2 - дробное и никаких проблем. поэтому оставляем как было ![]() Добавлено @ 15:22 да, правильно. надо же, а почему? |
|||
|
||||
12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
по аналогиис Windows на век юзера хватит
здесь понимают, я искал ошибку, когда не работал скрипт. А бордюры, насколько помню, нге понимают, или что-то ещё есть кривости понимания где-то . Проще по-естественному обращаться к атрибутам. -------------------- Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go |
|||
|
||||
Alx |
|
|||
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 10 Всего: 78 |
ну вот, готово)
http://soft.flyweb.in/small/drag.html 12345с + за критику ![]()
можно, конечно, сделать ещё прокрутку окна при попытке перетащить объект за пределы видимости, а также позиционирование курсора не по центру, а на месте захвата (только как я не знаю) и даже сделать возможность выделения, как в Windows, а затем передвигания всех выделенных объектов. только надо ли? Это сообщение отредактировал(а) Alx - 13.2.2006, 20:51 |
|||
|
||||
Innuendo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 24.12.2005 Где: Молдова Репутация: 2 Всего: 6 |
в этом примере у объекта который выбираешь, меняется z-index получается... он становится верхним.
Но вот бывает иногда глюк.. застопыривается квадратик... Когда курсор каким-то образом захоит за грани квадрата при драге.. Ну это бывает при быстром драге, но и при медленном тоже.. когда проводишь через квадратик (поверх) -------------------- =) |
|||
|
||||
Alx |
|
||||||
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 10 Всего: 78 |
ну 12345c предложил, мне чё, жалко чтоль?)
это не ко мне) а к разработчикам JavaScript. соображает он медленно, не успевает за курсором ![]()
неправда ![]() |
||||||
|
|||||||
Innuendo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 24.12.2005 Где: Молдова Репутация: 2 Всего: 6 |
Alx,
нп, верю, верю ![]() а про то что соображает долго.. может как-то сделать проверку, ну то есть отследить этот сбой, и чтоб квадратик догнал быстренько мышку (ну просто оказался под ней). -------------------- =) |
|||
|
||||
Alx |
|
|||
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 10 Всего: 78 |
Innuendo,
ну да в принципе, повесить событие и на документ ![]() щас попробуем ![]() |
|||
|
||||
12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
Это не из-за z-index, а из-за mouseout, которое часто не появляется при очень быстрых движениях. Я тоже этим серьёзно не занимался, а надо бы придумать, как восстанавливать mouseout, если оно пропущено. Это нужно и в меню, и везде. Идея - ловить mousemove вне объекта и обнаруживать случай, когда mousemove на объекте перескочило на mousemove вне объекта. Для одиночного квадрата это несложно, а общая задача - когда сложная страница. Очень был бы полезный антиглючный скрипт.
Да, плюсов пора и тебе подсыпать, скажи за что ![]() - примеров много по сети. Принцип такой, что запоминаешь позицию при нажатии, а потом отностельно её двигаешь. Сейчас напишу свой примерчик, сделанный с рабочего скрипта. -------------------- Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go |
|||
|
||||
Alx |
|
|||
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 10 Всего: 78 |
дык а есть свойство, которое возвращает координату мышь относительно ноды? в ИЕ вроде нет. можно, ессно вычесть из координат курсора координаты объекта и всё ок) ну не знаю) тебе видней) Добавлено @ 20:21 а можно конкретней, какие ещё могут быть траблы кроме drag-n-drop? вот ты в меню говорил, конкретно, в какой момент? |
|||
|
||||
12345c |
|
|||
![]() Круглый ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 57 Всего: 101 |
то же самое - меню, которое должно закрываться при уходе мыши. Двигаешь мышь очень быстро - меню остаётся открытым.
Вот код, таким обычно пользуются (кроссбраузерный), но в нём ещё много недостатков. Можем поработать над ними не спеша. (Что интересно, проблема срыва mouseout в FF решена - как ни двигай, не сорвёшь нажатую мышь с объекта.)
Недостатки: *) запретить в Опере onSelect при таскании; *) запретить onDragStart (если будет рисунок/ссылка в таскаемом поле); *) потеря mouseout в ie,opera; *) не использовать target (если будет наполнение объекта, его не схватишь за фон); Список можно и нужно продолжить. Это сообщение отредактировал(а) 12345c - 13.2.2006, 20:53 -------------------- Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go |
|||
|
||||
Alx |
|
|||
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 10 Всего: 78 |
12345c
ну ты меня извини, но это почти точная копия моего кода ![]() |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |