На какой ключ ссылается e.metaKey в JavaScript MouseEvent? - PullRequest
13 голосов
/ 06 июня 2011

MouseEvent.metaKey не похоже на работу. И в FireFox, и в Chrome он возвращает false, даже если я удерживаю клавишу Win , нажимая:

<!doctype html>
<button onclick=alert(event.metaKey)>click while holding "meta key"</button>

MDN состояния :

Свойство MouseEvent.metaKey только для чтения, возвращающее Boolean, указывает, была ли нажата кнопка Meta (true) или нет (false), когда событие произошло.

Примечание. На клавиатурах Macintosh это клавиша управления (). На винде клавиатуры, это клавиша Windows ().

Совместимость с браузерами

enter image description here

Заявления MDN MouseEvent.metaKey поддерживается в FireFox и Chrome, но не работает.

К какому ключу относится MouseEvent.metaKey?

Почему вышеуказанный код не работает?

Ответы [ 3 ]

9 голосов
/ 06 июня 2011

Если вы спрашиваете, какую клавишу вам нужно нажать в системе Windows, чтобы свойство MouseEvent s metaKey было true, ответ заключается в том, что это зависит от браузера.А некоторые браузеры Windows просто не поддерживают его и всегда возвращают false или undefined.

. Я не смог найти обновленную таблицу поддержки браузеров для metaKey, хотя естьдействительно старый на QuirksMode.org .

Если вы используете jQuery, metaKey - это одно из свойств события, которое нормализуется для кросс-браузерной совместимости .

Если вам нужно реализовать событие key + mouse для некоторых функций на вашем веб-сайте, я бы использовал клавишу Shift , чтобы она работала во всех системах.(Если вам нужно более одного ключевого варианта, я бы посоветовал вам переосмыслить свой дизайн.)

3 голосов
/ 09 октября 2012

Эмпирическое тестирование, показывает следующие результаты. Не то чтобы jQuery не очень хорошо справлялся с нормализацией ^ F.

На Mac в Safari версии 5.1.7 и 6.0.

 F   Keypress: 102, 102  
⌘F   Keypress: 102, 102  meta 
⌥F   Keypress: 402, 402  alt 
⌃F   Keypress: 6, 6  ctrl
⇧F   Keypress: 70, 70  shift 

На Mac, в Firefox 15.0.1:

 F   Keypress: 102, 0
⌘F   Keypress: 102, 0 meta 
⌥F   Keypress: 402, 0 alt
⌃F   Keypress: 102, 0 ctrl
⇧F   Keypress: 70, 0 shift

На Mac, в Google Chrome 18.0.1024.168:

 F   Keypress: 102, 102
⌘F   (No triggers sent for ⌘ + key)
⌥F   Keypress: 402, 402 alt
⌃F   Keypress: 6, 6 ctrl
⇧F   Keypress: 70, 70 shift

Тестовый код: // jquery-1.7.2

  $(document.defaultView).keypress(function(e) {
      console.log("Keypress: " + e.which + ", " + e.keyCode, " "
          + (e.metaKey ? "meta " : "")
          + (e.ctrlKey ? "ctrl " : "")
          + (e.altKey ? "alt " : "")
          + (e.shiftKey ? "shift " : ""));
  });
0 голосов
/ 19 августа 2017

К какому ключу относится MouseEvent.metaKey?

Это относится к ключу Windows Windows Key

Почему вышеуказанный код не работает?

Из-за ошибки по крайней мере в Firefox 48 см. документы для получения дополнительной информации.

Решение:

Используйте взамен shiftKey . Который имеет свойство с тем же именем в объекте события.

...