Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как определить положение объекта при drag and drop? (https://javascript.ru/forum/dom-window/37394-kak-opredelit-polozhenie-obekta-pri-drag-drop.html)

platedz 18.04.2013 02:44

Как определить положение объекта при drag and drop?
 
Делаю по аналогии
http://javascript.ru/ui/draganddrop#refaktoring
Скажем я зацепил объект A и перемещаю его
Объект A скажем размером 100x100 px и мне нужно его положить в объект B. Но как определить, что объект A находится над объектом B, если курсор мыши еще не находится над ним?

Также хотелось бы узнать что за события
onDrag
onDragEnter
onDragLeave
onDragOver
onDragStart
onDrop
и тд.
Вообще читая статью ожидал увидеть описание именно этих событий, а оказывается все строится только на событиях мыши.

platedz 18.04.2013 04:31

И подскажите, пожалуйста, как избавиться от ошибки

Uncaught TypeError: Cannot read property 'className' of null
document.onmousemove

Вызванной element.parentNode.className

skrudjmakdak 18.04.2013 08:58

чтобы узнать находится объект над объектом, нужно знать координаты этих двух объектов, а также их высоту и длинну.. а там уже по условиям (if)...

что насчет element.parentNode.className.. попробуйте вывести в консоль cjnsole.log(element.parentNode) и посмотрите что там будет. возможно там лежит не то что вы хотите

danik.js 18.04.2013 10:13

А смысл определять положение блока? Тем более что не во всех браузерах будет отображаться призрак блока. Сработало событие ondragover - значит курсор над элементом-акцепотором. Что еще для счастья нужно?

skrudjmakdak 18.04.2013 10:47

чел хочет, чтобы был объект над объектом, а не на мышь над объектом.. я сказал

platedz 18.04.2013 13:25

Вообще да хотел, сделать если объект над объектом, но подумал и решил сделать по курсору мыши. По положению корректно определить очень сложно, нужно получается определить, если он скажем на двух объектах сразу, на каком именно объекте он БОЛЬШЕ в данный момент. Пришел к выводу что смысл, смысла нет, и особо это ничего не изменить. Получится почти тоже, что если курсор мыши над объектом

Насчет element.parentNode.className, я делаю проверку, при событии onmousemove, если

if(element.parentNode.className == "My_class") то вставляю объект.

класс есть не у всех элементов, поэтому очевидно вылезает ошибка. Работе она не мешает, но хотелось бы убрать element.parent.hasAttribute("My_class"), тоже дает ошибку

platedz 18.04.2013 13:27

По поводу событий ongrag.... и тд. я честно говоря не очень понял. Было бы интересно узнать как и где их можно использовать, для чего они предназначены. Коротких описаний этих событий много нашел, а вот нормальной статьи описывающих их работу нет. Может кто-подскажет, что нибудь по этому поводу.

Aetae 18.04.2013 13:33

Дело в том, этот стандарт аутсорсил инопланетянин, ни слухом ни духом не ведавший о человеческом вебе. Потому сейчас все продолжают использовать самописный drag на основе mousemove, а эту хрень применяют только в очень специфических случаях.)

skrudjmakdak 18.04.2013 13:40

я применял драп дроп. перетягивал файлы (картинки) с рабочего стола (папки) в браузер. конечно есть input file для этого. у меня работало и так и так (так сказать для удобства, точней для понтов)

skrudjmakdak 18.04.2013 13:40

я применял драп дроп. перетягивал файлы (картинки) с рабочего стола (папки) в браузер. конечно есть input file для этого. у меня работало и так и так (так сказать для удобства, точней для понтов)

Aetae 18.04.2013 13:51

skrudjmakdak, ну по сути это единственное более-менее массовое применение.)

platedz 18.04.2013 14:36

Так все-таки, как заглушить ошибку, и где можно про drog и drop почить без стандартных событий мыши, и я не понял про инопланетян. Что под этим подразумевалось?

skrudjmakdak 18.04.2013 14:59

http://www.kigorw.com/articles/dd-file
http://habrahabr.ru/post/125424/
на работоспособность не проверял))

platedz 18.04.2013 15:52

Это не совсем то. Это работа с файлами которая появилась в html5. Я описал некоторые события еще в самом начале поста, они существуют довольно давно и кратко описаны в справочной информации еще когда только появился JavaScript 1.5, а может и раньше. Просто думал, что в учебнике будут рассмотрены именно они, а оказалось события мыши. Вот мне и интересно стало, что же это за события и как они используются или использовались.

danik.js 18.04.2013 17:16

Дык все просто же. Ставим атрибут draggable (в ие8 нужен пинок ввиде dragDrop() ) и слушаем событие dragenter на дропзоне (или dragover), обработчик должен вернуть false что будет знаком что дропзона готова принять объект. Далее слушаем drop, по которому что-нибудь делаем.
В инете полно инфы. Когда мне нужно было - нашел за три секунды. Ща тыкать носом просто лень.

platedz 18.04.2013 23:47

ну не знаю, когда и как Вы искали, но я к сожалению не нашел. Все сводится к HTML5 или событиям мыши, или просто описанием данных событий без примеров и пояснений. Если есть куда ткнуть буду признателен. Сейчас уже сделал с помощью событий мыши, тч. наврядли буду переделывать, даже если что-то и найду, но на будущее было бы полезно.

А еще больше буду признателен, если кто-нибудь наконец объяснит мне как убрать ошибку с классом.

dmitriymar 18.04.2013 23:53

Цитата:

Сообщение от platedz
А еще больше буду признателен, если кто-нибудь наконец объяснит мне как убрать ошибку с классом.

Всё ведь написано:
Uncaught TypeError: Cannot read property 'className' of null
document.onmousemove

Понятно ведь что нет такого свойства. Оно может быть только у объектов HTMLElement, не считая пользовательских объектов
проверить тип можно через typeof
ясно ведь написано что вы у null пытаетесь прочитать свойство, а не у элемента. Переводчиков и словарей море, да и ошибку можно было просто вбить в поиск, чтоб узнать что это.

Цитата:

Сообщение от platedz
ну не знаю, когда и как Вы искали, но я к сожалению не нашел.

Примеров море, и в ваших же интересах научится пользоваться поиском.

http://tav.su/207807-izuchaem-html-5...ecialista.html
И примеров множество, и всё разжевывается и подводные камни рассматриваются

Вобщем подводя итог: жирный минус вашей лени

platedz 19.04.2013 00:44

Зачем Вы мне даете ссылку на учебник по HTML5? Я спрашивал о событиях в JavaScript, которые были еще до HTML5.

С классом разобрался. Я делал обход вверх по иерархии и проверял есть ли у родителя класс, а родителя самого не было.

Остался вопрос по событиям из серии drag. Не из HTML5, а именно еще в старых версиях JavaScript, которые еще существовали в ie4 и ie5. Зачем они, и как применяются?

danik.js 19.04.2013 10:06

Цитата:

Сообщение от platedz
Остался вопрос по событиям из серии drag. Не из HTML5, а именно еще в старых версиях JavaScript, которые еще существовали в ie4 и ie5. Зачем они, и как применяются?

Вообще-то в HTML5 и описана реализация, практически соответствующая ie5. Вы не понимаете - нередко HTML5 просто стандартизирует уже существующие API.

dmitriymar 19.04.2013 10:44

Цитата:

Сообщение от platedz
Зачем Вы мне даете ссылку на учебник по HTML5? Я спрашивал о событиях в JavaScript, которые были еще до HTML5.

Ну ты и даун .... Полистал бы для начала ...
Цитата:

Сообщение от platedz
Остался вопрос по событиям из серии drag. Не из HTML5, а именно еще в старых версиях JavaScript, которые еще существовали в ie4 и ie5. Зачем они, и как применяются?

Учи основы, события яваскрипт, ну ну ..... :D От действительно, молчание золото

platedz 19.04.2013 12:32

Так а без HTML5 они не применялись? Или они существовали только в IE?
Я понимаю, что большая половина того, что есть в HTML5, уже была реализована в ie, но вопрос в том, если эти события существовали ранее, до html5, то как они использовались и зачем? Который собственно и проистекает откуда, почему в учебнике по JavaScript, не описываются эти события, а вместо них ловятся события мыши. Хотя даже там они перекрываются, например, document.ondragstart = function() { return false; }, значит они возможно были, и наверное не только в IE.

dmitriymar, Сколько Вы не отвечаете на мои сообщения, но ни разу не дали мне стоящий ответ. Также нередко отвечали не верно. При этом все Ваши ответы всегда с агрессией, и характеризуют Вас как амбициозного подростка. Толку от Ваших сообщений никакого, а читать их не приятно. Так что, да молчание золото.

dmitriymar 19.04.2013 13:10

platedz,
Еще раз -потрудись полистай книжку в разделе драг энд дроп-там есть все ответы, откуда взялись для чего использовались и прочее.
Цитата:

Сообщение от platedz
Также нередко отвечали не верно

расшифровку в студию.:) Ответы не вкладывались в мировоззрение? Так судя по постам, оно продиктовано ленью и незнанием основ:D
Цитата:

Сообщение от platedz
Я спрашивал о событиях в JavaScript, которые были еще до HTML5.

-после этой фразы вобще говорить не о чем. Сам придумал понятие :"события JavaScript"?:haha:
Цитата:

Сообщение от platedz
dmitriymar, Сколько Вы не отвечаете на мои сообщения, но ни разу не дали мне стоящий ответ. Также нередко отвечали не верно.

Специально просмотрел все твои темы. Неправильных ответов своих не заметил.
Заметил:
1 распиши мне всё на нескольких страницах вещи описанные практически везде, потому что лень мне искать, гуглить
2 мне лень искать и гуглить
Добавляем к списку твоих "достоинств" и ложь ?

Та же тема проходит через все сообщения: "расскажите мне, основы потому что мне лень читать и искать"

platedz 19.04.2013 14:06

Ответы выкладывались, например здесь

http://javascript.ru/forum/ajax/3481...ie-polejj.html

Я сделал, то что хотел, хотя Вы утверждали, что это невозможно.

Да я не достаточно хорошо JavaScript. Но иначе бы я и не задавал здесь вопросы.

Да я не хочу читать довольно объемную книгу. Буду делать drag & drop с использованием HTML5 или делать другую реализацию, буду читать. Есть много и других функций в JS, к которым у меня на данный момент больше интереса и желания изучать. А самое главное я не собираюсь уже реализовывать drag & drop, т.к. уже сделал используя события мыши.
Вопрос задал ради интереса, тк. видел, данные события в старых справочниках. Думаю, человек, который знает ответ, мог бы дать краткий ответ на мой вопрос. Я же не прошу расписывать статью на эту тему, а просто интересуюсь, почему события давно были, а на сайте в учебнике рассматриваются события мыши.
Ну и в конце концов, учитывая, что Ваши рекомендации ни разу не принесли мне пользы, и более того, вы еще и отвечали не верно, то тем более читать целую книгу следуя Вашим рекомендациям, на эту тему желания нет.

Уточняю обработчики событий. Но то, что Вы придираетесь к словам и выражениям, лишь лишний раз доказывает Вашу незрелось.

В остальном, все Ваши посты, агрессивны, и лишь показывают Вашу дурость и не воспитанность. Меня они особо не затрагивают, а Вас не красят. Да и не хотите отвечать - не отвечайте. Зачем Вы пишите ответ, чтобы вылить свое плохое настроение на окружающих, и надеетесь этим решить личные проблемы. Учитывая, Ваши сообщения, Вам на форум по психологии, надо и попить какие-либо успокаивающие средства.

Aetae 19.04.2013 14:10

Цитата:

я не хочу читать книгу
-_-

dmitriymar 19.04.2013 14:18

Цитата:

Сообщение от platedz
Я сделал, то что хотел, хотя Вы утверждали, что это невозможно.

Цитата:

Сообщение от platedz
Второй запрос не нужен. Просто думалось, что если при синхронном запросе, раз они последовательно выходят, то значит если скажем,
1) первый запрос отправлен
2) отправляем второй запрос, первый еще не обработался, второй встает в очередь
3) отправляем третий запрос. первый еще не обработан, второй из очереди удаляем, ставим в очередь третий.

Цитата:

Сообщение от dmitriymar
Не выйдет так. на то он и синхронный, что между запросом и ответом никакие действия не производятся вообще-всё блокируется

И где здесь неправильный ответ?:D
Возможно всё таки запрос был асинхронный ? Синхронность и асинхронность ну ни как не определяют последовательность "выхода" запросов. Для тех кто в танке: синхронность и асинхронность это принципы работы, ну ни как не очерёдность посыла запросов - Явный пример того, что терминологию нужно знать, а не придумывать свою.


Цитата:

Сообщение от platedz
Уточняю обработчики событий. Но то, что Вы придираетесь к словам и выражениям, лишь лишний раз доказывает Вашу незрелось.

Спасибо за науку:
Странно , а я вот почему то думал, что если человек называет зелёное красным , то :
а) либо он дальтоник
б) он не знает цветов
Ваша версия звучит убедительнее: "Это потому что зрелый" :thanks:

Цитата:

Сообщение от platedz
Учитывая, Ваши сообщения, Вам на форум по психологии, надо и попить какие-либо успокаивающие средства.

В свете "зрелости" могу сказать лишь одно: Кто о чём а вшивый о бане

Цитата:

Сообщение от platedz
Да я не хочу читать довольно объемную книгу

и после этого надеется что, кто то захочет помочь человеку , прямо заявляющему что ему лень. потратьте своё время-сделайте всё за него? Поскольку он хочет писать на JS, получать профит за это, но вот только делайте всё за него частями, в т.ч и читайте доки и пересказывайте то, что ему необходимо -часть один, часть другой...
Добавим к списку "достоинств" ещё и глупость -такое написать умный не может

Цитата:

Сообщение от platedz
В остальном, все Ваши посты, агрессивны, и лишь показывают Вашу дурость и не воспитанность.

Ну простите, что не кричу: Дай я , дай я за тебя почитаю доки, сделаю работу за тебя :)

platedz 19.04.2013 15:49

Я не делаю никакой работы. Я даже пост открыл для того, чтобы узнать, как определить положение объекта над другим объектом. И в целом, в первую очередь. И чтобы убрать ошибку. А заодно спросил, почему обработчики событий, которым сто лет не используются и не описаны в учебнике.
Для моей задачи они не нужны, и использовать я их не собираюсь, по крайней мере в данный момент.
Более того, я даже не прошу мне в этом помочь. Я не говорю, что у меня что-то не получается, или я что-то хочу изучить.
А Вам нужно полечить нервы. И все-таки обратиться к специалисту.

dmitriymar 19.04.2013 16:11

Цитата:

Сообщение от platedz
Для моей задачи они не нужны, и использовать я их не собираюсь, по крайней мере в данный момент.
Более того, я даже не прошу мне в этом помочь. Я не говорю, что у меня что-то не получается, или я что-то хочу изучить.
А Вам нужно полечить нервы. И все-таки обратиться к специалисту.

Чувак измени подход к жизни. Уясни для себя, что ты не пуп земли а:
ленив
глуп
лжив

Думаешь для чего в стандартных ответах есть этот:
Цитата:

Здравствуйте!

Судя по вашему сообщению, вы ну совсем не знаете javascript.

Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.

На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/

Задавайте конкретные вопросы по ходу дела.


?

platedz 19.04.2013 20:02

Зачем Вы это пишете. От Ваших постов толку никакого, одни оскорбления. При этом оскорбляете Вы в первую очередь себя, показывая собственную неполноценность. Скорее всего Вы домосед, и не адаптированы к общению в обществе, не умете общаться с людьми, из неблагополучной семьи. В школе часто обижали.
Обратитесь все-таки к специалисту иначе Ваша болезнь будет прогрессировать и может привести к полной деградации личности.

dmitriymar 19.04.2013 21:19

platedz,
Да угомонись ты наконец -ты уже всё что хотел сказал и показал себя
Или ты считаешь что после всего этого я тебя должен обожать? :)


Часовой пояс GMT +3, время: 12:09.