refresh date: 2026-09-25 robots: noindex
Description
Utilisez l'API Commands pour ajouter des raccourcis clavier qui déclenchent des actions dans votre extension, par exemple une action pour ouvrir l'action du navigateur ou envoyer une commande à l'extension.
Fichier manifeste
Les clés suivantes doivent être déclarées dans le fichier manifeste pour utiliser cette API.
"commands"Utilisation
L'API Commands permet aux développeurs d'extensions de définir des commandes spécifiques et de les associer à une combinaison de touches par défaut. Chaque commande acceptée par une extension doit être déclarée en tant que propriété de l'objet "commands" dans le fichier manifeste de l'extension.
La clé de propriété est utilisée comme nom de la commande. Les objets de commande peuvent accepter deux propriétés.
suggested_keyPropriété facultative qui déclare les raccourcis clavier par défaut de la commande. Si elle est omise, la commande ne sera pas liée. Cette propriété peut accepter une chaîne ou une valeur d'objet.
Une valeur de chaîne spécifie le raccourci clavier par défaut à utiliser sur toutes les plates-formes.
Une valeur d'objet permet au développeur de l'extension de personnaliser le raccourci clavier pour chaque plate-forme. Lorsque vous fournissez des raccourcis spécifiques à une plate-forme, les propriétés d'objet valides sont
default,chromeos,linux,macetwindows.
Pour en savoir plus, consultez Exigences concernant les combinaisons de clés.
descriptionChaîne utilisée pour fournir à l'utilisateur une brève description de l'objectif de la commande. Cette chaîne apparaît dans l'interface utilisateur de gestion des raccourcis clavier de l'extension. Les descriptions sont obligatoires pour les commandes standards, mais elles sont ignorées pour les commandes d'action.
Une extension peut comporter de nombreuses commandes, mais ne peut spécifier que quatre raccourcis clavier suggérés au maximum. L'utilisateur peut ajouter manuellement d'autres raccourcis à partir de la boîte de dialogue chrome://extensions/shortcuts.
Clés compatibles
Les touches suivantes sont des raccourcis de commande utilisables. Les définitions de clés sont sensibles à la casse. Si vous tentez de charger une extension avec une clé dont la casse est incorrecte, une erreur d'analyse du fichier manifeste se produira au moment de l'installation.
- Touches alphabétiques
A…Z- Touches numériques
0…9- Chaînes de clés standards
Général :
Comma,Period,Home,End,PageUp,PageDown,Space,Insert,DeleteTouches fléchées :
Up,Down,Left,RightTouches multimédias :
MediaNextTrack,MediaPlayPause,MediaPrevTrack,MediaStop- Chaînes de touches de modification
Ctrl,Alt(Optionsur macOS),Shift,MacCtrl(macOS uniquement),Command(macOS uniquement),Search(ChromeOS uniquement)
Exigences relatives aux combinaisons de touches
Les raccourcis de commande d'extension doivent inclure
CtrlouAlt.- Les modificateurs ne peuvent pas être utilisés avec des touches multimédias.
Sous macOS,
Ctrlest automatiquement converti enCommand.Pour utiliser la touche Ctrl sur macOS, remplacez
CtrlparMacCtrllorsque vous définissez le raccourci"mac".Si vous utilisez
MacCtrldans la combinaison pour une autre plate-forme, une erreur de validation se produira et l'extension ne pourra pas être installée.
Shiftest un modificateur facultatif sur toutes les plates-formes.Searchest un modificateur facultatif exclusif à ChromeOS.Certains raccourcis du système d'exploitation et de Chrome (par exemple, la gestion des fenêtres) sont toujours prioritaires par rapport aux raccourcis de commande d'extension et ne peuvent pas être remplacés.
Gérer les événements de commande
manifest.json:
{
"name": "My extension",
...
"commands": {
"run-foo": {
"suggested_key": {
"default": "Ctrl+Shift+Y",
"mac": "Command+Shift+Y"
},
"description": "Run \"foo\" on the current page."
},
"_execute_action": {
"suggested_key": {
"windows": "Ctrl+Shift+Y",
"mac": "Command+Shift+Y",
"chromeos": "Ctrl+Shift+U",
"linux": "Ctrl+Shift+J"
}
}
},
...
}
Dans votre service worker, vous pouvez lier un gestionnaire à chacune des commandes définies dans le fichier manifeste à l'aide de onCommand.addListener. Exemple :
service-worker.js :
chrome.commands.onCommand.addListener((command) => {
console.log(`Command: ${command}`);
});
Commandes d'action
Les commandes _execute_action (Manifest V3), _execute_browser_action (Manifest V2) et _execute_page_action (Manifest V2) sont réservées respectivement au déclenchement de votre action, de l'action du navigateur ou de l'action de la page. Ces commandes n'envoient pas d'événements command.onCommand comme les commandes standards.
Si vous devez agir en fonction de l'ouverture de votre pop-up, envisagez d'écouter un événement DOMContentLoaded dans le code JavaScript de votre pop-up.
Champ d'application
Par défaut, les commandes sont limitées au navigateur Chrome. Cela signifie que lorsque le navigateur n'est pas sélectionné, les raccourcis de commande sont inactifs. À partir de Chrome 35, les développeurs d'extensions peuvent éventuellement marquer une commande comme "globale". Les commandes globales fonctionnent également lorsque Chrome n'est pas sélectionné.
Les suggestions de raccourcis clavier pour les commandes globales sont limitées à Ctrl+Shift+[0..9]. Il s'agit d'une mesure de protection visant à minimiser le risque de remplacement des raccourcis dans d'autres applications. En effet, si Alt+P était autorisé en tant que raccourci global, le raccourci clavier permettant d'ouvrir une boîte de dialogue d'impression pourrait ne pas fonctionner dans d'autres applications.
Les utilisateurs finaux peuvent remapper les commandes globales sur la combinaison de touches de leur choix à l'aide de l'interface utilisateur disponible à l'adresse chrome://extensions/shortcuts.
Exemple :
manifest.json:
{
"name": "My extension",
...
"commands": {
"toggle-feature-foo": {
"suggested_key": {
"default": "Ctrl+Shift+5"
},
"description": "Toggle feature foo",
"global": true
}
},
...
}
Exemples
Les exemples suivants illustrent les fonctionnalités de base de l'API Commands.
Commande de base
Les commandes permettent aux extensions de mapper la logique à des raccourcis clavier pouvant être appelés par l'utilisateur. Dans sa forme la plus simple, une commande ne nécessite qu'une déclaration de commande dans le fichier manifeste de l'extension et l'enregistrement d'un écouteur, comme illustré dans l'exemple suivant.
manifest.json:
{
"name": "Command demo - basic",
"version": "1.0",
"manifest_version": 3,
"background": {
"service_worker": "service-worker.js"
},
"commands": {
"inject-script": {
"suggested_key": "Ctrl+Shift+Y",
"description": "Inject a script on the page"
}
}
}
service-worker.js :
chrome.commands.onCommand.addListener((command) => {
console.log(`Command "${command}" triggered`);
});
Commande d'action
Comme décrit dans la section Utilisation, vous pouvez également mapper une commande à l'action d'une extension. L'exemple suivant injecte un script de contenu qui affiche une alerte sur la page actuelle lorsque l'utilisateur clique sur l'action de l'extension ou déclenche le raccourci clavier.
manifest.json:
{
"name": "Commands demo - action invocation",
"version": "1.0",
"manifest_version": 3,
"background": {
"service_worker": "service-worker.js"
},
"permissions": ["activeTab", "scripting"],
"action": {},
"commands": {
"_execute_action": {
"suggested_key": {
"default": "Ctrl+U",
"mac": "Command+U"
}
}
}
}
service-worker.js :
chrome.action.onClicked.addListener((tab) => {
chrome.scripting.executeScript({
target: {tabId: tab.id},
func: contentScriptFunc,
args: ['action'],
});
});
function contentScriptFunc(name) {
alert(`"${name}" executed`);
}
// This callback WILL NOT be called for "_execute_action"
chrome.commands.onCommand.addListener((command) => {
console.log(`Command "${command}" called`);
});
Vérifier les commandes enregistrées
Si une extension tente d'enregistrer un raccourci déjà utilisé par une autre extension, le raccourci de la deuxième extension ne sera pas enregistré comme prévu. Vous pouvez offrir une expérience utilisateur final plus robuste en anticipant cette possibilité et en vérifiant les collisions au moment de l'installation.
service-worker.js :
chrome.runtime.onInstalled.addListener((reason) => {
if (reason === chrome.runtime.OnInstalledReason.INSTALL) {
checkCommandShortcuts();
}
});
// Only use this function during the initial install phase. After
// installation the user may have intentionally unassigned commands.
function checkCommandShortcuts() {
chrome.commands.getAll((commands) => {
let missingShortcuts = [];
for (let {name, shortcut} of commands) {
if (shortcut === '') {
missingShortcuts.push(name);
}
}
if (missingShortcuts.length > 0) {
// Update the extension UI to inform the user that one or more
// commands are currently unassigned.
}
});
}
Types
Command
Propriétés
-
description
chaîne facultatif
Description de la commande d'extension
-
nom
chaîne facultatif
Nom de la commande d'extension
-
raccourci
chaîne facultatif
Raccourci actif pour cette commande, ou vide s'il n'est pas actif.
Méthodes
getAll()
chrome.commands.getAll(
callback?: function,
): Promise<Command[]>
Renvoie toutes les commandes d'extension enregistrées pour cette extension et leur raccourci (si actif). Avant Chrome 110, cette commande ne renvoyait pas _execute_action.
Paramètres
Renvoie
-
Promise<Command[]>
Chrome 96 ou version ultérieureRésout avec une liste des commandes enregistrées.
Les promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
Événements
onCommand
chrome.commands.onCommand.addListener(
callback: function,
)
Se déclenche lorsqu'une commande enregistrée est activée à l'aide d'un raccourci clavier.