MouseEvent.metaKey
似乎不起作用。在FireFox和Chrome上,即使我在点击时按住 Win 键,它也会返回false
:
<!doctype html>
<button onclick=alert(event.metaKey)>click while holding "meta key"</button>
MDN states:
MouseEvent.metaKey
只读属性返回Boolean
指示是否按下了 Meta 键(true
)(false
) 事件发生。注意:在Macintosh键盘上,这是命令键(⌘)。在Windows上 键盘,这是Windows键(⊞)。
浏览器兼容性
![]()
FireFox和Chrome支持MDN声明MouseEvent.metaKey
,但它无效。
MouseEvent.metaKey
指的是哪个键?
为什么上面的代码不起作用?
答案 0 :(得分:9)
如果您要问在Windows系统上按哪个密钥才能使MouseEvent
的{{1}}属性为metaKey
,答案是它取决于在浏览器上。有些Windows浏览器根本不支持它,并始终返回true
或false
。
我无法找到undefined
的最新浏览器支持图表,但确实存在old one at QuirksMode.org。
如果您使用的是jQuery,metaKey
是it normalizes for cross-browser compatibility的事件属性之一。
如果您需要为网站上的某些功能实现键+鼠标事件,我会使用 Shift 键,以便它适用于所有系统。 (如果您需要多个密钥选项,我建议您重新考虑您的设计。)
答案 1 :(得分:3)
经验测试,显示以下结果。并不是说jQuery不能很好地正常化^ F。
在Mac上,在Safari Version 5.1.7&amp; 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上,在谷歌浏览器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 " : ""));
});
答案 2 :(得分:0)