recursal/MDN huggingface dataset:
optional\_permissions
=====================

|  |  |
| --- | --- |
| Type | Tableau |
| Obligatoire | Non |
| Exemple | 
```json
"optional\_permissions": [
  "\*://developer.mozilla.org/\*",
  "webRequest"
]
```
 |

Utilisez la clé `optional_permissions` pour lister les permissions que vous souhaitez demander pour l'exécution, une fois que votre extension a été installée.

La clé de `permissions` énumère les permissions dont votre extension a besoin si elle doit être installée. En revanche , `optional_permissions` liste les permissions dont votre extension n'a pas besoin au moment de l'installation, mais qu'il peut être nécessaire de demander pour l'exécution à un moment donné après son installation. Pour demander une permission, utilisez l'API `permissions` . La demande de permission peut présenter probablement à l'utilisateur une boîte de dialogue lui demandant d'accorder la permission à votre extension.

Pour des conseils sur la conception de votre demande d'autorisations d'exécution, afin de maximiser la probabilité que les utilisateurs les accordent, consultez la section, voir Demander les permissions à éxécuter.

La clé peut contenir deux types d'autorisations: les permissions d'hôte et les permissions d'API

Permissions d'hôte
------------------

Ce sont les mêmes que les permissions d'hôte que vous pouvez spécifier dans la clé `permissions`.

Permissions d'API
-----------------

Vous pouvez inclure l'un des éléments suivants ici, mais pas dans tous les navigateurs : consultez la table de compatibilité pour obtenir des détails spécifiques au navigateur :

* `activeTab`
* `background`
* `bookmarks`
* `browserSettings`
* `clipboardRead`
* `clipboardWrite`
* `contentSettings`
* `contextMenus`
* `cookies`
* `debugger`
* `downloads`
* `downloads.open`
* `find`
* `geolocation`
* `history`
* `idle`
* `management`
* `notifications`
* `pageCapture`
* `privacy`
* `tabHide`
* `tabs`
* `topSites`
* `webNavigation`
* `webRequest`
* `webRequestBlocking`

Notez qu'il s'agit d'un sous-ensemble des permissions API permises dans les `permissions`.

Dans cet ensemble, les permissions suivantes sont accordées en silence, sans invite de l'utilisateur : `activeTab`, `cookies`, `idle`, `webRequest`, `webRequestBlocking`.

Exemple
-------


```json
 "optional\_permissions": ["\*://developer.mozilla.org/\*"]
```


Activez l'extension pour demander un accès privilégié aux pages sous developer.mozilla.org.


```json
  "optional\_permissions": ["tabs"]
```


Activez l'extension pour demander l'accès aux éléments privilégiés de l'API des onglets.


```json
  "optional\_permissions": ["\*://developer.mozilla.org/\*", "tabs"]
```


Activez l'extension pour demander les deux permissions ci-dessus.

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
devtools\_page
==============

|  |  |
| --- | --- |
| Type | chaîne |
| Obligatoire | Non |
| Exemple | 
```json
"devtools\_page": "devtools/my-page.html"
```
 |

Utilisez cette clé pour activer votre extension et intégrer les outils de développement du navigateur.

Cette clé est définie comme une URL d'un fichier HTML. Le fichier HTML doit être regroupé avec l'extension, et l'URL est relative à la racine de l'extension.

Voir Extension des outils développeurs pour plus d'informations.

Exemple
-------


```json
"devtools\_page": "devtools/my-page.html"
```

Compatibilité des navigateurs
-----------------------------

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

|  |  |
| --- | --- |
| Type | `Object` |
| Obligatoire | No |
| Exemple | 
```json
"background": {
  "scripts": ["background.js"]
}
```
 |

Utilisez la clé background pour inclure un ou plusieurs scripts d'arrière-plan, et éventuellement une page d'arrière-plan dans votre extension.

Les scripts d'arrière-plan sont l'endroit pour placer le code qui doit maintenir l'état à long terme, ou effectuer des opérations à long terme, indépendamment de la durée de vie de toutes les pages Web ou les fenêtres du navigateur.

Les scripts d'arrière-plan sont chargés dès que l'extension est chargée et restent chargés jusqu'à ce que l'extension soit désactivée ou désinstallée. Vous pouvez utiliser n'importe laquelle des WebExtension APIs dans le script, tant que vous avez demandé les permissions nécessaires.

Voir la section "Pages arrière-plan" dans l'anatomie d'une WebExtension pour plus de détails.

La clé background est un objet qui peut avoir l'une des deux propriétés suivantes, toutes deux facultatives :

|  |  |
| --- | --- |
| `"scripts"` | 
 Un ensemble de chaînes, chacune étant un chemin d'accès à une source
 JavaScript. Le chemin est relatif au fichier manifest.json lui-même.
 Ce sont les scripts d'arrière-plan qui seront inclus dans l'extension.

Les scripts partagent la même fenêtre globale.

 Les scripts sont chargés dans l'ordre où 'ils apparaissent dans le
 tableau.


**Notez qu'il y a un bug affectant les versions de Firefox
antérieures à la version 50** : lorsque le débogueur Firefox est ouvert, les scripts ne sont pas
 toujours chargés dans l'ordre indiqué dans le tableau. Pour contourner
 ce bug, vous pouvez utiliser la propriété "page" et inclure des
 scripts de fond de page en utilisant les balises <script>. Ce bug
 est résolu dans Firefox 50, et à partir de ce moment, les scripts sont
 toujours chargés dans l'ordre indiqué dans le tableau.
  |
| `"page"` | 

**Note :** Si vous souhaitez récupérer un script à
 partir d'un emplacement distant avec la balise <script> (par
 exemple : <script src =
 "https://code.jquery.com/jquery-1.7.1.min.js"> ), vous devrez
 également modifier la clé
 `content\_security\_policy`
 dans le fichier manifest.json de votre extension.


 Si vous spécifiez des "scripts", une page vide sera créée pour que vos
 scripts s'exécutent.


 Si vous avez besoin de contenu particulier dans la page, vous pouvez
 définir votre propre page en utilisant l'option "page".


 Si vous utilisez cette propriété, vous ne pouvez plus spécifier de
 scripts de fond à l'aide de «scripts», mais vous pouvez inclure vos
 propres scripts à partir de la page, tout comme dans une page Web
 normale.
  |

Exemple
-------


```json
 "background": {
    "scripts": ["jquery.js", "my-background.js"]
  }
```


Chargez deux scripts de fond.


```json
  "background": {
    "page": "my-background.html"
  }
```


Chargez une page d'arrière-plan personnalisée.

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
protocol\_handlers
==================

|  |  |
| --- | --- |
| Type | `Tableau` |
| Obligatoire | Non |
| Exemple | 
```json
"protocol\_handlers": [
  {
    "protocol": "ircs",
    "name": "IRC Mozilla Extension",
    "uriTemplate": "https://irccloud.mozilla.com/#!/%s"
  }
]
```
 |

Utilisez cette clé pour enregistrer un ou plusieurs gestionnaires de protocole basés sur le Web.

Un gestionnaire de protocole est une application qui sait comment gérer certains types de liens : par exemple, un client de messagerie est un gestionnaire de protocole pour les liens "mailto:". Lorsque l'utilisateur clique sur un lien "mailto:", le navigateur ouvre l'application sélectionnée comme le gestionnaire pour le protocole "mailto:" (ou offre un choix de gestionnaires, en fonction de leurs paramètres).

Avec cette clé, vous pouvez enregistrer un site Web en tant que gestionnaire pour un protocole particulier. La syntaxe et la sémantique de cette clé ressemblent beaucoup à la fonction `Navigator.registerProtocolHandler()`, excepté que avec `registerProtocolHandler()` un site Web ne peut s'inscrire lui-même comme un gestionnaire.

Chaque gestionnaire de protocole possède trois propriétés, toutes obligatoires :

`protocol`

Une chaîne définissant le protocole. Cela doit être soit:

* L'une des suivantes : "bitcoin", "dat", "dweb", "geo", "gopher", "im", "ipfs", "ipns", "irc", "ircs", "magnet", "mailto", "mms", "news", "nntp", "sip", "sms", "smsto", "ssb", "ssh", "tel", "urn", "webcal", "wtai", "xmpp".
* Une chaîne composée d'un nom personnalisé préfixé avec "web+" ou "ext+". Par exemple : "web+foo" ou "ext+foo". Le nom personnalisé doit comporter uniquement des caractères ASCII minuscules. Il est recommandé que les extensions utilisent la forme "ext+".

`name`

Une chaîne représentant le nom du gestionnaire de protocole. Il sera affiché à l'utilisateur lorsqu'il sera interrogé s'il souhaite que ce gestionnaire ouvre le lien.

`uriTemplate`

Une chaîne représentant l'URL du gestionnaire. Cette chaîne doit inclure "%s" comme espace réservé : il sera remplacé par l'URL échappée du document à traiter. Cette URL peut être une vraie URL, ou il peut s'agir d'un numéro de téléphone, d'une adresse de courrier électronique, etc. C'est une propriété localisable.

Exemple
-------


```json
"protocol\_handlers": [
  {
    "protocol": "magnet",
    "name": "Magnet Extension",
    "uriTemplate": "https://example.com/#!/%s"
  }
]
```


Les gestionnaires peuvent également être des pages d'extension.


```json
"protocol\_handlers": [
  {
    "protocol": "magnet",
    "name": "Magnet Extension",
    "uriTemplate": "/example.xhtml#!/%s"
  }
]
```

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
user\_scripts
=============

|  |  |
| --- | --- |
| Type | `Array` |
| Obligatoire | Non |
| Exemple | 
```json
  "user\_scripts": {
    "api\_script": "apiscript.js",
  }
```

 |

Charge le navigateur de charger le script utilisateur nommé dans la propriété `"api_script"` .

La propriété `"api_script"` nomme le script utilisateur qui sera associé à cette extension.

Une fois chargé, le script sera appelé après l'exécution du gestionnaire d'événement affecté à la propriété `userScripts.onBeforeScript`. Ceci permet au gestionnaire d'exporter un ensemble de méthodes API personnalisées qui seront mises à la disposition des scripts de contenu représentés par `contentScripts`.

Voir aussi
----------

* `userScripts`
* `contentScripts`
offline\_enabled
================

|  |  |
| --- | --- |
| Type | `String` |
| Obligatoire | Non |
| Exemple | 
```json
"offline\_enabled": true
```
 |

**Non standard:** Cette fonctionnalité n'est ni standard, ni en voie de standardisation. Ne l'utilisez pas pour des sites accessibles sur le Web : elle ne fonctionnera pas pour tout utilisateur. Il peut également y avoir d'importantes incompatibilités entre les implémentations et son comportement peut être modifié dans le futur.

Si l'application ou l'extension doit fonctionner hors ligne. Lorsque Chrome détecte qu'il est hors ligne, les applications avec ce champ réglé sur true seront mises en surbrillance dans la page Nouvel onglet.

A partir de Chrome 35, les applications (ChromeOS uniquement à partir de 2018) sont supposées activées hors ligne et la valeur par défaut de `"offline_enabled"` est `true` sauf si la permission `"webview"` est demandée.Dans ce cas, la connectivité réseau est supposée nécessaire et `"offline_enabled"` par défaut est `false`.

La valeur `"offline_enabled"` est également utilisée pour déterminer si un contrôle de connectivité réseau sera effectué lors du lancement d'une application en mode ChromeOS kiosk. Une vérification de la connectivité réseau sera effectuée lorsque les applications ne sont pas activées hors ligne, et le lancement de l'application sera mis en attente jusqu'à ce que l'appareil obtienne la connectivité à Internet.

Compatibilité des navigateurs
-----------------------------

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

|  |  |
| --- | --- |
| Type | chaîne |
| Obligatoire | Oui |
| Exemple | 
```json
"name": "Mon extension"
```
 |

Nom de l'extension. Ceci permet d'identifier l'extension dans l'interface utilisateur du navigateur et sur les sites comme addons.mozilla.org.

Il est recommandé de garder le nom suffisamment court pour pouvoir s'afficher dans l'interface utilisateur. Google Chrome et Microsoft Edge limitent la longueur du nom à 45 caractères.

C'est une propriété localisable.

Exemple
-------


```json
"name": "Mon extension"
```

Compatibilité des navigateurs
-----------------------------

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

|  |  |
| --- | --- |
| Type | `Object` |
| Obligatoire | Non |
| Exemple | 
```json
"dictionaries": {
  "en-US": "dictionaries/en-US.dic"
}
```
 |

Les clés des `dictionaries` specifie le `locale_code` pour lequel votre extension fournit un dictionnaire. Bien que le dictionnaire se compose de deux fichiers, l'un avec une extension `.dic` et l'autre avec une extension `.aff`, seul celui avec l'extension `.dic` est référencé dans le fichier manifest.json.

Exemple
-------


```json
"dictionaries": {
  "en-US": "dictionaries/en-US.dic"
}
```

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
version\_name
=============

|  |  |
| --- | --- |
| Type | `String` |
| Obligatoire | Non |
| Exemple | 
```json
"version\_name": "0.1 beta"
```
 |

En plus du champ version, qui est utilisé à des fins de mise à jour, version\_name peut être défini sur une chaîne de version descriptive et sera utilisé à des fins d'affichage s'il est présent.

Si aucun **version\_name** n'est présent, le champ de **version** sera également utilisé à des fins d'affichage.

Compatibilité des navigateurs
-----------------------------

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

|  |  |
| --- | --- |
| Type | `Object` |
| Obligatoire | Non |
| Exemple | 
```json
"storage": {
  "managed\_schema": "schema.json"
}
```
 |

Utilisez la clé `storage` pour spécifier le nom du fichier de schéma qui définit la structure des données dans le stockage géré.

Les données gérées déclarent les politiques d'entreprise soutenues par l'application. Les politiques sont analogues aux options mais sont configurées par un administrateur système au lieu de l'utilisateur, ce qui permet à l'application d'être configurée pour tous les utilisateurs d'une organisation.

Après avoir déclaré les politiques, elles sont lues à partir de l'API `storage.managed`. Cependant, si une valeur de politique n'est pas conforme au schéma, elle n'est pas publiée par l'API `storage.managed`. Il appartient à l'application d'appliquer les politiques configurées par l'administrateur.

**Note :** Firefox ne définit pas de schéma pour le stockage géré, soir `storage.managed` pour plus de détails.

La clé de `storage` est un objet qui possède les propriétés requises suivantes:

|  |  |
| --- | --- |
| `managed_schema` | 
 Un `String` spécifiant le chemin complet du fichier dans
 l'extension qui définit le schéma de gestion du stockage..
  |

Compatibilité des navigateurs
-----------------------------

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

**Note :**

Cette page comprend les détails de la page du site web des développeurs de Chrome Manifeste pour les zones de stockage incluses ici sous la licence Creative Commons Attribution 3.0 United States License.
incognito
=========

|  |  |
| --- | --- |
| Type | chaîne |
| Obligatoire | Non |
| Exemple | 
```json
"incognito": "spanning"
```


```json
"incognito": "split"
```


```json
"incognito": "not\_allowed"
```
 |

Utilisez la clé `incognito` pour contrôler la façon dont l'extension fonctionne avec les fenêtres de navigation privées.

Il s'agit d'une chaîne qui peut prendre l'une des valeurs suivantes:

* "spanning" (la valeur par défaut) : affichera des événements à partir de fenêtres et d'onglets privés et non privés. Fenêtres et onglets obtiendront une propriété `incognito` dans la `fenêtre` ou l'`onglet` qui les représente. Cette propriété indique si l'objet est ou non privé :

```js
browser.windows.getLastFocused().then((windowInfo) => {
  console.log(`Window is private: ${windowInfo.incognito}`);
});
```

* "split" : l'extension sera divisée entre des fenêtres privées et non privées. Il existe effectivement deux copies de l'extension en cours d'exécution : l'une ne voit que des fenêtres non privées, l'autre ne voit que des fenêtres privées. Chaque copie a un accès isolé aux APIs Web (par exemple, `localStorage` n'est pas partagé). Toutefois, l'API des WebExtension `storage.local` est partagé. (**Note:** ce paramètre n'est pas supporté par Firefox.)
* "not\_allowed" : les onglets privés et les fenêtres sont invisibles pour l'extension.
Exemple
-------


```json
"incognito": "spanning"
```



```json
"incognito": "split"
```



```json
"incognito": "not\_allowed"
```

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
externally\_connectable
=======================

**Expérimental:** **Cette fonction est expérimentale**  
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.  
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

|  |  |
| --- | --- |
| Type | `Object` |
| Obligatoire | Non |
| Exemple | 
```
"externally_connectable": {
  // List of extension IDs that extension wishes to communicate with
  // If "browser_action" is specified but "browser_action.ids" is not,
  // no extensions can communicate with this extension.
  // To match all extension IDs use "*".
  "ids": [
    "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
    "cccccccccccccccccccccccccccccccc"
  ],
  // Regular expression patterns specifying web pages
  // If "matches" is not specified, no web pages can communicate with
  // this extension
  "matches": [
    "https://example1.com/*",
    "*://*.example2.com/*"
  ]
}
```
 |

Une connexion externe permet au développeur d'extensions de contrôler quelles autres extensions et pages Web peuvent communiquer avec cette extension via `runtime.connect()` et `runtime.sendMessage()` passage de message. Si `externally_connectable` n'est pas spécifié, toutes les extensions peuvent communiquer entre elles, mais pas avec les pages Web.

### Attribut "ids"

`ids` active la communication entre cette extension et les autres extensions installées spécifiées par les identificateurs d'extension. Utilisez le motif `"*"` si vous souhaitez communiquer avec toutes les extensions.

### Attribut "matches"

Les correspondances permettent la communication entre cette extension et les pages Web. Voici une liste d'expressions régulières pour les URL de page avec lesquelles vous souhaitez communiquer.

**Note :** Si `browser_action` n'est pas spécifié, la communication entre les extensions est toujours autorisée, comme si `browser_action` était `{"ids": ["*"] }`, par conséquent, si vous spécifiez `browser_action.matches` n'oubliez pas d'ajouter des identifiants si vous souhaitez toujours communiquer. avec d'autres extensions.

Compatibilité des navigateurs
-----------------------------

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

|  |  |
| --- | --- |
| Type | `Objet` |
| Obligatoire | Non |
| Exemple | 
```json
"developer": {
  "name": "Walt Whitman",
  "url": "https://en.wikipedia.org/wiki/Walt\_Whitman"
}
```
 |

Le nom du développeur de l'extension et l'URL de sa page d'accueil, destinés à être affichés dans l'interface utilisateur du navigateur.

L'objet et ses deux propriétés sont facultatifs. Les propriétés "nom" et "url", si présentes, remplacent respectivement les clés author et homepage\_url. Cet objet ne permet qu'un seul nom de développeur et une URL à spécifier.

Ceci est une propriété localisable.

Exemple
-------


```json
"developer": {
  "name": "Walt Whitman",
  "url": "https://en.wikipedia.org/wiki/Walt\_Whitman"
}
```

Compatibilité des navigateurs
-----------------------------

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

|  |  |
| --- | --- |
| Type | `Objet` |
| Obligatoire | Non |
| Exemple | 
```json
"icons": {
  "48": "icon.png",
  "96": "icon@2x.png"
}
```
 |

La clé icons spécifie des icônes pour votre extension. Ces icônes seront utilisées pour représenter l'extension dans des composants tels que le gestionnaire des modules d'extensions.

Elle se compose d'une paire de valeurs-clés de taille d'image et le chemin d'accès au fichier image par rapport au répertoire racine de l'extension.

Si la clé icons n'est pas fournie, une icône d'extension standard sera utilisée par défaut.

Vous devez fournir au moins une icône d'extension principale, idéalement d'une taille de 48x48 pixels. C'est l'icône par défaut qui sera utilisée dans le Gestionnaire des extensions. Vous pouvez, cependant, fournir des icônes de n'importe quelle taille, et Firefox tentera de trouver la meilleure icône à afficher dans les différents composants.

Firefox considérera la résolution de l'écran lors du choix d'une icône. Pour offrir la meilleure expérience visuelle aux utilisateurs avec des écrans haute résolution, tels que les écrans Retina, fournissez des versions deux fois plus grandes de toutes vos icônes.

Exemple
-------

Les clés dans l'objet icons spécifient la taille de l'icône en pixels et la valeur spécifie le chemin relatif de l'icône. Cet exemple contient une icône d'extension 48px et une version plus grande pour les écrans haute résolution.


```json
"icons": {
  "48": "icon.png",
  "96": "icon@2x.png"
}
```

SVG
---

Vous pouvez utiliser SVG et le navigateur mettra à l'échelle appropriée votre icône. Il existe actuellement deux réserves :

1. Vous devez spécifier un "viewBox" dans l'image. Par exemple :

```html
<svg viewBox="0 0 48 48" width="48" height="48" ...
```

2. Même si vous pouvez utiliser un fichier, vous devez toujours spécifier différentes tailles de l'icône dans votre `manifest`. Par exemple :

```json
"icons": {
  "48": "icon.svg",
  "96": "icon.svg"
}
```


**Note :** si vous utilisez un programme comme Inkscape pour créer un SVG, vous voudrez peut-être l'enregistrer en tant que "SVG simple". Firefox peut être gêné par des espaces de noms spéciaux, et ne pas afficher votre icône.

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.
homepage\_url
=============

|  |  |
| --- | --- |
| Type | chaîne |
| Obligatoire | Non |
| Exemple | 
```json
"homepage\_url": "https://example.org/my-addon"
```
 |

URL pour la page d'accueil de l'extension.

Si la clé dévelopeur est fournie et qu'elle contient la propriété "url", cela remplacera la clé "homepage\_url".

c'est une proriété localisable.

Exemple
-------


```json
"homepage\_url": "https://github.com/mdn/webextensions-examples/tree/master/beastify"
```

Compatibilité des navigateurs
-----------------------------

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