Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Открытие меню только по клику левой кнопки (https://javascript.ru/forum/events/21911-otkrytie-menyu-tolko-po-kliku-levojj-knopki.html)

alexander32 29.09.2011 08:58

Открытие меню только по клику левой кнопки
 
Здравствуйте.
Подскажите, правильно ли я делаю, или можно проще и лаконичнее.
По форуму поискал, но ответа не нашел, скорее всего не то искал.

Нужно выполнять действие по левому клику мышки.
Делаю так:
<a href="javascript:void(0)" onmouseup="if(event.which == 1){Popup();}">

Не могу придумать, как лучше отследить, что клик был именно левой кнопкой.
В функцию Popup() проверку не хочу выносить, потому, что она также может вызываться другой функцией, и тогда проверка внутри создаст проблему.
Мой вариант приемлим в таком виде? Если честно не нравится громозкость конструкции, и вообще не красиво.
Посоветуйте новичку что-нибудь.

ksa 29.09.2011 09:23

Цитата:

Сообщение от alexander32
Не могу придумать, как лучше отследить, что клик был именно левой кнопкой.

onclick тебе в помощь... :lol:

alexander32 29.09.2011 09:55

Хах, думал он тоже на обе кнопки вызывается :)
От onclick правда отказался, из-за другой причины. Дело в том, что когда один раз нажимаешь на ссылку, она какбы выделяется, и если нажать на enter, то опять придет событие click по тому же самому элементу. И я не придумал как нормально отличить клик мышкой он клика клавиатурой. По идее можно как-то снять выделение, или что там, чтобы на интер повторно не вызывался click по ссылке. Может тоже подскажете как? А то думал решение с onmouseup неплохое, но промахнулся :lol:

ksa 29.09.2011 13:23

Цитата:

Сообщение от alexander32
когда один раз нажимаешь на ссылку, она какбы выделяется, и если нажать на enter, то опять придет событие click по тому же самому элементу

Не пойму в чём криминал... :blink:

Цитата:

Сообщение от alexander32
По идее можно как-то снять выделение, или что там

Это не выделение... Это focus. Как вариант поставить фокус на другой элемент...

alexander32 29.09.2011 14:15

Криминал в том, что когда мы нажимаем на ссылку, то выпадает div с интерфейсом меню, и этот div позиционируется исходя из того, куда был сделан клик, считая отступы по .offset(), e.pageX и e.pageY. Если же клик был через enter, то отступы нормально не считаются (в IE работало вроде, в лисе - нет).

Пробовал делать .focus() на другой элемент, но почему-то не получалось.
Уточню, что браузер firefox.

ksa 29.09.2011 14:33

Цитата:

Сообщение от alexander32
Пробовал делать .focus() на другой элемент, но почему-то не получалось.

И как ты это делал? :)

Пора тестовый пример маклачить тебе... ;)

alexander32 29.09.2011 15:33

Попробовал сделать.
Работает, просто я пытался фокус на div перекидывать, видимо этого делать нельзя. На ссылку или поле ввода перекидывается нормально, и всё отлично.
И вот ещё попробовал не перекидывать фокус, а сделать .blur() для изначального элемента, вроде получилось и работает, на enter событие клика не срабатывает :)
Соответственно пока вопросов больше не имею, спасибо за помощь! :)


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