Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.08.2016, 21:23
Интересующийся
Отправить личное сообщение для xbit Посмотреть профиль Найти все сообщения от xbit
 
Регистрация: 08.03.2016
Сообщений: 25

Конфликт onmousedown и onclick
После того, как срабатывает onmousedown не выполняются события, связанные с onclick. Вот код - https://jsfiddle.net/webcodemaster/9xhLnjh0/. Зажимаете левую кнопку мыши, двигаете курсор - появляется выделяющий блок. Все норм. Но вот попробуйте кликнуть на ссылку - облом.

При этом, если закомментить в onmousedown событии строку div.hidden = 0; , то все будет работать прекрасно. Извивался и так и сяк - но если в функции события выполняется обращение к ДОМ, следующие события обламываются.

При этом всем событие onmouseup отрабатывает исправно. Не срабатывает только onclick, который вообще идет после onmouseup, но конфликтует именно с onmousedown.

В коде есть закомментированные участки с setTimeout(). С ними работает, но бывают глюки. А я хочу без глюков.

Что же делать, как же быть?

Последний раз редактировалось xbit, 10.08.2016 в 21:32.
Ответить с цитированием
  #2 (permalink)  
Старый 10.08.2016, 21:52
Интересующийся
Отправить личное сообщение для xbit Посмотреть профиль Найти все сообщения от xbit
 
Регистрация: 08.03.2016
Сообщений: 25

Собственно, вопрос, почему именно не работает onclick также очень интересует. Коллеги, кто сталкивался, какие мысли.
Ответить с цитированием
  #3 (permalink)  
Старый 10.08.2016, 22:18
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Когда блок оказывается над ссылкой, то клик идет через его маусдаун и не доходит до линка.
Ответить с цитированием
  #4 (permalink)  
Старый 10.08.2016, 22:26
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Ключевой момент в дауне:

x1 = x2 = e.pageX;
y1 = y2 = e.pageY;

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

Остальные мульки смотри в убдейте https://jsfiddle.net/9xhLnjh0/1/ )))
Ответить с цитированием
  #5 (permalink)  
Старый 10.08.2016, 22:46
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

С setTimeout там будет полный ппц. Даже при небольшом ауте, их запросто можно запустить несколько штук, а значит будет ингресс и хрен поймешь когда что натикает. Это значит нужна функция

function stop(h){clearTimeout(h);}

которую придется профтыкать перед всеми сетами

stop(someTime)
someTime=setTimeout(/* тряхомудия */);

геморрой в общем с этими задержками.
Ответить с цитированием
  #6 (permalink)  
Старый 10.08.2016, 22:47
Интересующийся
Отправить личное сообщение для xbit Посмотреть профиль Найти все сообщения от xbit
 
Регистрация: 08.03.2016
Сообщений: 25

Да, все так. Спасибо большое! Только не маусдаун, а маусап ) даун возвращает нормальный таргет.
Ответить с цитированием
  #7 (permalink)  
Старый 10.08.2016, 22:56
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от xbit
а маусап
Нельзя начать рисовать с поднятия пера. Все 4 координаты должны быть выставлены в начальную точку когда "перо" опущено. Это же плоттерная вся технология в мыше. Перо поднять, перенести на икс игрек, опустить, перенести на икс, игрек и так далее.

Ну и мув не должен ничего писать в координаты пока перо не опущено, то есть кнопка не нажата. Функции таскания элементов по странице так и работают - выставляют листенер на мув когда нажато и снимают когда отпущено, просто потому что нафиг не надо грузить комп бесполезными делами.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конфликт двух скриптов veatone jQuery 2 24.05.2013 21:02
Отследить открытие ссылки само по себе, без onclick lancer Events/DOM/Window 28 19.11.2011 18:40
onclick по блоку в котором есть ссылки dr_gluk jQuery 2 17.11.2011 14:37
OnClick ячейки таблицы и ссылки в этой ячейке MasDen Javascript под браузер 2 30.06.2011 10:34
Событие onClick avtor01 Events/DOM/Window 3 03.09.2009 18:01