commands

Typ Object
Erforderlich Nein
Manifest-Version 2 oder höher
Beispiel
json
"commands": {
  "toggle-feature": {
    "suggested_key": {
      "default": "Ctrl+Shift+Y",
      "linux": "Ctrl+Shift+U"
    },
    "description": "Send a 'toggle-feature' event"
  }
}

Verwenden Sie den Schlüssel commands, um eine oder mehrere Tastenkombinationen für Ihre Erweiterung zu definieren.

Jede Tastenkombination wird mit einem Namen, einer Tastenkomination und einer Beschreibung definiert. Nachdem die Befehle in der manifest.json Ihrer Erweiterung definiert wurden, können Sie mit der commands API auf ihre zugehörigen Tastenkombinationen lauschen.

Syntax

Der Schlüssel commands ist ein Objekt, und jede Verknüpfung ist eine Eigenschaft davon. Der Name der Eigenschaft ist der Name der Verknüpfung.

Der Wert jeder Verknüpfung ist ein Objekt mit bis zu 2 Eigenschaften:

  1. suggested_key Optional: die Kombination von Tasten, die die Verknüpfung aktiviert.
  2. description Optional: ein String, der die Verknüpfung beschreibt, d.h. was sie tut.

Die Eigenschaft suggested_key ist ein Objekt mit beliebigen oder keinen dieser Eigenschaften (alle Strings):

  • "default"
  • "mac"
  • "linux"
  • "windows"
  • "chromeos"
  • "android"
  • "ios"

Der Wert jeder Eigenschaft ist die Tastenkombination für den Befehl auf dieser Plattform, als String, der Tasten enthält, getrennt durch "+". Der Wert von "default" wird auf allen Plattformen verwendet, die nicht explizit aufgeführt sind. Wenn "default" nicht enthalten ist, hat der Befehl auf keiner Plattform eine Tastenkombination, es sei denn, es wird vom Benutzer oder über die commands.update API eine Tastenkombination konfiguriert.

Zum Beispiel:

json
"commands": {
  "toggle-feature": {
    "suggested_key": {
      "default": "Alt+Shift+U",
      "linux": "Ctrl+Shift+U"
    },
    "description": "Send a 'toggle-feature' event to the extension"
  },
  "do-another-thing": {
    "suggested_key": {
      "default": "Ctrl+Shift+Y"
    }
  },
  "do-something-else": {
    "suggested_key": {
      "linux": "Ctrl+Shift+P"
    }
  },
  "do-nothing-yet": {}
}

Dieses JSON definiert diese Verknüpfungen:

  1. "toggle-feature", erreichbar mit Ctrl + Shift + U unter Linux und Alt + Shift + U auf allen anderen Plattformen.
  2. "do-another-thing", erreichbar mit Ctrl + Shift + Y auf allen Plattformen.
  3. "do-something-else", erreichbar mit Ctrl + Shift + P nur unter Linux und keine Standardverknüpfung auf anderen Plattformen.
  4. "do-nothing-yet", legt keine Tastenkombination fest, ermöglicht aber dem Benutzer, eine Verknüpfung zu setzen oder mit der commands.update API.

Sie können für die Befehle mit einem Code wie diesem lauschen, in diesem Fall für den Befehl "toggle-feature":

js
browser.commands.onCommand.addListener((command) => {
  if (command === "toggle-feature") {
    console.log("Toggling the feature!");
  }
});

Spezielle Verknüpfungen

Es gibt 4 spezielle Verknüpfungen mit Standardaktionen, für die das commands.onCommand Ereignis nicht ausgelöst wird:

Die Verfügbarkeit dieser speziellen Verknüpfungen variiert je nach Manifest-Versionen und Browsern, wie folgt:

Manifest V2 Manifest V3
_execute_browser_action Ja Nein
_execute_action Nein Ja
_execute_page_action Ja Nur Firefox
_execute_sidebar_action Nur Firefox Nur Firefox

Hinweis: Wenn der Benutzer die Verknüpfung des _execute_browser_action-Befehls ändert, wird sie automatisch auf den _execute_action-Befehl übertragen, wenn die Erweiterung von Manifest V2 auf V3 migriert. Dies wurde in Chrome 111 und Firefox 127 implementiert.

Zum Beispiel definiert dieses JSON eine Tastenkomination, die wie ein Klick auf die Browseraktion der Erweiterung wirkt:

json
"commands": {
  "_execute_browser_action": {
    "suggested_key": {
      "default": "Ctrl+Shift+Y"
    }
  }
}

Werte der Verknüpfung

Es gibt zwei gültige Formate für Verknüpfungstasten: als Tastenkombination oder als Media-Taste.

Tastenkombinationen

Hinweis: Auf Macs wird "Ctrl" als "Command" interpretiert. Wenn Sie tatsächlich "Ctrl" benötigen, geben Sie "MacCtrl" an.

Tastenkombinationen müssen aus 2 oder 3 Tasten bestehen:

  1. Modifikator (obligatorisch, außer bei Funktionstasten). Dies kann einer der folgenden sein: "Ctrl", "Alt", "Command" oder "MacCtrl".

  2. Sekundärer Modifikator (optional). Falls vorhanden, muss dies entweder "Shift" oder (für Firefox ≥ 63) einer von "Ctrl", "Alt", "Command" oder "MacCtrl" sein. Darf nicht der bereits als Hauptmodifikator verwendete Modifikator sein.

  3. Taste (obligatorisch). Dies kann eine der folgenden sein:

    • die Buchstaben AZ
    • die Zahlen 09
    • die Funktionstasten F1F12
    • Comma, Period, Home, End, PageUp, PageDown, Space, Insert, Delete, Up, Down, Left, Right

Die Taste wird dann als String angegeben, der die Reihe von Tastenwerten enthält, in der obigen Reihenfolge, getrennt durch "+". Zum Beispiel, "Ctrl+Shift+Z".

Wenn eine Tastenkombination bereits vom Browser verwendet wird (wie "Ctrl+P") oder von einem bestehenden Add-On, können Sie sie nicht überschreiben. Sie können sie definieren, aber Ihr Ereignishandler wird nicht aufgerufen, wenn der Benutzer die Tastenkombination drückt.

Media-Tasten

Alternativ kann die Verknüpfung als eine der folgenden Media-Tasten angegeben werden:

  • "MediaNextTrack"
  • "MediaPlayPause"
  • "MediaPrevTrack"
  • "MediaStop"

Aktualisierung der Verknüpfungen

Verknüpfungen können über commands.update() aktualisiert werden. Benutzer können auch Verknüpfungen über die Option „Erweiterungsverknüpfungen verwalten“ in about:addons in Firefox aktualisieren, wie in diesem Video gezeigt. In Chrome können Benutzer Verknüpfungen unter chrome://extensions/shortcuts ändern.

Beispiel

Definieren Sie eine einzelne Tastenkombination, die nur die Standardtastenkombination verwendet:

json
"commands": {
  "toggle-feature": {
    "suggested_key": {
      "default": "Ctrl+Shift+Y"
    },
    "description": "Send a 'toggle-feature' event"
  }
}

Definieren Sie zwei Tastenkombinationen, eine mit einer plattformspezifischen Tastenkombination:

json
"commands": {
  "toggle-feature": {
    "suggested_key": {
      "default": "Alt+Shift+U",
      "linux": "Ctrl+Shift+U"
    },
    "description": "Send a 'toggle-feature' event"
  },
  "do-another-thing": {
    "suggested_key": {
      "default": "Ctrl+Shift+Y"
    }
  }
}

Browser-Kompatibilität

BCD tables only load in the browser