Клуб API Карт

Как узнать что левая кнопка мыши зажата при mousemove на карте?

Пост в архиве.

Сабж.

Пробовал смотреть на event.originalEvent.domEvent.originalEvent.which
но оно все время равно 1

Как правильно можно узнать что кнопка мыши зажата?

8 комментариев

Можно просто отслеживать mousedown и mouseup левой кнопки параллельно

Дмитрий Сухоносов
28 января 2016, 02:38
Проблема в том что mouseup может быть за пределами карты и вообще окна.

вам нужно свойство button event.originalEvent.domEvent.originalEvent.button 

только мне кажется странным 2 раза originalEvent? ))

нужно конечно так event.get('domEvent'),get('button')

Дмитрий Сухоносов
28 января 2016, 02:38

Что-то button мне никак не помогает, попробовал еще поизучать и понял только это:

event.originalEvent.domEvent.originalEvent.button - в фаерфоксе, хроме и в опере все время 0
event.originalEvent.domEvent.originalEvent.which - работает в хром, в опере и фаерфокс все время 1
event.originalEvent.domEvent.originalEvent.buttons - работает в фаерфокс, undefined в хроме и опере

Подскажите пожалуйста как правильно работать с кнопками мыши в событиях на карте?

Да, потестила на примере - действительно по полю button ничего не понятно. А какую задачу вы решаете?

В апи подобная проблема решена в модуле для драга объектов. Мы там по mousedown по объекту стартуем драггинг, а потом слушаем mouseup на документе. Если курсор выходит за пределы карты или окна - драг так и продолжается. Как только  кнопку отпускают (пусть и за пределами окна) - драг прекращается.

Дмитрий Сухоносов
28 января 2016, 02:38

У меня редактор карты и что вроде карандаша как инструмента свободного рисования на карте.

Переделал окончание редактирования на mouseup на документе, все работает, спасибо!