Можно ли обнаружить щелчок левой кнопкой мыши в контекстном меню браузера при щелчке правой кнопкой мыши? - PullRequest
0 голосов
/ 24 марта 2012

Это довольно распространенный шаблон, когда в ответ на щелчок всплывают диалоговое окно, меню или какой-либо другой элемент HTML со ссылкой внутри.Например, если вы щелкнете по оранжевому вопросительному знаку над полем редактирования Переполнение стека, он добавит связку ссылок «Ссылки», «Изображения» и т. Д. Затем, когда вы снова щелкнете по знаку вопроса, меню исчезнет.1001 *

У меня похожая настройка, только я хочу, чтобы меню исчезало, когда пользователь щелкает где-нибудь, кроме меню.Это не сложно ($ (document.body) .click (handleClickElsewhere)).Однако сложным является следующий случай:

  1. Пользователь нажимает, чтобы вызвать меню
  2. Пользователь щелкает правой кнопкой мыши по одной из ссылок в меню (делая браузерпоявляется контекстное меню)
  3. Пользователь щелкает левой кнопкой мыши в контекстном меню браузера, в пункте меню «Открыть в новой вкладке»
  4. Пользователь попадает по ссылке в новой вкладке, НО
  5. Меню остается открытым на исходной странице

Сложная часть вышесказанного заключается в том, что я хотел бы вместо этого закрыть меню в этом случае;это выглядит немного глупо, когда пользователь возвращается к своей исходной вкладке, а меню все еще открыто.К сожалению, кажется, нет никакого способа обнаружить, что пользователь нажал «Открыть в новой вкладке», и поэтому у меня нет возможности закрыть меню в ответ.Я могу закрыть меню в ответ на щелчок правой кнопкой мыши (шаг № 2 выше), но тогда он не сможет выбрать «Открыть в новой вкладке», потому что ссылка исчезнет.

I 'мы пробовали jQuery-события click, mouseup, mousedown и contextmenu, но ни один из них, похоже, не уловил этот случай.

Кто-нибудь еще нашел решение этой проблемы?Или, если это невозможно, может ли кто-нибудь более знающий, чем я, окончательно объяснить, почему?Я предполагаю, что браузер просто не сообщает вам о клике на шаге # 4, но у меня нет реальной основы для этого предположения.

1 Ответ

1 голос
/ 24 марта 2012

вы можете проверить, если окно потеряло фокус , и реагировать соответствующим образом после этого (то есть закрыть ваше меню)

но это предполагает, что браузер по умолчанию настроен на «переход на новую вкладку». некоторые пользователи могут выбрать настройку открытия новой вкладки в фоновом режиме, чтобы главное окно не теряло фокус и этот метод не работал. (но кто хочет закрыть меню, если я все еще смотрю на него?)

...