menus.update()
==============

Met à jour un élément de menu précédemment créé.

Pour la compatibilité avec d'autres navigateurs, Firefox rend cette méthode disponible via l'espace de noms `contextMenus` ainsi que l'espace de noms des `menus`.

C'est une fonction asynchrone qui renvoie une `Promise`.

Syntaxe
-------


```js
var updating = browser.menus.update(
  id, // integer or string
  updateProperties, // object
);
```

### Paramètres

`id`

`integer` ou `string`. L'ID de l'article à mettre à jour.

`updateProperties`

`object`. Les propriétés à mettre à jour. Identique à l'objet `createProperties` passé à `menus.create()`, sauf que l'`id` ne peut être défini. En outre, les `icônes` ne peuvent être modifiées que dans les commandes de menu, et non dans le menu contextuel de niveau supérieur. L'icône de niveau supérieur correspond à l'icône principale de l'extension telle que déclarée dans le fichier manifeste de l'extension.

`checked` Facultatif

`boolean`. L'état initial d'une case à cocher ou d'un élément radio : `true` fpour sélectionné et `false` pour non sélectionné. Un seul élément radio peut être sélectionné à la fois dans un groupe donné d'éléments radio.

`command` Facultatif

`string`. Chaîne décrivant une action qui doit être effectuée lorsque l'utilisateur clique sur l'élément. Les valeurs possibles sont :

* `"_execute_browser_action"`: simuler un clic sur l'action du navigateur de l'extension, en ouvrant son popup s'il en a un
* `"_execute_page_action"`: simuler un clic sur l'action de la page de l'extension, en ouvrant son popup si elle en a une
* `"_execute_sidebar_action"`: ouvre la barre latérale de l'extension

Cliquer sur l'élément déclenchera toujours l'événement `menus.onClicked`, mais rien ne garantit l'ordre ici: la commande peut être exécutée avant le lancement de `onClicked`.

`contexts` Facultatif

`array` de ``menus.ContextType``. Tableau des contextes dans lesquels cet élément de menu apparaîtra. Si cette option est omise :

* si le parent de l'élément a des contextes définis, alors cet élément héritera des contextes de son parent
* sinon, l'élément reçoit un tableau de contexte de ["page"].

`documentUrlPatterns` Facultatif

`array` de `string`. Vous permet de limiter l'élément à s'appliquer uniquement aux documents dont l'URL correspond à l'un des éléments motifs de données. Ceci s'applique également aux cadres.

`enabled` Facultatif

`boolean`. Si cet élément de menu est activé ou désactivé. La valeur par défaut est `true`.

`icons` Facultatif

`object`. Une ou plusieurs icônes personnalisées à afficher à côté de l'élément. Les icônes personnalisées ne peuvent être définies que pour les éléments apparaissant dans les sous-menus. Cette propriété est un objet avec une propriété pour chaque icône fournie : le nom de la propriété doit inclure la taille de l'icône en pixels, et le chemin est relatif à l'icône du répertoire racine de l'extension. Le navigateur essaie de choisir une icône 16x16 pixels pour un affichage normal ou une icône 32x32 pixels pour un affichage haute densité. Pour éviter toute mise à l'échelle, vous pouvez spécifier des icônes comme celle-ci :


```json
"icons": {
      "16": "path/to/geo-16.png",
      "32": "path/to/geo-32.png"
    }
```


Alternativement, vous pouvez spécifier une seule icône SVG, et elle sera mise à l'échelle de manière appropriée :


```json
"icons": {
      "16": "path/to/geo.svg"
    }
```


**Note :** The top-level menu item uses the icons specified in the manifest rather than what is specified with this key.

`id` Facultatif

`string`. L'ID unique à affecter à cet article. Obligatoire pour les pages d'événements. Ne peut pas être le même qu'un autre ID pour cette extension.

`onclick` Facultatif

`function`. Une fonction qui sera appelée lorsque vous cliquerez sur l'élément de menu. Les pages d'événements ne peuvent pas l'utiliser : elles doivent plutôt enregistrer un auditeur pour `menus.onClicked`.

`parentId` Facultatif

`integer` ou `string`. L'ID d'un élément de menu parent ; ceci fait de l'élément un enfant d'un élément précédemment ajouté. Remarque : Si vous avez créé plus d'un élément de menu, les éléments seront placés dans un sous-menu. Le parent du sous-menu sera étiqueté avec le nom de l'extension.

`targetUrlPatterns` Facultatif

`array` de `string`. Similairer à `documentUrlPatterns`, mais vous permet de filtrer en fonction de la `href` des balises d'ancre et l'attribut `src` des balises img/audio/video. Ce paramètre prend en charge n'importe quel schéma d'URL, même ceux qui ne sont généralement pas autorisés dans un modèle de correspondance.

`title` Facultatif

`string`. Le texte à afficher dans le poste. Obligatoire sauf si le `type` est "separateur".

Vous pouvez utiliser "`%s`" dans la chaîne de caractères. Si vous le faites dans un élément de menu, et qu'un texte est sélectionné dans la page lorsque le menu est affiché, le texte sélectionné sera interpolé dans le titre. Par exemple, si `title` est "Traduction '%s' à Pig Latin" et que l'utilisateur sélectionne le mot "cool", puis active le menu, alors le titre de l'élément de menu sera : "Traduction 'cool' à Pig Latin".

Si le titre contient une esperluette "&", le caractère suivant sera utilisé comme clé d'accès pour l'élément et l'esperluette ne sera pas affichée. Les exceptions à cette règle sont les suivantes :

* Si le caractère suivant est également une esperluette : alors une esperluette simple sera affichée et aucune clé d'accès ne sera définie. En effet, "&&" est utilisé pour afficher une seule esperluette.
* Si les caractères suivants sont la directive d'interpolation "%s" : alors l'esperluette ne sera pas affichée et aucune clé d'accès ne sera définie.
* Si l'esperluette est le dernier caractère du titre : alors l'esperluette ne sera pas affichée et aucune clé d'accès ne sera définie.

Seule la première esperluette sera utilisée pour définir une clé d'accès : les esperluettes suivantes ne seront pas affichées mais ne définiront pas les clés. Ainsi, "&A et &B" seront affichés comme "A et B" et "A" comme clé d'accès

`type` Facultatif

``menus.ItemType``. Le type d'élément de menu : "normal", "checkbox", "radio", "separator". Defaults to "normal".

`viewTypes` Facultatif

``extension.ViewType``. Liste des types d'affichage où l'élément de menu sera affiché. Par défaut à n'importe quelle vue, y compris celles qui n'ont pas de `viewType`.

`visible` Facultatif

`boolean`. Si l'élément est affiché dans le menu. La valeur par défaut est `true`.


### Valeur retournée

Une `Promise` qui sera satisfaite sans argument si la mise à jour a réussi, ou rejetée avec un message d'erreur si la mise à jour a échoué.

Exemples
--------

Cet exemple crée un élément de menu, puis met à jour son titre lorsque l'utilisateur clique dessus :


```js
function onUpdated() {
  console.log("item updated successfully");
}

function onError() {
  console.log("error updating item:" + browser.runtime.lastError);
}

browser.menus.create({
  id: "do-not-click-me",
  title: "Do not click this button",
  contexts: ["all"],
});

browser.menus.onClicked.addListener(function (info, tab) {
  if (info.menuItemId == "do-not-click-me") {
    var updating = browser.contextMenus.update(info.menuItemId, {
      title: "Do not click this button again",
    });
    updating.then(onUpdated, onError);
  }
});
```

### Example extensions

* menu-accesskey-visible
* menu-demo
* menu-labelled-open
Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

**Note :**

Cette API est basée sur l'API `chrome.contextMenus` de chromium. Cette documentation est dérivée de `context_menus.json` dans le code Chromium.