KeyboardEvent.getModifierState() method returns the current state of the specified modifier key: true if the modifier is active (that is the modifier key is pressed or locked), otherwise, false .

句法

var active = event.getModifierState(keyArg);
					

返回

A 布尔

参数

keyArg
A modifier key value. The value must be one of the KeyboardEvent.key values which represent modifier keys, or the string "Accel" . This is case-sensitive.

Modifier keys on Internet Explorer

IE9 uses "Scroll" for "ScrollLock" and "Win" for "OS" .

Modifier keys on Gecko

When getModifierState() returns true on Gecko?
Windows Linux (GTK) Mac Android 2.3 Android 3.0 or latter
"Alt" 要么 Alt key or AltGr key pressed Alt key pressed ⌥ Option key pressed Alt key or option key pressed
"AltGraph" Both Alt and Ctrl keys are pressed, or AltGr key is pressed Level 3 Shift key (or Level 5 Shift key ) pressed ⌥ Option key pressed 不支持
"CapsLock" During LED for ⇪ Caps Lock turned on 不支持 While CapsLock is locked
"Control" 要么 Ctrl key or AltGr key pressed Ctrl key pressed 控制 key pressed menu key pressed. Ctrl key, 控制 key or menu key pressed.
"Fn" 不支持 函数 key is pressed, but we're not sure what key makes the modifier state active. Fn key on Mac keyboard doesn't cause this active.
"FnLock" 不支持
"Hyper" 不支持
"Meta" 不支持 Meta key pressed ⌘ Command key pressed 不支持 ⊞ Windows Logo key or 命令 key pressed
"NumLock" During LED for Num Lock turned on A key on numpad pressed 不支持 While NumLock is locked
"OS" ⊞ Windows Logo key pressed Super key or Hyper key pressed (typically, mapped to ⊞ Windows Logo key) 不支持
"ScrollLock" During LED for Scroll Lock turned on During LED for Scroll Lock turned on, but typically this isn't supported by platform 不支持 While ScrollLock is locked
"Shift" ⇧ Shift key pressed
"Super" 不支持
"Symbol" 不支持
"SymbolLock" 不支持
  • On the other platforms, "Alt", "Control" and "Shift" may be supported.
  • All modifiers (except "FnLock" , "Hyper" , "Super" and "Symbol" which are defined after Gecko implements this) are always supported for untrusted events on Gecko. This doesn't depend on the platform.

"Accel" virtual modifier

注意: "Accel" virtual modifier has been effectively 弃用 in current drafts of the DOM3 Events specification.

getModifierState() also accepts a deprecated virtual modifier named "Accel" . event.getModifierState("Accel") 返回 true when at least one of KeyboardEvent.ctrlKey or KeyboardEvent.metaKey is true .

In old implementations and outdated specifications, it returned true when a modifier which is the typical modifier key for the shortcut key is pressed. For example, on Windows, pressing Ctrl key may make it return true . However, on Mac, pressing ⌘ Command key may make it return true . Note that which modifier key makes it return true depends on platforms, browsers, and user settings. For example, Firefox users can customize this with a pref, "ui.key.accelKey" .

范例

// Ignore if following modifier is active.
if (event.getModifierState("Fn") ||
    event.getModifierState("Hyper") ||
    event.getModifierState("OS") ||
    event.getModifierState("Super") ||
    event.getModifierState("Win") /* hack for IE */) {
  return;
}
// Also ignore if two or more modifiers except Shift are active.
if (event.getModifierState("Control") +
    event.getModifierState("Alt") +
    event.getModifierState("Meta") > 1) {
  return;
}
// Handle shortcut key with standard modifier
if (event.getModifierState("Accel")) {
  switch (event.key.toLowerCase()) {
    case "c":
      if (event.getModifierState("Shift")) {
        // Handle Accel + Shift + C
        event.preventDefault(); // consume the key event
      }
      break;
    case "k":
      if (!event.getModifierState("Shift")) {
        // Handle Accel + K
        event.preventDefault(); // consume the key event
      }
      break;
  }
  return;
}
// Do somethig different for arrow keys if ScrollLock is locked.
if ((event.getModifierState("ScrollLock") ||
       event.getModifierState("Scroll") /* hack for IE */) &&
    !event.getModifierState("Control") &&
    !event.getModifierState("Alt") &&
    !event.getModifierState("Meta")) {
  switch (event.key) {
    case "ArrowDown":
    case "Down": // hack for IE and old Gecko
      event.preventDefault(); // consume the key event
      break;
    case "ArrowLeft":
    case "Left": // hack for IE and old Gecko
      // Do something different if ScrollLock is locked.
      event.preventDefault(); // consume the key event
      break;
    case "ArrowRight":
    case "Right": // hack for IE and old Gecko
      // Do something different if ScrollLock is locked.
      event.preventDefault(); // consume the key event
      break;
    case "ArrowUp":
    case "Up": // hack for IE and old Gecko
      // Do something different if ScrollLock is locked.
      event.preventDefault(); // consume the key event
      break;
  }
}
				

Although this example uses .getModifierState() with "Alt" , "Control" , "Meta" and "Shift" ,使用 event.altKey , event.ctrlKey , event.metaKey and event.shiftKey may be more preferable.

规范

规范 状态 注释
DOM (文档对象模型) 3 级事件规范
The definition of 'getModifierState()' in that specification.
过时 Initial definition ( Modifier Keys spec )

浏览器兼容性

The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request. 更新 GitHub 上的兼容性数据
桌面 移动
Chrome Edge Firefox Internet Explorer Opera Safari Android webview Chrome for Android Firefox for Android Opera for Android Safari on iOS Samsung Internet
getModifierState Chrome 31 Edge 12 Firefox 15 IE 9 Opera 17 Safari 10.1 WebView Android 4.4.3 Chrome Android 31 Firefox Android 15 Opera Android 18 Safari iOS 10.3 Samsung Internet Android 2.0
"Accel" as a parameter 弃用 非标 Chrome 48 Edge ≤79 Firefox 32 IE No Opera 35 Safari No WebView Android 48 Chrome Android 48 Firefox Android 32 Opera Android 35 Safari iOS No Samsung Internet Android 5.0
"Alt" as a parameter 弃用 非标 Chrome Yes Edge ≤79 Firefox Yes IE ? Opera Yes Safari 10.1 WebView Android Yes Chrome Android Yes Firefox Android Yes Opera Android Yes Safari iOS 10.3 Samsung Internet Android Yes
"AltGraph" as a parameter 弃用 非标 Chrome 48 Edge ≤79 Firefox Yes IE ? Opera 35 Safari 10.1 WebView Android 48 Chrome Android 48 Firefox Android Yes Opera Android 35 Safari iOS 10.3 Samsung Internet Android 5.0
"CapsLock" as a parameter Chrome 48 Edge ≤79 Firefox Yes IE ? Opera 35 Safari ? WebView Android 48 Chrome Android 48 Firefox Android Yes Opera Android 35 Safari iOS ? Samsung Internet Android 5.0
"Control" as a parameter Chrome Yes Edge ≤79 Firefox Yes IE ? Opera Yes Safari 10.1 WebView Android Yes Chrome Android Yes Firefox Android Yes Opera Android Yes Safari iOS 10.3 Samsung Internet Android Yes
"Fn" as a parameter Chrome 48 Edge ≤79 Firefox Yes IE ? Opera 35 Safari ? WebView Android 48 Chrome Android 48 Firefox Android Yes Opera Android 35 Safari iOS ? Samsung Internet Android 5.0
"FnLock" as a parameter Chrome Yes Edge ≤79 Firefox No IE ? Opera Yes Safari ? WebView Android Yes Chrome Android Yes Firefox Android No Opera Android Yes Safari iOS ? Samsung Internet Android Yes
"Hyper" as a parameter 弃用 Chrome Yes Edge ≤79 Firefox No IE ? Opera Yes Safari ? WebView Android Yes Chrome Android Yes Firefox Android No Opera Android Yes Safari iOS ? Samsung Internet Android Yes
"Meta" as a parameter Chrome Yes Edge ≤79 Firefox Yes IE ? Opera Yes Safari 10.1 WebView Android Yes Chrome Android Yes Firefox Android Yes Opera Android Yes Safari iOS 10.3 Samsung Internet Android Yes
"NumLock" as a parameter Chrome 48 Edge ≤79 Firefox Yes IE ? Opera 35 Safari ? WebView Android 48 Chrome Android 48 Firefox Android Yes Opera Android 35 Safari iOS ? Samsung Internet Android 5.0
"OS" as a parameter Chrome 48 Edge 12 Alternate Name
12 Alternate Name
Alternate Name Uses the non-standard name: Win
Firefox Yes IE Yes Alternate Name
Yes Alternate Name
Alternate Name Uses the non-standard name: Win
Opera 35 Safari ? WebView Android 48 Chrome Android 48 Firefox Android Yes Opera Android 35 Safari iOS ? Samsung Internet Android 5.0
"ScrollLock" as a parameter Chrome 48 Edge 12 Alternate Name
12 Alternate Name
Alternate Name Uses the non-standard name: Scroll
Firefox Yes IE Yes Alternate Name
Yes Alternate Name
Alternate Name Uses the non-standard name: Scroll
Opera 35 Safari ? WebView Android 48 Chrome Android 48 Firefox Android Yes Opera Android 35 Safari iOS ? Samsung Internet Android 5.0
"Shift" as a parameter Chrome Yes Edge ≤79 Firefox Yes IE ? Opera Yes Safari 10.1 WebView Android Yes Chrome Android Yes Firefox Android Yes Opera Android Yes Safari iOS 10.3 Samsung Internet Android Yes
"Super" as a parameter 弃用 Chrome Yes Edge ≤79 Firefox No IE ? Opera Yes Safari ? WebView Android Yes Chrome Android Yes Firefox Android No Opera Android Yes Safari iOS ? Samsung Internet Android Yes
"Symbol" as a parameter Chrome 48 Edge ≤79 Firefox No IE ? Opera 35 Safari ? WebView Android 48 Chrome Android 48 Firefox Android No Opera Android 35 Safari iOS ? Samsung Internet Android 5.0
"SymbolLock" as a parameter Chrome Yes Edge ≤79 Firefox No IE ? Opera Yes Safari ? WebView Android Yes Chrome Android Yes Firefox Android No Opera Android Yes Safari iOS ? Samsung Internet Android Yes

图例

完整支持

完整支持

不支持

不支持

兼容性未知 ?

兼容性未知

非标。预期跨浏览器支持较差。

非标。预期跨浏览器支持较差。

弃用。不要用于新网站。

弃用。不要用于新网站。

使用非标名称。

另请参阅

元数据

  • 最后修改:
  1. KeyboardEvent
  2. 构造函数
    1. KeyboardEvent()
  3. 特性
    1. altKey
    2. charCode
    3. code
    4. ctrlKey
    5. isComposing
    6. key
    7. keyCode
    8. keyIdentifier
    9. location
    10. metaKey
    11. repeat
    12. shiftKey
    13. which
  4. 方法
    1. getModifierState()
    2. initKeyboardEvent()
    3. initKeyEvent()
  5. 继承:
    1. UIEvent
    2. 事件
  6. DOM 事件相关页面
    1. CompositionEvent
    2. 事件
    3. EventListener
    4. EventTarget
    5. FocusEvent
    6. InputEvent
    7. MouseEvent
    8. MouseScrollEvent
    9. MouseWheelEvent
    10. MutationEvent
    11. ProgressEvent
    12. UIEvent
    13. WheelEvent

版权所有  © 2014-2026 乐数软件    

工业和信息化部: 粤ICP备14079481号-1