MouseEvent.metaKey
, похоже, не работает. И в FireFox, и в Chrome он возвращает false
даже если я нажимаю клавишу Win:
<!doctype html>
<button onclick=alert(event.metaKey)>click while holding "meta key"</button>
MouseEvent.metaKey
, похоже, не работает. И в FireFox, и в Chrome он возвращает false
даже если я нажимаю клавишу Win:
<!doctype html>
<button onclick=alert(event.metaKey)>click while holding "meta key"</button>
Если вы спрашиваете, какой ключ вам нужно нажать на систему Windows, чтобы свойство MouseEvent
metaKey
было true
, ответ заключается в том, что он зависит от браузера. И некоторые браузеры Windows просто не поддерживают его и всегда возвращают false
или undefined
.
Я не смог найти обновленную карту поддержки браузера для metaKey
, хотя есть действительно старый на QuirksMode.org.
Если вы используете jQuery, metaKey
является одним из свойств события, которое нормализуется для совместимости с несколькими браузерами.
Если вам нужно реализовать событие key + mouse для некоторых функций вашего сайта, я бы использовал ключ Shift, чтобы он работал на всех системах. (Если вам нужно более одного ключевого варианта, я бы предложил вам пересмотреть ваш дизайн.)
Эмпирическое тестирование показывает следующие результаты. Не то, чтобы 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 " : ""));
});
К какому ключу относится MouseEvent.metaKey?
Он ссылается на ключ окна
Почему приведенный выше код не работает?
Из-за bug по крайней мере Firefox 48, см. docs для получения дополнительной информации.
Используйте shiftKey вместо этого. Который имеет свойство с тем же именем в объекте события.