Как определить положение объекта при drag and drop?
Делаю по аналогии
http://javascript.ru/ui/draganddrop#refaktoring Скажем я зацепил объект A и перемещаю его Объект A скажем размером 100x100 px и мне нужно его положить в объект B. Но как определить, что объект A находится над объектом B, если курсор мыши еще не находится над ним? Также хотелось бы узнать что за события onDrag onDragEnter onDragLeave onDragOver onDragStart onDrop и тд. Вообще читая статью ожидал увидеть описание именно этих событий, а оказывается все строится только на событиях мыши. |
И подскажите, пожалуйста, как избавиться от ошибки
Uncaught TypeError: Cannot read property 'className' of null document.onmousemove Вызванной element.parentNode.className |
чтобы узнать находится объект над объектом, нужно знать координаты этих двух объектов, а также их высоту и длинну.. а там уже по условиям (if)...
что насчет element.parentNode.className.. попробуйте вывести в консоль cjnsole.log(element.parentNode) и посмотрите что там будет. возможно там лежит не то что вы хотите |
А смысл определять положение блока? Тем более что не во всех браузерах будет отображаться призрак блока. Сработало событие ondragover - значит курсор над элементом-акцепотором. Что еще для счастья нужно?
|
чел хочет, чтобы был объект над объектом, а не на мышь над объектом.. я сказал
|
Вообще да хотел, сделать если объект над объектом, но подумал и решил сделать по курсору мыши. По положению корректно определить очень сложно, нужно получается определить, если он скажем на двух объектах сразу, на каком именно объекте он БОЛЬШЕ в данный момент. Пришел к выводу что смысл, смысла нет, и особо это ничего не изменить. Получится почти тоже, что если курсор мыши над объектом
Насчет element.parentNode.className, я делаю проверку, при событии onmousemove, если if(element.parentNode.className == "My_class") то вставляю объект. класс есть не у всех элементов, поэтому очевидно вылезает ошибка. Работе она не мешает, но хотелось бы убрать element.parent.hasAttribute("My_class"), тоже дает ошибку |
По поводу событий ongrag.... и тд. я честно говоря не очень понял. Было бы интересно узнать как и где их можно использовать, для чего они предназначены. Коротких описаний этих событий много нашел, а вот нормальной статьи описывающих их работу нет. Может кто-подскажет, что нибудь по этому поводу.
|
Дело в том, этот стандарт аутсорсил инопланетянин, ни слухом ни духом не ведавший о человеческом вебе. Потому сейчас все продолжают использовать самописный drag на основе mousemove, а эту хрень применяют только в очень специфических случаях.)
|
я применял драп дроп. перетягивал файлы (картинки) с рабочего стола (папки) в браузер. конечно есть input file для этого. у меня работало и так и так (так сказать для удобства, точней для понтов)
|
я применял драп дроп. перетягивал файлы (картинки) с рабочего стола (папки) в браузер. конечно есть input file для этого. у меня работало и так и так (так сказать для удобства, точней для понтов)
|
skrudjmakdak, ну по сути это единственное более-менее массовое применение.)
|
Так все-таки, как заглушить ошибку, и где можно про drog и drop почить без стандартных событий мыши, и я не понял про инопланетян. Что под этим подразумевалось?
|
http://www.kigorw.com/articles/dd-file
http://habrahabr.ru/post/125424/ на работоспособность не проверял)) |
Это не совсем то. Это работа с файлами которая появилась в html5. Я описал некоторые события еще в самом начале поста, они существуют довольно давно и кратко описаны в справочной информации еще когда только появился JavaScript 1.5, а может и раньше. Просто думал, что в учебнике будут рассмотрены именно они, а оказалось события мыши. Вот мне и интересно стало, что же это за события и как они используются или использовались.
|
Дык все просто же. Ставим атрибут draggable (в ие8 нужен пинок ввиде dragDrop() ) и слушаем событие dragenter на дропзоне (или dragover), обработчик должен вернуть false что будет знаком что дропзона готова принять объект. Далее слушаем drop, по которому что-нибудь делаем.
В инете полно инфы. Когда мне нужно было - нашел за три секунды. Ща тыкать носом просто лень. |
ну не знаю, когда и как Вы искали, но я к сожалению не нашел. Все сводится к HTML5 или событиям мыши, или просто описанием данных событий без примеров и пояснений. Если есть куда ткнуть буду признателен. Сейчас уже сделал с помощью событий мыши, тч. наврядли буду переделывать, даже если что-то и найду, но на будущее было бы полезно.
А еще больше буду признателен, если кто-нибудь наконец объяснит мне как убрать ошибку с классом. |
Цитата:
Uncaught TypeError: Cannot read property 'className' of null document.onmousemove Понятно ведь что нет такого свойства. Оно может быть только у объектов HTMLElement, не считая пользовательских объектов проверить тип можно через typeof ясно ведь написано что вы у null пытаетесь прочитать свойство, а не у элемента. Переводчиков и словарей море, да и ошибку можно было просто вбить в поиск, чтоб узнать что это. Цитата:
http://tav.su/207807-izuchaem-html-5...ecialista.html И примеров множество, и всё разжевывается и подводные камни рассматриваются Вобщем подводя итог: жирный минус вашей лени |
Зачем Вы мне даете ссылку на учебник по HTML5? Я спрашивал о событиях в JavaScript, которые были еще до HTML5.
С классом разобрался. Я делал обход вверх по иерархии и проверял есть ли у родителя класс, а родителя самого не было. Остался вопрос по событиям из серии drag. Не из HTML5, а именно еще в старых версиях JavaScript, которые еще существовали в ie4 и ie5. Зачем они, и как применяются? |
Цитата:
|
Цитата:
Цитата:
|
Так а без HTML5 они не применялись? Или они существовали только в IE?
Я понимаю, что большая половина того, что есть в HTML5, уже была реализована в ie, но вопрос в том, если эти события существовали ранее, до html5, то как они использовались и зачем? Который собственно и проистекает откуда, почему в учебнике по JavaScript, не описываются эти события, а вместо них ловятся события мыши. Хотя даже там они перекрываются, например, document.ondragstart = function() { return false; }, значит они возможно были, и наверное не только в IE. dmitriymar, Сколько Вы не отвечаете на мои сообщения, но ни разу не дали мне стоящий ответ. Также нередко отвечали не верно. При этом все Ваши ответы всегда с агрессией, и характеризуют Вас как амбициозного подростка. Толку от Ваших сообщений никакого, а читать их не приятно. Так что, да молчание золото. |
platedz,
Еще раз -потрудись полистай книжку в разделе драг энд дроп-там есть все ответы, откуда взялись для чего использовались и прочее. Цитата:
Цитата:
Цитата:
Заметил: 1 распиши мне всё на нескольких страницах вещи описанные практически везде, потому что лень мне искать, гуглить 2 мне лень искать и гуглить Добавляем к списку твоих "достоинств" и ложь ? Та же тема проходит через все сообщения: "расскажите мне, основы потому что мне лень читать и искать" |
Ответы выкладывались, например здесь
http://javascript.ru/forum/ajax/3481...ie-polejj.html Я сделал, то что хотел, хотя Вы утверждали, что это невозможно. Да я не достаточно хорошо JavaScript. Но иначе бы я и не задавал здесь вопросы. Да я не хочу читать довольно объемную книгу. Буду делать drag & drop с использованием HTML5 или делать другую реализацию, буду читать. Есть много и других функций в JS, к которым у меня на данный момент больше интереса и желания изучать. А самое главное я не собираюсь уже реализовывать drag & drop, т.к. уже сделал используя события мыши. Вопрос задал ради интереса, тк. видел, данные события в старых справочниках. Думаю, человек, который знает ответ, мог бы дать краткий ответ на мой вопрос. Я же не прошу расписывать статью на эту тему, а просто интересуюсь, почему события давно были, а на сайте в учебнике рассматриваются события мыши. Ну и в конце концов, учитывая, что Ваши рекомендации ни разу не принесли мне пользы, и более того, вы еще и отвечали не верно, то тем более читать целую книгу следуя Вашим рекомендациям, на эту тему желания нет. Уточняю обработчики событий. Но то, что Вы придираетесь к словам и выражениям, лишь лишний раз доказывает Вашу незрелось. В остальном, все Ваши посты, агрессивны, и лишь показывают Вашу дурость и не воспитанность. Меня они особо не затрагивают, а Вас не красят. Да и не хотите отвечать - не отвечайте. Зачем Вы пишите ответ, чтобы вылить свое плохое настроение на окружающих, и надеетесь этим решить личные проблемы. Учитывая, Ваши сообщения, Вам на форум по психологии, надо и попить какие-либо успокаивающие средства. |
Цитата:
|
Цитата:
Цитата:
Цитата:
Возможно всё таки запрос был асинхронный ? Синхронность и асинхронность ну ни как не определяют последовательность "выхода" запросов. Для тех кто в танке: синхронность и асинхронность это принципы работы, ну ни как не очерёдность посыла запросов - Явный пример того, что терминологию нужно знать, а не придумывать свою. Цитата:
Странно , а я вот почему то думал, что если человек называет зелёное красным , то : а) либо он дальтоник б) он не знает цветов Ваша версия звучит убедительнее: "Это потому что зрелый" :thanks: Цитата:
Цитата:
Добавим к списку "достоинств" ещё и глупость -такое написать умный не может Цитата:
|
Я не делаю никакой работы. Я даже пост открыл для того, чтобы узнать, как определить положение объекта над другим объектом. И в целом, в первую очередь. И чтобы убрать ошибку. А заодно спросил, почему обработчики событий, которым сто лет не используются и не описаны в учебнике.
Для моей задачи они не нужны, и использовать я их не собираюсь, по крайней мере в данный момент. Более того, я даже не прошу мне в этом помочь. Я не говорю, что у меня что-то не получается, или я что-то хочу изучить. А Вам нужно полечить нервы. И все-таки обратиться к специалисту. |
Цитата:
ленив глуп лжив Думаешь для чего в стандартных ответах есть этот: Цитата:
|
Зачем Вы это пишете. От Ваших постов толку никакого, одни оскорбления. При этом оскорбляете Вы в первую очередь себя, показывая собственную неполноценность. Скорее всего Вы домосед, и не адаптированы к общению в обществе, не умете общаться с людьми, из неблагополучной семьи. В школе часто обижали.
Обратитесь все-таки к специалисту иначе Ваша болезнь будет прогрессировать и может привести к полной деградации личности. |
platedz,
Да угомонись ты наконец -ты уже всё что хотел сказал и показал себя Или ты считаешь что после всего этого я тебя должен обожать? :) |
Часовой пояс GMT +3, время: 12:09. |