diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/fr/mozilla/add-ons/webextensions | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip |
initial commit
Diffstat (limited to 'files/fr/mozilla/add-ons/webextensions')
652 files changed, 70771 insertions, 0 deletions
diff --git a/files/fr/mozilla/add-ons/webextensions/ajouter_un_bouton_a_la_barre_d_outils/index.html b/files/fr/mozilla/add-ons/webextensions/ajouter_un_bouton_a_la_barre_d_outils/index.html new file mode 100644 index 0000000000..5472013ca7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/ajouter_un_bouton_a_la_barre_d_outils/index.html @@ -0,0 +1,224 @@ +--- +title: Ajouter un bouton à la barre d'outils +slug: Mozilla/Add-ons/WebExtensions/Ajouter_un_bouton_a_la_barre_d_outils +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar +--- +<div>{{AddonSidebar}}</div> + +<p>Les boutons de la barre d’outils sont l’un des principaux composants UI disponibles aux WebExtensions. Les boutons de la barre d’outils sont présents dans la barre d’outils principale du navigateur et contiennent une icône. Lorsque l’utilisateur clique sur l’icône, une des deux choses peut arriver :</p> + +<ul> + <li>Si vous avez spécifié une fenêtre contextuelle pour l’icône, la fenêtre contextuelle s’affiche. Les fenêtres contextuelles sont des boîtes de dialogue spécifiées à l’aide de HTML, CSS et JavaScript.</li> + <li>Si vous n’avez pas spécifié une fenêtre contextuelle, un événement de clic est généré, que vous pouvez écouter dans votre code et effectuer un autre type d’action en réponse</li> +</ul> + +<p>Dans WebExtensions, ces types de boutons s’appellent « actions du navigateur » et sont configurés de la manière suivante :</p> + +<ul> + <li>La clé de manifest.json <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> permet de définir le bouton.</li> + <li>L’API JavaScript <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">browserAction</a></code> est utilisé pour écouter les clics modifier le bouton ou effectuer des actions via votre code.</li> +</ul> + +<h2 id="Un_bouton_simple">Un bouton simple</h2> + +<p>Dans cette section, nous créerons une WebExtension qui ajoute un bouton à la barre d’outils. Lorsque l’utilisateur clique sur le bouton, nous ouvrirons <a href="https://developer.mozilla.org">https ://developer.mozilla.org</a> dans un nouveau onglet.</p> + +<p>Tout d’abord, créez un nouveau dossier, « bouton », et créez un fichier appelé « manifest.json » à l’intérieur avec le contenu suivant :</p> + +<pre class="brush: json">{ + + "description": "Demonstrating toolbar buttons", + "manifest_version": 2, + "name": "button-demo", + "version": "1.0", + + "background": { + "scripts": ["background.js"] + }, + + "browser_action": { + "default_icon": { + "16": "icons/page-16.png", + "32": "icons/page-32.png" + } + } + +}</pre> + +<p>Cela spécifie que nous aurons un script en <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">arrière‐plan</a> nommé « background.js », et une action du navigateur (bouton) et une action du navigateur (bouton) dont les icônes vont vivre dans le répertoire « icônes ».</p> + +<div class="pull-aside"> +<div class="moreinfo">Ces icônes proviennent des <a href="https://www.iconfinder.com/iconsets/bitsies">bits !</a> icônes créées parRecep Kütük.</div> +</div> + +<p><span id="result_box" lang="fr"><span>Ensuite, créez un dossier « icons » dans le dossier « buttons » et enregistrez les deux icônes ci‐dessous :</span></span></p> + +<ul> + <li>« page‐16.png » (<img alt="" src="https://mdn.mozillademos.org/files/13476/page-16.png" style="height: 16px; width: 16px;">)</li> + <li>« page‐32.png » (<img alt="" src="https://mdn.mozillademos.org/files/13478/page-32.png" style="height: 32px; width: 32px;">).</li> +</ul> + +<div></div> + +<p>Nous avons deux icônes que nous pouvons utiliser, la plus grande dans les écrans haute densité. Le navigateur prend en charge la sélection de la meilleure icône pour l’affichage courrant.</p> + +<p>Ensuite, créez « background.js » dans le répertoire racine de l’add‐on, et donnez‐lui le contenu suivant :</p> + +<pre class="brush: js">function openPage() { + browser.tabs.create({ + url: "https://developer.mozilla.org" + }); +} + +browser.browserAction.onClicked.addListener(openPage);</pre> + +<p>Cela écoute l’événement de clic de l’action du navigateur ; Lorsque l’événement se déclenche, la fonction <code>openPage()</code> est exécuté, ce qui ouvre la page spécifiée à l’aide de l’API des <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs">onglets</a></code>.</p> + +<p>A ce point, l’extension complète devrait ressembler à ceci :</p> + +<pre class="line-numbers language-html"><code class="language-html">button/ + icons/ + page-16.png + page-32.png + background.js + manifest.json</code></pre> + +<p>Maintenant <a href="https://developer.mozilla.org/fr/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">installer la WebExtension</a> et cliquez sur le bouton :</p> + +<p>{{EmbedYouTube("kwwTowgT‐Ys")}}</p> + +<h2 id="Ajout_d’une_fenêtre_contextuelle">Ajout d’une fenêtre contextuelle</h2> + +<p>Essayons d’ajouter une fenêtre contextuelle au bouton. Remplacez manifest.json par ceci :</p> + +<pre class="brush: json">{ + + "description": "Demonstrating toolbar buttons", + "manifest_version": 2, + "name": "button-demo", + "version": "1.0", + + "browser_action": { + "browser_style": true, + "default_popup": "popup/choose_page.html", + "default_icon": { + "16": "icons/page-16.png", + "32": "icons/page-32.png" + } + } + +}</pre> + +<p>Nous avons fait trois changements par rapport à l’original :</p> + +<ul> + <li>Nous ne parlons plus de « background.js », car maintenant nous allons gérer la logique de l’extension dans le script de la fenêtre contextuelle (vous êtes autorisé à utiliser background.js ainsi qu’un popup, c’est juste que nous n’en avons pas besoin dans ce cas).</li> + <li> + <p>Nous avons ajouté <code>"browser_style":true</code>, ce qui aidera le style de notre popup à ressembler davantage à une partie du navigateur.</p> + </li> + <li>Enfin, nous avons ajouté <code>"default_popup": "popup/choose_page.html"</code>, qui indique au navigateur que l’action du navigateur va maintenant afficher une fenêtre contextuelle lorsqu’elle est cliquée, dont le document se trouve dans « popup / choose_page.html ».</li> +</ul> + +<p>Donc maintenant nous devons créer cette fenêtre contextuelle. Créez un répertoire appelé « popup » puis créez un fichier appelé « choose_page.html » à l’intérieur. Donnez‐lui les contenus suivants :</p> + +<pre class="brush: html"><!DOCTYPE html> + +<html> + <head> + <meta charset="utf-8"> + <link rel="stylesheet" href="choose_page.css"/> + </head> + +<body> + <div class="page-choice">developer.mozilla.org</div> + <div class="page-choice">support.mozilla.org</div> + <div class="page-choice">addons.mozilla.org</div> + <script src="choose_page.js"></script> +</body> + +</html></pre> + +<p>Vous pouvez voir qu’il s’agit d’une page HTML normale contenant trois éléments {{htmlelement ("div")}}, chacun avec le nom d’un site Mozilla à l’intérieur. Il comprend également un fichier CSS et un fichier JavaScript, que nous ajouterons ensuite.</p> + +<p>Créez un fichier appelé « choose_page.css » dans le répertoire « popup » et donnez‐lui ce contenu :</p> + +<pre class="brush: css">html, body { + width: 300px; +} + +.page-choice { + width: 100%; + padding: 4px; + font-size: 1.5em; + text-align: center; + cursor: pointer; +} + +.page-choice:hover { + background-color: #CFF2F2; +}</pre> + +<p>C'est juste un peu d’habillage pour notre popup.</p> + +<p>Ensuite, créez un fichier « choose_page.js » dans le répertoire « popup » et donnez‐le à ces contenus :</p> + +<pre class="brush: js">document.addEventListener("click", function(e) { + if (!e.target.classList.contains("page-choice")) { + return; + } + + var chosenPage = "https://" + e.target.textContent; + browser.tabs.create({ + url: chosenPage + }); + +});</pre> + +<p>Dans notre JavaScript, nous écoutons les clics sur les choix contextuels. Nous vérifions d’abord si le clic a atterri sur l’un des choix de la page ; Sinon, nous ne faisons rien d’autre. Si le clic atterrit sur un choix de page, nous construisons une URL à partir de celui‐ci, et ouvrons un nouvel onglet contenant la page correspondante. Notez que nous pouvons utiliser les API WebExtension dans les scripts contextuels, tout comme nous le pouvons dans les scripts en arrière‐plan.</p> + +<p>La structure finale de l’add‐on devrait ressembler à ceci :</p> + +<pre>button/ + icons/ + page-16.png + page-32.png + popup/ + choose_page.css + choose_page.html + choose_page.js + manifest.json</pre> + +<p>Maintenant, rechargez l’extension, cliquez de nouveau sur le bouton et essayez de cliquer sur les choix dans la fenêtre contextuelle :</p> + +<p>{{EmbedYouTube("QPEh1L1xq0Y")}}</p> + +<h2 id="Actions_de_page">Actions de page</h2> + +<p>Les <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Page_actions">actions de page</a> sont comme les actions du navigateur, mais qui ne sont pertinentes que pour les pages particulières, plutôt que sur le navigateur dans son ensemble.</p> + +<p>Alors que les actions du navigateur sont toujours affichées, les actions de la page ne sont affichées que dans les onglets où elles sont pertinentes. Les boutons d’action de la page sont affichés dans la barre d’URL, plutôt que dans la barre d’outils du navigateur.</p> + +<h2 id="Pour_en_savoir_plus">Pour en savoir plus</h2> + +<ul> + <li><code>Clé de manifest <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code></li> + <li><code>API <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">browserAction</a></code></li> + <li>Exemples d’actions du navigateur : + <ul> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/beastify">beastify</a></li> + <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/bookmark-it">Bookmark it !</a></li> + <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/favourite-colour">favourite‐colour</a></li> + <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/inpage-toolbar-ui">inpage‐toolbar‐ui</a></li> + <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/open-my-page-button">open‐my‐page‐button</a></li> + </ul> + </li> + <li><code>Clé de manifest <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code></li> + <li><code>API <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/pageAction">pageAction</a></code></li> + <li>Exemple d’action de page + <ul> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/chill-out">chill‐out</a></li> + </ul> + </li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/ajouter_une_page_de_paramètres/index.html b/files/fr/mozilla/add-ons/webextensions/ajouter_une_page_de_paramètres/index.html new file mode 100644 index 0000000000..9635785e5d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/ajouter_une_page_de_paramètres/index.html @@ -0,0 +1,219 @@ +--- +title: Ajouter une page de paramètres +slug: Mozilla/Add-ons/WebExtensions/Ajouter_une_page_de_paramètres +tags: + - Paramètres + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Implement_a_settings_page +--- +<div>{{AddonSidebar}}</div> + +<p>Une page de paramètres donne aux utilisateurs la possiblité de voir et de changer les paramètres (parfois aussi appelée "préférences" ou "options") de l'extension.</p> + +<p>Avec les WebExtensions, les paramètres sont généralement stockés en utilisant l'API <code><a href="/fr/Add-ons/WebExtensions/API/storage">storage</a></code>. L'ajout d'une page de paramètres se fait en trois étapes :</p> + +<ul> + <li>Écrire un fichier HTML qui affiche les paramètres et permet à l'utilisateur de les changer.</li> + <li>Écrire un script, inclus depuis le fichier HTML, qui alimente les paramètres depuis le stockage et met à jour les paramètres stockés quand l'utilisateur les change.</li> + <li>Renseigner le chemin du fichier HTML come clé de <code><a href="/fr/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code> dans manifest.json. Ainsi, le document HTML sera affiché dans le gestionnaire d'extension, aux cotés des nom et description de l'extension.</li> +</ul> + +<div class="note"> +<p>Vous pouvez aussi ouvrir cette page automatiquement en utilisant la fonction <code><a href="/fr/Add-ons/WebExtensions/API/runtime/openOptionsPage">runtime.openOptionsPage()</a></code>.</p> +</div> + +<h2 id="Une_WebExtension_simple">Une WebExtension simple</h2> + +<p>Tout d'abord, nous allons écrire une extension qui ajoute une bordure bleue à chaque page visitée par l'utilisateur.</p> + +<p>Créez un nouveau dossier nommé "settings", dans lequel vous créez un fichier appelé "manifest.json" ayant pour contenu :</p> + +<pre class="brush: json">{ + + "manifest_version": 2, + "name": "Settings example", + "version": "1.0", + + "content_scripts": [ + { + "matches": ["<all_urls>"], + "js": ["borderify.js"] + } + ] + +}</pre> + +<p>Les instructions de l'extension charge au navigateur un script de contenu nommé "borderify.js" dans chaque page que l'utilisateur visite.</p> + +<p>Ensuite, créez un fichier nomé "borderify.js" dans le dossier "paramètres", et remplissez le comme suit :</p> + +<pre class="brush: js">document.body.style.border = "10px solid blue";</pre> + +<p>Ça ajoute une bordure bleue à la page.</p> + +<p>Maintenant, <a href="https://developer.mozilla.org/fr-FR/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">installez la WebExtension</a> et testez la — ouvrez la page que vous voulez :</p> + +<p>{{EmbedYouTube("E-WUhihF8fw")}}</p> + +<h2 id="Ajouter_des_paramètres">Ajouter des paramètres</h2> + +<p>Maintenant, créez une page de paramètres pour autoriser l'utilisateur à définire la couleur de la bordure.</p> + +<p>D'abord, mettez à jour le contenu de "manifest.json" avec ceci :</p> + +<pre class="brush: json">{ + + "manifest_version": 2, + "name": "Settings example", + "version": "1.0", + + "content_scripts": [ + { + "matches": ["<all_urls>"], + "js": ["borderify.js"] + } + ], + + "options_ui": { + "page": "options.html" + }, + + "permissions": ["storage"], + + "applications": { + "gecko": { + "id": "addon@example.com", + } + } + +} +</pre> + +<p>Vous avez ajoutez trois nouvelles clés :</p> + +<ul> + <li><code><a href="/fr/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code>: Cela définit un document HTML comme étant la page de paramètres (aussi appelée page d'options) pour cette extension.</li> + <li><code><a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code>: Vous allez utilisez l'API <code><a href="/fr/Add-ons/WebExtensions/API/storage">storage</a></code> pour stocker les paramètres, vous devez donc demander la permission d'utiliser cette API.</li> + <li><code>applications</code>: Vous devez inclure un identifiant d'extension afin d'enregistrer et de récupérer les paramètres du stockage synchronisé.</li> +</ul> + +<p>Ensuite, puisque vous avez promis de fournir "options.html", créons-le. Créez un fichier avec ce nom dans le répertoire "settings", et donnez-lui le contenu suivant :</p> + +<pre class="brush: html"><!DOCTYPE html> + +<html> + <head> + <meta charset="utf-8"> + </head> + + <body> + + <form> + <label>Border color<input type="text" id="color" ></label> + <button type="submit">Save</button> + </form> + + <script src="options.js"></script> + + </body> + +</html> +</pre> + +<p>Cela définit un {{htmlelement("form")}} avec un label de texte {{htmlelement("input")}} et un {{htmlelement("button")}} de type "submit". Ça inclus également un script appelé "options.js".</p> + +<p>Créez "options.js", lui-aussi dans le dossier "settings", et remplissez le comme ceci :</p> + +<pre class="brush: js">function saveOptions(e) { + e.preventDefault(); + browser.storage.sync.set({ + color: document.querySelector("#color").value + }); +} + +function restoreOptions() { + + function setCurrentChoice(result) { + document.querySelector("#color").value = result.color || "blue"; + } + + function onError(error) { + console.log(`Error: ${error}`); + } + + var getting = browser.storage.sync.get("color"); + getting.then(setCurrentChoice, onError); +} + +document.addEventListener("DOMContentLoaded", restoreOptions); +document.querySelector("form").addEventListener("submit", saveOptions); +</pre> + +<p>Cela fait deux choses :</p> + +<ul> + <li>Quand le document a été chargé, le script attribue une valeur à "color" depuis le stockage grâce à<code><a href="/fr/Add-ons/WebExtensions/API/storage/StorageArea/get"> storage.sync.get()</a></code>. Si la valeur n'est pas renseignée, il utilise par défaut "blue". Ceci récupère les valeurs de la zone de stockage de <code>synchronisation</code>.</li> + <li>Quand l'utilisateur valide le formulaire en cliquant sur "Save", le script stocke la valeur de textbox en utilisant <code><a href="/fr/Add-ons/WebExtensions/API/storage/StorageArea/set">storage.sync.set()</a></code>. Ceci permet d'enregistrer la valeur dans la zone de stockage de <code>synchronisation</code>.</li> +</ul> + +<p>Vous pouvez stocker les valeurs des paramètres dans le stockage local à la place si vous pensez que le stockage local est préférable pour votre extension.</p> + +<div class="note"> +<p>Notez que l'implémentation de <code>storage.sync</code> dans Firefox repose sur l'ID du module complémentaire. Si vous utilisez <code>storage.sync</code>, vous devez définir un ID pour votre extension à l'aide de la clé manifest.json des <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications">applications</a></code> comme indiqué dans l'exemple de manifeste ci-dessus.</p> +</div> + +<p>Finalement, mettez à jour "borderify.js" pour lire la couleur de la bordure depuis le stockage :</p> + +<div class="warning"> +<p>A cause d'un bug dans <a href="/fr/Add-ons/WebExtensions/API/storage/StorageArea/get">browser.storage.local.get()</a> dans Firefox pour les versions précédant la 52, le code qui suit ne fonctionnera pas. Pour le faire fonctionner pour les versions de Firefox avant la 52, les deux occurrences d'<code>item.color</code> dans <code>onGot()</code> doivent être changer pour <code>item[0].color</code>.</p> +</div> + +<pre class="brush: js"> function onError(error) { + console.log(`Error: ${error}`); +} + +function onGot(item) { + var color = "blue"; + if (item.color) { + color = item.color; + } + document.body.style.border = "10px solid " + color; +} + +var getting = browser.storage.sync.get("color"); +getting.then(onGot, onError); +</pre> + +<p>A ce moment, l'extension complète devrait ressembler à ceci :</p> + +<pre>settings/ + borderify.js + manifest.json + options.html + options.js</pre> + +<p>Maintenant :</p> + +<ul> + <li><a href="https://developer.mozilla.org/fr-FR/Add-ons/WebExtensions/Temporary_Installation_in_Firefox#Reloading_a_temporary_add-on">Rechargez la WebExtension</a></li> + <li>Chargez un page web</li> + <li>Ouvrez la page de paramètres et changez la couleur de la bordure</li> + <li>Rechargez la page pour voir la différence</li> +</ul> + +<p>Dans Firefox vous pouvez accéder à la page des paramètres en visitant about:addons et en cliquant le bouton "Preferences" situé à coté de l'extension.</p> + +<p>{{EmbedYouTube("ECt9cbWh1qs")}}</p> + +<h2 id="Pour_aller_plus_loin">Pour aller plus loin</h2> + +<ul> + <li><code><a href="/fr/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code> documentation de référence sur les clés de manifest</li> + <li><code><a href="/fr/Add-ons/WebExtensions/API/storage">storage</a></code> documentation de référence sur l'API</li> + <li>Ouvrez la page de paramètres directement depuis votre extension en utilisant l'API <code><a href="/fr/Add-ons/WebExtensions/API/runtime/openOptionsPage">runtime.openOptionsPage()</a></code></li> + <li>Exemple de page de paramètres : + <ul> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/favourite-colour">favourite-colour</a></li> + </ul> + </li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/add-ons_for_desktop_apps/index.html b/files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/add-ons_for_desktop_apps/index.html new file mode 100644 index 0000000000..270308150e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/add-ons_for_desktop_apps/index.html @@ -0,0 +1,30 @@ +--- +title: Extensions pour applications de bureau +slug: >- + Mozilla/Add-ons/WebExtensions/Alternative_distribution_options/Add-ons_for_desktop_apps +tags: + - Add-ons + - Desktop + - Guide + - Installation + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Distribution_options/Add-ons_for_desktop_apps +--- +<div>{{AddonSidebar()}}</div> + +<p>Si vous avez développé un module complémentaire à une application de bureau, vous pouvez installer le module complémentaire de plusieurs façons :</p> + +<ul> + <li>Dirigez l'utilisateur à installer à partir de <a href="http://addons.mozilla.org" rel="noreferrer">addons.mozilla.org</a> (AMO) en offrant un lien.</li> + <li>Chargement latéral.</li> + <li>En utilisant le registre Windows.</li> +</ul> + +<p>Parmi ces options, il est recommandé d'indiquer à l'utilisateur d'installer à partir d'AMO en proposant un lien. Les raisons de recommander cette option sont les suivantes :</p> + +<ul> + <li>Cela évite tout problème avec le processus d'installation. l'utilisateur n'obtiendra pas de messages interstitiels pendant l'installation du module complémentaire, trouvera le module complémentaire installé mais sera désactivé ou constatera que le module complémentaire n'a pas été installé.</li> + <li>Si vous mettez à jour le module complémentaire, la nouvelle version sera automatiquement installée, une fois que vous l'aurez téléchargé sur AMO.</li> +</ul> + +<p>En revanche, le chargement de fichiers à l'aide des <a href="/fr/Add-ons/WebExtensions/Alternative_methods_of_installing_add-ons/Sideloading_add-ons#Installation_using_the_standard_extension_folders">dossiers d'extension standard</a> ou du <a href="/fr/Add-ons/WebExtensions/Alternative_methods_of_installing_add-ons/Installing_add-ons_in_an_enterprise_environment#Installation_using_the_Windows_registry">registre Windows</a> nécessite que votre application de bureau installe toute mise à jour du module complémentaire. En outre, en fonction des paramètres par défaut de Firefox, le processus d'installation présentera des avertissements à l'utilisateur (message interstitiel) ou installera le module en mode silencieux, mais le désactivera. Le pire des cas est que l'installation échouera silencieusement si Firefox est configuré pour <a href="/fr/Add-ons/WebExtensions/Alternative_methods_of_installing_add-ons/Installing_add-ons_in_an_enterprise_environment#Controlling_automatic_installation">désactiver l'installation automatique</a>. Vous pouvez mettre à jour la <a href="/fr/Add-ons/WebExtensions/Alternative_methods_of_installing_add-ons/Installing_add-ons_in_an_enterprise_environment#Settings_scope_preferences_programmatically">configuration de Firefox</a> pour éviter ces problèmes, mais ce n'est pas recommandé.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/add-ons_in_the_enterprise/index.html b/files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/add-ons_in_the_enterprise/index.html new file mode 100644 index 0000000000..4e5d88d0d7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/add-ons_in_the_enterprise/index.html @@ -0,0 +1,166 @@ +--- +title: Les Add-ons en entreprise +slug: >- + Mozilla/Add-ons/WebExtensions/Alternative_distribution_options/Add-ons_in_the_enterprise +tags: + - Add-ons + - Guide + - Installation +translation_of: Mozilla/Add-ons/WebExtensions/Distribution_options/Add-ons_in_the_enterprise +--- +<div>{{AddonSidebar()}}</div> + +<p>En tant qu'administrateur informatique d'entreprise, vous souhaiterez peut-être installer des modules complémentaires automatiquement pour vos utilisateurs. Cette page présente les options.</p> + +<h2 id="Extensions_signées_et_non_signées">Extensions signées et non signées</h2> + +<p>Depuis Firefox 43, tous les modules complémentaires doivent être signés avant de pouvoir être installés dans les versions standard ou bêta de Firefox. Les modules non signés peuvent être installés dans les versions<a href="/fr/Firefox/Developer_Edition"> Developer Edition</a>, <a href="/en-US/docs/Mozilla/Firefox#Firefox_Nightly">Nightly</a>, et <a href="/en-US/docs/Mozilla/Firefox/Enterprise_deployment#Extended_Support_Release_(ESR)">ESR</a> de firefox, après avoir basculé la préférence <code>xpinstall.signatures.required</code> dans <code>about:config</code>.</p> + +<p>Si vous souhaitez installer des modules complémentaires non signés, le déploiement d'une version <a href="/en-US/docs/Mozilla/Firefox/Enterprise_deployment#Extended_Support_Release_(ESR)">ESR</a> de Firefox est l'approche recommandée. Une fois cela fait, les add-ons non signés peuvent être installés en utilisant n'importe quelle méthode, y compris l'ouverture du fichier add-on à partir d'une page Web.</p> + +<p>L'approche alternative et recommandée, est d'utiliser l'option pour les add-ons non listés sur <a href="http://addons.mozilla.org" rel="noreferrer">addons.mozilla.org</a> (AMO). Cette option signifie que vous pouvez obtenir un module complémentaire signé sans qu'il soit répertorié dans le répertoire des modules complémentaires publics. Cette fonctionnalité fournit un module signé immédiatement. Ce module signé peut ensuite être installé à partir d'une page Web derrière le pare-feu, ou installé en utilisant l'une des options décrites ici.</p> + +<h2 id="Chargement_latéral">Chargement latéral</h2> + +<p>Vous pouvez charger un module complémentaire à l'aide de l'un des dossiers d'extension standard, comme décrit dans <a href="/fr/Add-ons/WebExtensions/Alternative_distribution_options/Sideloading_add-ons#Installation_à_l'aide_des_dossiers_d'extension_standard">Installation à l'aide de dossiers d'extension standard</a>.</p> + +<h2 id="Installation_à_l'aide_du_registre_Windows">Installation à l'aide du registre Windows</h2> + +<p>Cette section explique comment installer des modules complémentaires dans Firefox en utilisant le registre Windows.</p> + +<div class="warning">Avant Firefox 62, il était possible de charger des extensions décompressées en faisant pointer la clé de registre Windows sur un répertoire contenant une extension non empaquetée. +<p>À partir de Firefox 62, cela n'est plus possible et la clé doit pointer vers un fichier XPI empaqueté, comme décrit dans cette section.</p> +</div> + +<div class="note"> +<p>Il est prudent de modifier les clés de registre pendant que Firefox est en cours d'exécution.</p> +</div> + +<ol> + <li>Assurez-vous que le module complémentaire possède un ID complémentaire, en incluant ce qui suit dans son fichier manifest.json, en remplaçant <em>your-add-on-name@your-domain.com</em> with par un ID approprié pour votre module complémentaire : + + <pre>"applications": { + "gecko": { + "id": "your-add-on-name@your-domain.com" + } + }</pre> + Un identifiant de style d'adresse e-mail est recommandé.</li> + <li>Signez votre module dans AMO en utilisant l'option non listée. Pour plus de détails, voir <a href="/fr/Add-ons/Distribution">Signature et distribution de votre module complémentaire</a>.</li> + <li>Téléchargez le fichier XPI signé et assurez-vous que le nom de fichier est l'ID du module plus l'extension <code>.xpi</code>. Par exemple, <code>c:/webext/borderify@example.com.xpi</code></li> + <li>Ouvrez Regedit et ajoutez les clés comme suit : + <ul> + <li>Ajoutez à tous les utilisateurs de l'ordinateur les clés de registre suivantes : + <pre>HKEY_LOCAL_MACHINE\Software\Mozilla\Firefox\Extensions</pre> + + <p>ou</p> + + <pre>HKEY_LOCAL_MACHINE\Software\Wow6432Node\Mozilla\Firefox\Extensions</pre> + + <div class="note"> + <p dir="ltr"><code>HKEY_LOCAL_MACHINE\Software\Mozilla\Firefox\Extensions</code> n'est pas disponible lors de l'exécution de Firefox 32 bits sur une machine 64 bits, vous ne pouvez installer que pour tous les utilisateurs utilisant la clé <code>Wow6432Node</code>.</p> + </div> + </li> + <li>Pour l'utilisateur actuel, ajoutez à la clé de registre suivante : + <pre>HKEY_CURRENT_USER\Software\Mozilla\Firefox\Extensions</pre> + </li> + </ul> + </li> + <li>Créez une nouvelle valeur de chaîne. Entrée de Registre dont le nom est identique à l'ID du module complémentaire, par exemple, borderify@example.com,et une valeur égale à l'emplacement où le module complémentaire est stocké, par exemple, <code>c:/webext/borderify@example.com.xpi</code>.</li> + <li>Redémarrez Firefox. Le module complémentaire est détecté, mais l'utilisateur peut se voir présenter un interstitiel ou doit activer le module complémentaire dans le module complémentaire avant de pouvoir l'utiliser. Voir <a href="#Firefox_settings">les paramètres de Firefox</a>.)</li> +</ol> + +<p>Si le même add-on apparaît sous <code>HKEY_CURRENT_USER</code> et <code>HKEY_LOCAL_MACHINE</code>, l'instance sous <code>HKEY_CURRENT_USER</code> sera utilisée. Si le même module complémentaire apparaît dans le répertoire de profil de l'utilisateur (par exemple, s'il l'a déjà installé manuellement), cette version aura la priorité sur toutes les instances trouvées dans le Registre.</p> + +<p>Pour supprimer un module installé à l'aide du registre Windows, supprimez simplement l'entrée du Registre. Après la suppression de l'entrée du registre, Firefox détectera le changement la prochaine fois qu'il sera lancé. Il est prudent de modifier les clés de registre pendant que Firefox est en cours d'exécution.</p> + +<p>Si vous installez en utilisant le registre de Windows, Firefox ne mettra pas automatiquement à jour votre module complémentaire. Vous devrez mettre au point le module complémentaire en utilisant n'importe quel processus d'installation externe à Firefox.</p> + +<h2 id="Les_paramètres_de_Firefox">Les paramètres de Firefox</h2> + +<p>Deux paramètres affectent l'utilisation d'options d'installation alternatives. La préférence <code>extensions.autoDisableScopes</code> détermine si les modules complémentaires sont installés automatiquement ou après confirmation de l'utilisateur. La préférence <code>extensions.enabledScopes</code> est utilisée pour désactiver l'installation de la plupart des emplacements. En plus de ces options, la méthode de définition de ces préférences par programme est discutée.</p> + +<h3 id="Contrôler_l'installation_automatique">Contrôler l'installation automatique</h3> + +<p>Les téléchargements standards de Firefox sont configurés pour que les sideloads utilisant le dossier extensions standard ou le registre Windows, ne s'installent pas automatiquement. Selon la version de Firefox :</p> + +<ul> + <li>l'utilisateur a affiché un avertissement interstitiel :<br> + <img alt="An interstitial warning about the installation of the add-on" src="https://mdn.mozillademos.org/files/15209/interstitial_windows.png" style="height: 441px; width: 630px;"></li> + <li>le module complémentaire est installé mais désactivé, et l'utilisateur doit l'activer depuis le gestionnaire de modules complémentaires :<br> + <img alt="An add-on is installed but disabled " src="https://mdn.mozillademos.org/files/15207/add_on_disabled.png" style="height: 61px; width: 707px;"></li> +</ul> + +<p>L'utilisation des installations désactivées interstitielles et silencieuses varie selon les versions de Firefox, par exemple, la version 54 utilise le message interstitiel..</p> + +<p>La disponibilité de l'installation automatique est contrôlée par la préférence et le comportement <code>extensions.autoDisableScopes</code> définis par les valeurs suivantes :</p> + +<div> +<table> + <colgroup> + <col> + <col> + </colgroup> + <tbody> + <tr> + <td>Valeur</td> + <td>Installation du champ</td> + </tr> + <tr> + <td>1 (or '0b0001')</td> + <td>Le profil de l'utilisateur actuel.</td> + </tr> + <tr> + <td>2 (or '0b0010')</td> + <td>Tous les profils de l'utilisateur connecté</td> + </tr> + <tr> + <td>4 (or '0b0100')</td> + <td>Installé et détenu par Firefox.</td> + </tr> + <tr> + <td>8 (or '0b1000')</td> + <td>Installé pour tous les utilisateurs de l'ordinateur.</td> + </tr> + <tr> + <td>15 (or '0b1111')</td> + <td>La combinaison de tous les champs d'application.</td> + </tr> + </tbody> +</table> +</div> + +<p>Par défaut, <code>extensions.autoDisableScopes</code> est défini sur 15 afin que les installations automatiques soient désactivées à partir de tous les emplacements. Pour désactiver uniquement un sous-ensemble d'emplacements, définissez la préférence sur la somme des valeurs des emplacements que vous souhaitez désactiver. Par exemple, 3 désactive "Profil de l'utilisateur actuel" et "Tous les profils de l'utilisateur connecté". La définition de la valeur sur 0 désactive cette fonctionnalité et signifie que tous les modules complémentaires seront installés sans confirmation de l'utilisateur.</p> + +<h3 id="Désactivation_des_emplacements_d'installation">Désactivation des emplacements d'installation</h3> + +<p>Dans certaines circonstances, vous pouvez souhaiter que Firefox ignore tout ou partie des emplacements d'installation supplémentaires répertoriés ci-dessus. Dans ce cas, utilisez la préférence <code>extensions.enabledScopes</code>. Par défaut, cette préférence n'est pas incluse dans les téléchargements standard de Firefox, il faudra donc l'ajouter. vous pouvez ajouter la <a href="/fr/kb/about-config-editor-firefox#w_adding-changing-and-resetting-preferences">préférence manuellement</a> ou la faire par programmation en suivant les instructions de la section suivante.</p> + +<div class="note"> +<p>Il est impossible de désactiver le chargement de modules complémentaires à partir du répertoire de profil.</p> +</div> + +<h3 id="Définir_les_préférences_d'étendue_par_programme">Définir les préférences d'étendue par programme</h3> + +<p>Utilisez la logique suivante pour définir les valeurs de <code>extensions.autoDisableScopes</code> et <code>extensions.enabledScopes</code> par programme pour vous assurer que les modules complémentaires sont installés automatiquement :</p> + +<ol> + <li>Editez le fichier de <a href="/fr/Firefox/Enterprise_deployment#Configuration">configuration administratif</a>.</li> + <li>Vérifiez la présence de lignes définissant les préférences <code>extensions.autoDisableScopes</code> et/ou <code>extensions.enabledScopes</code> et remplacez-les / ajoutez-les si nécessaire.</li> + <li>Ces lignes de préférence doivent être utilisées comme ci-dessous, avec les valeurs de votre choix comme expliqué dans le haut de cette section : + <pre class="brush: js">defaultPref("extensions.autoDisableScopes", 0); +defaultPref("extensions.enabledScopes", 15); +// Or use binary value like this +defaultPref("extensions.enabledScopes", 0b1111);</pre> + </li> +</ol> + +<div class="note"> +<p>Selon <a href="http://www.favbrowser.com/how-to-create-a-new-default-firefox-experience-in-your-enterprise/">cette page</a> : <small>(en date du 28 septembre 2012)</small><br> + “Vous ne pouvez pas définir cette préférence à distance en utilisant les fichiers autoconfig.”<br> + Ce qui vous recommande de définir uniquement ces préférences dans un fichier autoconfig local.<br> + Si cette information est erronée, ajustez ou supprimez cette note.</p> +</div> + +<h2 id="Regroupement_de_modules_complémentaires_avec_un_Firefox_personnalisé">Regroupement de modules complémentaires avec un Firefox personnalisé</h2> + +<p>Vous pouvez regrouper des modules complémentaires dans un Firefox personnalisé, et ils seront installés automatiquement lorsque l'utilisateur démarre l'application pour la première fois. Voir<a href="/fr/docs/Mozilla/Developer_guide/Customizing_Firefox"> Personnalisation de Firefox</a> pour plus de détails.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/index.html b/files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/index.html new file mode 100644 index 0000000000..1b45607060 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/index.html @@ -0,0 +1,68 @@ +--- +title: Options de distribution +slug: Mozilla/Add-ons/WebExtensions/Alternative_distribution_options +tags: + - Add-ons + - Installation + - Landing + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Distribution_options +--- +<div>{{AddonSidebar()}}</div> + +<p>Le processus standard de distribution et d'installation des extensions de navigateur se fait via Firefox en utilisant un fichier XPI signé obtenu à partir de <a href="http://addons.mozilla.org" rel="noreferrer">addons.mozilla.org</a> (AMO) (pour les add-ons listés) ou un téléchargement configuré par un développeur (pour les add-ons non listés).</p> + +<p>Nous examinons ici les exigences en matière de signature et les commentaires connexes, avant de discuter de la façon de choisir entre la distribution sur AMO ou la distribution d'une extension de navigateur vous-même. Nous examinons également les canaux disponibles sur AMO et répondons aux questions sur la propriété du code et les litiges.</p> + +<h2 id="Signature_de_votre_extension">Signature de votre extension</h2> + +<p>Les extensions de navigateur doivent être signées par Mozilla avant de pouvoir être installées dans les versions release et beta de Firefox. Les thèmes, et d'autres types d'ajouts tels que les dictionnaires d'orthographe, n'ont pas besoin d'être signés.</p> + +<p>Ce processus de signature se fait via addons.mozilla.org (AMO), que vous choisissiez de distribuer votre add-on via AMO ou de le faire vous-même.</p> + +<p>Les extensions non signées peuvent être installées dans les versions <a href="/fr/docs/Mozilla/Firefox/Developer_Edition">Developer Edition</a>, Nightly, et <a href="https://developer.mozilla.org/en-US/Firefox/Enterprise_deployment">ESR</a> de Firefox, après avoir activé la préférence <em>xpinstall.signatures.required</em> dans <code>about:config</code>.</p> + +<p>Mozilla signe les extensions de navigateur via le site Web de <a class="external external-icon" href="https://addons.mozilla.org/developers/addon/submit" rel="noopener">AMO</a>. Il y a trois façons de soumettre votre extension pour signature :</p> + +<ol> + <li>téléchargez votre add-on via le <a href="https://developer.mozilla.org/en-US/Add-ons/Distribution/Submitting_an_add-on">Developer Hub sur AMO</a>.</li> + <li>utilisez l' <a class="external external-icon" href="http://addons-server.readthedocs.io/en/latest/topics/api/signing.html" rel="noopener">API de signature addons.mozilla.org</a>.</li> + <li>utilisez le <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/web-ext_command_reference#web-ext_sign">signé web-ext.</a></li> +</ol> + +<p>Toutes les options de signature sont soumises à l'<a href="https://developer.mozilla.org/en-US/Add-ons/AMO/Policy/Agreement">accord de distribution du module complémentaire Firefox</a>.</p> + +<p>Si vous téléchargez votre extension via le centre de développement AMO, vous avez le choix entre l'inscription sur AMO ou l'auto-distribution. Si vous choisissez l'auto-distribution, à la fin du processus, vous téléchargez des copies signées de votre add-on.</p> + +<p>L'utilisation de l'API de signature ou du web-ext renvoie vos add-ons signés, sans qu'aucune liste de distribution ne soit créée sur AMO.</p> + +<p>Quelle que soit la méthode utilisée, tous les add-ons doivent passer une validation automatisée avant d'être signés. Ils peuvent également faire l'objet d'un examen manuel du code. Les critères d'examen appliqués aux prorogations se trouvent dans la <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/AMO/Policy/Reviews">polique complémentaire</a>.</p> + +<h2 id="Distribuer_votre_extension">Distribuer votre extension</h2> + +<p>Vous n'êtes pas tenu d'inscrire ou de distribuer votre poste par l'entremise de l'AMO. Vous devrez décider si vous voulez distribuer et inscrire votre extension par l'entremise de l'AMO ou si vous voulez la distribuer vous-même. Voici quelques points à prendre en considération :</p> + +<ul> + <li>AMO est une plateforme de distribution très populaire, avec des millions de visiteurs et d'installations mensuels.</li> + <li>AMO est intégré dans le gestionnaire de modules complémentaires Firefox, ce qui facilite l'installation des extensions publiées sur AMO.</li> + <li>Lorsqu'une extension est listée dans AMO, les mises à jour des copies installées sont gérées automatiquement par Firefox chaque fois qu'une nouvelle version est listée dans AMO.</li> + <li>L'URL où Firefox peut trouver les mises à jour doit être incluse dans la clé <a href="https://developer.mozilla.org/en-US/Add-ons/Updates">update_link</a> du manifest d'extension pour que Firefox puisse effectuer des mises à jour automatiques. Les extensions auto-distribuées qui n'ont pas d'URL de mise à jour vérifient AMO pour les mises à jour et sont mises à jour vers une version listée, si elle est disponible.</li> +</ul> + +<p>Pour plus d'informations sur la façon de soumettre un add-on pour distribution sur AMO ou auto-distribution, voir <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Distribution/Submitting_an_add-on">Soumettre une extension.</a></p> + +<h2 id="Autres_options_de_distribution">Autres options de distribution</h2> + +<p>Ces méthodes peuvent ne pas convenir à tout le monde, par exemple, lorsqu'une extension de navigateur est fournie avec une application native ou lorsqu'une entreprise souhaite installer une extension pour toutes ses instances de Firefox. Cette section décrit les solutions de rechange.</p> + +<ul> + <li> + <p><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Alternative_distribution_options/Sideloading_add-ons">Sideloading add-ons</a> — permet à un utilisateur d'installer une extension en utilisant un fichier XPI enregistré sur son ordinateur.</p> + </li> + <li> + <p><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Alternative_distribution_options/Add-ons_for_desktop_apps">Add-ons for use with a desktop app</a> — cette section décrit les meilleures pratiques pour fournir une extension à utiliser avec une application de bureau.</p> + </li> + <li> + <p><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Alternative_distribution_options/Add-ons_in_the_enterprise">Add-ons in an enterprise environment</a> — cette page traite de l'utilisation des extensions signées par rapport aux extensions non signées, des options d'installation, des paramètres Firefox affectant l'installation, et de l'inclusion des add-ons avec un paquet d'installation Firefox personnalisé.</p> + </li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/sideloading_add-ons/index.html b/files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/sideloading_add-ons/index.html new file mode 100644 index 0000000000..2271640415 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/alternative_distribution_options/sideloading_add-ons/index.html @@ -0,0 +1,134 @@ +--- +title: Sideloading add-ons +slug: >- + Mozilla/Add-ons/WebExtensions/Alternative_distribution_options/Sideloading_add-ons +tags: + - Guide + - Installation + - Sideloading + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Distribution_options/Sideloading_add-ons +--- +<div>{{AddonSidebar()}}</div> + +<p>Vous souhaiterez peut-être envoyer un fichier XPI à votre utilisateur par un moyen autre qu'un téléchargement sur le Web, par exemple une distribution par e-mail d'une version bêta pour les tests utilisateur. Dans ce cas, il existe deux options pratiques pour installer le module complémentaire :</p> + +<ul> + <li>À l'aide de l'option <strong>Installer le module à partir d'un fichier</strong> dans le gestionnaire de modules complémentaires.</li> + <li>Ajout du fichier à l'un des dossiers d'extension standard.</li> +</ul> + +<div class="note">Aucune mise à jour automatique ne sera effectuée pour les modules complémentaires installés à l'aide de ces méthodes. Vous devrez fournir un nouveau fichier XPI à votre utilisateur pour chaque mise à jour. Cependant, des vérifications de compatibilité automatiques sont toujours effectuées.</div> + +<h2 id="Preparation_de_votre_extension">Preparation de votre extension</h2> + +<p>Indépendamment de la méthode de chargement latéral utilisée, vous devez préparer l'extension comme suit :</p> + +<ol> + <li>Assurez-vous que le module complémentaire inclut un ID, en ajoutant ce qui suit à son fichier manifest.json, en remplaçant <em>votre your-add-on-name@your-domain.com</em> par un ID approprié dans vote mode complémentaire : + + <pre class="brush: json">"applications": { + "gecko": { + "id": "your-add-on-name@your-domain.com" + } +} +</pre> + Un identifiant de style d'adresse e-mail est recommandé.</li> + <li>Signez le module complémentaire dans <a href="http://addons.mozilla.org" rel="noreferrer">addons.mozilla.org</a> (AMO). Selon la manière dont vous souhaitez rendre votre module complémentaire disponible, vous pouvez utiliser les options non répertoriées (si vous distribuez le module complémentaire uniquement) ou répertoriées. Pour plus de détails, voir <a href="/fr/Add-ons/Distribution">Signature et distribution de votre module complémentaire</a>.</li> +</ol> + +<h2 id="Utilisation_de_l'option_Installer_le_module_à_partir_d'un_fichier">Utilisation de l'option Installer le module à partir d'un fichier</h2> + +<p>Pour utiliser <strong>Installer le module complémentaire à partir d'un fichier</strong> dans le gestionnaire de modules complémentaire, send the user the signed add-on with the following instructions:</p> + +<ol> + <li>Enregistrez le fichier complémentaire à un emplacement approprié sur votre ordinateur.</li> + <li>Dans Firefox, ouvrir le menu Firefox <img alt="Firefox browser menu button" src="https://mdn.mozillademos.org/files/15199/Firefox_menu.png" style="height: 24px; width: 32px;"> et cliquez sur <strong>Add-ons</strong>.</li> + <li>Dans les paramètres de cog, ouvrez <strong>Installer le module complémentaire à partir du fichier </strong>:<br> + <img alt="Add-on Manager utilities cog" src="https://mdn.mozillademos.org/files/15201/add-on_manager_cog.png" style="height: 188px; width: 347px;"></li> + <li>Recherchez et ouvrez le fichier à partir de l'emplacement où il a été enregistré.</li> + <li>Lorsque vous y êtes invité, cliquez sur <strong>Ajouter :</strong><br> + <img alt="Message asking user to confirm the installation of the add-on" src="https://mdn.mozillademos.org/files/15203/add_add_on_confirmation.png" style="height: 198px; width: 403px;"></li> + <li>Le module complémentaire apparaîtra désormais dans la liste des modules complémentaires installés du gestionnaire de modules complémentaires et sera prêt à être utilisé :<br> + <img alt="After installation the add-on is listed in the add-on manager" src="https://mdn.mozillademos.org/files/15205/add_on_added.png" style="height: 55px; width: 649px;"></li> +</ol> + +<h2 id="Installation_à_l'aide_des_dossiers_d'extension_standard">Installation à l'aide des dossiers d'extension standard</h2> + +<p>Cette méthode d'installation complémentaire consiste à copier le module complémentaire dans l'un des dossiers d'extension standard sur l'ordinateur de l'utilisateur. Une fois copié, la prochaine fois que Firefox sera lancé le module complémentaire sera installé. Par défaut, l'utilisateur sera invité à approuver l'installation et, si l'utilisateur l'approuve, le module complémentaire sera installé et chargé automatiquement pour les lancements ultérieurs. Si l'utilisateur possède plusieurs profils Firefox, l'approbation et l'installation auront lieu au prochain lancement de chaque profil. Pour plus d'informations sur le contrôle de l'utilisateur à approuver l'installation, voir <a href="/fr/Add-ons/WebExtensions/Alternative_methods_of_installing_add-ons/Installing_add-ons_in_an_enterprise_environment#Controlling_automatic_installation">Contrôle de l'installation automatique</a>.</p> + +<h3 id="Renommez_votre_fichier_XPI">Renommez votre fichier XPI</h3> + +<p>Pour utiliser cette méthode, votre fichier XPI doit être nommé à l'aide de l'ID d'extension ou d'application, comme indiqué dans la section <a href="/fr/Add-ons/WebExtensions/Alternative_methods_of_installing_add-ons/Sideloading_add-ons#Preparing_your_add-on">Préparation de votre module complémentaire</a>. Le fichier complémentaire signé que vous avez téléchargé à partir d'AMO s'appellera quelque chose comme borderify-1.0-an+fx.xpi (voir <a href="/fr/Add-ons/Distribution">Signature et distribution de votre module complémetaire</a> pour plus de détails), modifiez-le par exemple borderify@example.com.xpi.</p> + +<div class="note"> +<p>Si vous développez un module complémentaire pour Firefox vous pouvez utiliser un <a href="/fr/Add-ons/Setting_up_extension_development_environment#Firefox_extension_proxy_file">fichier proxy d'extensions</a> pour installer un module complémentaire sans copier les fichiers dans les dossiers d'extension standard.</p> +</div> + +<h3 id="Ajoutez_le_fichier_d'extension_XPI_dans_un_dossier_d'extensions_commun.">Ajoutez le fichier d'extension XPI dans un dossier d'extensions commun.</h3> + +<p>Dans ce qui suit {ec8030f7-c20a-464f-9b0e-13a3a9e97384} est l'identifiant de l'application de Firefox. </p> + +<p>L'installation standard de Firefox désactive l'installation automatique de modules complémentaires à partir de ces emplacements (voir <a href="/fr/Add-ons/WebExtensions/Alternative_methods_of_installing_add-ons/Installing_add-ons_in_an_enterprise_environment#Controlling_automatic_installation">Contrôle de l'installation automatique</a>). Par conséquent, le processus pour chacune des méthodes décrites ci-dessous est le suivant :</p> + +<ul> + <li>Copiez le fichier XPI renommé dans le dossier des extensions pour <a href="#Windows">Windows</a>, <a href="#OSX">OSX</a>, ou <a href="#Linux">Linux</a> selon le cas. Notez que, selon le système d'exploitation de bureau et ses paramètres, l'utilisateur peut avoir besoin d'une autorisation d'administrateur pour effectuer cette action.</li> + <li>Fermez et redémarrez Firefox.</li> + <li>Selon le système d'exploitation et la version de Firefox, l'un des événements suivants se produira: + <ul> + <li>L'installation se fera en mode silencieux et l'utilisateur devra ouvrir le gestionnaire de modules complémentaires et activer le module complémentaire :<br> + <img alt="An add-on is installed but disabled " src="https://mdn.mozillademos.org/files/15207/add_on_disabled.png" style="height: 61px; width: 707px;"><br> + Pour activer le module complémentaire, l'utilisateur devra cliquer sur <strong>Enable</strong>.</li> + <li>Un message interstitiel sera affiché :<br> + <img alt="An interstitial warning about the installation of the add-on" src="https://mdn.mozillademos.org/files/15209/interstitial_windows.png" style="height: 441px; width: 630px;"><br> + Pour installer le module complémentaire, l'utilisateur devra cocher <strong>Autoriser cette installation </strong>et cliquer sur <strong>Continue</strong>r.</li> + </ul> + </li> + <li>L'add-on est maintenant installé.</li> +</ul> + +<p>Pour plus de détails sur les installations interstitielles et silencieuses, voir <a href="/fr/Add-ons/WebExtensions/Alternative_methods_of_installing_add-ons/Installing_add-ons_in_an_enterprise_environment#Controlling_automatic_installation">Contrôle de l'installation automatique</a>.</p> + +<div class="note"> +<p>Pour désinstaller le module complémentaire, fermez Firefox et supprimez le module complémentaire de l'emplacement où il a été ajouté.</p> +</div> + +<h4 id="Windows">Windows</h4> + +<p>Pour installer le module complémentaire pour un utilisateur de l'ordinateur, copiez le fichier XPI dans <span lang="fr"><span>:</span></span></p> + +<pre>C:\Users\<user name>\AppData\Roaming\mozilla\Extensions\\{ec8030f7-c20a-464f-9b0e-13a3a9e97384}\</pre> + +<p>Si ce dossier n'existe pas, créez-le. Vous pouvez également identifier le chemin de l'utilisateur actuel avec la variable %appdata% du système.</p> + +<div class="note"> +<p>Remarque : Pour installer un module complémentaire pour tous les utilisateurs d'un ordinateur Windows, voir <a href="/fr/Add-ons/WebExtensions/Alternative_methods_of_installing_add-ons/Installing_add-ons_in_an_enterprise_environment#Installation_using_the_Windows_registry">Installation à l'aide du registre Windows</a>.</p> +</div> + +<h4 id="OSX">OSX</h4> + +<p>Pour installer un module complémentaire à utiliser par tous les profils Firefox et tous les utilisateurs, copiez le fichier XPI dans le dossier d'extension globale situé dans la bibliothèque. Si ce dossier n'existe pas, vous devrez le créer.</p> + +<pre>/Library/Application Support/mozilla/Extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/</pre> + +<p>Pour installer un module complémentaire pour un utilisateur spécifique, copiez le fichier XPI dans la bibliothèque locale de l'utilisateur :</p> + +<pre>~/Library/Application Support/mozilla/Extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/</pre> + +<h4 id="Linux">Linux</h4> + +<p>Pour installer un module complémentaire utilisé par tous les utilisateurs, copiez le fichier XPI dans :</p> + +<pre>/usr/lib/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/</pre> + +<p>Ou...</p> + +<pre>/usr/lib64/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/</pre> + +<p dir="ltr">Ou...</p> + +<pre>/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/</pre> + +<p>Pour installer un module complémentaire pour un utilisateur spécifique, copiez le fichier XPI dans :</p> + +<pre>~/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/</pre> diff --git a/files/fr/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html b/files/fr/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html new file mode 100644 index 0000000000..b01a482604 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html @@ -0,0 +1,146 @@ +--- +title: Anatomie d'une WebExtension +slug: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension +--- +<div>{{AddonSidebar}}</div> + +<p>Une extension se compose de plusieurs fichiers, packagés pour la distribution et l'installation. Dans cet article, nous allons rapidement passer par les fichiers qui pourraient être présents dans une extension.</p> + +<h2 id="manifest.json">manifest.json</h2> + +<p>Il s'agit du seul fichier qui doit être présent dans chaque extension. Il contient des métadonnées de base sur l'extension telles que son nom, sa version et les autorisations requises. Il fournit également des pointeurs vers d'autres fichiers dans l'extension.</p> + +<p>Ce manifeste peut également contenir des pointeurs vers plusieurs autres types de fichiers :</p> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">page d'arrière-plan </a>: implémentez une logique à longue durée.</li> + <li>Icônes pour l'extension et tous les boutons qu'elle peut définir.</li> + <li><a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Sidebars_popups_options_pages">Sidebars, popups, et options pages</a>: Documents HTML qui fournissent du contenu pour divers composants de l'interface utilisateur.</li> + <li><a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Content_scripts">Script de contenu</a> : interagissez avec les pages Web (Notez que ce n'est pas le même que javaScript dans un élément {{HTMLElement("script")}} au sein d'une page).</li> + <li><a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Web_accessible_resources">Web-accessible resources</a> : Rendez le contenu packagé accessible aux pages Web et aux scripts de contenu.</li> +</ul> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13669/webextension-anatomy.png" style="display: block; height: 581px; margin-left: auto; margin-right: auto; width: 600px;"></p> + +<p>Voir la page référence <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> pour tous les détails.</p> + +<p>En plus de celles déjà listées dans le manifeste, une extension peut également inclure des <a dir="ltr" href="https://mdn.mozillademos.org/files/11553/browser-action.png">pages d'extensions</a> supplémentaires et des fichiers de support.</p> + +<h2 id="Scripts_darrière-plan">Scripts d'arrière-plan</h2> + +<p>Les extensions doivent souvent conserver un état à long terme ou effectuer des opérations à long terme indépendamment de la durée de vie d'une page Web ou d'une fenêtre de navigateur. C'est le rôle des scripts d'arrière-plan.</p> + +<p>Les scripts en 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 <a href="/fr/Add-ons/WebExtensions/API">WebExtension APIs</a> dans le script, tant que vous avez demandé les <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a> nécessaires.</p> + +<h3 id="Spécifier_les_scripts_darrière-plan">Spécifier les scripts d'arrière-plan</h3> + +<p>Vous pouvez inclure un script d'arrière-plan à l'aide de la clé <code>background</code> dans "manifest.json" :</p> + +<pre class="brush: json">// manifest.json + +"background": { + "scripts": ["background-script.js"] +}</pre> + +<p>Vous pouvez spécifier plusieurs scripts en arrière-plan : si vous le faites, ils s'exécutent dans le même contexte, tout comme plusieurs scripts chargés dans une seule page Web.</p> + +<p>Au lieu de spécifier des scripts d'arrière-plan, vous pouvez spécifier une page d'arrière-plan qui a l'avantage supplémentaire de supporter les modules ES6 :</p> + +<p style="margin-bottom: 0em;"><strong>manifest.json</strong></p> + +<pre class="brush: json">// manifest.json + +"background": { + "page": "background-page.html" +}</pre> + +<p style="margin-bottom: 0em;"><strong>background-page.html</strong></p> + +<pre class="brush: html"><!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="utf-8"> + <script type="module" src="background-script.js"></script> + </head> +</html></pre> + +<h3 id="Environnement_des_scripts_darrière-plan">Environnement des scripts d'arrière-plan</h3> + +<h4 id="APIs_DOM">APIs DOM</h4> + +<p>Les scripts d'arrière-plan s'exécutent dans le contexte de pages spéciales appelées pages d'arrière-plan. Cela leur donne une <code><a href="/fr/docs/Web/API/Window">fenêtre</a></code> globale, ainsi que toutes les API DOM standard fournies par cet objet.</p> + +<div class="blockIndicator warning"> +<p> Dans Firefox, les pages d'arrière-plan ne supportent pas l'utilisation de <code><a href="/fr/docs/Web/API/Window/alert">alert()</a></code>, <code><a href="/fr/docs/Web/API/Window/confirm">confirm()</a></code>, ou <code><a href="/fr/docs/Web/API/Window/prompt">prompt()</a></code>.</p> +</div> + +<h4 id="APIs_des_WebExtensions">APIs des WebExtensions</h4> + +<p>Les scripts d'arrière-plan peuvent utiliser l'une des <a href="/fr/Add-ons/WebExtensions/API">APIs des WebExtensions</a> dans le script, à condition que leur extension dispose des <a href="/fr-FR/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a> nécessaires.</p> + +<h4 id="Cross-origin_access">Cross-origin access</h4> + +<p>Les scripts d'arrière-plan peuvent faire des requêtes XHR à tous les hôtes pour lesquels ils ont des <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions d'hôte</a>.</p> + +<h4 id="Contenu_Web">Contenu Web</h4> + +<p>Les scripts d'arrière-plan n'obtiennent pas un accès direct aux pages Web. Toutefois, ils peuvent charger des <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">scripts de contenu</a> dans les pages Web et peuvent <a href="/fr/Add-ons/WebExtensions/Content_scripts#Communicating_with_background_scripts">communiquer avec ces scripts de contenu à l'aide d'une API de communication</a>.</p> + +<h4 id="Politique_de_sécurité_du_contenu">Politique de sécurité du contenu</h4> + +<p>Les scripts d'arrière-plan sont restreints à certaines opérations pour lutter contre d'autres potentiellement dangereuses, comme l'utilisation de la fonction <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code>, par le biais d'une politique de sécurité du contenu. Pour plus de détails, consultez la <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">politique de sécurité du contenu</a>.</p> + +<h2 id="Sidebars_popups_pages_options">Sidebars, popups, pages options</h2> + +<p>Votre extension peut inclure divers composants d'interface utilisateur dont le contenu est défini à l'aide d'un document HTML :</p> + +<ul> + <li>Une <a href="/fr/Add-ons/WebExtensions/user_interface/Sidebars">barre latérale</a> est un volet qui s'affiche dans la partie gauche de la fenêtre du navigateur, à côté de la page Web.</li> + <li>Un <a href="/fr/Add-ons/WebExtensions/user_interface/Popups">popup</a> est une boîte de dialogue que vous pouvez afficher lorsque l'utilisateur clique sur un <a href="/fr/Add-ons/WebExtensions/user_interface/Browser_action">bouton de la barre d'outils</a> ou de la <a href="/fr/Add-ons/WebExtensions/user_interface/Page_actions">barre d'adresse</a></li> + <li>Une <a href="/fr/Add-ons/WebExtensions/user_interface/Options_pages">page d'options</a> est une page qui s'affiche lorsque l'utilisateur accède aux préférences de votre module complémentaire dans le gestionnaire d'add-ons natif du navigateur.</li> +</ul> + +<p>Pour chacun de ces composants, vous créez un fichier HTML et pointez vers lui en utilisant une propriété spécifique dans <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a>. Le fichier HTML peut inclure des fichiers CSS et JavaScript, tout comme une page Web normale.</p> + +<p>Toutes ces pages sont un type de <a href="/fr/Add-ons/WebExtensions/user_interface/Extension_pages">pages d'extension</a>,et contrairement à une page Web normale, votre JavaScript peut utiliser les mêmes API d'extension Web privilégiées que votre script de fond. Ils peuvent même accéder directement aux variables de la page d'arrière-plan en utilisant {{WebExtAPIRef("runtime.getBackgroundPage()")}}.</p> + +<h2 id="Page_dextension">Page d'extension</h2> + +<p>Vous pouvez également inclure dans votre extension des documents HTML qui ne sont pas attachés à un composant d'interface utilisateur prédéfini. Contrairement aux documents que vous pouvez fournir pour les sidebars, les popups ou les pages d'options, ceux-ci n'ont pas d'entrée dans manifest.json. Cependant, ils ont également accès aux mêmes API WebExtension privilégiées que votre script d'arrière-plan.</p> + +<p>Vous chargerez typiquement une page comme celle-ci en utilisant {{WebExtAPIRef("windows.create()")}} ou {{WebExtAPIRef("tabs.create()")}}.</p> + +<p>Voir les <a href="/fr/Add-ons/WebExtensions/user_interface/Extension_pages">pages d'extension</a> pour en savoir plus.</p> + +<h2 id="Scripts_de_contenu">Scripts de contenu</h2> + +<p>Utilisez les scripts de contenu pour accéder et manipuler des pages Web. Les scripts de contenu sont chargés dans des pages Web et lancés dans le contexte de cette page particulière.</p> + +<p>Les scripts de contenu sont des scripts fournis par les extensions qui s'exécutent dans le contexte d'une page Web ; cela diffère des scripts qui sont chargés par la page elle-même, y compris ceux qui sont fournis dans les éléments {{HTMLElement ("script")}} dans la page.</p> + +<p><span id="result_box" lang="fr"><span>Les scripts de contenu peuvent voir et manipuler le DOM de la page, tout comme les scripts normaux chargés par la page.</span></span></p> + +<p>Contrairement aux scripts de pages normales, ils peuvent :</p> + +<ul> + <li><span id="result_box" lang="fr"><span>Effectuer des requêtes XHR entre domaines</span></span>.</li> + <li>Utiliser un petit sous-ensemble de l'<a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API">APIs des WebExtensions</a>.</li> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#Communication_avec_les_scripts_darrière-plan">Echanger des messages avec leurs scripts d'arrière-plan</a> <span lang="fr"><span>et peuvent ainsi accéder indirectement à toutes les API des WebExtensions.</span></span></li> +</ul> + +<p>Les scripts de contenu ne peuvent pas directement accéder normalement aux scripts de page, mais peuvent échanger des messages avec eux à l'aide de l'API standard <code><a href="/fr-FR/docs/Web/API/Window/postMessage">window.postMessage()</a></code>.</p> + +<p>Habituellement, quand nous parlons de scripts de contenu, nous parlons de JavaScript, mais vous pouvez injecter du CSS dans des pages Web en utilisant le même mécanisme.</p> + +<p>Voir l'article de <a href="/fr-FR/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">scripts de contenu</a> pour en savoir plus.</p> + +<h2 id="Rendre_accessible_des_ressources_web">Rendre accessible des ressources web</h2> + +<p>Les ressources web sont des fichiers tels que des images, des fichiers HTML, CSS ou JavaScript qui sont inclus dans l'extension afin d'être utilisés par les scripts de contenu et les scripts d'arrière-plan. Les ressources web mises à disposition peuvent être référencées depuis les scripts grâce à un schéma d'URI spécifique.</p> + +<p>Ainsi, si un script de contenu souhaite insérer des images sur une page web, on pourra insérer ces images dans l'extension et les rendre accessible. Ensuite, le script de contenu pourra créer et ajouter une balise {{HTMLElement("img")}} faisant référence à l'image via l'attribut <code>src</code> ciblant le fichier via le schéma spécifique.</p> + +<p>Pour en savoir plus, se référer à la documentation de la clé <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a></code> du fichier <code>manifest.json</code>.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/alarms/alarm/index.html b/files/fr/mozilla/add-ons/webextensions/api/alarms/alarm/index.html new file mode 100644 index 0000000000..a5500ca765 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/alarms/alarm/index.html @@ -0,0 +1,46 @@ +--- +title: alarms.Alarm +slug: Mozilla/Add-ons/WebExtensions/API/alarms/Alarm +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - alarm + - alarms +translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/Alarm +--- +<div>{{AddonSidebar}}</div> + +<p>Cette interface fournit des informations sur une alarme donnée. Cet objet est retourné à partir de {{WebExtAPIRef('alarms.get()')}} et {{WebExtAPIRef('alarms.getAll()')}} et est passé au gestionnaire d'évènement {{WebExtAPIRef('alarms.onAlarm')}}.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets contenant les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>name</code></dt> + <dd><code>string</code> Une chaîne de caractères contenant le nom de l'alarme. Ce nom provient de celui qui a été fourni à la méthode {{WebExtAPIRef('alarms.create()')}} lors de la création de l'alarme.</dd> + <dt><code>scheduledTime</code></dt> + <dd><code>double</code> Un nombre qui représente l'heure à laquelle l'alarme doit être déclenchée, exprimée <a href="https://fr.wikipedia.org/wiki/Heure_Unix">en nombre de millisecondes depuis epoch</a>.</dd> + <dt><code>periodInMinutes</code>{{optional_inline}}</dt> + <dd><code>double</code> Un nombre qui, s'il n'est pas <code>null</code>, indique que l'alarme est périodique et fournit la période.</dd> +</dl> + +<h2 id="Compatibilité_des_navigateur">Compatibilité des navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.alarms.Alarm")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><<strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/alarms/clear/index.html b/files/fr/mozilla/add-ons/webextensions/api/alarms/clear/index.html new file mode 100644 index 0000000000..505237ce9d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/alarms/clear/index.html @@ -0,0 +1,64 @@ +--- +title: alarms.clear() +slug: Mozilla/Add-ons/WebExtensions/API/alarms/clear +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - alarms + - clear +translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/clear +--- +<div>{{AddonSidebar}}</div> + +<p>Cette méthode supprime une alarme à partir du nom passé en argument. Il s'agit d'une fonction asynchrone qui renvoie une {{jsxref("Promise")}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox">var clearAlarm = browser.alarms.clear( + name // string +); +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>name</code>{{optional_inline}}</dt> + <dd><code><code>string</code></code>. Le nom de l'alarme à supprimer. Si le paramètre n'est pas fourni, c'est la chaîne vide "" qui sera utilisée.</dd> +</dl> + +<h3 id="Valeur_de_retour">Valeur de retour</h3> + +<p>Une promesse ({{jsxref("Promise")}}) qui sera tenue avec un booléen. Ce booléen vaudra <code>true</code> si l'alarme a bien été effacée et <code>false</code> sinon.</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function onCleared(wasCleared) { + console.log(wasCleared); // true/false +} + +var clearAlarm = browser.alarms.clear("my-periodic-alarm"); +clearAlarm.then(onCleared);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.alarms.clear")}}</p> + +<p> </p> + +<div class="note"><<strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/alarms/clearall/index.html b/files/fr/mozilla/add-ons/webextensions/api/alarms/clearall/index.html new file mode 100644 index 0000000000..f183256ffb --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/alarms/clearall/index.html @@ -0,0 +1,57 @@ +--- +title: alarms.clearAll() +slug: Mozilla/Add-ons/WebExtensions/API/alarms/clearAll +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - alarms + - clearAll +translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/clearAll +--- +<div>{{AddonSidebar}}</div> + +<p>Cette méthode supprime toutes les alarmes actives. C'est une fonction asynchrone qui renvoie une promesse {{jsxref("Promise")}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var clearAlarms = browser.alarms.clearAll() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun.</p> + +<h3 id="Valeur_de_retour">Valeur de retour</h3> + +<p>Une promesse ({{jsxref("Promise")}}) qui sera tenue avec une valeur booléenne. Ce dernier vaudra <code>true</code> si certaines alarmes ont bien été effacées et <code>false</code> sinon. On notera que Chrome renvoie toujours <code>true</code>.</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function onClearedAll(wasCleared) { + console.log(wasCleared); // true/false +} + +var clearAlarms = browser.alarms.clearAll(); +clearAlarms.then(onClearedAll);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.alarms.clearAll")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/alarms/create/index.html b/files/fr/mozilla/add-ons/webextensions/api/alarms/create/index.html new file mode 100644 index 0000000000..97b8a189af --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/alarms/create/index.html @@ -0,0 +1,105 @@ +--- +title: alarms.create() +slug: Mozilla/Add-ons/WebExtensions/API/alarms/create +tags: + - API + - Add-ons + - Créations + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - alarms +translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/create +--- +<div>{{AddonSidebar()}}</div> + +<p>Cette méthode permet de créer une nouvelle alarme pour la session de navigation en cours. Une alarme peut se déclencher une ou plusieurs fois. Une alarme est effacée après qu'elle se soit déclenchée pour la dernière fois.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="brush: js">browser.alarms.create( + name, // une valeur string optionnelle + alarmInfo // une valeur object optionnelle +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>name</code>{{optional_inline}}</dt> + <dd><code>string</code>. Le nom utilisé pour l'alarme. Par défaut, la chaîne utilisée sera la chaîne vide.</dd> + <dd>Cette valeur pourra être utilisée pour indiquer une alarme donnée avec les méthodes {{WebExtAPIRef('alarms.get()')}} et {{WebExtAPIRef('alarms.clear()')}}. Il sera également disponible pour {{WebExtAPIRef('alarms.onAlarm')}} sous la forme de la propriété <code>name</code> de l'objet {{WebExtAPIRef('alarms.Alarm')}} passé au gestionnaire d'évènement.</dd> + <dd>Pour une extension donnée, les noms d'alarmes sont toujours uniques (dans le cadre d'une seule extension). Si le nom donné ici correspond à une alarme existante pour cette extension, l'alarme existante sera supprimée et ne se déclenchera pas.</dd> + <dt><code>alarmInfo</code>{{optional_inline}}</dt> + <dd> + <p><code>object</code>. Un objet de configuration qui indique le moment du premier déclenchement comme valeur absolue (<code>when</code>) ou relative (<code>delayInMinutes</code>). Pour que l'alarme se repète, on utilisera le champ <code>periodInMinutes</code>.</p> + + <p>Sur Chrome, à moins que l'extension ne soit chargée, les alarmes créées ne sont pas autorisées à se déclencher plus d'une fois par minute. Si une extension tente de définir <code>delayInMinutes</code> avec une valeur strictement inférieure à 1 ou avec une valeur strictement inférieure à 1 dans le futur, l'alarme se déclenchera 1 minute après ce délai. Si une extension essaie de définir <code>periodInMinutes</code> avec une valeur strictement inférieure à 1, l'alarme se déclenchera alors chaque minute.</p> + + <p>L'objet <code>alarmInfo</code> peut contenir les propriétés suivantes :</p> + </dd> + <dd> + <dl class="reference-values"> + <dt><code>when</code>{{optional_inline}}</dt> + <dd><code>double</code>. Le moment où l'alarme se déclenchera en premier. L'instant est indiquée comme une valeur absolue, exprimée en <a href="https://fr.wikipedia.org/wiki/Heure_Unix">millisecondes depuis epoch</a>. Pour obtenir le nombre de millisecondes entre l'époque et l'heure actuelle, on pourra utiliser {{jsxref("Date.now")}}. Si cette valeur est utilisée, il ne faut pas fournir <code>delayInMinutes</code>.</dd> + <dt><code>delayInMinutes</code>{{optional_inline}}</dt> + <dd><code>double</code>. Le moment où l'alarme se déclenchera en premier exprimée de façon relative au moment où l'alarme est créée. Si cette option est utilisée, il ne faut pas fournir <code>when</code>.</dd> + <dt><code>periodInMinutes</code>{{optional_inline}}</dt> + <dd><code>double</code>. Si cette valeur est indiquée, l'alarme sera répétée périodiquement (toutes les <code>periodInMinutes</code> minutes) après le premier déclenchement. Si cette valeur est indiquée, il n'est pas obligatoire de fournir <code>when</code> ou <code>delayInMinutes</code> : l'alarme se déclenchera au bout de <code>periodInMinutes</code>. Si <code>periodInMinutes</code> n'est pas indiquée, l'alarme ne se déclenchera qu'une seule fois.</dd> + </dl> + </dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<h3 id="Alarme_vide">Alarme vide</h3> + +<pre class="brush: js">const delayInMinutes = 5; + +<span class="pl-smi">browser</span>.<span class="pl-smi">alarms</span>.<span class="pl-en">create</span>({ + delayInMinutes +});</pre> + +<h3 id="Alarme_relative_périodique">Alarme relative périodique</h3> + +<pre class="brush: js">const delayInMinutes = 5; +const periodInMinutes = 2; + +browser.alarms.create("my-periodic-alarm", { + delayInMinutes, + periodInMinutes +});</pre> + +<h3 id="Alarme_périodique_absolue">Alarme périodique absolue</h3> + +<pre class="brush: js">const when = 1545696000; +const periodInMinutes = 2; + +browser.alarms.create("my-periodic-alarm", { + when, + periodInMinutes +});</pre> + +<dl> + <dd> + <dl class="reference-values"> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.alarms.create")}}</p> + + + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/alarms/get/index.html b/files/fr/mozilla/add-ons/webextensions/api/alarms/get/index.html new file mode 100644 index 0000000000..95b27d40b2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/alarms/get/index.html @@ -0,0 +1,62 @@ +--- +title: alarms.get() +slug: Mozilla/Add-ons/WebExtensions/API/alarms/get +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - alarms + - get +translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/get +--- +<div>{{AddonSidebar}}</div> + +<p>Cette méthode permet d'obtenir une alarme en fonction de son nom. Cette fonction est une fonction asynchrone qui renvoie une promesse ({{jsxref("Promise")}}).</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getAlarm = browser.alarms.get( + name // optional string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>name</code>{{optional_inline}}</dt> + <dd><code><code>string</code></code>. Le nom de l'alarme qu'on souhaite récupérer. La valeur par défaut, utilisée si aucun argument n'est fournie, sera la chaîne vide (<code>""</code>).</dd> +</dl> + +<h3 id="Valeur_de_retour">Valeur de retour</h3> + +<p>Une promesse ({{jsxref("Promise")}}) qui sera tenue avec un objet {{WebExtAPIRef('alarms.Alarm', "Alarm")}}. Cette valeur correspond à l'alarme dont le nom correspond au paramètre <code>name</code>. Si aucune alarme ne correspond, la valeur renvoyée sera <code>undefined</code>.</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function gotAlarm(alarm) { + if (alarm) { + console.log(alarm.name); + } +} + +var getAlarm = browser.alarms.get("my-periodic-alarm"); +getAlarm.then(gotAlarm);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.alarms.get")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/alarms/getall/index.html b/files/fr/mozilla/add-ons/webextensions/api/alarms/getall/index.html new file mode 100644 index 0000000000..eef00b26c2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/alarms/getall/index.html @@ -0,0 +1,63 @@ +--- +title: alarms.getAll() +slug: Mozilla/Add-ons/WebExtensions/API/alarms/getAll +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - alarms + - getAll +translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/getAll +--- +<div>{{AddonSidebar}}</div> + +<p>Obtient toutes les alarmes actives pour le poste.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getAlarms = browser.alarms.getAll() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun</p> + +<h3 id="Valeur_de_retour">Valeur de retour</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> dont la valeur de résolution sera un tableau d'objets <code><a href="/fr/Add-ons/WebExtensions/API/alarms/Alarm" title="Information about a single alarm. This object is returned from alarms.get() and alarms.getAll(), and is passed into the alarms.onAlarm listener."><code>Alarm</code></a></code>. Chaque élément de ce tableau représente une alarme active de l'extension. Si aucune alarme n'est active, le tableau sera vide.</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function gotAll(alarms) { + for (var alarm of alarms) { + console.log(alarm.name); + } +} + +var getAlarms = browser.alarms.getAll(); +getAlarms.then(gotAll);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.alarms.getAll")}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/alarms/index.html b/files/fr/mozilla/add-ons/webextensions/api/alarms/index.html new file mode 100644 index 0000000000..bb5388ccaa --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/alarms/index.html @@ -0,0 +1,60 @@ +--- +title: alarms +slug: Mozilla/Add-ons/WebExtensions/API/alarms +tags: + - API + - Besoins Privilèges + - Extensions + - Interface + - Reference + - WebExtensions + - alarms +translation_of: Mozilla/Add-ons/WebExtensions/API/alarms +--- +<div>{{AddonSidebar}}</div> + +<p><span class="seoSummary">Programmer le code pour qu'il soit exécuté à un moment précis dans le futur.</span> C'est comme <code><a href="/fr/docs/Web/API/WindowTimers/setTimeout">setTimeout()</a></code> and <code><a href="/fr/docs/Web/API/WindowTimers/setInterval">setInterval()</a></code> sauf que ces fonctions ne fonctionnent pas avec les pages d'arrière-plan qui sont chargées à la demande. Les alarmes ne persistent pas d'une session à l'autre du navigateur</p> + +<p>Pour pouvoir utiliser cette API, vous devez disposer de la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"alarms"</code>.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("alarms.Alarm")}}</dt> + <dd>Ce type permet d'obtenir des informations à propos d'une alarme donnée.</dd> +</dl> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("alarms.create()")}}</dt> + <dd>Cette fonction permet de créer une nouvelle alarme.</dd> + <dt>{{WebExtAPIRef("alarms.get()")}}</dt> + <dd>Cette fonction permet de récupérer une alarme donnée en fonction de son nom.</dd> + <dt>{{WebExtAPIRef("alarms.getAll()")}}</dt> + <dd>Cette fonction permet de récupérer l'ensemble des alarmes qui sont planifiées.</dd> + <dt>{{WebExtAPIRef("alarms.clear()")}}</dt> + <dd>Cette fonction permet de supprimer une alarme donnée en fonction de son nom.</dd> + <dt>{{WebExtAPIRef("alarms.clearAll()")}}</dt> + <dd>Cette fonction permet de supprimer l'ensemble des alarmes qui sont planifiées.</dd> +</dl> + +<h2 id="Évènements">Évènements</h2> + +<dl> + <dt>{{WebExtAPIRef("alarms.onAlarm")}}</dt> + <dd>Cet évènement est déclenché lorsque l'alarme s'éteint.</dd> +</dl> + +<p>{{WebExtExamples("h2")}}</p> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p>{{Compat("webextensions.api.alarms")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/alarms/onalarm/index.html b/files/fr/mozilla/add-ons/webextensions/api/alarms/onalarm/index.html new file mode 100644 index 0000000000..654714b328 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/alarms/onalarm/index.html @@ -0,0 +1,88 @@ +--- +title: alarms.onAlarm +slug: Mozilla/Add-ons/WebExtensions/API/alarms/onAlarm +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - alarms + - onAlarm +translation_of: Mozilla/Add-ons/WebExtensions/API/alarms/onAlarm +--- +<div>{{AddonSidebar}}</div> + +<p>Cet évènement est déclenché lorsque l'alarme se déclenche.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.alarms.onAlarm.addListener(listener) +browser.alarms.onAlarm.removeListener(listener) +browser.alarms.onAlarm.hasListener(listener) +</pre> + +<p>Cet évènement possède trois méthodes :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Cette méthode ajoute un gestionnaire à l'évènement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Cette méthode retire le gestionnaire d'évènement passé en argument.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Cette méthode permet de vérifier si le gestionnaire d'évènement passé en argument est enregistré : elle renvoie <code>true</code> s'il est déjà présent et <code>false</code> sinon.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>listener</code></dt> + <dd> + <p>La fonction qui sera appelée lorsque l'événement se produira. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>alarm</code></dt> + <dd>{{WebExtAPIRef('alarms.Alarm')}}. L'alarme qui s'est déclenchée. La propriété <code>Alarm.name</code> pourra être utilisée afin de déterminer l'alarme qui s'est déclenchée.</dd> + </dl> + </dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Voici un exemple illustrant ce qui se produit quand l'alarme se déclenche</p> + +<pre class="brush: js">function handleAlarm(alarmInfo) { + console.log("L'alarme " + alarmInfo.name + " s'est déclenchée"); +} + +browser.alarms.onAlarm.addListener(handleAlarm);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<dl> + <dd> + <dl class="reference-values"> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.alarms.onAlarm")}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/alarms"><code>chrome.alarms</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenode/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenode/index.html new file mode 100644 index 0000000000..9b38ea5811 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenode/index.html @@ -0,0 +1,91 @@ +--- +title: bookmarks.BookmarkTreeNode +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNode +tags: + - API + - Add-ons + - BookmarkTreeNode + - Bookmarks + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNode +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet de type <code>bookmarks.BookmarkTreeNode</code> représente un nœud dans l'arborescence de signets, où chaque nœud est un signet, un dossier de signet ou un séparateur. Les noeuds enfants sont classés par <code>index</code> dans leurs dossiers parents respectifs.</p> + +<h2 id="Type">Type</h2> + +<p>Un {{jsxref("object")}} avec les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>children</code> {{optional_inline}}</dt> + <dd>Un {{jsxref("array")}} d'objets {{WebExtAPIRef('bookmarks.BookmarkTreeNode')}} qui représentent les enfants du noeud. La liste est classée dans la liste dans laquelle les enfants apparaissent dans l'interface utilisateur. Ce champ est omis si le noeud n'est pas un dossier.</dd> + <dt><code>dateAdded</code> {{optional_inline}}</dt> + <dd>Un nombre représentant la date de création du noeud en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>dateGroupModified</code> {{optional_inline}}</dt> + <dd>Un nombre représentant la date et l'heure de la dernière modification du contenu de ce dossier, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>id</code></dt> + <dd>Un {{jsxref("string")}} qui identifie le nœud de manière unique. Chaque ID est unique dans le profil de l'utilisateur et reste inchangé dans les redémarrages du navigateur.</dd> + <dt><code>index</code> {{optional_inline}}</dt> + <dd>Un nombre qui représente la position zéro de ce noeud dans son dossier parent, où zéro représente la première entrée.</dd> + <dt><code>parentId</code> {{optional_inline}}</dt> + <dd>Un {{jsxref("string")}} qui spécifie l'ID du dossier parent. Cette propriété n'est pas présente dans le noeud racine.</dd> + <dt><code>title</code></dt> + <dd>Un {{jsxref("string")}} qui contient le texte affiché pour le nœud dans les menus et les listes de signets.</dd> + <dt><code>type</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef("bookmarks.BookmarkTreeNodeType")}} indiquant s'il s'agit d'un signet, d'un dossier ou d'un séparateur. La valeur par défaut est <code>"bookmark"</code> sauf si l'<code>url</code> est omise, auquel cas elle est par défaut <code>"folder"</code>.</dd> + <dt><code>unmodifiable</code> {{optional_inline}}</dt> + <dd>Un {{jsxref("string")}} comme décrit par le type {{WebExtAPIRef('bookmarks.BookmarkTreeNodeUnmodifiable')}}. Représente la raison pour laquelle le noeud ne peut pas être modifié. Si le nœud peut être changé, ceci est omis.</dd> + <dt><code>url</code> {{optional_inline}}</dt> + <dd>Un {{jsxref("string")}} qui représente l'URL du signet. Si le nœud représente un dossier, cette propriété est omise.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.BookmarkTreeNode", 10)}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodetype/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodetype/index.html new file mode 100644 index 0000000000..1d5c34917f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodetype/index.html @@ -0,0 +1,35 @@ +--- +title: bookmarks.BookmarkTreeNodeType +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNodeType +tags: + - API + - Add-ons + - BookmarkTreeNodeType + - Bookmarks + - Extensions + - Property + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNodeType +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <strong><code>bookmarks.BookmarkTreeNodeType</code></strong> est utilisé pour décrire si un nœud de l'arborescence de signets est un signet, un dossier ou un séparateur.</p> + +<h2 id="Type">Type</h2> + +<p><code>bookmarks.BookmarkTreeNodeType</code> est un {{jsxref("string")}}qui peut avoir l'une des trois valeurs suivantes :</p> + +<ul> + <li><code>"bookmark"</code>: le noeud est un signet.</li> + <li><code>"folder"</code>: le noeud est un dossier.</li> + <li><code>"separator"</code>: le noeud est un séparateur.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.BookmarkTreeNodeType", 10)}}</p> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodeunmodifiable/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodeunmodifiable/index.html new file mode 100644 index 0000000000..4fcd153861 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/bookmarktreenodeunmodifiable/index.html @@ -0,0 +1,68 @@ +--- +title: bookmarks.BookmarkTreeNodeUnmodifiable +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNodeUnmodifiable +tags: + - API + - Add-ons + - BookmarkTreeNodeUnmodifiable + - Bookmarks + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNodeUnmodifiable +--- +<div>{{AddonSidebar()}}</div> + +<p>Un type <strong><code>bookmarks.BookmarkTreeNodeUnmodifiable</code></strong> est utilisé pour indiquer la raison pour laquelle un nœud de l'arborescence de signets (où chaque nœud est un signet ou un dossier de signets) ne peut pas être modifié. Ceci est utilisé comme valeur du champ {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "bookmarks.BookmarkTreeNode.unmodifiable", "unmodifiable")}} sur les nœuds de signets.</p> + +<h2 id="Type">Type</h2> + +<p><code>bookmarks.BookmarkTreeNodeUnmodifiable</code> est un {{jsxref("string")}} qui ne peut actuellement avoir qu'une seule valeur : <code>"managed"</code>. Cela indique que le nœud de signet a été configuré par un administrateur ou par le dépositaire d'un utilisateur supervisé (tel qu'un parent, dans le cas des contrôles parentaux).</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.BookmarkTreeNodeUnmodifiable")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/create/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/create/index.html new file mode 100644 index 0000000000..d48d6b124b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/create/index.html @@ -0,0 +1,103 @@ +--- +title: bookmarks.create() +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/create +tags: + - API + - Add-ons + - Bookmarks + - Create + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/create +--- +<div>{{AddonSidebar()}}</div> + +<p>Crée un signet ou un dossier en tant qu'enfant de {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} avec <code>parentId</code> spécifié. Pour créer un dossier, omettez ou laissez vide le paramètre {{WebExtAPIRef("bookmarks.CreateDetails", "CreateDetails", "url")}}.</p> + +<div class="blockIndicator warning"> +<p>Si votre extension tente de créer un nouveau signet dans le nœud racine de l'arborescence du signet, une erreur est générée: "<em>La racine du signet ne peut pas être modifiée</em>" et le signet ne sera pas créé.</p> +</div> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var createBookmark = browser.bookmarks.create( + bookmark // CreateDetails object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>bookmark</code></dt> + <dd>Un objet {{WebExtAPIRef("bookmarks.CreateDetails")}}.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un {{WebExtAPIRef('bookmarks.BookmarkTreeNode', 'BookmarkTreeNode')}} qui décrit le nouveau noeud de marque pages.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple crée un signet pour cette page, en le plaçant dans le dossier par défaut ("Autres signets" dans Firefox et Chrome).</p> + +<pre class="brush: js">function onCreated(node) { + console.log(node); +} + +var createBookmark = browser.bookmarks.create({ + title: "bookmarks.create() on MDN", + url: "https://developer.mozilla.org/Add-ons/WebExtensions/API/bookmarks/create" +}); + +createBookmark.then(onCreated);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.create")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/createdetails/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/createdetails/index.html new file mode 100644 index 0000000000..96103113b2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/createdetails/index.html @@ -0,0 +1,81 @@ +--- +title: bookmarks.CreateDetails +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/CreateDetails +tags: + - API + - Add-ons + - Bookmarks + - CreateDetails + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/CreateDetails +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code>CreateDetails</code> est utilisé pour décrire les propriétés d'un nouveau, d'un signet, d'un dossier de signets ou d'un séparateur lors de l'appel de la méthode {{WebExtAPIRef("bookmarks.create()")}}.</p> + +<h2 id="Type">Type</h2> + +<p>Un {{jsxref("object")}} contenant une combinaison des champs suivants :</p> + +<dl class="reference-values"> + <dt><code>index</code> {{optional_inline}}</dt> + <dd>Un entier {{jsxref("Number")}} qui spécifie la position à laquelle placer le nouveau signet sous son parent. Une valeur de 0 le placera en haut de la liste.</dd> + <dt><code>parentId</code> {{optional_inline}}</dt> + <dd>Un {{jsxref("string")}} qui indique l'ID du dossier parent dans lequel placer le nouveau signet ou dossier de signets. Sur Chrome et Firefox, la valeur par défaut est le dossier "Autres signets" du menu Signets.</dd> + <dt><code>title</code> {{optional_inline}}</dt> + <dd>Un {{jsxref("string")}} qui spécifie le titre du signet ou le nom du dossier à créer. Si ce n'est pas spécifié, le titre est <code>""</code>.</dd> + <dt><code>type</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef("bookmarks.BookmarkTreeNodeType")}}indiquant s'il s'agit d'un signet, d'un dossier ou d'un séparateur. La valeur par défaut est <code>"bookmark"</code> sauf si l'<code>url</code> est omise, auquel cas elle est par défaut <code>"folder"</code>.</dd> + <dt><code>url</code> {{optional_inline}}</dt> + <dd><code>string</code>. Un {{jsxref("string")}} qui spécifie l'URL de la page à mettre en signet. Si ceci est omis ou est <code>null</code>, un dossier est créé à la place d'un signet.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.CreateDetails", 10)}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/get/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/get/index.html new file mode 100644 index 0000000000..b807af5126 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/get/index.html @@ -0,0 +1,99 @@ +--- +title: bookmarks.get() +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/get +tags: + - API + - Add-ons + - Bookmraks + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - get +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/get +--- +<div>{{AddonSidebar()}}</div> + +<p>Étant donné l'ID d'un {{WebExtAPIRef("bookmarks.BookmarkTreeNode")}} ou d'un tableau de ces ID, la méthode <strong><code>bookmarks.get()</code></strong> récupère les nœuds correspondants.</p> + +<p>C'est une fonction asynchrone qui renvoie une {{jsxref("promise")}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getBookmarks = browser.bookmarks.get( + idOrIdList // string or string array +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>idOrIdList</code></dt> + <dd><code><code>string</code></code> Une {{jsxref("string")}} ou un {{jsxref("array")}} de chaînes spécifiant les ID d'un ou plusieurs objets {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} à récupérer.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une {{jsxref("promise")}} qui sera remplie avec un tableau de {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}}, un pour chaque nœud correspondant. Les séparateurs ne sont pas inclus dans les résultats. Si aucun noeud n'a pu être trouvé, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple essaie d'obtenir le signet dont l'ID est <code>bookmarkAAAA</code>. Si aucun signet avec cet ID n'existe, <code>onRejected</code> est appelé :</p> + +<pre class="brush: js">function onFulfilled(bookmarks) { + console.log(bookmarks); +} + +function onRejected(error) { + console.log(`An error: ${error}`); +} + +var gettingBookmarks = browser.bookmarks.get("bookmarkAAAA"); +gettingBookmarks.then(onFulfilled, onRejected);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.get")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/getchildren/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/getchildren/index.html new file mode 100644 index 0000000000..c02e5b07a3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/getchildren/index.html @@ -0,0 +1,105 @@ +--- +title: bookmarks.getChildren() +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/getChildren +tags: + - API + - Add-ons + - Bookmarks + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getChildren +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/getChildren +--- +<div>{{AddonSidebar()}}</div> + +<p><strong><code>bookmarks.getChildren()</code></strong> récupère tous les enfants immédiats d'un dossier de signets donné, identifié comme {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} ID.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingChildren = browser.bookmarks.getChildren( + id // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>id</code></dt> + <dd>Un {{jsxref("string")}} qui spécifie l'ID du dossier dont les enfants doivent être récupérés.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un tableau d'objets <a href="/fr/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNode" title="An object of type bookmarks.BookmarkTreeNode represents a node in the bookmark tree, where each node is a bookmark or bookmark folder. Child nodes are ordered by an index within their respective parent folders."><code>BookmarkTreeNode</code></a>. Chaque entrée représente un seul noeud enfant. La liste est triée dans le même ordre dans lequel les signets apparaissent dans l'interface utilisateur. Les séparateurs ne sont actuellement pas inclus dans les résultats. La liste inclut les sous-dossiers, mais n'inclut aucun enfant contenu dans les sous-dossiers.</p> + +<p>Si le noeud spécifié n'a pas d'enfants, le tableau est vide.Si le noeud identifié par <code>id</code> n'est pas trouvé, la promise est rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function onFulfilled(children) { + for (child of children) { + console.log(child.id); + } +} + +function onRejected(error) { + console.log(`An error: ${error}`); +} + +var gettingChildren = browser.bookmarks.getChildren("unfiled_____"); +gettingChildren.then(onFulfilled, onRejected);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.getChildren")}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/getrecent/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/getrecent/index.html new file mode 100644 index 0000000000..b91d1f7530 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/getrecent/index.html @@ -0,0 +1,105 @@ +--- +title: bookmarks.getRecent() +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/getRecent +tags: + - API + - Add-ons + - Bookmarks + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - getRecent +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/getRecent +--- +<div>{{AddonSidebar()}}</div> + +<p>La méthode <code>bookmarks.getRecent()</code> récupère un nombre spécifié de signets ajoutés le plus récemment en tant que tableau d'objets {{WebExtAPIRef('bookmarks.BookmarkTreeNode', 'BookmarkTreeNode')}}.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingRecent = browser.bookmarks.getRecent( + numberOfItems // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>numberOfItems</code></dt> + <dd>Un nombre représentant le nombre maximum d'éléments à renvoyer. La liste renvoyée contiendra jusqu'à ce nombre des éléments les plus récemment ajoutés. La valeur minimale autorisée ici est 1. Si vous transmettez 0 ou moins, la fonction génère une erreur.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un tableau d'objets <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNode" title="An object of type bookmarks.BookmarkTreeNode represents a node in the bookmark tree, where each node is a bookmark or bookmark folder. Child nodes are ordered by an index within their respective parent folders."><code>BookmarkTreeNode</code></a>.</p> + +<h2 id="Exemples">Exemples</h2> + +<p id="Find_the_most_recently_added_bookmark"><span id="result_box" lang="fr"><span>Cet exemple enregistre l'URL du dernier signet ajouté </span></span>:</p> + +<pre class="brush: js">function onFulfilled(bookmarks) { + for (bookmark of bookmarks) { + console.log(bookmark.url); + } +} + +function onRejected(error) { + console.log(`An error: ${error}`); +} + +var gettingRecent = browser.bookmarks.getRecent(1); +gettingRecent.then(onFulfilled, onRejected);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.getRecent")}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/getsubtree/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/getsubtree/index.html new file mode 100644 index 0000000000..f7f86a64c1 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/getsubtree/index.html @@ -0,0 +1,121 @@ +--- +title: bookmarks.getSubTree() +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/getSubTree +tags: + - API + - Add-ons + - Bookmarks + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getSubTree +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/getSubTree +--- +<div>{{AddonSidebar()}}</div> + +<p>La méthode <strong><code>bookmarks.getSubTree()</code></strong> récupère de façon asynchrone un {{WebExtAPIRef("bookmarks.BookmarkTreeNode")}}, étant donné son ID.</p> + +<p>Si l'élément est un dossier, vous pouvez accéder à tous ses descendants de manière récursive en utilisant sa propriété <code>children</code> et la propriété <code>children</code> de ses descendants, s'ils sont eux-mêmes des dossiers.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingSubTree = browser.bookmarks.getSubTree( + id // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>id</code></dt> + <dd>Un {{jsxref("string")}} spécifiant l'ID de la racine du sous-arbre à récupérer.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un tableau contenant un objet unique, un objet {{WebExtAPIRef('bookmarks.BookmarkTreeNode')}}, représentant l'élément avec l'ID donné.Si un nœud correspondant à <code>id</code> n'a pas pu être trouvé, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple imprime récursivement le sous-arbre sous un noeud donné :</p> + +<pre class="brush: js">function makeIndent(indentLength) { + return ".".repeat(indentLength); +} + +function logItems(bookmarkItem, indent) { + if (bookmarkItem.url) { + console.log(makeIndent(indent) + bookmarkItem.url); + } else { + console.log(makeIndent(indent) + "Folder: " + bookmarkItem.id); + indent++; + } + if (bookmarkItem.children) { + for (var child of bookmarkItem.children) { + logItems(child, indent); + } + } +} + +function logSubTree(bookmarkItems) { + logItems(bookmarkItems[0], 0); +} + +function onRejected(error) { + console.log(`An error: ${error}`); +} + +var subTreeID = "root_____"; + +var gettingSubTree = browser.bookmarks.getSubTree(subTreeID); +gettingSubTree.then(logSubTree, onRejected);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.getSubTree")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/gettree/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/gettree/index.html new file mode 100644 index 0000000000..5913043085 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/gettree/index.html @@ -0,0 +1,120 @@ +--- +title: bookmarks.getTree() +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/getTree +tags: + - API + - Add-ons + - Bookmarks + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - getTree +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/getTree +--- +<div>{{AddonSidebar()}}</div> + +<p><strong><code>bookmarks.getTree()</code></strong> renvoie un tableau contenant la racine de l'arborescence des signets en tant qu'objet {{WebExtAPIRef("bookmarks.BookmarkTreeNode")}}.</p> + +<p>Vous pouvez accéder à l'intégralité de l'arborescence de manière récursive en utilisant sa propriété <code>children</code> et la propriété <code>children</code> de ses descendants, s'ils sont eux-mêmes des dossiers.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingTree = browser.bookmarks.getTree() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un tableau contenant un objet, un objet <a href="/fr/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNode" title="An object of type bookmarks.BookmarkTreeNode represents a node in the bookmark tree, where each node is a bookmark or bookmark folder. Child nodes are ordered by an index within their respective parent folders."><code>bookmarks.BookmarkTreeNode</code></a> le noeud racine.</p> + +<h2 id="Exemples">Exemples</h2> + +<p><span class="short_text" id="result_box" lang="fr"><span>Cet exemple imprime l'intégralité de l'arborescence des signets :</span></span></p> + +<pre class="brush: js">function makeIndent(indentLength) { + return ".".repeat(indentLength); +} + +function logItems(bookmarkItem, indent) { + if (bookmarkItem.url) { + console.log(makeIndent(indent) + bookmarkItem.url); + } else { + console.log(makeIndent(indent) + "Folder"); + indent++; + } + if (bookmarkItem.children) { + for (child of bookmarkItem.children) { + logItems(child, indent); + } + } + indent--; +} + +function logTree(bookmarkItems) { + logItems(bookmarkItems[0], 0); +} + +function onRejected(error) { + console.log(`An error: ${error}`); +} + +var gettingTree = browser.bookmarks.getTree(); +gettingTree.then(logTree, onRejected); +</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.getTree")}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/index.html new file mode 100644 index 0000000000..9779eaab49 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/index.html @@ -0,0 +1,130 @@ +--- +title: bookmarks +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks +tags: + - API + - Add-ons + - Bookmarks + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks +--- +<div>{{AddonSidebar}}</div> + +<p>L’API de la <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> {{WebExtAPIRef("bookmarks")}} permet à une extension d’interagir et de manipuler le système de Bookmarking du navigateur. Vous pouvez l’utiliser pour enregistrer des marque-pages, récupérer des marque-pages existants et éditer, supprimer ou organiser des marque-pages.</p> + +<p>Pour utiliser cette API, une extension doit demander la <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> « bookmarks » dans son fichier <code><a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a></code>.</p> + +<p>Les extensions ne peuvent pas créer, modifier ou supprimer des signets dans le nœud racine de l'arborescence de signets. Cela provoquerait une erreur avec le message: <em>"La racine du signet ne peut pas être modifiée"</em></p> + +<h2 id="Les_Types">Les Types</h2> + +<dl> + <dt>{{WebExtAPIRef("bookmarks.BookmarkTreeNode")}}</dt> + <dd>Représente un marque-page ou un dossier dans l'arborescence des marque-pages.</dd> + <dt>{{WebExtAPIRef("bookmarks.BookmarkTreeNodeType")}}</dt> + <dd>Un énumérateur {{jsxref("String")}} qui décrit si un nœud de l’arbre est un marque-page, un dossier ou un séparateur.</dd> + <dt>{{WebExtAPIRef("bookmarks.BookmarkTreeNodeUnmodifiable")}}</dt> + <dd>Un {{jsxref("String")}} énumère ce qui spécifie pourquoi un marque-page ou un dossier n’est pas possible.</dd> + <dt>{{WebExtAPIRef("bookmarks.CreateDetails")}}</dt> + <dd>Contient des informations passées à la fonction {{WebExtAPIRef("bookmarks.create()")}} lors de la création d’un nouveau marque-page.</dd> +</dl> + +<h2 id="Les_fonctions">Les fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("bookmarks.create()")}}</dt> + <dd>Créer un marque-page ou un dossier.</dd> + <dt>{{WebExtAPIRef("bookmarks.get()")}}</dt> + <dd>Récupère un ou plusieurs {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}}s, compte tenu d’un identifiant de marque-page ou d’un ensemble d’identifiants de marque-pages.</dd> + <dt>{{WebExtAPIRef("bookmarks.getChildren()")}}</dt> + <dd>Récupère les enfants spécifiés {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}}.</dd> + <dt>{{WebExtAPIRef("bookmarks.getRecent()")}}</dt> + <dd>Récupère un nombre demandé de marque-page récemment ajoutés.</dd> + <dt>{{WebExtAPIRef("bookmarks.getSubTree()")}}</dt> + <dd>Récupère un nombre demandé de favoris récemment ajoutés.</dd> + <dt>{{WebExtAPIRef("bookmarks.getTree()")}}</dt> + <dd>Récupère l’intégralité de l’arborescence des marques pages dans un tableau d’objets {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}}.</dd> + <dt>{{WebExtAPIRef("bookmarks.move()")}}</dt> + <dd>Déplace le {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} vers un nouvel emplacement dans l’arborescence de marque-pages.</dd> + <dt>{{WebExtAPIRef("bookmarks.remove()")}}</dt> + <dd>Supprime un marque page ou un dossier de marque-pages vide, en fonction de l’ID du noeud.</dd> + <dt>{{WebExtAPIRef("bookmarks.removeTree()")}}</dt> + <dd>Supprime de manière récursive un dossier de marque-pages ; c’est-à-dire, étant donné l’ID d’un noeud de dossier, supprime ce noeud et tous ses descendants.</dd> + <dt>{{WebExtAPIRef("bookmarks.search()")}}</dt> + <dd>Recherche {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} une correspondant à un ensemble de critères spécifié.</dd> + <dt>{{WebExtAPIRef("bookmarks.update()")}}</dt> + <dd>Met à jour le titre et/ou l’URL d’un marque-page, ou un nom de dossier de marque-pages, en fonction de l’ID d’un marque-page.</dd> +</dl> + +<h2 id="Events">Events</h2> + +<dl> + <dt>{{WebExtAPIRef("bookmarks.onCreated")}}</dt> + <dd>Déclenché lorsqu’un marque-page ou un dossier est créé.</dd> + <dt>{{WebExtAPIRef("bookmarks.onRemoved")}}</dt> + <dd>Déclenché lorsqu’un marque-page ou un dossier est supprimé. Lorsqu’un dossier est supprimé de manière récursive, une seule notification est envoyée pour le dossier et aucune pour son contenu.</dd> + <dt>{{WebExtAPIRef("bookmarks.onChanged")}}</dt> + <dd>Déclenché lorsqu’un marque-page ou un dossier change. Actuellement, seuls les changements de titre et d’URL déclenchent ce type d’événement.</dd> + <dt>{{WebExtAPIRef("bookmarks.onMoved")}}</dt> + <dd>Déclenché lorsqu’un marque-page ou un dossier est déplacé vers un dossier parent différent ou vers un nouveau décalage dans son dossier.</dd> + <dt>{{WebExtAPIRef("bookmarks.onChildrenReordered")}}</dt> + <dd>Déclenché lorsque l’utilisateur a trié les enfants d’un dossier dans l’interface utilisateur du navigateur. Ceci n’est pas déclenché par un appel {{WebExtAPIRef("bookmarks.move", "move()")}}.</dd> + <dt>{{WebExtAPIRef("bookmarks.onImportBegan")}}</dt> + <dd>Déclenché lorsqu’une session d’importation de marque-pages est commencée. Les observateurs coûteux doivent ignorer les {{WebExtAPIRef("bookmarks.onCreated")}} mises à jour jusqu’à ce que {{WebExtAPIRef("bookmarks.onImportEnded")}} soit déclenché. Les observateurs doivent toujours gérer d’autres notifications immédiatement.</dd> + <dt>{{WebExtAPIRef("bookmarks.onImportEnded")}}</dt> + <dd>Déclenché lorsqu’une session d’importation de marque-pages est terminée.</dd> +</dl> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p>{{Compat("webextensions.api.bookmarks")}}</p> + +<div class="hidden note"> +<p>The "Chrome incompatibilities" section is included from <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities"> https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a> using the <a href="/en-US/docs/Template:WebExtChromeCompat">WebExtChromeCompat</a> macro.</p> + +<p>If you need to update this content, edit <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities">https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a>, then shift-refresh this page to see your changes.</p> +</div> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/move/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/move/index.html new file mode 100644 index 0000000000..62e1f22e0b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/move/index.html @@ -0,0 +1,120 @@ +--- +title: bookmarks.move() +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/move +tags: + - API + - Add-ons + - Bookmarks + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - move +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/move +--- +<div>{{AddonSidebar()}}</div> + +<p>La méthode <strong><code>bookmarks.move()</code></strong> déplace le {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} à la destination spécifiée dans l'arborescence des signets. Cela vous permet de déplacer un signet vers un nouveau dossier et / ou une position dans le dossier.</p> + +<div class="blockIndicator warning"> +<p>Si votre extension tente de déplacer un signet dans le nœud racine de l’arborescence de signets, l’appel déclenche une erreur avec le message suivant: "<em>La racine du signet ne peut pas être modifiée</em>" et le déplacement ne sera pas terminé.</p> +</div> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var movingBookmark = browser.bookmarks.move( + id, // string + destination // object +) +</pre> + +<h3 id="Paramètres">Paramètres :</h3> + +<dl> + <dt><code>id</code></dt> + <dd>Un {{jsxref("string")}} contenant l'ID du signet ou du dossier à déplacer.</dd> + <dt><code>destination</code></dt> + <dd>Un {{jsxref("object")}} qui spécifie la destination du signet. Cet objet doit contenir un ou les deux champs suivants :</dd> + <dd> + <dl class="reference-values"> + <dt><code>parentId</code> {{optional_inline}}</dt> + <dd>Un {{jsxref("string")}} qui spécifie l'ID du dossier de destination. Si cette valeur est omise, le signet est déplacé vers un nouvel emplacement dans son dossier actuel.</dd> + <dt><code>index</code> {{optional_inline}}</dt> + <dd>Un index basé sur 0 spécifiant la position dans le dossier vers lequel déplacer le signet. La valeur 0 déplace le signet vers le haut du dossier. Si cette valeur est omise, le signet est placé à la fin du nouveau dossier parent..</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un seul objet <a href="/fr/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNode" title="An object of type bookmarks.BookmarkTreeNode represents a node in the bookmark tree, where each node is a bookmark or bookmark folder. Child nodes are ordered by an index within their respective parent folders."><code>bookmarks.BookmarkTreeNode</code></a> décrivant le noeud déplacé.Si le noeud correspondant au paramètre <code>id</code> ne peut pas être trouvé, la promesse est rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple déplace un signet afin qu'il soit le premier signet dans son dossier actuel.</p> + +<pre class="brush: js">function onMoved(bookmarkItem) { + console.log(bookmarkItem.index); +} + +function onRejected(error) { + console.log(`An error: ${error}`); +} + +var bookmarkId = "abcdefghilkl"; + +var movingBookmark = browser.bookmarks.move(bookmarkId, {index: 0}); +movingBookmark.then(onMoved, onRejected);</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.move")}}</p> + + + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onchanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onchanged/index.html new file mode 100644 index 0000000000..6697cf801e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onchanged/index.html @@ -0,0 +1,138 @@ +--- +title: bookmarks.onChanged +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onChanged +tags: + - API + - Add-ons + - Bookmarks + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onChanged +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onChanged +--- +<div>{{AddonSidebar}}</div> + +<p>Mise en place quand il y a un changement à :</p> + +<ul> + <li>le titre ou l'URL d'un signet</li> + <li>le nom d'un dossier.</li> +</ul> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.bookmarks.onChanged.addListener(listener) +browser.bookmarks.onChanged.removeListener(listener) +browser.bookmarks.onChanged.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>id</code></dt> + <dd><code>string</code>. ID de l'article qui a changé.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>changeInfo</code></dt> + <dd><a href="#changeInfo"><code>object</code></a>. Objet contenant deux propriétés : <code>title</code>, une chaîne contenant le titre de l'élément et <code>url</code>, une chaîne contenant l'URL de l'élément. Si l'élément est un dossier, l'<code>url</code> est omise.</dd> + </dl> + </dd> +</dl> + +<div class="blockIndicator note"> +<p>Plusieurs événements peuvent se produire lorsqu'un signet change, et cet objet changeInfo peut contenir uniquement les données qui ont changé, plutôt que toutes les données du signet. En d'autres termes, si l'<code>url</code> d'un signet change, le changeInfo ne peut contenir que les nouvelles informations de l'<code>url</code>.</p> +</div> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function handleChanged(id, changeInfo) { + console.log("Item: " + id + " changed"); + console.log("Title: " + changeInfo.title); + console.log("Url: " + changeInfo.url); +} + +function handleClick() { + browser.bookmarks.onChanged.addListener(handleChanged); +} + +browser.browserAction.onClicked.addListener(handleClick); +</pre> + +<p>{{WebExtExamples}}</p> + + + +<dl> + <dd> + <dl class="reference-values"> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.onChanged")}}</p> + + + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onchildrenreordered/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onchildrenreordered/index.html new file mode 100644 index 0000000000..4664c9ef60 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onchildrenreordered/index.html @@ -0,0 +1,126 @@ +--- +title: bookmarks.onChildrenReordered +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onChildrenReordered +tags: + - API + - Add-ons + - Bookmarks + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onChildrenReordered +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onChildrenReordered +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque les enfants d'un dossier ont changé leur commande en raison de la commande triée dans l'interface utilisateur. Cela n'est pas appelé à la suite d'un appel à {{WebExtAPIRef("bookmarks.move()")}} ou une opération glisser dans l'interface utilisateur.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.bookmarks.onChildrenReordered.addListener(listener) +browser.bookmarks.onChildrenReordered.removeListener(listener) +browser.bookmarks.onChildrenReordered.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Synatxe_addListener">Synatxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera très semblable à cet événement. La fonction suivante les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>id</code></dt> + <dd><code>string</code>. ID du dossier dont les enfants ont été réorganisés.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>reorderInfo</code></dt> + <dd><a href="#reorderInfo"><code>object</code></a>. Objet contenant des objets supplémentaires.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="reorderInfo">reorderInfo</h3> + +<dl class="reference-values"> + <dt><code>childIds</code></dt> + <dd><code>array</code> de <code><code>string</code></code>. Tableau contenant les ID de tous les éléments de signets de ce dossier, dans l'ordre où ils apparaissent maintenant dans l'interface utilisateur.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.onChildrenReordered")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function handleChildrenReordered(id, reorderInfo) { + console.log("Item: " + id + " children reordered"); + console.log("Children: " + reorderInfo.childIds); +} + +function handleClick() { + browser.bookmarks.onChildrenReordered.addListener(handleChildrenReordered); +} + +browser.browserAction.onClicked.addListener(handleClick); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/oncreated/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/oncreated/index.html new file mode 100644 index 0000000000..c893980e4e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/oncreated/index.html @@ -0,0 +1,123 @@ +--- +title: bookmarks.onCreated +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onCreated +tags: + - API + - Add-ons + - Bookmarks + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onCreated +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onCreated +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'un élément de signet (un signet ou un dossier) est créé.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.bookmarks.onCreated.addListener() +browser.bookmarks.onCreated.removeListener(listener) +browser.bookmarks.onCreated.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>id</code></dt> + <dd><code>string</code>. L'ID du nouvel élément de favori.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>bookmark</code></dt> + <dd>{{WebExtAPIRef('bookmarks.BookmarkTreeNode')}}. Informations sur le nouvel élément de favori.</dd> + </dl> + </dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function handleCreated(id, bookmarkInfo) { + console.log(`New bookmark ID: ${id}`); + console.log(`New bookmark URL: ${bookmarkInfo.url}`); +} + +browser.bookmarks.onCreated.addListener(handleCreated);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<dl> + <dd> + <dl class="reference-values"> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.bookmarks.onCreated")}}</span></p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onimportbegan/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onimportbegan/index.html new file mode 100644 index 0000000000..d8b8ef851f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onimportbegan/index.html @@ -0,0 +1,113 @@ +--- +title: bookmarks.onImportBegan +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onImportBegan +tags: + - API + - Add-ons + - Bookmarks + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onImportBegan +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onImportBegan +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque le navigateur a commencé à importer un ensemble de signet.</p> + +<p>Pendant l'importation d'un ensemble de signets, {{WebExtAPIRef("bookmarks.onCreated", "onCreated")}} peut déclencher plusieurs fois. Si votre extension écoute <code>onCreated</code>, et que l'écouteur est cher, vous devez également écouter <code>onImportBegan</code> et {{WebExtAPIRef("bookmarks.onImportEnded", "onImportEnded")}}. Lorsque vous recevez <code>onImportBegan</code>, ignorez <code>onCreated</code> jusqu'à ce que vous receviez <code>onImportEnded</code>. Vous pouvez gérer toutes les autres notifications comme d'habitude.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.bookmarks.onImportBegan.addListener(listener) +browser.bookmarks.onImportBegan.removeListener(listener) +browser.bookmarks.onImportBegan.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. Il n'y a pas de paramètres.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.bookmarks.onImportBegan")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function handleImportBegan() { + console.log("Importing..."); +} + +function handleImportEnded() { + console.log("...finished."); +} + +function handleClick() { + browser.bookmarks.onImportBegan.addListener(handleImportBegan); + browser.bookmarks.onImportEnded.addListener(handleImportEnded); +} + +browser.browserAction.onClicked.addListener(handleClick); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onimportended/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onimportended/index.html new file mode 100644 index 0000000000..534e2c9ef4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onimportended/index.html @@ -0,0 +1,113 @@ +--- +title: bookmarks.onImportEnded +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onImportEnded +tags: + - API + - Add-ons + - Bookmarks + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onImportEnded +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onImportEnded +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque le navigateur a fini d'importer un ensemble de signets.</p> + +<p>Voir {{WebExtAPIRef("bookmarks.onImportBegan")}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.bookmarks.onImportEnded.addListener(listener) +browser.bookmarks.onImportEnded.removeListener(listener) +browser.bookmarks.onImportEnded.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. Il n'a pas passé de paramètres.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.bookmarks.onImportEnded")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function handleImportBegan() { + console.log("Importing..."); +} + +function handleImportEnded() { + console.log("...finished."); +} + +function handleClick() { + browser.bookmarks.onImportBegan.addListener(handleImportBegan); + browser.bookmarks.onImportEnded.addListener(handleImportEnded); +} + +browser.browserAction.onClicked.addListener(handleClick); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onmoved/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onmoved/index.html new file mode 100644 index 0000000000..b8ff60940c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onmoved/index.html @@ -0,0 +1,135 @@ +--- +title: bookmarks.onMoved +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onMoved +tags: + - API + - Add-ons + - Bookmarks + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onMoved +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onMoved +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'un signet ou un dossier est déplacé vers un autre dossier parent et / ou position dans un dossier.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.bookmarks.onMoved.addListener(listener) +browser.bookmarks.onMoved.removeListener(listener) +browser.bookmarks.onMoved.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Function that will be called when this event occurs. The function will be passed the following arguments:</p> + + <dl class="reference-values"> + <dt><code>id</code></dt> + <dd><code>string</code>. ID of the item that was moved.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>moveInfo</code></dt> + <dd><a href="#moveInfo"><code>object</code></a>. Object containing more details about the move.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="moveInfo">moveInfo</h3> + +<dl class="reference-values"> + <dt><code>parentId</code></dt> + <dd><code>string</code>. Le nouveau dossier parent.</dd> + <dt><code>index</code></dt> + <dd><code>integer</code>. Le nouvel index de cet élément dans son parent.</dd> + <dt><code>oldParentId</code></dt> + <dd><code>string</code>. L'ancien dossier parent.</dd> + <dt><code>oldIndex</code></dt> + <dd><code>integer</code>. L'ancien index de l'élément dans son parent.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.bookmarks.onMoved")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function handleMoved(id, moveInfo) { + console.log("Item: " + id + " moved"); + console.log("Old index: " + moveInfo.oldIndex); + console.log("New index: " + moveInfo.index); + console.log("Old folder: " + moveInfo.oldParentId); + console.log("New folder: " + moveInfo.parentId); +} + +function handleClick() { + browser.bookmarks.onMoved.addListener(handleMoved); +} + +browser.browserAction.onClicked.addListener(handleClick); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onremoved/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onremoved/index.html new file mode 100644 index 0000000000..0f09e6369e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/onremoved/index.html @@ -0,0 +1,137 @@ +--- +title: bookmarks.onRemoved +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/onRemoved +tags: + - API + - Add-ons + - Bookmarks + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onRemoved +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/onRemoved +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'un signet ou un dossier est supprimé. Lorsqu'un dossier est supprimé de manière récursive, une seule notification est envoyée pour le dossier et aucune pour son contenu.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.bookmarks.onRemoved.addListener(listener) +browser.bookmarks.onRemoved.removeListener(listener) +browser.bookmarks.onRemoved.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>id</code></dt> + <dd><code>string</code>. ID de l'article qui a été supprimé.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>removeInfo</code></dt> + <dd><a href="#removeInfo"><code>object</code></a>. Plus de détails sur l'élément supprimé.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="removeInfo">removeInfo</h3> + +<dl class="reference-values"> + <dt><code>parentId</code></dt> + <dd><code>string</code>. ID du parent de l'élément dans l'arborescence.</dd> + <dt><code>index</code></dt> + <dd><code>integer</code>. Position d'index basée sur zéro de cet élément dans son parent.</dd> + <dt><code>node</code></dt> + <dd>{{WebExtAPIRef('bookmarks.BookmarkTreeNode')}}. Informations détaillées sur l'élément qui a été supprimé.</dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function handleRemoved(id, removeInfo) { + console.log("Item: " + id + " removed"); + console.log("Title: " + removeInfo.node.title); + console.log("Url: " + removeInfo.node.url); +} + +function handleClick() { + browser.bookmarks.onRemoved.addListener(handleRemoved); +} + +browser.browserAction.onClicked.addListener(handleClick);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<dl class="reference-values"> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.bookmarks.onRemoved")}}</span></p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/remove/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/remove/index.html new file mode 100644 index 0000000000..d3c38e7661 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/remove/index.html @@ -0,0 +1,108 @@ +--- +title: bookmarks.remove() +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/remove +tags: + - API + - Add-ons + - Bookmarks + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - remove + - supprimer +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/remove +--- +<div>{{AddonSidebar()}}</div> + +<p>La méthode <strong><code>bookmarks.remove()</code></strong> supprime un seul signet ou un dossier de signets vide.</p> + +<div class="blockIndicator warning"> +<p>Si votre extension tente de supprimer un signet du nœud racine de l’arborescence de signets, l’appel déclenche une erreur avec le message suivant: "<em>La racine du signet ne peut pas être modifiée</em>" et le signet ne sera pas supprimé.</p> +</div> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removingBookmark = browser.bookmarks.remove( + id // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>id</code></dt> + <dd>Un {{jsxref("string")}} spécifiant l'ID du signet ou du dossier vide à supprimer.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera accomplie sans arguments..Si le nœud correspondant au paramètre <code>id</code> ne peut être trouvé ou s'il s'agit d'un dossier non vide, la promesse est rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function onRemoved() { + console.log("Removed!"); +} + +function onRejected(error) { + console.log(`An error: ${error}`); +} + +var bookmarkId = "abcdefghijkl"; + +var removingBookmark = browser.bookmarks.remove(bookmarkId); +removingBookmark.then(onRemoved, onRejected);</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.remove")}}</p> + + + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/removetree/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/removetree/index.html new file mode 100644 index 0000000000..36b876b655 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/removetree/index.html @@ -0,0 +1,114 @@ +--- +title: bookmarks.removeTree() +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/removeTree +tags: + - API + - Add-ons + - Bookmarks + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - removeTree +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/removeTree +--- +<div>{{AddonSidebar()}}</div> + +<p>La méthode <strong><code>bookmarks.removeTree()</code></strong> supprime récursivement un dossier de signets et tout son contenu.</p> + +<div class="blockIndicator warning"> +<p>Si votre extension tente de supprimer une arborescence de signets du nœud racine de cette dernière, l'appel déclenche une erreur avec le message suivant: "La racine de signet ne peut pas être modifiée" et le signet ne sera pas supprimé.</p> +</div> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removingTree = browser.bookmarks.removeTree( + id // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>id</code></dt> + <dd>Un {{jsxref("string")}} spécifiant l'ID du noeud de dossier à supprimer avec ses descendants.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments lorsque l'arbre a été retiré.Si le noeud correspondant au paramètre <code>id</code> ne peut pas être trouvé, la promesse est rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple localise un dossier de signets nommé "MDN" et le supprime avec tout son contenu.</p> + +<pre class="brush: js">function onRemoved() { + console.log("bookmark item removed!"); +} + +function onRejected(error) { + console.log(`An error: ${error}`); +} + +function removeMDN(searchResults) { + if (searchResults.length) { + var removing = browser.bookmarks.removeTree(searchResults[0].id); + removing.then(onRemoved, onRejected); + } +} + +var searchingBookmarks = browser.bookmarks.search({ title: "MDN" }); +searchingBookmarks.then(removeMDN, onRejected);</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.removeTree")}}</p> + + + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/search/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/search/index.html new file mode 100644 index 0000000000..9ed539bba5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/search/index.html @@ -0,0 +1,152 @@ +--- +title: bookmarks.search() +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/search +tags: + - API + - Add-ons + - Bookmarks + - Extensions + - Method + - Non-standard + - Recherche + - Reference + - Search + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/search +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <strong><code>bookmarks.search()</code></strong> recherche les nœuds d'arborescence de signets correspondant à la requête donnée.</p> + +<p>Cette fonction déclenche une exception si l'un des paramètres d'entrée n'est pas valide ou n'est pas d'un type approprié ; regardez dans la <a href="/fr/Add-ons/WebExtensions/Debugging">console</a> pour le message d'erreur. Les exceptions n'ont pas d'ID d'erreur et les messages eux-mêmes peuvent changer, donc n'écrivez pas de code qui essaie de les interpréter.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var searching = browser.bookmarks.search( + query // string or object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>query</code></dt> + <dd>Un {{jsxref("string")}} ou {{jsxref("object")}} décrivant la requête à effectuer.</dd> + <dd> + <p>Si la <code>query</code> est une chaîne, elle comprend zéro ou plusieurs termes de recherche. Les termes de recherche sont délimités par des espaces et peuvent être placés entre guillemets pour permettre la recherche dans des expressions de plusieurs mots. Chaque terme de recherche correspond s'il correspond à une sous-chaîne dans l'URL ou le titre du signet. La correspondance est insensible à la casse. Pour qu'un signet corresponde à la requête, tous les termes de recherche de la requête doivent correspondre.</p> + + <p>Si la <code>query</code> un objet, elle possède zéro ou plus des trois propriétés suivantes : <code>query</code>, <code>title</code>, et <code>url</code>, qui sont décrites ci-dessous. Pour qu'un signet corresponde à la requête, tous les termes de propriétés fournis doivent correspondre aux valeurs spécifiées.</p> + </dd> + <dd> + <dl class="reference-values"> + <dt><code>query</code> {{optional_inline}}</dt> + <dd>Un {{jsxref("string")}} spécifiant un ou plusieurs termes à comparer; le format est identique à la forme de chaîne du paramètre du <code>query</code>. Si ce n'est pas une chaîne, une exception est levée.</dd> + <dt><code>url</code> {{optional_inline}}</dt> + <dd>Un {{jsxref("string")}} qui doit correspondre exactement à l'URL du signet. La correspondance est insensible à la casse et les barres obliques de fin sont ignorées.</dd> + <dd> + <p>Si vous passez une URL invalide ici, la fonction lèvera une exception.</p> + </dd> + </dl> + + <dl class="reference-values"> + <dt><code>title</code> {{optional_inline}}</dt> + <dd>Un {{jsxref("string")}} Ceci doit correspondre exactement au titre du noeud de l'arbre du signet. La correspondance est sensible à la casse.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> sera accompli avec un tableau d'objets {{WebExtAPIRef('bookmarks.BookmarkTreeNode')}}, chacun représentant un seul nœud d'arbre de signet correspondant. Les résultats sont renvoyés dans l'ordre de création des nœuds. Le tableau est vide si aucun résultat n'a été trouvé.Le <code><a href="/fr/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNode">BookmarkTreeNodes</a></code>—même du type <code>"folder"</code> — renvoyé par <code>bookmarks.search()</code> ne contiennent pas la propriété children. Pour obtenir un <code>BookmarkTreeNode</code> utilisez <code><a href="/fr/Add-ons/WebExtensions/API/bookmarks/getSubTree">bookmarks.getSubTree()</a></code>.</p> + +<h2 id="Exemple">Exemple</h2> + +<p>Cet exemple enregistre les ID de tous les signets :</p> + +<pre class="brush: js">function onFulfilled(bookmarkItems) { + for (item of bookmarkItems) { + console.log(item.id); + } +} + +function onRejected(error) { + console.log(`An error: ${error}`); +} + +var searching = browser.bookmarks.search({}); + +searching.then(onFulfilled, onRejected);</pre> + +<p>Cet exemple cherche à voir si l'onglet actuellement actif est marqué d'un signet :</p> + +<pre class="brush: js">function onFulfilled(bookmarkItems) { + if (bookmarkItems.length) { + console.log("active tab is bookmarked"); + } else { + console.log("active tab is not bookmarked"); + } +} + +function onRejected(error) { + console.log(`An error: ${error}`); +} + +function checkActiveTab(tab) { + var searching = browser.bookmarks.search({url: tab.url}); + searching.then(onFulfilled, onRejected); +} + +browser.browserAction.onClicked.addListener(checkActiveTab); +</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.bookmarks.search")}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/bookmarks/update/index.html b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/update/index.html new file mode 100644 index 0000000000..a1085f4ec4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/bookmarks/update/index.html @@ -0,0 +1,126 @@ +--- +title: bookmarks.update() +slug: Mozilla/Add-ons/WebExtensions/API/bookmarks/update +tags: + - API + - Add-ons + - Bookmarks + - Extensions + - Method + - Non-standard + - Reference + - Update + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks/update +--- +<div>{{AddonSidebar()}}</div> + +<p><strong><code>bookmarks.update()</code></strong> met à jour le titre et / ou l'URL d'un signet ou le nom d'un dossier de signets.</p> + +<div class="blockIndicator warning"> +<p>Si votre extension tente de mettre à jour un signet dans le nœud racine de l'arborescence de signets, l'appel déclenche une erreur avec le message suivant: "La racine du signet ne peut pas être modifiée" et le signet ne sera pas mis à jour.</p> +</div> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var updating = browser.bookmarks.update( + id, // string + changes // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>id</code></dt> + <dd>Un {{jsxref("string")}} spécifiant l'ID du dossier de signet ou de dossier de signets à mettre à jour.</dd> + <dt><code>changes</code></dt> + <dd>Un {{jsxref("object")}} spécifiant les changements à appliquer, avec une combinaison des champs suivants. Tous les éléments non spécifiés ne sont pas modifiés dans le signet ou le dossier référencé :</dd> + <dd> + <dl class="reference-values"> + <dt><code>title</code> {{optional_inline}}</dt> + <dd>Un {{jsxref("string")}} contenant le nouveau titre du signet, ou le nouveau nom du dossier si l'<code>id</code> fait référence à un dossier.</dd> + <dt><code>url</code> {{optional_inline}}</dt> + <dd>Un {{jsxref("string")}} fournissant une nouvelle URL pour le signet.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera satisfaite avec un seul objet <a href="/fr/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNode" title="An object of type bookmarks.BookmarkTreeNode represents a node in the bookmark tree, where each node is a bookmark or bookmark folder. Child nodes are ordered by an index within their respective parent folders."><code>bookmarks.BookmarkTreeNode</code></a> représentant le signet mis à jour. Si l'élément de signet correspondant au paramètre <code>id</code> ne peut pas être trouvé, la promesse est rejetée.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple renomme tous les dossiers nommés "MDN" en "Mozilla Developer Network (MDN)".</p> + +<pre class="brush: js">function onFulfilled(bookmarkItem) { + console.log(bookmarkItem.title); +} + +function onRejected(error) { + console.log(`An error: ${error}`); +} + +function updateFolders(items) { + for (item of items) { + // only folders, so skip items with a `url` + if (!item.url) { + var updating = browser.bookmarks.update(item.id, { + title: "Mozilla Developer Network (MDN)" + }); + updating.then(onFulfilled, onRejected); + } + } +} + +var searching = browser.bookmarks.search({ title: "MDN" }); +searching.then(updateFolders, onRejected);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.bookmarks.update")}}</span></p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/colorarray/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/colorarray/index.html new file mode 100644 index 0000000000..0420be9740 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/colorarray/index.html @@ -0,0 +1,75 @@ +--- +title: browserAction.ColorArray +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/ColorArray +tags: + - API + - Add-ons + - ColorArray + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - browserAction +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/ColorArray +--- +<div>{{AddonSidebar()}}</div> + +<h2 id="Type">Type</h2> + +<p>Un tableau de quatre nombres entiers entre 0-255 définie une couleur RGBA. Les quatres couleurs spécifient les canaux suivants :</p> + +<ol> + <li>Rouge</li> + <li>Vert</li> + <li>Bleu</li> + <li>Alpha (opacité).</li> +</ol> + +<p>Par exemple , le rouge opaque est <code>[255, 0, 0, 255]</code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.browserAction.ColorArray")}}</span></p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/disable/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/disable/index.html new file mode 100644 index 0000000000..2bb60d19e9 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/disable/index.html @@ -0,0 +1,95 @@ +--- +title: browserAction.disable() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/disable +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - browserAction + - disable +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/disable +--- +<div>{{AddonSidebar()}}</div> + +<p>Désactive l'action du navigateur pour un onglet, ce qui signifie qu'il ne peut pas être cliqué lorsque cet onglet est actif.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.browserAction.disable( + tabId // optional integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'identifiant (ID) de l'onglet pour lequel vous souhaitez désactiver l'action du navigateur.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.disable")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Désactive l'action du navigateur lorsque vous cliquez et réactivez-le chaque fois qu'un nouveau onglet est ouvert :</p> + +<pre class="brush: js">browser.tabs.onCreated.addListener(() => { + browser.browserAction.enable(); +}); + +browser.browserAction.onClicked.addListener(() => { + browser.browserAction.disable(); +}); +</pre> + +<p>Désactivez l'action du navigateur uniquement pour l'onglet actif :</p> + +<pre class="brush: js">browser.browserAction.onClicked.addListener((tab) => { + browser.browserAction.disable(tab.id); +});</pre> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/enable/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/enable/index.html new file mode 100644 index 0000000000..2d603e989c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/enable/index.html @@ -0,0 +1,91 @@ +--- +title: browserAction.enable() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/enable +tags: + - API + - Add-ons + - Enable + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - browserAction +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/enable +--- +<div>{{AddonSidebar()}}</div> + +<p>Active l'action du navigateur pour un onglet. Par défaut, les actions du navigateur sont activées pour tous les onglets.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.browserAction.enable( + tabId // optional integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'identifiant (ID) de l'onglet pour lequel vous souhaitez activer l'action du navigateur.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.browserAction.enable")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<p> Désactivez l'option du navigateur lorsque vous cliquez et réactivez-le chaque fois qu'un nouveau onglet est ouvert :</p> + +<pre class="brush: js">browser.tabs.onCreated.addListener(() => { + browser.browserAction.enable(); +}); + +browser.browserAction.onClicked.addListener(() => { + browser.browserAction.disable(); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/getbadgebackgroundcolor/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/getbadgebackgroundcolor/index.html new file mode 100644 index 0000000000..a56d080c7c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/getbadgebackgroundcolor/index.html @@ -0,0 +1,112 @@ +--- +title: browserAction.getBadgeBackgroundColor() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/getBadgeBackgroundColor +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - browserAction + - getBadgeBackgroundColor +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/getBadgeBackgroundColor +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient la couleur d'arrière plan du badge de l'action du navigateur.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.browserAction.getBadgeBackgroundColor ( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p><code>details</code></p> + +<dl> + <dd><code>object</code>. + + <dl class="reference-values"> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Specifie l'onglet pour obtenir la couleur d'arrière-plan du badge.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Spécifie la fenêtre à partir de laquelle obtenir la couleur de fond du badge.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous les deux fournis, la fonction échoue..</li> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous les deux omis, la couleur de fond du badge global est retournée.</li> +</ul> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec la couleur récupérée en tant que {{WebExtAPIRef('browserAction.ColorArray')}}.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.getBadgeBackgroundColor",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez la couleur de fond du badge :</p> + +<pre class="brush: js">function onGot(color) { + console.log(color); +} + +function onFailure(error) { + console.log(error); +} + +browser.browserAction.getBadgeBackgroundColor({}).then(onGot, onFailure);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/getbadgetext/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/getbadgetext/index.html new file mode 100644 index 0000000000..ef015e0537 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/getbadgetext/index.html @@ -0,0 +1,108 @@ +--- +title: browserAction.getBadgeText() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/getBadgeText +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - browserAction + - getBadgeText +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/getBadgeText +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient le texte du badge de l'action du navigateur.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingText = browser.browserAction.getBadgeText ( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Spécifie l'onglet pour obtenir le texte du badge.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Spécifie la fenêtre à partir de laquelle obtenir le texte du badge.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si windowId et tabId sont tous les deux fournis, la fonction échoue.</li> + <li>Si windowId et tabId sont tous les deux omis, le texte global du badge est renvoyé.</li> +</ul> + +<h3 id="Valeur_de_retour">Valeur de retour</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec une chaîne contenant le texte du badge.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.getBadgeText",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez le texte du badge : </p> + +<pre class="brush: js">function gotBadgeText(text) { + console.log(text); +} + +var gettingBadgeText = browser.browserAction.getBadgeText({}); +gettingBadgeText.then(gotBadgeText);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/getbadgetextcolor/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/getbadgetextcolor/index.html new file mode 100644 index 0000000000..51f6c2a162 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/getbadgetextcolor/index.html @@ -0,0 +1,102 @@ +--- +title: browserAction.getBadgeTextColor() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/getBadgeTextColor +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/getBadgeTextColor +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient la couleur du texte du badge de l'action du navigateur.</p> + +<p>A partir de Firefox 63, à moins que la couleur du texte du badge ne soit explicitement définie à l'aide de {{WebExtAPIRef("browserAction.setBadgeTextColor()")}}, la couleur du texte du badge sera automatiquement définie en noir ou blanc afin d'optimiser le contraste avec la couleur de fond du badge spécifié. Par exemple, si vous définissez la couleur de fond du badge sur blanc, la couleur par défaut du texte du badge sera définie sur noir, et vice versa.</p> + +<p>Les autres navigateurs utilisent toujours une couleur de texte blanche.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.browserAction.getBadgeTextColor( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. + <dl class="reference-values"> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Spécifie l'onglet pour obtenir la couleur du texte du badge.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Spécifie la fenêtre à partir de laquelle obtenir la couleur du texte du badge.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous deux fournis, la fonction échoue.</li> + <li>SI <code>windowId</code> et <code>tabId</code> sont tous deux omis, la couleur globale du texte du badge est retournée.</li> +</ul> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> qui sera remplie avec la couleur récupérée comme un {{WebExtAPIRef('browserAction.ColorArray')}}.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.getBadgeTextColor",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrer la couleur du texte du badge :</p> + +<pre class="brush: js">function onGot(color) { + console.log(color); +} + +function onFailure(error) { + console.log(error); +} + +browser.browserAction.getBadgeTextColor({}).then(onGot, onFailure);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/getpopup/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/getpopup/index.html new file mode 100644 index 0000000000..60805e0ed3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/getpopup/index.html @@ -0,0 +1,108 @@ +--- +title: browserAction.getPopup() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/getPopup +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - browserAction + - getPopup +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/getPopup +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient le document HTML défini comme la popup pour cette action du navigateur.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingPopup = browser.browserAction.getPopup( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'onglet dont le menu déroulant reçoit un entier.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Les fenêtres dont le popup à obtenir.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous les deux fournis, la fonction échoue.</li> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous deux omis, la fenêtre contextuelle globale est retournée.</li> +</ul> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec une chaine cntenant l'URL du document contextuel. Ce sera une URL entièrement qualifiée, telle que <code>moz-extension://d1d8a2eb-fe60-f646-af30-a866c5b39942/popups/popup2.html</code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.getPopup",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenez l'URL du Popup:</p> + +<pre class="brush: js">function gotPopup(popupURL) { + console.log(popupURL) +} + +var gettingPopup = browser.browserAction.getPopup({}); +gettingPopup.then(gotPopup); </pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/gettitle/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/gettitle/index.html new file mode 100644 index 0000000000..61362efb6c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/gettitle/index.html @@ -0,0 +1,116 @@ +--- +title: browserAction.getTitle() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/getTitle +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - browserAction + - getTitle +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/getTitle +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient le titre de l'action du navigateur.</p> + +<p>Tout comme vous pouvez définir le titre par onglet en utilisant {{WebExtAPIRef("browserAction.setTitle()")}}, vous pouvez donc récupérer un titre spécifique à un onglet en passant l'ID de l'onglet dans cette fonction.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingTitle = browser.browserAction.getTitle( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Spécifiez l'onglet pour obtenir le titre.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Spécifiez la fenêtre à partir de laquelle vous souhaitez obtenir le titre.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous deux fournis, la fonction échoue et la promesse qu'elle renvoie est rejetée.</li> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous les deux omis, le titre global est renvoyé.</li> +</ul> + +<h3 id="Return_value">Return value</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec une chaîne contenant le titre de l'action du navigateur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.getTitle",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code change le titre entre "ceci" et "cela" chaque fois que l'utilisateur clique sur l'action du navigateur :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">toggleTitle</span><span class="punctuation token">(</span>title<span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">if</span> <span class="punctuation token">(</span>title <span class="operator token">==</span> <span class="string token">"this"</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + browser<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span><span class="function token">setTitle</span><span class="punctuation token">(</span><span class="punctuation token">{</span>title<span class="punctuation token">:</span> <span class="string token">"that"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span> + browser<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span><span class="function token">setTitle</span><span class="punctuation token">(</span><span class="punctuation token">{</span>title<span class="punctuation token">:</span> <span class="string token">"this"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="operator token">=</span><span class="operator token">></span> <span class="punctuation token">{</span> + <span class="keyword token">var</span> gettingTitle <span class="operator token">=</span> browser<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span><span class="function token">getTitle</span><span class="punctuation token">(</span><span class="punctuation token">{</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + gettingTitle<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>toggleTitle<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/imagedatatype/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/imagedatatype/index.html new file mode 100644 index 0000000000..826dca0ce1 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/imagedatatype/index.html @@ -0,0 +1,68 @@ +--- +title: browserAction.ImageDataType +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/ImageDataType +tags: + - API + - Add-ons + - Extensions + - ImageDataType + - Non-standard + - Reference + - Type + - WebExtensions + - browserAction +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/ImageDataType +--- +<div>{{AddonSidebar()}}</div> + +<p>Données en pixels pour une image. Doit être un objet <code><a href="/fr/docs/Web/API/ImageData">ImageData</a></code> (par exemple, un élément {{htmlelement("canvas")}}).</p> + +<h2 id="Type">Type</h2> + +<p>Un objet <code><a href="/fr/docs/Web/API/ImageData">ImageData</a></code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.browserAction.ImageDataType")}}</span></p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/index.html new file mode 100644 index 0000000000..da7b551bba --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/index.html @@ -0,0 +1,133 @@ +--- +title: browserAction +slug: Mozilla/Add-ons/WebExtensions/API/browserAction +tags: + - API + - Add-ons + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions + - browserAction +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction +--- +<div>{{AddonSidebar}}</div> + +<p>Ajoute un bouton à la barre d'outils du navigateur.</p> + +<p>Une <a href="/fr/Add-ons/WebExtensions/Browser_action">action du navigateur</a> est un bouton dans la barre d'outils du navigateur.</p> + +<p>Vous pouvez associer une fenêtre contextuelle au bouton. La fenêtre contextuelle est spécifée en utilisant HTML, CSS et JavaScript, tout comme une page Web normale. JavaScript en cours d'exécution dans le popup accède à toutes les mêmes API WebExtension que vos scripts de fond, mais son contexte global est le popup, et non la page courrante affichée dans le navigateur. Pour effectuer les pages Web, vous devez communiquer avec eux par des <a href="/fr/Add-ons/WebExtensions/Modify_a_web_page#Messaging">messages</a>.</p> + +<p>Si vous spécifiez une fenêtre contextuelle, elle sera affichée — et le contenu sera chargé — quand l'utilisateur clique sur l'icône. Si vous ne spécifiez pas de fenêtre contextuelle, alors lorsque l'utilisateur clique sur l'icône, un événement est envoyé à votre extension.</p> + +<p>Vous pouvez définir la plupart des propriétés d'une action de navigateur en utilisant la clé <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> dans le manifest.json.</p> + +<p>Quand l'API <code>browserAction</code>, vous pouvez :</p> + +<ul> + <li>Utiliser {{WebExtAPIRef("browserAction.onClicked")}} pour écouter les clics sur l'icône.</li> + <li>Obtenir et définir les propriétés de l'icône — icône, titre, popup, etc. Vous pouvez les définir globalement dans tous les onglets ou pour un onglet spécifique en passant l'ID de l'onglet comme un argument supplémentaire.</li> +</ul> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("browserAction.ColorArray")}}</dt> + <dd>Un tableau de quatre nombres entiers entre 0-255 définie une couleur RGBA.</dd> + <dt>{{WebExtAPIRef("browserAction.ImageDataType")}}</dt> + <dd>Données en pixels pour une image. Doit être un objet <code><a href="/fr/docs/Web/API/ImageData">ImageData</a></code> (par exemple, un élément {{htmlelement("canvas")}} ).</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("browserAction.setTitle()")}}</dt> + <dd>Définit le titre de l'action du navigateur. Cela sera affiché dans une info-bulle.</dd> + <dt>{{WebExtAPIRef("browserAction.getTitle()")}}</dt> + <dd>Obtient le titre de l'action du navigateur.</dd> + <dt>{{WebExtAPIRef("browserAction.setIcon()")}}</dt> + <dd>Définit l'icône de l'action du navigateur.</dd> + <dt>{{WebExtAPIRef("browserAction.setPopup()")}}</dt> + <dd>Définit le document HTML à ouvrir en popup lorsque l'utilisateur clique sur l'icône de l'action du navigateur.</dd> + <dt>{{WebExtAPIRef("browserAction.getPopup()")}}</dt> + <dd>Permet de définir le document HTML en tant que popup de l'action du navigateur.</dd> + <dt>{{WebExtAPIRef("browserAction.openPopup()")}}</dt> + <dd>Ouvrez le popup de l'action du navigateur.</dd> + <dt>{{WebExtAPIRef("browserAction.setBadgeText()")}}</dt> + <dd>Définit le texte du badge de l'action du navigateur. Le badge est affiché en haut de l'icône.</dd> + <dt>{{WebExtAPIRef("browserAction.getBadgeText()")}}</dt> + <dd>Obtient le texte du badge de l'action du navigateur.</dd> + <dt>{{WebExtAPIRef("browserAction.setBadgeBackgroundColor()")}}</dt> + <dd>Définit la couleur de fond du badge.</dd> + <dt>{{WebExtAPIRef("browserAction.getBadgeBackgroundColor()")}}</dt> + <dd>Obtient la couleur de fond du badge.</dd> + <dt>{{WebExtAPIRef("browserAction.setBadgeTextColor()")}}</dt> + <dd>Définit la couleur du texte du badge.</dd> + <dt>{{WebExtAPIRef("browserAction.getBadgeTextColor()")}}</dt> + <dd>Obtient la couleur du texte du badge.</dd> + <dt>{{WebExtAPIRef("browserAction.enable()")}}</dt> + <dd>Active l'action du navigateur pour un onglet. Par défaut, les actions du navigateur sont activées pour tous les onglets.</dd> + <dt>{{WebExtAPIRef("browserAction.disable()")}}</dt> + <dd>Désactive l'action du navigateur pour un onglet, ce qui signifie qu'il ne peut pas être cliqué lorsque cet onglet est actif.</dd> + <dt>{{WebExtAPIRef("browserAction.isEnabled()")}}</dt> + <dd>Vérifie si l'action du navigateur est activée ou non.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("browserAction.onClicked")}}</dt> + <dd>Action quand l'icone d'action du navigateur est cliqué. Cet événement ne déclenchera pas si l'action du navigateur comporte une fenêtre contextuelle.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.browserAction")}}</p> + +<div class="hidden note"> +<p>La section "incompatibilités Chrome" est inclused dans <a href="/fr/Add-ons/WebExtensions/Chrome_incompatibilities"> https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a> à l'aide de la macro <a href="/fr/docs/Template:WebExtChromeCompat">WebExtChromeCompat</a>.</p> + +<p>Si vous devez mettre à jour ce contenu, editez <a href="/fr/Add-ons/WebExtensions/Chrome_incompatibilities">https://developer.mozilla.org/fr/Add-ons/WebExtensions/Chrome_incompatibilities</a>, puis déplacez-actualisez cette page pour voir les modifications.</p> +</div> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/isenabled/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/isenabled/index.html new file mode 100644 index 0000000000..a6f3d2f2f1 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/isenabled/index.html @@ -0,0 +1,86 @@ +--- +title: browserAction.isEnabled() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/isEnabled +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - browserAction + - isEnabled +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/isEnabled +--- +<div>{{AddonSidebar()}}</div> + +<p>Renvoie <code>true</code> si l'action du navigateur est activée.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">let gettingIsEnabled = browser.browserAction.isEnabled( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Un objet contenant éventuellement le <code>tabId</code> ou <code>windowId</code> à vérifier.</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. ID d'un onglet à vérifier</dd> + <dt><code>windowId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. ID d'une fenêtre à vérifier.</dd> + </dl> + </dd> +</dl> + +<dl> + <dd> + <dl class="reference-values"> + </dl> + </dd> +</dl> + +<ul> + <li>Si windowId et tabId sont tous les deux fournis, la fonction échoue.</li> + <li>Si windowId et tabId sont tous les deux omis, l'état global activé/désactivé est renvoyé.</li> +</ul> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec <code>true</code> si l'action du navigateur de l'extension est activée, et <code>false</code> dans le cas contraire.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.isEnabled",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Vérifiez l'état global :</p> + +<pre class="brush: js">browser.browserAction.isEnabled({}).then(result => { + console.log(result); +});</pre> + +<p>Vérifiez l'état de l'onglet actuellement actif :</p> + +<pre class="brush: js">async function enabledInActiveTab() { + let tabs = await browser.tabs.query({ + currentWindow:true, + active: true + }); + let enabled = await browser.browserAction.isEnabled({ + tabId: tabs[0].id + }); + console.log(enabled); +}</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/onclicked/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/onclicked/index.html new file mode 100644 index 0000000000..e98bd575f5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/onclicked/index.html @@ -0,0 +1,112 @@ +--- +title: browserAction.onClicked +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/onClicked +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - browserAction + - onClicked +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/onClicked +--- +<div>{{AddonSidebar()}}</div> + +<p>Action quand l'icone d'action du navigateur est cliqué. Cet événement ne déclenchera pas si l'action du navigateur comporte une fenêtre contextuelle.</p> + +<p>Pour définir une action de clic droit, utilisez l'API <a href="/fr/Add-ons/WebExtensions/API/contextMenus"><code>contextMenus</code></a> avec le <a href="/fr/Add-ons/WebExtensions/API/contextMenus/ContextType" title="The different contexts a menu can appear in.">type de contexte</a> "browser_action".</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.browserAction.onClicked.addListener(<code>listener</code>) +browser.browserAction.onClicked.removeListener(listener) +browser.browserAction.onClicked.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoutez un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arretez d'écouter cet événement. L'argument de l'auditeur est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifier si l'autditeur est enregistré pour cet événement. Renvoie <code>true</code> si elle est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="addListener_syntaxe">addListener syntaxe</h2> + +<h3 id="Paramètre">Paramètre</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction passera par l'argument suivant :</p> + + <dl class="reference-values"> + <dt><code>tab</code></dt> + <dd>{{WebExtAPIRef('tabs.Tab')}}. L'onglet qui était actif lorsque l'icône a été cliquée .</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.onClicked")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Lorsque l'utilisateur clique sur l'icône, désactivez-la pour l'onglet actif et enregistrez l'URL de l'onglet</p> + +<pre class="brush: js">browser.browserAction.onClicked.addListener((tab) => { + // disable the active tab + browser.browserAction.disable(tab.id); + // requires the "tabs" or "activeTab" permission + console.log(tab.url); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/openpopup/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/openpopup/index.html new file mode 100644 index 0000000000..4db9186ce5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/openpopup/index.html @@ -0,0 +1,58 @@ +--- +title: browserAction.openPopup() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/openPopup +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - WebExtensions + - browserAction + - openPopup +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/openPopup +--- +<div>{{AddonSidebar()}}</div> + +<div>Ouvrez le popup de l'action du navigateur.</div> + +<div></div> + +<div> +<p>Vous pouvez uniquement appeler cette fonction à partir du gestionnaire pour une <a href="/fr/Add-ons/WebExtensions/User_actions">action utilisateur</a>.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.browserAction.openPopup() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> cela est résolu sans arguments.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.openPopup", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ouvrez la fenêtre contextuelle lorsque l'utilisateur sélectionne un élément de menu contextuel :</p> + +<pre class="brush: js">browser.menus.create({ + id: "open-popup", + title: "open popup", + contexts: ["all"] +}); + +browser.menus.onClicked.addListener(() => { + browser.browserAction.openPopup(); +});</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/setbadgebackgroundcolor/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/setbadgebackgroundcolor/index.html new file mode 100644 index 0000000000..e5494f6b6e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/setbadgebackgroundcolor/index.html @@ -0,0 +1,128 @@ +--- +title: browserAction.setBadgeBackgroundColor() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/setBadgeBackgroundColor +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - browserAction + - setBadgeBackgroundColor +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/setBadgeBackgroundColor +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit la couleur de fond du badge. Les onglets sans couleur de fond de badge spécifique hériteront de la couleur de fond de badge globale, qui par défaut est <code>[217, 0, 0, 255]</code> dans Firefox.</p> + +<p>A partir de Firefox 63, à moins que la couleur du texte du badge ne soit explicitement définie à l'aide de {{WebExtAPIRef("browserAction.setBadgeTextColor()")}}, la couleur du texte du badge sera automatiquement définie en noir ou blanc afin d'optimiser le contraste avec la couleur de fond du badge spécifié. Par exemple, si vous définissez la couleur de fond du badge sur blanc, la couleur par défaut du texte du badge sera définie sur noir, et vice versa.</p> + +<p>D'autres navigateurs utilisent toujours une couleur de texte blanche, il est donc préférable d'utiliser un fond foncé pour assurer la lisibilité du texte</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.browserAction.setBadgeBackgroundColor( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. + <dl class="reference-values"> + <dt><code>color</code></dt> + <dd>La couleur, spécifiée comme l'un des suivants :</dd> + <dd> + <ul> + <li>une chaîne : toute valeur CSS <a href="/en-US/docs/Web/CSS/color_value"><color></a> , par exemple <code>"red"</code>, <code>"#FF0000"</code>, ou <code>"rgb(255,0,0)"</code>. Si la chaîne n'est pas une couleur valide, la promesse renvoyée sera rejetée et la couleur d'arrière-plan ne sera pas modifiée.</li> + <li>Un objet <code>{{WebExtAPIRef('browserAction.ColorArray')}}</code>.</li> + <li><code>null</code>. Si un <code>tabId</code> est spécifié, il supprime la couleur d'arrière-plan du badge spécifique à l'onglet pour que l'onglet hérite de la couleur d'arrière-plan du badge global. Sinon, la couleur d'arrière-plan du badge global revient à la valeur par défaut.</li> + </ul> + </dd> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définit la couleur d'arrière-plan du badge uniquement pour l'onglet donné. La couleur est réinitialisée lorsque l'utilisateur navigue sur cet onglet vers une nouvelle page.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définit la couleur d'arrière-plan du badge uniquement pour l'onglet donné.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous deux fournis, la fonction échoue et la couleur n'est pas définie.</li> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous deux omis, la couleur d'arrière-plan du badge global est définie à la place.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.setBadgeBackgroundColor",2)}}</p> + +<p>La couleur par défaut dans Firefox est : <code>[217, 0, 0, 255]</code>.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Une couleur d'arrière plan qui commence en rouge et devient verte lorsque l'action du navigateur est cliquée :</p> + +<pre class="brush: js">browser.browserAction.setBadgeText({text: "1234"}); +browser.browserAction.setBadgeBackgroundColor({color: "red"}); + +browser.browserAction.onClicked.addListener(()=> { + browser.browserAction.setBadgeBackgroundColor({color: "green"}); +});</pre> + +<p>Réglez la couleur d'arrière-plan du badge uniquement pour l'onget actif :</p> + +<pre class="brush: js">browser.browserAction.setBadgeText({text: "1234"}); +browser.browserAction.setBadgeBackgroundColor({color: "red"}); + +browser.browserAction.onClicked.addListener((tab)=> { + browser.browserAction.setBadgeBackgroundColor({ + color: "green", + tabId: tab.id + }); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/setbadgetext/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/setbadgetext/index.html new file mode 100644 index 0000000000..25ae031bb4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/setbadgetext/index.html @@ -0,0 +1,116 @@ +--- +title: browserAction.setBadgeText() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/setBadgeText +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - browserAction + - setBadgeText +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/setBadgeText +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit le texte du badge pour l'action du navigateur. Le badge est affiché en haut de l'icône.</p> + +<p>Les onglets sans texte de badge spécifique hériteront du texte global du badge, qui est <code>""</code> par défaut.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.browserAction.setBadgeText( + details // object +) +</pre> + +<p>Cette API est également disponible sous <code>chrome.browserAction.setBadgeText()</code>.</p> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. + <dl class="reference-values"> + <dt><code>text</code></dt> + <dd> + <p><code>string</code> or <code>null</code>. N'importe quel nombre de caractères peut être passé, mais seulement quatre environ peuvent tenir dans l'espace.</p> + + <p>Utilisez une chaîne vide - <code>""</code> - si vous ne voulez pas de badge.</p> + + <p>Si un <code>tabId</code> est spécifié, <code>null</code> supprime le texte du badge spécifique à l'onglet afin que l'onglet hérite du texte global du badge. Dans le cas contraire, le texte du badge global devient <code>""</code>.</p> + + <p>Si un <code>windowId</code> est spécifié, <code>null</code> supprime le texte du badge spécifique à la fenêtre afin que l'onglet hérite du texte global du badge. Dans le cas contraire, le texte du badge global devient <code>""</code>.</p> + </dd> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définir le texte du badge uniquement pour l'onglet donné. Le texte est réinitialisé lorsque l'utilisateur navigue dans cet onglet vers une nouvelle page.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définir le texte du badge pour la fenêtre donnée.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>si <code>windowId</code> et <code>tabId</code> sont tous les deux fournis, la fonction échoue.</li> + <li>si <code>windowId</code> et <code>tabId</code> sont tous les deux omis, le badge global est défini.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.setBadgeText",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ajouter un badge indiquant combien de fois l'utilisateur a cliqué sur le bouton : </p> + +<pre class="brush: js">var clicks = 0; + +function increment() { + browser.browserAction.setBadgeText({text: (++clicks).toString()}); +} + +browser.browserAction.onClicked.addListener(increment);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/setbadgetextcolor/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/setbadgetextcolor/index.html new file mode 100644 index 0000000000..75b5d426ab --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/setbadgetextcolor/index.html @@ -0,0 +1,119 @@ +--- +title: browserAction.setBadgeTextColor() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/setBadgeTextColor +tags: + - API + - Add-ons + - Extensions + - Méthode + - Reference + - WebExtensions + - browserAction + - setBadgeTextColor +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/setBadgeTextColor +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit la couleur du texte du badge de l'action du navigateur. Les onglets sans couleur de texte de badge spécifique hériteront de la couleur globale du texte de badge.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.browserAction.setBadgeTextColor( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. + <dl class="reference-values"> + <dt><code>color</code></dt> + <dd>La couleur, spécifiée comme l'une des couleurs :</dd> + <dd> + <ul> + <li> une chaîne : toute valeur CSS <a href="/fr/docs/Web/CSS/color_value"><color></a>, par exemple <code>"red"</code>, <code>"#FF0000"</code>, ou <code>"rgb(255,0,0)"</code>. Si la chaîne n'est pas une couleur valide, la promesse retournée sera rejetée et la couleur du texte ne sera pas modifiée.</li> + <li>Un objet <code>{{WebExtAPIRef('browserAction.ColorArray')}}</code>.</li> + <li><code>null</code>. Si un <code>tabId</code> est spécifié, il supprime la couleur du texte du badge spécifique à l'onglet afin que l'onglet hérite de la couleur globale du texte du badge. Dans le cas contraire, la couleur globale du texte du badge est ramenée à la valeur par défaut.</li> + </ul> + </dd> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définit la couleur du texte du badge uniquement pour l'onglet donné. La couleur est réinitialisée lorsque l'utilisateur navigue dans cet onglet vers une nouvelle page.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définit la couleur du texte du badge uniquement pour l'onglet donné.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous deux fournis, la fonction échoue et la couleur n'est pas définie.</li> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous deux omis, la couleur globale du texte du badge est définie à la place.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.setBadgeTextColor",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Une couleur de texte de badge qui commence par le rouge et passe au vert lorsque l'on clique sur l'action du navigateur :</p> + +<pre class="brush: js">browser.browserAction.setBadgeText({text: "1234"}); +browser.browserAction.setBadgeTextColor({color: "red"}); + +browser.browserAction.onClicked.addListener(()=> { + browser.browserAction.setBadgeTextColor({color: "green"}); +});</pre> + +<p>Définissez la couleur du texte du badge uniquement pour l'onglet actif :</p> + +<pre class="brush: js">browser.browserAction.setBadgeText({text: "1234"}); +browser.browserAction.setBadgeTextColor({color: "red"}); + +browser.browserAction.onClicked.addListener((tab)=> { + browser.browserAction.setBadgeTextColor({ + color: "green", + tabId: tab.id + }); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/seticon/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/seticon/index.html new file mode 100644 index 0000000000..8200bf3f65 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/seticon/index.html @@ -0,0 +1,194 @@ +--- +title: browserAction.setIcon() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/setIcon +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - browserAction + - setIcon +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/setIcon +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit l'icône pour l'action du navigateur.</p> + +<p>Vous pouvez spécifier une seule icône comme chemin d'accès à un fichier ou un objet {{WebExtAPIRef('browserAction.ImageDataType')}} .</p> + +<p>Vous pouvez spécifier plusieurs icônes dans différentes tailles en fournissant un dictionnaire contenant plusieurs chemins ou des objets <code>ImageData</code>. Cela signifie que l'icône ne doit pas être mise à l'échelle pour un périphérique avec une densité de pixels différente.</p> + +<p>Les onglets sans icône spécifique hériteront de l'icône globale, qui par défaut est <a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action"><code>default_icon</code></a> specifié dans le manifest.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var settingIcon = browser.browserAction.setIcon( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Un objet contenant des propriétés <code>imageData</code> ou <code>path</code>, et éventuellement une propriété <code>tabId</code> .</dd> + <dd> + <dl class="reference-values"> + <dt><code>imageData</code>{{optional_inline}}</dt> + <dd> + <p><code>{{WebExtAPIRef('browserAction.ImageDataType')}}</code> ou <code><code>object</code></code>. Il s'agit soit d'un seul objet <code>ImageData</code> ou un dictionnaire d'objet.</p> + + <p>Utilisez un dictionnaire d'objet pour spécifier plusieurs objets <code>ImageData</code> dans différentes tailles, de sorte que l'icône ne doit pas être mise à l'échelle pour un périphérique avec une densité de pixel différentes. Si <code>imageData</code> est un dictionnaire, la valeur de chaque propriété est un objet<code>ImageData</code>, et son nom est sa taille, comme ceci :</p> + + <pre class="brush: json line-numbers language-json"><code class="language-json"><span class="punctuation token">{</span> + <span class="key token">16:</span> <span class="string token">image16</span><span class="punctuation token">,</span> + <span class="key token">32:</span> image32 +<span class="punctuation token">}</span></code></pre> + + <p>Le navigateur choisira l'image à utiliser en fonction de la densité de pixels de l'écran. Voir <a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action#Choosing_icon_sizes">Choix de la tailles d'icônes</a> pour plus d'informations à ce sujet.</p> + </dd> + <dt><code>path</code>{{optional_inline}}</dt> + <dd> + <p><code><code>string</code></code> or <code><code>object</code></code>. Il s'agit du chemin relatif d'un fichier d'icône ou d'un objet de dictionnaire. </p> + + <p>Utilisez un dictionnaire d'objet pour spécifier plusieurs fichiers d'icônes dans différentes tailles, de sorte que l'icône ne doit pas être mise à l'échelle pour un périphérique avec une densité de pixels différentes. Si <code>path</code> est un dictionnaire, la valeur de chaque propriété est un chemin relatif , et son nom est sa taille, comme ceci :</p> + + <pre class="brush: json line-numbers language-json"><code class="language-json"><span class="punctuation token">{</span> + <span class="key token">16:</span> "path/to/image16.jpg<span class="punctuation token">",</span> + <span class="key token">32:</span> "path/to/image32.jpg<span class="punctuation token">"</span> +<span class="punctuation token">}</span></code></pre> + + <p>Le navigateur choisira l'image à utiliser en fonction de la densité de pixels de l'écran. Voir <a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action#Choosing_icon_sizes">Choix de la tailles d'icônes</a> pour plus d'informations à ce sujet.</p> + </dd> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définit l'icône uniquement pour l'onglet donné. L'icône est réinitialisée lorsque l'utilisateur navigue dans cet onglet vers une nouvelle page.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définit l'icône de la fenêtre donnée.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>si <code>windowId</code> et <code>tabId</code> sont tous deux fournis, la fonction échoue et l'icône n'est pas définie.</li> + <li>si <code>windowId</code> et <code>tabId</code> sont tous les deux omis, l'icône globale est définie.</li> +</ul> + +<p>Si chaque <code>imageData</code> et <code>path</code> est un objet <code>undefined</code>, <code>null</code> ou vide :</p> + +<ul> + <li>si <code>tabId</code> est spécifié, et que l'onglet a un jeu d'icônes spécifique à l'onglet, alors l'onglet héritera de l'icône de la fenêtre à laquelle il appartient.</li> + <li>si <code>windowId</code> est spécifié et que la fenêtre a un jeu d'icônes spécifiques à la fenêtre, alors la fenêtre héritera de l'icône globale.</li> + <li>Sinon, l'icône globale sera réinitialisée à l'icône du manifest.</li> +</ul> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments une fois que l'icône a été définie.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.setIcon",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Le code ci-dessous utilise une action du navigateur pour basculer un auditeur pour {{WebExtAPIRef("webRequest.onHeadersReceived")}}, et utilise <code>setIcon()</code> pour indiquer si l'écoute est activée ou désactivée :</p> + +<pre class="brush: js">function logResponseHeaders(requestDetails) { + console.log(requestDetails); +} + +function startListening() { + browser.webRequest.onHeadersReceived.addListener( + logResponseHeaders, + {urls: ["<all_urls>"]}, + ["responseHeaders"] + ); + browser.browserAction.setIcon({path: "icons/listening-on.svg"}); +} + +function stopListening() { + browser.webRequest.onHeadersReceived.removeListener(logResponseHeaders); + browser.browserAction.setIcon({path: "icons/listening-off.svg"}); +} + +function toggleListener() { + if (browser.webRequest.onHeadersReceived.hasListener(logResponseHeaders)) { + stopListening(); + } else { + startListening(); + } +} + +browser.browserAction.onClicked.addListener(toggleListener);</pre> + +<p>Le code ci-dessous définit l'icône à l'aide d'un objet<code><a href="/fr/docs/Web/API/ImageData">ImageData</a></code> :</p> + +<pre class="brush: js">function getImageData() { + var canvas = document.createElement("canvas"); + var ctx = canvas.getContext("2d"); + + ctx.fillStyle = "green"; + ctx.fillRect(10, 10, 100, 100); + + return ctx.getImageData(50, 50, 100, 100); +} + +browser.browserAction.onClicked.addListener(() => { + browser.browserAction.setIcon({imageData: getImageData()}); +}); +</pre> + +<p>L'extrait suivant met à jour l'icône lorsque l'utilisateur clique, mais uniquement pour l'onglet actif :</p> + +<pre class="brush: js">browser.browserAction.onClicked.addListener((tab) => { + browser.browserAction.setIcon({ + tabId: tab.id, path: "icons/updated-48.png" + }); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/setpopup/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/setpopup/index.html new file mode 100644 index 0000000000..eed41b71f6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/setpopup/index.html @@ -0,0 +1,146 @@ +--- +title: browserAction.setPopup() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/setPopup +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - browserAction + - setPopup +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/setPopup +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit le document HTML qui sera ouvert en tant que popup lorsque l'utilisateur clique sur l'icône de l'action du navigateur. Les onglets sans popup spécifique hériteront de la popup globale, qui par défaut est la <a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action"><code>default_popup</code></a> spécifiée dans le manifest.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.browserAction.setPopup( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définit la fenêtre contextuelle uniquement pour un onglet spécifique. La fenêtre contextuelle est réinitialisée lorsque l'utilisateur navigue dans cet onglet vers une nouvelle page.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définit le popup uniquement pour la fenêtre spécifiée.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>popup</code></dt> + <dd> + <p><code>string</code> ou <code>null</code>. Le fichier HTML à afficher dans un popup, spécifié comme URL.</p> + + <p>Ceci peut pointer vers un fichier empaqueté dans l'extension (par exemple, créé à l'aide de {{WebExtAPIRef("extension.getURL")}}), ou un document distant (par exemple <code>https://example.org/</code>).</p> + + <p>Si une chaîne vide (<code>""</code>) est passée ici, le popup est désactivé, et l'extension recevra les événements {{WebExtAPIRef("browserAction.onClicked")}}.</p> + + <p>Si le <code>popup</code> est <code>null</code>:</p> + + <p>Si <code>tabId</code> est spécifié, supprime la fenêtre popup spécifique à l'onglet afin que l'onglet hérite de la fenêtre popup globale..</p> + + <p>Si <code>windowId</code> est spécifié, supprime le popup spécifique à la fenêtre afin que la fenêtre hérite du popup global.</p> + + <p>Sinon, la fenêtre contextuelle globale revient à la valeur par défaut.</p> + </dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous les deux fournis, la fonction échoue et le popup n'est pas défini.</li> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous les deux omis, la fenêtre contextuelle globale est définie.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserAction.setPopup",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code ajoute une paire d'éléments de menu contextuel que vous pouvez utiliser pour basculer entre deux fenêtres contextuelles. Notez que vous aurez besoin de la <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "contextMenus" définie dans le manifest de l'extension pour créer des éléments du menu contextuel.</p> + +<pre class="brush: js">function onCreated() { + if (browser.runtime.lastError) { + console.log("error creating item:" + browser.runtime.lastError); + } else { + console.log("item created successfully"); + } +} + +browser.contextMenus.create({ + id: "popup-1", + type: "radio", + title: "Popup 1", + contexts: ["all"], + checked: true +}, onCreated); + +browser.contextMenus.create({ + id: "popup-2", + type: "radio", + title: "Popup 2", + contexts: ["all"], + checked: false +}, onCreated); + +browser.contextMenus.onClicked.addListener(function(info, tab) { + if (info.menuItemId == "popup-1") { + browser.browserAction.setPopup({popup: "/popup/popup1.html"}) + } else if (info.menuItemId == "popup-2") { + browser.browserAction.setPopup({popup: "/popup/popup2.html"}) + } +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browseraction/settitle/index.html b/files/fr/mozilla/add-ons/webextensions/api/browseraction/settitle/index.html new file mode 100644 index 0000000000..21f801818f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browseraction/settitle/index.html @@ -0,0 +1,126 @@ +--- +title: browserAction.setTitle() +slug: Mozilla/Add-ons/WebExtensions/API/browserAction/setTitle +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - browserAction + - setTitle +translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/setTitle +--- +<div>{{AddonSidebar}}</div> + +<p>Définit le titre de l'action du navigateur. Le titre est affiché dans une infobulle au-dessus de l'icône de l'action du navigateur. Vous pouvez passer un <code>tabId</code> dans ou une <code>windowId</code> comme paramètre optionnel — si vous le faites, le titre est changé seulement pour l'onglet donné ou la fenêtre donnée. Les onglets ou les fenêtres sans titre spécifique hériteront du texte du titre global, qui est par défaut à l'option <a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action"><code>default_title</code></a> ou <a href="/fr/Add-ons/WebExtensions/manifest.json/name"><code>name</code></a> specifié dans le manifest.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.browserAction.setTitle( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Le nouveau titre et éventuellement l'ID de l'onglet ou de la fenêtre à cibler. + <dl class="reference-values"> + <dt><code>title</code></dt> + <dd> + <p><code>string</code> ou <code>null</code>. La chaîne de caractères que l'action du navigateur doit afficher lorsqu'il y a une souris.</p> + + <p>Si <code>title</code> est une chaîne vide, le titre utilisé sera le nom de l'extension, mais {{WebExtAPIRef("browserAction.getTitle")}} fournira toujours la chaîne vide.</p> + + <p>Si <code>title</code> est <code>null</code>:</p> + + <ul> + <li>Si <code>tabId</code> est spécifié, et que l'onglet a un jeu de titres spécifiques aux onglets, alors l'onglet héritera du titre de la fenêtre à laquelle il appartient.</li> + <li>Si <code>windowId</code> est spécifié, et que la fenêtre a un titre spécifique à la fenêtre, alors la fenêtre héritera du titre global.</li> + <li>Sinon, le titre global sera réinitialisé au titre du manifest.</li> + </ul> + </dd> + <dt><code>tabId</code>{{Optional_Inline}}</dt> + <dd> + <p><code>integer</code>. Définit le titre uniquement pour l'onglet donné.</p> + </dd> + <dt><code>windowId</code>{{Optional_Inline}}</dt> + <dd> + <p><code>integer</code>. Définit le titre de la fenêtre donnée.</p> + </dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous deux fournis, la fonction échoue et le titre n'est pas défini.</li> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous les deux omis, le titre global est défini.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.browserAction.setTitle",10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code change le titre entre "ceci" et "ça" chaque fois que l'utilisateur clique sur l'action du navigateur :</p> + +<pre class="brush: js">function toggleTitle(title) { + if (title == "this") { + browser.browserAction.setTitle({title: "that"}); + } else { + browser.browserAction.setTitle({title: "this"}); + } +} + +browser.browserAction.onClicked.addListener(() => { + var gettingTitle = browser.browserAction.getTitle({}); + gettingTitle.then(toggleTitle); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/allowpopupsforuserevents/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/allowpopupsforuserevents/index.html new file mode 100644 index 0000000000..e02853701c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/allowpopupsforuserevents/index.html @@ -0,0 +1,56 @@ +--- +title: browserSettings.allowPopupsForUserEvents +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/allowPopupsForUserEvents +tags: + - API + - Add-ons + - BrowserSetting + - Extensions + - Property + - WebExtensions + - allowPopupsForUserEvents +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/allowPopupsForUserEvents +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui peut etre utilisé pour activer ou désactiver la capacité des pages web d'ouvrir des popups en réponse aux actions de l'utilisateur.</p> + +<p>La valeur sous-jacente est un booléen.</p> + +<p>Par défaut, les navigateurs permettent aux pages Web d'ouvrir des fenêtres contextuelles en réponse à un ensemble particulier d'événements : par exemple <a href="/fr/docs/Web/Events/click">click</a>, <a href="/fr/docs/Web/Events/mouseup">mouseup</a>, <a href="/fr/docs/Web/Events/submit">submit</a>. Si <code>allowPopupsForUserEvents</code> est défini sur <code>false</code>, aucun événement utilisateur ne pourra ouvrir des fenêtres contextuelles. Si elle est définie sur <code>true</code>, l'ensemble d'événements par défaut sera autorisé à ouvrir des fenêtres contextuelles.</p> + +<p>Par exemple, supposons qu'une page web comporte un code comme celui-ci :</p> + +<pre class="brush: js">window.addEventListener("click", (e) => { + window.open("https://example.com","myPopup",'height=400,width=400'); +}); +</pre> + +<p>Par défaut, cela ouvrira une fenêtre contextuelle. Si vos extensions définient <code>allowPopupsForUserEvents</code> à <code>false</code>, cela n'ouvrira pas la fenêtre contextuelle, et l'utilisateur sera informé que le popup était bloqué.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.allowPopupsForUserEvents")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Basculer le réglage :</p> + +<pre class="brush: js">function toggleAllowPopup() { + + function toggle(current) { + console.log(`Current value: ${current.value}`); + browser.browserSettings.allowPopupsForUserEvents.set({value: !current.value}); + } + + browser.browserSettings.allowPopupsForUserEvents.get({}).then(toggle); +} + +browser.browserAction.onClicked.addListener(() => { + toggleAllowPopup(); +}); +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/cacheenabled/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/cacheenabled/index.html new file mode 100644 index 0000000000..7c1a346c8b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/cacheenabled/index.html @@ -0,0 +1,48 @@ +--- +title: browserSettings.cacheEnabled +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/cacheEnabled +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browserSettings + - cacheEnabled +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/cacheEnabled +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui peut être utilisé pour activer ou désactiver globalement le cache du navigateur.</p> + +<p>La valeur sous-jacente est un booléen.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.cacheEnabled")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenir une valeur actuelle de ce paramètre :</p> + +<pre class="brush: js">function logResult(result) { + console.log(`Current value: ${result.value}`); + console.log(`Current level of control: ${result.levelOfControl}`); +} + +browser.browserSettings.cacheEnabled.get({}). + then(logResult);</pre> + +<p>Désactivation du cache du navigateur :</p> + +<pre class="brush: js">function logResult(result) { + console.log(`Setting was modified: ${result}`); +} + +browser.browserSettings.cacheEnabled.set({value: false}). + then(logResult);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/closetabsbydoubleclick/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/closetabsbydoubleclick/index.html new file mode 100644 index 0000000000..46749ff050 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/closetabsbydoubleclick/index.html @@ -0,0 +1,27 @@ +--- +title: browserSettings.closeTabsByDoubleClick +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/closeTabsByDoubleClick +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browserSettings + - closeTabsByDoubleClick +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/closeTabsByDoubleClick +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui peut être utilisé pour activer ou désactiver la possibilité pour l'utilisateur de fermer un onglet en double-cliquant.</p> + +<p>La valeur sous-jacente est un booléen.</p> + +<p>Par défaut, closeTabsByDoubleClick est faux. Le réglage peut être modifié par l'utilisateur dans about:config.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.closeTabsByDoubleClick")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/contextmenushowevent/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/contextmenushowevent/index.html new file mode 100644 index 0000000000..326f91e65f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/contextmenushowevent/index.html @@ -0,0 +1,40 @@ +--- +title: contextMenuShowEvent +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/contextMenuShowEvent +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browserSettings + - contextMenuShowEvent +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/contextMenuShowEvent +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui détermine si le menu contextuel du navigateur est affiché sur l'événement mouseup ou sur l'événement mousedown.</p> + +<p>Sa valeur sous-jacente est une chaîne qui peut être "mouseup" ou "mousedown".</p> + +<p>La valeur par défaut est "mouseup" sur Windows, et "mousedown" sur macOS et Linux. 'affectation à Windows n'a aucun effet - le paramètre est uniquement conçu pour permettre l'ouverture du menu contextuel sur mouseup au lieu de mousedown, pas l'inverse.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.contextMenuShowEvent")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Réglez le paramètre sur "mouseup":</p> + +<pre class="brush: js">function logResult(result) { + console.log(`Setting was modified: ${result}`); +} + +browser.browserSettings.contextMenuShowEvent.set({value: "mouseup"}). + then(logResult);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/ftpprotocolenabled/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/ftpprotocolenabled/index.html new file mode 100644 index 0000000000..ac1c7db716 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/ftpprotocolenabled/index.html @@ -0,0 +1,47 @@ +--- +title: browserSettings.ftpProtocolEnabled +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/ftpProtocolEnabled +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browserSettings + - contextMenuShowEvent + - ftpProtocolEnabled +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/ftpProtocolEnabled +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui détermine si le protocole FTP est activé dans le navigateur.</p> + +<p>La valeur sous-jaccente est un booléen.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">La table de compatibilité de cette page est générée depuis des données structurées. Si vous souhaitez contribuer à cette donnée, vous devriez aller à <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> et nous envoyer une pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.ftpProtocolEnabled")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Changer le réglage:</p> + +<pre class="brush: js">function toggleAllowFtp() { + + function toggle(current) { + console.log(`Valeur actuelle: ${current.value}`); + browser.browserSettings.ftpProtocolEnabled.set({value: !current.value}); + } + + browser.browserSettings.ftpProtocolEnabled.get({}).then(toggle); +} + +browser.browserAction.onClicked.addListener(() => { + toggleAllowFtp(); +}); +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/homepageoverride/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/homepageoverride/index.html new file mode 100644 index 0000000000..dc0363042b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/homepageoverride/index.html @@ -0,0 +1,36 @@ +--- +title: browserSettings.homepageOverride +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/homepageOverride +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browserSettings + - homepageOverride +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/homepageOverride +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui peut être utilisé pour obtenir une chaîne représentant l'URL actuellement définie comme page d'accueil du navigateur.</p> + +<p>Notez qu'il s'agit d'un paramètre en lecture seule. Pour changer la page d'accueil, voir <a href="/fr/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides">chrome_settings_overrides</a>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.homepageOverride", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenez la valeur actuelle de l'URL de la page d'accueil :</p> + +<pre class="brush: js">browser.browserSettings.homepageOverride.get({}).then(result => { + console.log(result.value); +}); +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/imageanimationbehavior/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/imageanimationbehavior/index.html new file mode 100644 index 0000000000..4797de6b5e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/imageanimationbehavior/index.html @@ -0,0 +1,38 @@ +--- +title: browserSettings.imageAnimationBehavior +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/imageAnimationBehavior +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - browserSettings + - imageAnimationBehavior +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/imageAnimationBehavior +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui peut être utilisé pour modifier la façon dont le navigateur traite les images animées, telles que les GIF.</p> + +<p>La valeur sous-jacente est une chaîne qui peut prendre l'une des trois valeurs suivantes:</p> + +<ul> + <li>"normal": la valeur par défaut Jouer des images animées comme d'habitude.</li> + <li>"none": n'anime pas les images du tout.</li> + <li>"once": joue une fois l'animation.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.imageAnimationBehavior", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Désactiver les images animées :</p> + +<pre class="brush: js"> browser.browserSettings.imageAnimationBehavior.set({value: "none"});</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/index.html new file mode 100644 index 0000000000..12e941e6e6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/index.html @@ -0,0 +1,71 @@ +--- +title: browserSettings +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - WebExtensions + - browserSettings +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings +--- +<div>{{AddonSidebar}}</div> + +<div>Permet à une extension de modifier certaines paramètres globaux du navigateur. Chaque propriété de cette API est un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}}, fournissant la possibilité de modifier un paramètre particulier.</div> + +<div></div> + +<div>Parce que ce sont les paramètres globaux, il est possible d'étendre les conflits des extensions. voir la documentation de <code><a href="/fr/Add-ons/WebExtensions/API/types/BrowserSetting/set">BrowserSetting.set()</a></code> pour plus détails sur la façon dont les conflits sont traités.</div> + +<div></div> + +<div> +<p>Pour utiliser cette API, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "browserSettings".</p> +</div> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt>{{WebExtAPIRef("browserSettings.allowPopupsForUserEvents")}}</dt> + <dd>Déterminer si le code exécuté dans les pages Web peut afficher les fenêtres contextuelles en réponse aux événements utilisateur.</dd> + <dt>{{WebExtAPIRef("browserSettings.cacheEnabled")}}</dt> + <dd>Déterminer si le cache du navigateur est activé ou pas.</dd> + <dt>{{WebExtAPIRef("browserSettings.closeTabsByDoubleClick")}}</dt> + <dd>Détermine si l'onglet sélectionné peut être fermé en double-cliquant</dd> + <dt>{{WebExtAPIRef("browserSettings.contextMenuShowEvent")}}</dt> + <dd>Détermine l'événement de souris qui déclenche un menu contextuel.</dd> + <dt>{{WebExtAPIRef("browserSettings.ftpProtocolEnabled")}}</dt> + <dd>Détermine si le protocole FTP est activé.</dd> + <dt>{{WebExtAPIRef("browserSettings.homepageOverride")}}</dt> + <dd>Lire la valeur de la page d'accueil du navigateur.</dd> + <dt>{{WebExtAPIRef("browserSettings.imageAnimationBehavior")}}</dt> + <dd>Détermine comment le navigateur traite les images animées.</dd> + <dt>{{WebExtAPIRef("browserSettings.newTabPageOverride")}}</dt> + <dd>Lire la valeur de la nouvelle page de l'onglet du navigateur.</dd> + <dt>{{WebExtAPIRef("browserSettings.newTabPosition")}}</dt> + <dd><span id="result_box" lang="fr"><span>Contrôle la position des onglets nouvellement ouverts par rapport aux onglets déjà ouverts.</span></span></dd> + <dt>{{WebExtAPIRef("browserSettings.openBookmarksInNewTabs")}}</dt> + <dd>Détermine si les signets sont ouverts dans l'onglet actuel ou dans un nouvel onglet.</dd> + <dt>{{WebExtAPIRef("browserSettings.openSearchResultsInNewTabs")}}</dt> + <dd>Détermine si les résultats de recherche sont ouverts dans l'onglet actuel ou dans un nouvel onglet.</dd> + <dt>{{WebExtAPIRef("browserSettings.openUrlbarResultsInNewTabs")}}</dt> + <dd>Détermine si les suggestions de saisie semi-automatique de la barre d'adresse sont ouvertes dans l'onglet actuel ou dans un nouvel onglet.</dd> + <dt>{{WebExtAPIRef("browserSettings.overrideDocumentColors")}}</dt> + <dd>Contrôle si les couleurs choisies par l'utilisateur remplacent les couleurs de la page.</dd> + <dt>{{WebExtAPIRef("browserSettings.useDocumentFonts")}}</dt> + <dd>Contrôle si le navigateur utilisera les polices spécifiées par une page Web ou n'utilisera que des polices intégrées.</dd> + <dt>{{WebExtAPIRef("browserSettings.webNotificationsDisabled")}}</dt> + <dd>Empêche les sites Web d'afficher des notifications à l'aide de la web API <code><a href="/fr/docs/Web/API/notification">Notification</a></code>.</dd> + <dt>{{WebExtAPIRef("browserSettings.zoomFullPage")}}</dt> + <dd>Contrôle si le zoom est appliqué à la page entière ou seulement au texte.</dd> + <dt>{{WebExtAPIRef("browserSettings.zoomSiteSpecific")}}</dt> + <dd>Contrôle si le zoom est appliqué sur un modèle par-site ou par-onglet. Si {{WebExtAPIRef("privacy.websites")}}<code>.resistFingerprinting</code> est à vrai, ce réglage n'a aucun effet et le modèle de zoom appliqué reste par-onglet.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.browserSettings")}}</p> + +<p>{{WebExtExamples("h2")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/newtabpageoverride/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/newtabpageoverride/index.html new file mode 100644 index 0000000000..5a4ee1bcf7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/newtabpageoverride/index.html @@ -0,0 +1,36 @@ +--- +title: browserSettings.newTabPageOverride +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/newTabPageOverride +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browserSettings + - newTabPageOverride +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/newTabPageOverride +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui peut être utilisé pour obtenir une chaîne représentant l'URL de la page "nouvel onglet": c'est-à-dire, la page chargée lorsque l'utilisateur ouvre une nouvelle onglet vide.</p> + +<p>Notez qu'il s'agit d'un paramètre en lecture seule.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.newTabPageOverride", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenir la valeur actuelle de la nouvelle URL de l'onglet :</p> + +<pre class="brush: js">browser.browserSettings.newTabPageOverride.get({}).then(result => { + console.log(result.value); +}); +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/newtabposition/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/newtabposition/index.html new file mode 100644 index 0000000000..9499f509b7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/newtabposition/index.html @@ -0,0 +1,36 @@ +--- +title: browserSettings.newTabPosition +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/newTabPosition +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/newTabPosition +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui peut être utilisé pour contrôler la position des onglets nouvellement ouverts par rapport aux onglets déjà ouverts.</p> + +<p>La valeur sous-jacente est une chaîne qui peut prendre l'une des trois valeurs suivantes :</p> + +<ul> + <li>"afterCurrent": ouvre tous les nouveaux onglets à côté de l'onglet actuel.</li> + <li>"relatedAfterCurrent": La valeur par défaut. Ouvrez les nouveaux onglets à côté de l'onglet en cours s'ils sont liés à l'onglet en cours (par exemple, s'ils ont été ouverts via un lien dans l'onglet en cours). Sinon, ouvrez les nouveaux onglets à la fin de la bande d'onglets.</li> + <li>"atEnd": ouvre tous les onglets à la fin de la bande d'onglets.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.newTabPosition", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code définit la valeur à "afterCurrent" puis enregistre la nouvelle valeur :</p> + +<pre class="brush: js">async function setAfterCurrent() { + let result = await browser.browserSettings.newTabPosition.set({value: "afterCurrent"}); + console.log(`Result: ${result}`); + let newValue = await browser.browserSettings.newTabPosition.get({}); + console.log(`New value: ${newValue.value}`); +} +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/openbookmarksinnewtabs/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/openbookmarksinnewtabs/index.html new file mode 100644 index 0000000000..cb2115b259 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/openbookmarksinnewtabs/index.html @@ -0,0 +1,38 @@ +--- +title: browserSettings.openBookmarksInNewTabs +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/openBookmarksInNewTabs +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browsetSettings + - openBookmarksInNewTabs +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/openBookmarksInNewTabs +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jacente est un booléen.</p> + +<p>Si la valeur est <code>true</code>, alors lorsque l'utilisateur sélectionne un signet, il sera ouvert dans un nouvel onglet. Si la valeur est<code>false</code> (valeur par défaut), les marque-pages sont ouverts dans l'onglet en cours.</p> + +<h2 id="Compatibilité_de_navigateur">Compatibilité de navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.openBookmarksInNewTabs")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Définissez le paramètre sur <code>true</code>:</p> + +<pre class="brush: js">function logResult(result) { + console.log(`Setting was modified: ${result}`); +} + +browser.browserSettings.openBookmarksInNewTabs.set({value: true}). + then(logResult);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/opensearchresultsinnewtabs/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/opensearchresultsinnewtabs/index.html new file mode 100644 index 0000000000..7e45c22689 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/opensearchresultsinnewtabs/index.html @@ -0,0 +1,40 @@ +--- +title: browserSettings.openSearchResultsInNewTabs +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/openSearchResultsInNewTabs +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browserSettings + - openSearchResultsInNewTabs +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/openSearchResultsInNewTabs +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jacente est un booléen.</p> + +<p>Si la valeur est définie à <code>true</code>, lorsque l'utilisateur sélectionne un terme dans la zone de recherche du navigateur, les résultats de la recherche s'affichent dans un nouvel onglet. Si la valeur est <code>false</code> (valeur par défaut), les résultats de la recherche apparaissent dans l'onglet en cours.</p> + +<p>Notez que cela n'affecte pas le comportement lors de la sélection des éléments de omnibox/awesomebar, uniquement la zone de recherche dédiée..</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.openSearchResultsInNewTabs")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Définissez le paramètre sur <code>true</code>:</p> + +<pre class="brush: js">function logResult(result) { + console.log(`Setting was modified: ${result}`); +} + +browser.browserSettings.openSearchResultsInNewTabs.set({value: true}). + then(logResult);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/openurlbarresultsinnewtabs/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/openurlbarresultsinnewtabs/index.html new file mode 100644 index 0000000000..3db154acfe --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/openurlbarresultsinnewtabs/index.html @@ -0,0 +1,40 @@ +--- +title: browserSettings.openUrlbarResultsInNewTabs +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/openUrlbarResultsInNewTabs +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browserSettings + - openUrlbarResultsInNewTabs +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/openUrlbarResultsInNewTabs +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jacente est un booléen.</p> + +<p>Quand l'utilisateur facalise la barre d'adresse et commence à taper, le navigateur propose des suggestions de saisie semi-automatique : une liste déroulante de pages web basée sur l'entrée incomplète de l'utilisateur et son historique de navigation.</p> + +<p>Si la valeur est <code>true</code>, alors lorsque l'utiliseur sélectionne l'un des éléments, l'élément est ouvert dans un nouvel onglet. Si la valeur est <code>false</code> (valeur par défaut) l'élément est ouvert dans l'onglet en cours.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.openUrlbarResultsInNewTabs")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Définit le paramètre à <code>true</code>:</p> + +<pre class="brush: js">function logResult(result) { + console.log(`Setting was modified: ${result}`); +} + +browser.browserSettings.openUrlbarResultsInNewTabs.set({value: true}). + then(logResult);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/overridedocumentcolors/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/overridedocumentcolors/index.html new file mode 100644 index 0000000000..2850c4089d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/overridedocumentcolors/index.html @@ -0,0 +1,46 @@ +--- +title: browserSettings.overrideDocumentColors +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/overrideDocumentColors +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browserSettings + - overrideDocumentColors +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/overrideDocumentColors +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jacente est une chaîne.</p> + +<p>Firefox permet à l'utilisateur de définir ses propres couleurs pour les arrière-plans et le texte du document. Par défaut, ces valeurs ne sont appliquées que lorsqu'un thème à fort contraste est sélectionné (un thème à contraste élevé est une caractéristique de certaines interfaces utilisateur du système d'exploitation qui augmente le contraste pour une meilleure accessibilité). Cependant, les utilisateurs peuvent également choisir d'appliquer ces couleurs toujours ou jamais. Ce paramètre du navigateur expose cette préférence.</p> + +<p>Sa valeur sous-jacente est une chaîne qui peut prendre l'une des valeurs suivantes:</p> + +<ul> + <li>"high-contrast-only": applique les choix de l'utilisateur uniquement lorsqu'un thème à contraste élevé est sélectionné. C'est la valeur par défaut.</li> + <li>"never": n'applique jamais les choix de l'utilisateur</li> + <li>"always": Toujours appliquer les choix de l'utilisateur.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.openUrlbarResultsInNewTabs")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Définissez le paramètre sur "always":</p> + +<pre class="brush: js">function logResult(result) { + console.log(`Setting was modified: ${result}`); +} + +browser.browserSettings.overrideDocumentColors.set({value: "always"}). + then(logResult);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/proxyconfig/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/proxyconfig/index.html new file mode 100644 index 0000000000..8ebc5822c2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/proxyconfig/index.html @@ -0,0 +1,73 @@ +--- +title: browserSettings.proxyConfig +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/proxyConfig +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browserSettings + - proxyConfig +translation_of: Mozilla/Add-ons/WebExtensions/API/proxy/settings +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui peut être utilisé pour modifier les paramètres de proxy du navigateur.</p> + +<div class="blockIndicator note"> +<p><strong>Note</strong>: La possibilité de modifier les paramètres de proxy nécessite un accès à une fenêtre privée car les paramètres de proxy affectent à la fois les fenêtres privées et non privées. Par conséquent, si une extension n'a pas reçu l'autorisation de fenêtre privée, les appels à <code>proxy.settings.set()</code> lanceront une exception.</p> +</div> + +<p>La valeur sous-jacente est un objet avec les propriétés énumérées ci-dessous.</p> + +<p>Lors de la définition de cet objet, toutes les propriétés sont facultatives. Notez que les propriétés omises seront réinitialisées à leur valeur par défaut.</p> + +<dl> + <dt><code>autoConfigUrl</code>{{optional_inline}}</dt> + <dd><code>string</code>. Une URL à utiliser pour configurer le proxy.</dd> + <dt><code>autoLogin</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Ne pas demander l'authentification si le mot de passe est enregistré. Par défaut à <code>false</code>.</dd> + <dt><code>ftp</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'adresse du proxy FTP. Peut inclure un port.</dd> + <dt><code>http</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'adresse du proxy HTTP. Peut inclure un port.</dd> + <dt><code>httpProxyAll</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Utilisez le serveur proxy HTTP pour tous les protocoles. Par défaut à <code>false</code>.</dd> + <dt><code>passthrough</code>{{optional_inline}}</dt> + <dd><code>string</code>. Une liste d'hôtes séparés par des virgules qui ne doivent pas être mandatés. La valeur par défaut est "localhost, 127.0.0.1".</dd> + <dt><code>proxyDNS</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. DNS proxy lors de l'utilisation de SOCKS5. Par défaut à <code>false</code>.</dd> + <dt><code>proxyType</code>{{optional_inline}}</dt> + <dd><code>string</code>. Le type de proxy à utiliser. Cela peut prendre l'une des valeurs suivantes : "none", "autoDetect", "system", "manual", "autoConfig". Par défaut à "system".</dd> + <dt><code>socks</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'adresse du proxy SOCKS. Peut inclure un port.</dd> + <dt><code>socksVersion</code>{{optional_inline}}</dt> + <dd><code>integer</code>. La version du proxy SOCKS. Peut être 4 ou 5. Par défaut à 5.</dd> + <dt><code>ssl</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'adresse du proxy SSL. Peut inclure un port.</dd> +</dl> + +<p> </p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">let proxySettings = { + proxyType: "manual", + http: "http://proxy.org:8080", + socksVersion: 4, + passthrough: ".example.org" +}; + +browser.proxy.settings.set({value: proxySettings});</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.proxy.settings", 10)}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/usedocumentfonts/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/usedocumentfonts/index.html new file mode 100644 index 0000000000..ced60928ec --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/usedocumentfonts/index.html @@ -0,0 +1,45 @@ +--- +title: browserSettings.useDocumentFonts +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/useDocumentFonts +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browserSettings + - useDocumentFonts +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/useDocumentFonts +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jacente est un booléen.</p> + +<p>Par défaut, bien sûr, les pages Web peuvent spécifier les polices qu'ils veulent utiliser les propriétés CSS comme <code><a href="/fr/docs/Web/CSS/font-family">font-family</a></code>. Ce paramètre permet à une extension d'indiquer à Firefox d'ignorer les polices spécifiées par la page et d'utiliser uniquement les polices système.</p> + +<p>Sa valeur sous-jacente est un booléen :</p> + +<ul> + <li><code>true</code>: utilise les polices spécifiées par la page Web. C'est la valeur par défaut.</li> + <li><code>false</code>: utilise les polices du système.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.useDocumentFonts")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Définissez le paramètre sur <code>false</code>:</p> + +<pre class="brush: js">function logResult(result) { + console.log(`Setting was modified: ${result}`); +} + +browser.browserSettings.useDocumentFonts.set({value: false}). + then(logResult);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/webnotificationsdisabled/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/webnotificationsdisabled/index.html new file mode 100644 index 0000000000..215ca7aa1b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/webnotificationsdisabled/index.html @@ -0,0 +1,49 @@ +--- +title: browserSettings.webNotificationsDisabled +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/webNotificationsDisabled +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browserSettings + - webNotificationsDisabled +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/webNotificationsDisabled +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} qui peut être utilisé pour empêcher les sites Web d'afficher des <code><a href="/fr/docs/Web/API/Notifications_API">Notifications</a></code> à l'aide de l'API Web de notifications.</p> + +<p>L'API <code>Notifications</code> est utilisée pour afficher les notifications de bureau à l'utilisateur. Il existe trois niveaux d'autorisation pour les notifications :<em> allow</em>,<em> deny</em>, et <em>prompt</em>. Les utilisateurs peuvent définir cette autorisation pour chaque site. Si l'utilisateur n'a pas défini d'autorisation pour un site particulier, le navigateur reviendra à une autorisation globale, qui sera par défaut <em>invité</em>e.</p> + +<p>Définir <code>browserSettings.webNotificationsDisabled</code> à <code>true</code> change l'autorisation globale à<em> refuser</em>.</p> + +<p>Notez que cela n'affectera pas les sites pour lesquels l'utilisateur a défini une préférence par site. Par exemple, si l'utilisateur définit <a href="https://example.org">https://example.org</a> pour<em> autoriser</em>, et une extension place ensuite <code>browserSettings.webNotificationsDisabled</code> à <code>true</code>, alors les pages sous <a href="https://example.org">https://example.org </a>seront toujours autorisées à afficher des notifications..</p> + +<p>Si vous définissez <code>browserSettings.webNotificationsDisabled</code> à <code>false</code> la valeur par défaut globale est rétablie.</p> + +<p>Notez que ce paramètre n'a aucun effet sur les notifications créées par des extensions à l'aide de l'API de <code><a href="/fr/Add-ons/WebExtensions/API/notifications">notifications</a></code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.webNotificationsDisabled")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Basculer le paramètre :</p> + +<pre class="brush: js">async function toggleWebNotifications() { + let current = await browser.browserSettings.webNotificationsDisabled.get({}); + console.log(`Current value: ${current.value}`); + browser.browserSettings.webNotificationsDisabled.set({value: !current.value}); +} + +browser.browserAction.onClicked.addListener(() => { + toggleWebNotifications(); +});</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/zoomfullpage/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/zoomfullpage/index.html new file mode 100644 index 0000000000..45284a9291 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/zoomfullpage/index.html @@ -0,0 +1,45 @@ +--- +title: browserSettings.zoomFullPage +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/zoomFullPage +tags: + - API + - Add-ons + - Extensions + - Property + - Reference + - WebExtensions + - browserSettings + - zoomFullPage +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/zoomFullPage +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jaccente est un booléen.</p> + +<p>Par défaut, le zoom s'applique à la page web entière. En utilisant le <span class="menu"><a href="https://support.mozilla.org/fr/kb/taille-police-zoom-augmenter-taille-pages#w_daefinir-un-niveau-de-zoom-par-daefaut-pour-tous-les-sites-web">Zoom Text Only setting</a> les utilisateurs/utilisatrices peuvent choisir de zoomer uniquement le texte de la page</span>. Ce réglage permet à une web extension de modifier et de déterminer la valeur du paramètre, le zoom est appliqué à la page entière ou bien au texte seulement.</p> + +<p>Valeurs du paramètre:</p> + +<ul> + <li><code>true</code>: le zoom s'applique à la page web en entier (par défaut).</li> + <li><code>false</code>: le zoom s'applique au texte de la page web seulement.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.zoomFullPage")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Mettre le réglage à <code>false</code>:</p> + +<pre class="brush: js">function afficherResultat(resultat) { + console.log(`Le paramètre a été modifié: ${resultat}`); +} + +browser.browserSettings.zoomFullPage.set({value: false}). + then(afficherResultat);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsersettings/zoomsitespecific/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/zoomsitespecific/index.html new file mode 100644 index 0000000000..0ebeafd102 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsersettings/zoomsitespecific/index.html @@ -0,0 +1,55 @@ +--- +title: browserSettings.zoomSiteSpecific +slug: Mozilla/Add-ons/WebExtensions/API/browserSettings/zoomSiteSpecific +tags: + - API + - Add-ons + - Extensions + - Property + - WebExtensions + - browserSettings + - zoomSiteSpecific +translation_of: Mozilla/Add-ons/WebExtensions/API/browserSettings/zoomSiteSpecific +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}} dont la valeur sous-jaccente est un booléen.</p> + +<p>Cette propriété contrôle le <a href="https://support.mozilla.org/fr/kb/editeur-configuration-firefox">réglage de configuration</a><code> browser.zoom.siteSpecific</code>, qui règle comment le zoom est appliqué aux sites et onglets.</p> + +<p>Si <code>browser.zoom.siteSpecific</code> est à vrai, les opérations de zoom s'appliquent à toutes les pages du même site selon les règles :</p> + +<ul> + <li>quand une page charge, si il existe un niveau de zoom pour ce site alors il est appliqué par le navigateur sinon le niveau de zoom par défaut "global" est appliqué.</li> + <li>quand le niveau de zoom change pour une page, le niveau des autres pages (dans d'autres onglets) de ce site sont mises à jour.</li> +</ul> + +<p>Si la préférence <code>browser.zoom.siteSpecific</code> est à faux, les opérations de zoom s'appliquent uniquement à l'onglet actif selon les règles :</p> + +<ul> + <li>quand un nouvel onglet s'ouvre, le niveau de zoom par défaut "global" est appliqué.</li> + <li>quand le niveau de zoom change dans un onglet, il sera appliqué durant toute la navigation dans cet onglet et n'affectera pas le niveau de zoom des autres onglets.</li> +</ul> + +<p>Lors de l'installation de Firefox, <code>browser.zoom.siteSpecific</code> est à vrai.</p> + +<p>Si <a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/privacy/websites" title="The documentation about this has not yet been written; please consider contributing!"><code>privacy.websites</code></a><code>.resistFingerprinting</code> est à vrai, ce réglage ne peut pas être changé et le niveau de zoom est appliqué sur le schéma par-onglet.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browserSettings.zoomSiteSpecific")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Mettre le réglage à <code>false</code>:</p> + +<pre class="brush: js">function logResult(result) { + console.log(`Setting was modified: ${result}`); +} + +browser.browserSettings.zoomSiteSpecific.set({value: false}). + then(logResult);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsingdata/datatypeset/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/datatypeset/index.html new file mode 100644 index 0000000000..d715750689 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/datatypeset/index.html @@ -0,0 +1,101 @@ +--- +title: browsingData.DataTypeSet +slug: Mozilla/Add-ons/WebExtensions/API/browsingData/DataTypeSet +tags: + - API + - Add-ons + - DataTypeSet + - Extensions + - Reference + - Type + - WebExtensions + - browsingData +translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData/DataTypeSet +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <strong><code>browsingData.DataTypeSet</code></strong> décrit un ensemble de types de données.</p> + +<p>Il contient un certains nombres de propriétés booléennes. Le nom de chaque propriété est le nom d'un type particulier de données de navigations : "Téléchargements", "historique" et ainsi de suite. Toutes les propriétés sont facultatives.</p> + +<p>Ce type est utilisé :</p> + +<ul> + <li>dans {{WebExtAPIRef("browsingData.remove()")}} pour décrire les types de données à supprimer</li> + <li>dans {{WebExtAPIRef("browsingData.settings()")}} pour décrire les types de données actuellement sélectionnés dans la fonction "effacer l'historique" du navigateur.</li> +</ul> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>cache</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Le cache du navigateur</dd> + <dt><code>cookies</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Cookies acquis en cours de la navigation.</dd> + <dt><code>downloads</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. L'historique de téléchargement de l'utilisateur.</dd> + <dt><code>fileSystems</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Les systèmes de fichiers du site Web.</dd> + <dt><code>formData</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Données de formulaire enregistrées, pour la saisie semi-automatique.</dd> + <dt><code>history</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. L'histoire de navigation de l'utilisateur.</dd> + <dt><code>indexedDB</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Données IndexedDB.</dd> + <dt><code>localStorage</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Données de stockage local.</dd> + <dt><code>passwords</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Mots de pass enregistrés, pour la saisie semi-automatique.</dd> + <dt><code>pluginData</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Données stockées associées aux plugins.</dd> + <dt><code>serverBoundCertificates</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Certificats liés au serveur stockés.</dd> + <dt><code>serviceWorkers</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Données mises en cache par les travailleurs du service.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browsingData.DataTypeSet")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsingdata/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/index.html new file mode 100644 index 0000000000..018f8507c0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/index.html @@ -0,0 +1,128 @@ +--- +title: browsingData +slug: Mozilla/Add-ons/WebExtensions/API/browsingData +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - WebExtensions + - browsingData +translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData +--- +<div>{{AddonSidebar}}</div> + +<p>Permet aux extensions d'effacer les données accumulées pendant la navigation de l'utilisateur.</p> + +<p>Dans l'API <code>browsingData</code>, les données de navigations sont divisées en types :</p> + +<ul> + <li>cache du navigateur</li> + <li>cookies</li> + <li>Téléchargements</li> + <li>historique</li> + <li>stockage local</li> + <li>données du plugin</li> + <li>données de formulaire enregistrées</li> + <li>Mots de passe enregistrés</li> +</ul> + +<p>Vous pouvez utiliser la fonction {{WebExtAPIRef("browsingData.remove()")}} pour supprimer toute combinaison de ces types. Il existe également des fonctions dédiées pour supprimer chaque type particulier de données, comme {{WebExtAPIRef("browsingData.removePasswords()", "removePasswords()")}}, {{WebExtAPIRef("browsingData.removeHistory()", "removeHistory()")}} etc.</p> + +<p>Toutes les fonctions <code>browsingData.remove[X]()</code> prennent un objet {{WebExtAPIRef("browsingData.RemovalOptions")}} que vous pouvez utiliser pour contrôler deux autres aspects de la suppression des données :</p> + +<ul> + <li>dans quelle mesure remonter dans le temps pour supprimer des données</li> + <li>qu'il s'agisse de supprimer des données uniquement de pages Web normales ou d'applications Web hébergées et de modules complémentaires. Notez que cette option n'est pas encore supportée dans Firefox.</li> +</ul> + +<p>Enfin, cette API vous donne une fonction {{WebExtAPIRef("browsingData.settings()")}} qui vous donne la valeur actuelle des paramètres de la fonction "Effacer l'historique" du navigateur.</p> + +<p>Pour utiliser cette API, vous devez disposer de l'<a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API permission</a> "browseData".</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("browsingData.DataTypeSet")}}</dt> + <dd>Objet utilisé pour spécifier le type de données à supprimer: par exemple, l'historique, les téléchargements, les mots de passe, etc.</dd> + <dt>{{WebExtAPIRef("browsingData.RemovalOptions")}}</dt> + <dd>Objet utilisé pour spécifier le retour arrière des données, et la suppression des données ajoutées par le biais de la navigation Web normale, des applications hébergées ou des modules complémentaires.</dd> +</dl> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("browsingData.remove()")}}</dt> + <dd>Supprime les données de navigation pour les types de données spécifiés.</dd> + <dt>{{WebExtAPIRef("browsingData.removeCache()")}}</dt> + <dd>Efface le cache du navigateur.</dd> + <dt>{{WebExtAPIRef("browsingData.removeCookies()")}}</dt> + <dd>Supprime les cookies</dd> + <dt>{{WebExtAPIRef("browsingData.removeDownloads()")}}</dt> + <dd>Supprime la liste des fichiers téléchargés.</dd> + <dt>{{WebExtAPIRef("browsingData.removeFormData()")}}</dt> + <dd>Efface les données de formulaire enregistrées.</dd> + <dt>{{WebExtAPIRef("browsingData.removeHistory()")}}</dt> + <dd>Efface l'historique du navigateur.</dd> + <dt>{{WebExtAPIRef("browsingData.removeLocalStorage()")}}</dt> + <dd>Efface tout <a href="/fr/docs/Web/API/Window/localStorage">stockage local</a> créé par des sites web.</dd> + <dt>{{WebExtAPIRef("browsingData.removePasswords()")}}</dt> + <dd>Efface les mots de passe enregistrés.</dd> + <dt>{{WebExtAPIRef("browsingData.removePluginData()")}}</dt> + <dd>Efface les données associées aux plugins.</dd> + <dt>{{WebExtAPIRef("browsingData.settings()")}}</dt> + <dd>Obtient la valeur actuelle des paramètres dans la fonction "Effacer l'historique" du navigateur</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.browsingData", 2)}}</p> + +<div class="note hidden"> +<p>The "Chrome incompatibilities" section is included from <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities"> https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a> using the <a href="/en-US/docs/Template:WebExtChromeCompat">WebExtChromeCompat</a> macro.</p> + +<p>If you need to update this content, edit <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities">https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a>, then shift-refresh this page to see your changes.</p> +</div> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removaloptions/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removaloptions/index.html new file mode 100644 index 0000000000..0ddbe4d663 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removaloptions/index.html @@ -0,0 +1,89 @@ +--- +title: browsingData.RemovalOptions +slug: Mozilla/Add-ons/WebExtensions/API/browsingData/RemovalOptions +tags: + - API + - Add-ons + - Extensions + - Reference + - RemovalOptions + - Type + - WebExtensions + - browsingData +translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData/RemovalOptions +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <strong><code>browsingData.RemovalOptions</code></strong> contient des options permettant de contrôler certains aspects de la suppression des données de navigation.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes:</p> + +<dl class="reference-values"> + <dt><code>hostnames</code> {{optional_inline}}</dt> + <dd> + <p><code>Array</code> of <code>string</code>. Cette propriété s'applique uniquement aux cookies et aux éléments de stockage locaux. Ne supprimez que les cookies et les éléments de stockage locaux associés à ces noms d'hôte.</p> + + <p>Vous devez indiquer ici un nom d'hôte, sans protocole (par exemple : "google.com" et non https://google.com"). Vous pouvez utiliser l'interface <code><a href="/fr/docs/Web/API/URL">URL</a></code> pour analyser une URL brute et récupérer uniquement le nom d'hôte. Les sous-domaines d'un nom d'hôte donné ne seront pas supprimés: vous devez explicitement lister les sous-domaines.</p> + </dd> + <dt><code>originTypes</code> {{optional_inline}}</dt> + <dd> + <p><code>object</code>. Permet de contrôler si les données doivent être supprimées uniquement des pages Web normales ou des applications et extensions Web hébergées. Si cette option est omise, seules les données des pages Web normales ("<code>unprotectedWeb</code>") sont supprimées. Avant de supprimer des données d'applications ou d'extensions Web, veillez à ce que ce soit vraiment ce que l'utilisateur souhaite.</p> + + <p>Cet objet peut contenir l'une des propriétés suivantes :</p> + + <dl class="reference-values"> + <dt><code>unprotectedWeb</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si présent et <code>true</code>, supprime les données de la pages Web normales.</dd> + <dt><code>protectedWeb</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si présent et <code>true</code>, supprime les données de site Web qui ont été installés en tant qu'applications hébergées.</dd> + <dt><code>extension</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si présent et <code>true</code>, supprime les données d'extensions.</dd> + </dl> + </dd> + <dt><code>since</code> {{optional_inline}}</dt> + <dd><code>number</code>. Jusqu'à quand remontent les données, données en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque UNIX</a>. Notez que lorsque vous supprimez le cache du navigateur, le cache entier est toujours supprimé et cette option est ignorée. Si la propriété <code>since</code> est omise, la valeur par défaut est 0, ce qui signifie "pour toujours".</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.browsingData.RemovalOptions", 2)}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsingdata/remove/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/remove/index.html new file mode 100644 index 0000000000..231db0d7d4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/remove/index.html @@ -0,0 +1,129 @@ +--- +title: browsingData.remove() +slug: Mozilla/Add-ons/WebExtensions/API/browsingData/remove +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - browsingData + - remove + - supprimer +translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData/remove +--- +<div>{{AddonSidebar()}}</div> + +<p>Supprime les données de navigation spécifiées.</p> + +<p>Les données de navigation à supprimer sont spécifiées dans l'option <code>dataTypes</code>, qui est un objet {{WebExtAPIRef("browsingData.DataTypeSet")}}.</p> + +<p>Vous pouvez utiliser l'option <code>removalOptions</code>, qui est un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, pour contrôler à quelle distance remonter dans le temps pour supprimer des données et supprimer les données uniquement à partir de pages Web normales ou pour supprimer des données hébergées d'applications et extensions aussi.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.browsingData.remove( + removalOptions, // RemovalOptions object + dataTypes // DataTypeSet object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>removalOptions</code></dt> + <dd><code>object</code>. Un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, qui peut être utilisé pour contrôler à quelle distance remonter dans le temps pour supprimer des données, et si vous souhaitez supprimer des données des applications Web hébergées et des extensions ou simplement des pages Web normales.</dd> + <dt><code>dataTypes</code></dt> + <dd><code>object</code>. Un objet {{WebExtAPIRef("browsingData.DataTypeSet")}}, décrit les types de données à supprimer (par exemple, historique, les téléchargements,...).</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans argument lorsque la suppression est terminée. Si une erreur se produit, la promise sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browsingData.remove")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supprimer l'historique des téléchargements et de l'histoire de navigation de la semaine dernière :</p> + +<pre class="brush: js">function onRemoved() { + console.log("removed"); +} + +function onError(error) { + console.error(error); +} + +function weekInMilliseconds() { + return 1000 * 60 * 60 * 24 * 7; +} + +var oneWeekAgo = (new Date()).getTime() - weekInMilliseconds(); + +browser.browsingData.remove( + {since: oneWeekAgo}, + {downloads: true, history: true}). +then(onRemoved, onError); +</pre> + +<p>Supprimer tout l'historique de téléchargement et de navigation :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onRemoved</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"removed"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">onError</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>browsingData<span class="punctuation token">.</span><span class="function token">remove</span><span class="punctuation token">(</span><span class="punctuation token">{</span><span class="punctuation token">}</span><span class="punctuation token">,</span> + <span class="punctuation token">{</span>downloads<span class="punctuation token">:</span> <span class="keyword token">true</span><span class="punctuation token">,</span> history<span class="punctuation token">:</span> <span class="keyword token">true</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">.</span> +<span class="function token">then</span><span class="punctuation token">(</span>onRemoved<span class="punctuation token">,</span> onError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removecache/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removecache/index.html new file mode 100644 index 0000000000..6ea0d422b3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removecache/index.html @@ -0,0 +1,100 @@ +--- +title: browsingData.removeCache() +slug: Mozilla/Add-ons/WebExtensions/API/browsingData/removeCache +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - browsingData + - removeCache +translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData/removeCache +--- +<div>{{AddonSidebar()}}</div> + +<p>Effacer le cache du navigateur.</p> + +<p>Notez que cette fonction puisse prendre un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, elle sera ignorée. <span id="result_box" lang="fr"><span>Le cache entier est toujours effacé lors de l'utilisation de cette fonction</span></span>.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.browsingData.removeCache( + removalOptions // RemovalOptions object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>removalOptions </code>{{optional_inline}}</dt> + <dd><code>object</code>. Un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}. Ce paramètre n'a aucun effet</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera rempli sans arguments lorsque la suppression est terminée.<span id="result_box" lang="fr"><span> Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</span></span></p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browsingData.removeCache")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Effacer le cache du navigateur :</p> + +<pre class="brush: js">function onRemoved() { + console.log("removed"); +} + +function onError(error) { + console.error(error); +} + +browser.browsingData.removeCache({}). +then(onRemoved, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removecookies/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removecookies/index.html new file mode 100644 index 0000000000..122981271d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removecookies/index.html @@ -0,0 +1,132 @@ +--- +title: browsingData.removeCookies() +slug: Mozilla/Add-ons/WebExtensions/API/browsingData/removeCookies +tags: + - API + - Add-ons + - Extensions + - Méthode + - Reference + - WebExtensions + - browsingData + - removeCookies +translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData/removeCookies +--- +<div>{{AddonSidebar()}}</div> + +<p>Efface les cookies du navigateur</p> + +<p>Vous pouvez utiliser le paramètre <code>removalOptions</code>, qui est un objet {{WebExtAPIRef("browsingData.RemovalOptions")}} pour :</p> + +<ul> + <li>Efface seulement les cookies créés après un temps donné</li> + <li>Contrôlez si les cookies doivent être supprimés uniquement à partir des pages Webnormales ou si vous souhaitez supprimer les cookies des applications et des extensions hébergées.</li> +</ul> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.browsingData.removeCookies( + removalOptions // RemovalOptions object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>removalOptions</code></dt> + <dd><code>object</code>. Un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, qui peut être utilisé pour effacer uniquement les cookies créés après un délais donné, et pour supprimer les cookies uniquement des pages Web normales ou pour supprimer les cookies des applications et extensions hébergées.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans argument lorsque la suppression est terminée. Si une erreur se produit, la promise sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.browsingData.removeCookies")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supprime les cookies créés la semaine dernière :</p> + +<pre class="brush: js">function onRemoved() { + console.log("removed"); +} + +function onError(error) { + console.error(error); +} + +function weekInMilliseconds() { + return 1000 * 60 * 60 * 24 * 7; +} + +var oneWeekAgo = (new Date()).getTime() - weekInMilliseconds(); + +browser.browsingData.removeCookies( + {since: oneWeekAgo}). +then(onRemoved, onError);</pre> + +<p>Supprime tous les cookies :</p> + +<div class="warning"> +<p><strong>Avertissement</strong><br> + L'utilisation de l'API pour supprimer tous les cookies effacera simultanément tous les objets de stockage locaux (y compris ceux des autres extensions).<br> + <br> + Si vous souhaitez simplement effacer tous les cookies sans perturber les installations de stockage locales, utilisez <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies">browser.cookies</a> pour faire une boucle et supprimer le contenu de tous les magasins de cookies.</p> +</div> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onRemoved</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"removed"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">onError</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>browsingData<span class="punctuation token">.</span><span class="function token">removeCookies</span><span class="punctuation token">(</span><span class="punctuation token">{</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">.</span> +<span class="function token">then</span><span class="punctuation token">(</span>onRemoved<span class="punctuation token">,</span> onError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removedownloads/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removedownloads/index.html new file mode 100644 index 0000000000..1eb017ae3c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removedownloads/index.html @@ -0,0 +1,125 @@ +--- +title: browsingData.removeDownloads() +slug: Mozilla/Add-ons/WebExtensions/API/browsingData/removeDownloads +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - browsingData + - removeDownloads +translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData/removeDownloads +--- +<div>{{AddonSidebar()}}</div> + +<p>Efface l'historique de téléchargement du navigateur. Notez que cela ne supprime pas les objets téléchargés eux-mêmes, seulement les enregistrements de téléchargements dans l'historique du navigateur.</p> + +<p>Vous pouvez utiliser le paramètre <code>removalOptions</code>, qui est un objet {{WebExtAPIRef("browsingData.RemovalOptions")}} pour :</p> + +<ul> + <li>Efface les enregistrements des élements téléchargés après un temps donné</li> + <li>contrôle si vous souhaitez effacer uniquement les enregistrements d'éléments téléchargés à partir de pages Web normales ou pour supprimer également les enregistrements des applications hébergées et des extensions.</li> +</ul> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.browsingData.removeDownloads( + removalOptions // RemovalOptions object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>removalOptions</code></dt> + <dd><code>object</code>. Un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, qui peut-être utilisé pour effacer uniquement les enregistrements créés après une heure donnée, et pour effacer uniquement les enregistrements d'éléments téléchargés depuis les pages Web normales ou pour effacer des enregistrements d'applications hébergées et extensions aussi bien.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans argument lorsque la suppression est terminée. Si une erreur se produit, la promise sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browsingData.removeDownloads")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supprime les enregistrements d'objets téléchargés la semaine dernière :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onRemoved</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"removed"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">onError</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">weekInMilliseconds</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">return</span> <span class="number token">1000</span> <span class="operator token">*</span> <span class="number token">60</span> <span class="operator token">*</span> <span class="number token">60</span> <span class="operator token">*</span> <span class="number token">24</span> <span class="operator token">*</span> <span class="number token">7</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">var</span> oneWeekAgo <span class="operator token">=</span> <span class="punctuation token">(</span><span class="keyword token">new</span> <span class="class-name token">Date</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">getTime</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="operator token">-</span> <span class="function token">weekInMilliseconds</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + +browser<span class="punctuation token">.</span>browsingData<span class="punctuation token">.</span><span class="function token">removeDownloads</span><span class="punctuation token">(</span> + <span class="punctuation token">{</span>since<span class="punctuation token">:</span> oneWeekAgo<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">.</span> +<span class="function token">then</span><span class="punctuation token">(</span>onRemoved<span class="punctuation token">,</span> onError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>Supprime tous les enregistrements d'objets téléchargés :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onRemoved</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"removed"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">onError</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>browsingData<span class="punctuation token">.</span><span class="function token">removeDownloads</span><span class="punctuation token">({</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">.</span> +<span class="function token">then</span><span class="punctuation token">(</span>onRemoved<span class="punctuation token">,</span> onError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removeformdata/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removeformdata/index.html new file mode 100644 index 0000000000..d272a08b2d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removeformdata/index.html @@ -0,0 +1,124 @@ +--- +title: browsingData.removeFormData() +slug: Mozilla/Add-ons/WebExtensions/API/browsingData/removeFormData +tags: + - API + - Add-ons + - Extensions + - Méthode + - Reference + - WebExtensions + - browsingData + - removeDownloads +translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData/removeFormData +--- +<div>{{AddonSidebar()}}</div> + +<p>Efface les données que le navigateur a enregistré pour les formulaires de remplissage automatique.</p> + +<p>Vous pouvez utiliser le paramètre <code>removalOptions</code>, qui est un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, pour :</p> + +<ul> + <li>Efface uniquement les données de formulaire entrées après une heure donnée</li> + <li>Contrôle si vous souhaitez supprimer uniquement les données saisies dans les pages Web normales ou effacer les données saisies dans les applications et extensions hébergées.</li> +</ul> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.browsingData.removeFormData( + removalOptions // RemovalOptions object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dd><code>object</code>. Un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, qui peut être utilisé pour effacer uniquement les données de formulaire saisies après une heure donnée, et pour effacer uniquement les données saisies dans les pages Web normales ou pour effacer les données saisies dans les applications hébergées et des extensions aussi..</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans argument lorsque la suppression est terminée. Si une erreur se produit, la promise sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browsingData.removeFormData")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supprimer les données de formulaire enregistrées la semaine dernière :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onRemoved</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"removed"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">onError</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">weekInMilliseconds</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">return</span> <span class="number token">1000</span> <span class="operator token">*</span> <span class="number token">60</span> <span class="operator token">*</span> <span class="number token">60</span> <span class="operator token">*</span> <span class="number token">24</span> <span class="operator token">*</span> <span class="number token">7</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">var</span> oneWeekAgo <span class="operator token">=</span> <span class="punctuation token">(</span><span class="keyword token">new</span> <span class="class-name token">Date</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">getTime</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="operator token">-</span> <span class="function token">weekInMilliseconds</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + +browser<span class="punctuation token">.</span>browsingData<span class="punctuation token">.</span><span class="function token">removeFormData</span><span class="punctuation token">(</span> + <span class="punctuation token">{</span>since<span class="punctuation token">:</span> oneWeekAgo<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">.</span> +<span class="function token">then</span><span class="punctuation token">(</span>onRemoved<span class="punctuation token">,</span> onError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>Supprimer tous les données de formulaire enregistrées :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onRemoved</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"removed"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">onError</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>browsingData<span class="punctuation token">.</span><span class="function token">removeFormData</span><span class="punctuation token">(</span><span class="punctuation token">{</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">.</span> +<span class="function token">then</span><span class="punctuation token">(</span>onRemoved<span class="punctuation token">,</span> onError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removehistory/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removehistory/index.html new file mode 100644 index 0000000000..c2ab2918ef --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removehistory/index.html @@ -0,0 +1,125 @@ +--- +title: browsingData.removeHistory() +slug: Mozilla/Add-ons/WebExtensions/API/browsingData/removeHistory +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - browsingData + - removeHistory +translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData/removeHistory +--- +<div>{{AddonSidebar()}}</div> + +<p>Efface l'enregistrement des pages Web que l'utilisateur a visité (historique de navigation).</p> + +<p>Vous pouvez utiliser le paramètre <code>removalOptions</code>, qui est un objet {{WebExtAPIRef("browsingData.RemovalOptions")}} pour :</p> + +<ul> + <li>Effacer uniquement les eenregistrements des pages Web visitées après un certain temps.</li> + <li>Contrôlez si vous souhaitez effacer uniquement les enregistrements des pages web normales ou effacer les enregistrements des applications hébergées et des extensions.</li> +</ul> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.browsingData.removeHistory( + removalOptions // RemovalOptions object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>removalOptions</code></dt> + <dd><code>object</code>. Un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, qui peut-être utilisé pour effacer uniquement les enregistrements des pages Web visitées après un certain temp, et pour effacer uniquement les enregistrements des pages Web normales ou pour effacer les enregistrements des applications hébergées et extensions aussi bien.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> sera rempli sans arguments lorsque la suppression est terminée. Si une erreur se produit, la promise sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browsingData.removeHistory", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supprimer les enregistrements de la page visitées de la semaine dernière :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onRemoved</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"removed"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">onError</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">weekInMilliseconds</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">return</span> <span class="number token">1000</span> <span class="operator token">*</span> <span class="number token">60</span> <span class="operator token">*</span> <span class="number token">60</span> <span class="operator token">*</span> <span class="number token">24</span> <span class="operator token">*</span> <span class="number token">7</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">var</span> oneWeekAgo <span class="operator token">=</span> <span class="punctuation token">(</span><span class="keyword token">new</span> <span class="class-name token">Date</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">getTime</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="operator token">-</span> <span class="function token">weekInMilliseconds</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + +browser<span class="punctuation token">.</span>browsingData<span class="punctuation token">.</span><span class="function token">removeHistory</span><span class="punctuation token">(</span> + <span class="punctuation token">{</span>since<span class="punctuation token">:</span> oneWeekAgo<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">.</span> +<span class="function token">then</span><span class="punctuation token">(</span>onRemoved<span class="punctuation token">,</span> onError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>Supprimer tous les enregistrements des pages visitées :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onRemoved</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"removed"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">onError</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>browsingData<span class="punctuation token">.</span><span class="function token">removeHistory</span><span class="punctuation token">({</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">.</span> +<span class="function token">then</span><span class="punctuation token">(</span>onRemoved<span class="punctuation token">,</span> onError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removelocalstorage/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removelocalstorage/index.html new file mode 100644 index 0000000000..2d2882ceff --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removelocalstorage/index.html @@ -0,0 +1,103 @@ +--- +title: browsingData.removeLocalStorage() +slug: Mozilla/Add-ons/WebExtensions/API/browsingData/removeLocalStorage +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - browsingData + - removeLocalStorage +translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData/removeLocalStorage +--- +<div>{{AddonSidebar()}}</div> + +<p>Efface tout le <a href="/fr/docs/Web/API/Window/localStorage">stockage local</a> créé par des sites Web.</p> + +<p>Vous pouvez utiliser le paramètre <code>removalOptions</code>, qui est un objet {{WebExtAPIRef("browsingData.RemovalOptions")}} pour :</p> + +<ul> + <li>Effacer uniquement les objets de stockage locaux créés après un délai donné</li> + <li>Controler si vous souhaitez effacer uniquement les objets de stockage locaux créés par des pages Web normales ou supprimer des objets créés par des applications et des extensions hébergées.</li> +</ul> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.browsingData.removeLocalStorage( + removalOptions // RemovalOptions object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>removalOptions</code></dt> + <dd><code>object</code>. Un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, qui peut etre utilisé pour effacer uniquement les objets de stockage locaux créés par des pages Web normales ou pour effacer des objets créés par des applications et des extensions hébergées.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans argument lorsque la suppression est terminée. Si une erreur se produit, la promise sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browsingData.removeLocalStorage", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supprime tout le stockage local :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onRemoved</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"removed"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">onError</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>error<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>browsingData<span class="punctuation token">.</span></code>removeLocalStorage<code class="language-js"><span class="punctuation token">({</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">.</span> +<span class="function token">then</span><span class="punctuation token">(</span>onRemoved<span class="punctuation token">,</span> onError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removepasswords/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removepasswords/index.html new file mode 100644 index 0000000000..d8e2955197 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removepasswords/index.html @@ -0,0 +1,123 @@ +--- +title: browsingData.removePasswords() +slug: Mozilla/Add-ons/WebExtensions/API/browsingData/removePasswords +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - browsingData + - removePasswords +translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData/removePasswords +--- +<div>{{AddonSidebar()}}</div> + +<p>Efface les mots de passes enregistrés</p> + +<p>Vous pouvez utiliser le paremètre <code>removalOptions</code>, qui est un objet {{WebExtAPIRef("browsingData.RemovalOptions")}} pour :</p> + +<ul> + <li>Effacer uniquement les mots de passe enregistrés après un certain temp</li> + <li>Contrôlez si vous souhaitez supprimer les mots de passe enregistrés sur les pages Web normales ou effacer les mots de passe enregistrés sur les applications et les extensions hébergées.</li> +</ul> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.browsingData.removePasswords( + removalOptions // RemovalOptions object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>removalOptions</code></dt> + <dd><code>object</code>. Un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, qui peut être utilisé pour effacer uniquement les mots de passe enregistrés après un certain temps, et pour effacer les mots de passe enregistrés sur les pages Web normales ou pour effacer les mots de passe enregistrés sur les applications et les extensions hébergées.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments lorsque la suppression est terminée. Si une erreur se produit, la promise sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browsingData.removePasswords")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supprimer les mots de passe enregistrés la semaine dernière :</p> + +<pre class="brush: js">function onRemoved() { + console.log("removed"); +} + +function onError(error) { + console.error(error); +} + +function weekInMilliseconds() { + return 1000 * 60 * 60 * 24 * 7; +} + +var oneWeekAgo = (new Date()).getTime() - weekInMilliseconds(); + +browser.browsingData.removePasswords({since: oneWeekAgo}). +then(onRemoved, onError);</pre> + +<p>Supprime tous les mots de passe enregistrés :</p> + +<pre class="brush: js">function onRemoved() { + console.log("removed"); +} + +function onError(error) { + console.error(error); +} + +browser.browsingData.removePasswords({}).then(onRemoved, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removeplugindata/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removeplugindata/index.html new file mode 100644 index 0000000000..1635ed4a62 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/removeplugindata/index.html @@ -0,0 +1,124 @@ +--- +title: browsingData.removePluginData() +slug: Mozilla/Add-ons/WebExtensions/API/browsingData/removePluginData +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - browsingData + - removePluginData +translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData/removePluginData +--- +<div>{{AddonSidebar()}}</div> + +<p>Efface les données stockées par les plugins du navigateur.</p> + +<p>Vous pouvez utiliser le paramètre <code>removalOptions</code>, qui est un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, pour :</p> + +<ul> + <li>effacer seulement les données du plugins stockées après un temps donné</li> + <li>controler si vous souhaitez effacer uniquement les données stockées par les plugins qui s'exécutent dans les pages Web normales ou effacer les données par les plugins qui s'exécutent dans les applications et les extensions hébergées.</li> +</ul> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.browsingData.removePluginData( + removalOptions // RemovalOptions object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>removalOptions</code></dt> + <dd><code>object</code>. Un objet {{WebExtAPIRef("browsingData.RemovalOptions")}}, qui peut être utilisé pour effacer uniquement les données de plugin stockées après un certain temps, et pour effacer uniquement les données stockées par des plugins fonctionnant sur des pages web normales ou pour effacer des données stockées par des plugins fonctionnant dans des applications et extensions hébergées.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera rempli sans arguments lorsque la suppression est terminée. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browsingData.removePluginData")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supprimer les données stockées par les plugins au cours de la dernière semaine :</p> + +<pre class="brush: js">function onRemoved() { + console.log("removed"); +} + +function onError(error) { + console.error(error); +} + +function weekInMilliseconds() { + return 1000 * 60 * 60 * 24 * 7; +} + +var oneWeekAgo = (new Date()).getTime() - weekInMilliseconds(); + +browser.browsingData.removePluginData({since: oneWeekAgo}). +then(onRemoved, onError);</pre> + +<p>Supprimer toutes les données stockées par les plugins :</p> + +<pre class="brush: js">function onRemoved() { + console.log("removed"); +} + +function onError(error) { + console.error(error); +} + +browser.browsingData.removePluginData({}). +then(onRemoved, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/browsingdata/settings/index.html b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/settings/index.html new file mode 100644 index 0000000000..bd8422265f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/browsingdata/settings/index.html @@ -0,0 +1,109 @@ +--- +title: browsingData.settings() +slug: Mozilla/Add-ons/WebExtensions/API/browsingData/settings +tags: + - API + - Extensions + - Method + - Reference + - Settings + - WebExtensions + - add-on + - browsingData +translation_of: Mozilla/Add-ons/WebExtensions/API/browsingData/settings +--- +<div>{{AddonSidebar()}}</div> + +<p>Les navigateurs disposent d'une fonction "Effacer l'historique" intégrée, qui permet à l'utilisateur d'effacer différents types de données de navigation. Cela a une interface utilisateur qui permet à l'utilisateur de sélectionner le type de données à supprimer (par exemple l'historique, les téléchargements, ...) et à quelle distance remonter dans le temps pour supprimer des données.</p> + +<p>Cette fonction renvoie la valeur actuelle de ces paramètres.</p> + +<p>Notez que tous les types de données ne peuvent pas toujours être supprimés via l'interface utilisateur et certaines options d'interface utilisateur peuvent correspondre à plusieurs types de données.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getSettings = browser.browsingData.settings() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet contenant les informations sur les paramètres. Cet objet a trois propriétés :</p> + +<dl class="reference-values"> + <dt><code>options</code></dt> + <dd><code>{{WebExtAPIRef("browsingData.RemovalOptions")}}</code>. Un objet <code>RemovalOptions</code> décrivant les options de suppression actuellement sélectionnées.</dd> + <dt><code>dataToRemove</code></dt> + <dd><code>{{WebExtAPIRef("browsingData.DataTypeSet")}}</code>. Cela contiendra une propriété pour chaque type de données pouvant être basculé dans l'interface utilisateur du navigateur. Chaque propriété aura une valeur <code>true</code> si ce type est sélectionné pour la suppression et <code>false</code> dans le cas contraire.</dd> + <dt><code>dataRemovalPermitted</code></dt> + <dd><code>{{WebExtAPIRef("browsingData.DataTypeSet")}}</code>. Cela contiendra une propriété pour chaque type de données pouvant être basculé dans l'interface utilisateur du navigateur. Chacune aura la valeur <code>true</code> si l'administrateur du périphérique a autorisé l'utilisateur à supprimer ce type, et <code>false</code> dans le cas contraire.</dd> +</dl> + +<p>Si une erreur se produit, la promise sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.browsingData.settings")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Paramètres des Logs courrants :</p> + +<pre class="brush: js">function onGotSettings(settings) { + console.log(settings.options); + console.log(settings.dataToRemove); + console.log(settings.dataRemovalPermitted); +} + +function onError(error) { + console.error(error); +} + +browser.browsingData.settings().then(onGotSettings, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/browsingData"><code>chrome.browsingData</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/captiveportal/canonicalurl/index.html b/files/fr/mozilla/add-ons/webextensions/api/captiveportal/canonicalurl/index.html new file mode 100644 index 0000000000..3f29ef2e9f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/captiveportal/canonicalurl/index.html @@ -0,0 +1,60 @@ +--- +title: captivePortal.canonicalURL +slug: Mozilla/Add-ons/WebExtensions/API/captivePortal/canonicalURL +tags: + - API + - Add-ons + - Extensions + - canonicalURL + - captivePortal +translation_of: Mozilla/Add-ons/WebExtensions/API/captivePortal/canonicalURL +--- +<div>{{AddonSidebar()}}</div> + +<p>Renvoyer l'URL canonique de la page de détection du portail des prisonniers. En lecture seule.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.captivePortal.canonicalURL")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/tabs#property-TAB_ID_NONE"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence américaine Creative Commons Attribution 3.0.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/captiveportal/getlastchecked/index.html b/files/fr/mozilla/add-ons/webextensions/api/captiveportal/getlastchecked/index.html new file mode 100644 index 0000000000..af5644d765 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/captiveportal/getlastchecked/index.html @@ -0,0 +1,68 @@ +--- +title: getLastChecked +slug: Mozilla/Add-ons/WebExtensions/API/captivePortal/getLastChecked +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - WebExtensions + - captivePortal +translation_of: Mozilla/Add-ons/WebExtensions/API/captivePortal/getLastChecked +--- +<div>{{AddonSidebar()}}</div> + +<p>Retourne le temps écoulé depuis que la dernière demande a été complétée.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var state = browser.captivePortal.getLastChecked() +</pre> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a> qui est remplie avec un nombre entier représentant le temps en millisecondes.</p> + +<div class="hidden"> +<h2 id="Exemples">Exemples</h2> +</div> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.captivePortal.getLastChecked")}}</p> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/captiveportal/getstate/index.html b/files/fr/mozilla/add-ons/webextensions/api/captiveportal/getstate/index.html new file mode 100644 index 0000000000..a0259bd623 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/captiveportal/getstate/index.html @@ -0,0 +1,64 @@ +--- +title: getState +slug: Mozilla/Add-ons/WebExtensions/API/captivePortal/getState +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - WebExtensions + - captivePortal +translation_of: Mozilla/Add-ons/WebExtensions/API/captivePortal/getState +--- +<div>{{AddonSidebar()}}</div> + +<p>Renvoie l'état du portail comme <code>unknown</code>, <code>not_captive</code>, <code>unlocked_portal</code>, ou <code>locked_portal</code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js notranslate">var state = browser.captivePortal.getState() +</pre> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a> qui est remplie avec une chaîne de caractères contenant l'un des éléments suivants <code>unknown</code>, <code>not_captive</code>, <code>unlocked_portal</code>, ou <code>locked_portal</code>.</p> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.captivePortal.getState")}}</p> + +<div class="hidden"> +<pre class="notranslate">// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/captiveportal/index.html b/files/fr/mozilla/add-ons/webextensions/api/captiveportal/index.html new file mode 100644 index 0000000000..41e7655362 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/captiveportal/index.html @@ -0,0 +1,90 @@ +--- +title: captivePortal +slug: Mozilla/Add-ons/WebExtensions/API/captivePortal +tags: + - API + - Add-ons + - Extensions + - NeedsTranslation + - Non-standard + - Reference + - TopicStub + - WebExtensions + - captivePortal +translation_of: Mozilla/Add-ons/WebExtensions/API/captivePortal +--- +<div>{{AddonSidebar}}</div> + +<p>Déterminer l'état du portail captif de la connexion de l'utilisateur. Un portail captif est une page web qui s'affiche lorsqu'un utilisateur se connecte pour la première fois à un réseau Wi-Fi. L'utilisateur fournit des informations ou agit sur la page web du portail captif afin d'obtenir un accès plus large aux ressources du réseau, par exemple en acceptant les conditions générales ou en effectuant un paiement.</p> + +<p>Pour utiliser cette API, vous devez disposer de la <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "captivePortal".</p> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt>{{WebExtAPIRef("captivePortal.canonicalURL")}}</dt> + <dd>Renvoyer l'URL canonique de la page de détection du portail des prisonniers. En lecture seule.</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("captivePortal.getLastChecked()")}}</dt> + <dd>Retourne le temps, en millisecondes, depuis que la dernière demande a été complétée.</dd> + <dt>{{WebExtAPIRef("captivePortal.getState()")}}</dt> + <dd>Renvoie l'état du portail comme étant inconnu, <code>unknown</code>, <code>not_captive</code>, <code>unlocked_portal</code>, ou <code>locked_portal</code>.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("captivePortal.onConnectivityAvailable")}}</dt> + <dd>S'allume lorsque le service de portail captif détermine que l'utilisateur peut se connecter à l'internet.</dd> + <dt>{{WebExtAPIRef("captivePortal.onStateChanged")}}</dt> + <dd> + <p>S'allume lorsque l'état de portail captif change</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.captivePortal")}}</p> + +<div class="hidden note"> +<p>La section "Incompatibilités avec le chrome" est incluse à partir de<a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities"> https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a> en utilisant la macro <a href="/en-US/docs/Template:WebExtChromeCompat">WebExtChromeCompat</a>.</p> + +<p>Si vous avez besoin de mettre à jour ce contenu, modifiez <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities">https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a>, puis réactualisez cette page pour voir vos modifications.</p> +</div> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/captiveportal/onconnectivityavailable/index.html b/files/fr/mozilla/add-ons/webextensions/api/captiveportal/onconnectivityavailable/index.html new file mode 100644 index 0000000000..aa8119a48b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/captiveportal/onconnectivityavailable/index.html @@ -0,0 +1,100 @@ +--- +title: onConnectivityAvailable +slug: Mozilla/Add-ons/WebExtensions/API/captivePortal/onConnectivityAvailable +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - WebExtensions + - captivePortal +translation_of: Mozilla/Add-ons/WebExtensions/API/captivePortal/onConnectivityAvailable +--- +<div>{{AddonSidebar()}}</div> + +<p>S'allume lorsque le service de portail captif détermine que l'utilisateur peut se connecter à l'internet.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js notranslate">browser.captivePortal.onConnectivityAvailable.addListener(callback) +browser.captivePortal.onConnectivityAvailable.removeListener(listener) +browser.captivePortal.onConnectivityAvailable.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un auditeur à cet événement</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à retirer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est inscrit à cet événement. Renvoie <code>true</code> si c'est un auditeur, sinon <code>false</code> .</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramétres">Paramétres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui est appelée lorsque cet événement se produit. La fonction se voit transmettre les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>status</code></dt> + <dd><code>string</code> Le statut du service, étant celui de <code>captive</code> s'il y a un portail captif déverrouillé présent ou <code>clear</code> si aucun portail captif n'est détecté</dd> + </dl> + </dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Gérer la capacité d'un utilisateur de changement à se connecter à l'internet :</p> + +<pre class="brush: js notranslate">function handleConnectivity(connectivityInfo) { + console.log("The captive portal status: " + connectivityInfo.status); +} + +browser.captivePortal.onConnectivityAvailable.addListener(handleConnectivity); +</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.captivePortal.onConnectivityAvailable")}}</p> + +<div class="hidden"> +<pre class="notranslate">// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/captiveportal/onstatechanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/captiveportal/onstatechanged/index.html new file mode 100644 index 0000000000..9b4625be0f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/captiveportal/onstatechanged/index.html @@ -0,0 +1,102 @@ +--- +title: onStateChanged +slug: Mozilla/Add-ons/WebExtensions/API/captivePortal/onStateChanged +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - WebExtensions + - captivePortal +translation_of: Mozilla/Add-ons/WebExtensions/API/captivePortal/onStateChanged +--- +<div>{{AddonSidebar()}}</div> + +<p>S'allume lorsque l'état de portail captif change.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js notranslate">browser.captivePortal.onStateChanged.addListener(callback) +browser.captivePortal.onStateChanged.removeListener(listener) +browser.captivePortal.onStateChanged.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument de <code>listener</code> est l'auditeur à retirer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est inscrit à cet événement. Renvoie <code>true</code> si c'est un auditeur, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramétres">Paramétres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui est appelée lorsque cet événement se produit. La fonction se voit transmettre les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd> + <p><code>string</code> L'État portail captif, étant l'un des <code>unknown</code>, <code>not_captive</code>, <code>unlocked_portal</code>, ou <code>locked_portal</code>.</p> + </dd> + </dl> + </dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Gérer un changement de statut de portail captif :</p> + +<pre class="brush: js notranslate">function handlePortalStatus(portalstatusInfo) { + console.log("The portal status is now: " + portalstatusInfo.details); +} + +browser.captivePortal.onStateChanged.addListener(handlePortalStatus) +</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.captivePortal.onStateChanged")}}</p> + +<div class="hidden"> +<pre class="notranslate">// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/clipboard/index.html b/files/fr/mozilla/add-ons/webextensions/api/clipboard/index.html new file mode 100644 index 0000000000..ca3b1fe724 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/clipboard/index.html @@ -0,0 +1,39 @@ +--- +title: clipboard +slug: Mozilla/Add-ons/WebExtensions/API/clipboard +tags: + - API + - Add-ons + - Clipboard + - Extensions + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/clipboard +--- +<div>{{AddonSidebar}}</div> + +<p>L'API <code>presse-papiers</code> permet à une extension de copier des éléments dans le presse papier du système. Actuellement l'API ne prend en charge que la copie d'images, mais elle est destinée à prendre en charge la copie de texte et HTML dans l'avenir.</p> + +<p>Cette API WebExtension existe principalement parce que l'API standard du presse-papiers Web <a href="https://w3c.github.io/clipboard-apis/#writing-to-clipboard">ne prend pas en charge l'écriture d'images dans le presse-papiers</a>. Cette API peut être dépréciée une fois que le support de l'API Clipboard pour les contenus non textuels du presse-papiers est entré en usage général.</p> + +<p>La lecture depuis le presse-papiers n'est pas prise en charge par cette API, car le presse-papiers peut déjà être lu à l'aide des API de plate-forme Web standard. Voir <a href="/fr/Add-ons/WebExtensions/Interact_with_the_clipboard#Reading_from_the_clipboard">Interaction avec le presse-papier</a>.</p> + +<p>Cette API est basée sur l'API de <code><a class="external external-icon" href="https://developer.chrome.com/apps/clipboard">clipboard</a></code> de Chrome, mais cette API n'est disponible que pour les applications Chrome et non pour les extensions.</p> + +<p>Pour utiliser cette API, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"clipboardWrite"</code>.</p> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("clipboard.setImageData()")}}</dt> + <dd>Copiez une image dans le presse-papiers.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.clipboard", 1, 1)}} {{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/apps/clipboard"><code>chrome.clipboard</code></a>.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.html b/files/fr/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.html new file mode 100644 index 0000000000..751b5d1b8a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/clipboard/setimagedata/index.html @@ -0,0 +1,81 @@ +--- +title: clipboard.setImageData() +slug: Mozilla/Add-ons/WebExtensions/API/clipboard/setImageData +tags: + - API + - Add-ons + - Clipboard + - Extensions + - Method + - Referece + - WebExtensions + - setImageData +translation_of: Mozilla/Add-ons/WebExtensions/API/clipboard/setImageData +--- +<div>{{AddonSidebar()}}</div> + +<p>Copie une image dans le presse-papiers. L'image est recodée avant d'être écrite dans le presse-papiers. Si l'image n'est pas valide, le presse-papiers n'est pas modifié.</p> + +<p>L'image est fournie en tant que <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/ArrayBuffer">ArrayBuffer</a></code> contenant l'image codée. Les formats JPEG et PNG sont pris en charge.</p> + +<p>Bien que cette API soit basée sur l'API <code><a href="https://developer.chrome.com/apps/clipboard">clipboard.setImageData()</a></code> de Chrome, il existe certaines différentes :</p> + +<ul> + <li>L'API Chrome est réservée aux applications et non aux extensions.</li> + <li>Cette API nécessite uniquement la permission <code>"clipboardWrite"</code>, tandis que la version Chrome nécessite également la permission <code>"clipboard"</code>.</li> + <li>L'API de Chrome utilise des rappels et cette API ne prend en charge que les promises.</li> + <li>Cette API ne prend pas en charge le paramètre <code>additionalItems</code>.</li> +</ul> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.clipboard.setImageData(<em>imageData</em>, <em>imageType</em>) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>imageData</code></dt> + <dd><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/ArrayBuffer">ArrayBuffer</a></code>. Les données de l'image codées.</dd> + <dt><code>imageType</code></dt> + <dd>Un {{domxref("DOMString")}} indiquant le type d'image contenue dans le fichier <code>imageData</code>: <code>"png"</code> ou <code>"jpeg"</code>.</dd> +</dl> + +<h3 id="Valeur_de_retour">Valeur de retour</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments si l'opération a réussi, ou rejetée, s'il y a une erreur (par exemple parce que les données ne représentaient pas une image valide).</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.clipboard.setImageData", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Copiez une image distante :</p> + +<pre class="brush: js" id="ct-71"><span class="quote">// requires: +// * the host permission for "<a href="https://cdn.mdn.mozilla.net/" rel="nofollow">https://cdn.mdn.mozilla.net/</a>*" +// * the API permission "clipboardWrite" + +fetch('<a class="hoverZoomLink" href="https://cdn.mdn.mozilla.net/static/img/favicon144.png" rel="nofollow">https://cdn.mdn.mozilla.net/static/img/favicon144.png</a>') +.then(response => response.arrayBuffer()) +.then(buffer => browser.clipboard.setImageData(buffer, 'png'));</span></pre> + +<p>Copiez une image fournie avec l'extension :</p> + +<pre class="brush: js" id="ct-70">// requires <span class="quote">the API permission </span>"clipboardWrite" + +fetch(browser.runtime.getURL('image.png')) +.then(response => response.arrayBuffer()) +.then(buffer => browser.clipboard.setImageData(buffer, 'png'));</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/apps/clipboard"><code>chrome.clipboard</code></a>.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/commands/command/index.html b/files/fr/mozilla/add-ons/webextensions/api/commands/command/index.html new file mode 100644 index 0000000000..cd84951bfb --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/commands/command/index.html @@ -0,0 +1,46 @@ +--- +title: Command +slug: Mozilla/Add-ons/WebExtensions/API/commands/Command +tags: + - API + - Add-ons + - Command + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - commands +translation_of: Mozilla/Add-ons/WebExtensions/API/commands/Command +--- +<div>{{AddonSidebar()}}</div> + +<p>Information sur une commande. Cela contient les informations spécifiées pour la commande dans la <a href="/fr/Add-ons/WebExtensions/manifest.json/commands"><code>commande</code> clef manifest.json</a>.</p> + +<p>Un tableau de ces objets est renvoyé par {{WebExtAPIRef('commands.getAll()')}}.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>name</code>{{optional_inline}}</dt> + <dd><code>string</code>. Nom de la commande. Cela sera passé dans l'écouteur de l'événement {{WebExtAPIRef('commands.onCommand')}}.</dd> + <dt><code>description</code>{{optional_inline}}</dt> + <dd><code>string</code>. Description de cette commande. Ceci est principalement utilisé pour expliquer à l'utilisateur ce que cette commande fait.</dd> + <dt><code>shortcut</code>{{optional_inline}}</dt> + <dd><code>string</code>. clef(s) utilisée pour exécuter cette commande , spécifiée comme une chaîne comme "Ctrl+Shift+Y".</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.commands.Command")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/commands"><code>chrome.commands</code></a>.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/commands/getall/index.html b/files/fr/mozilla/add-ons/webextensions/api/commands/getall/index.html new file mode 100644 index 0000000000..76c2f8a5e6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/commands/getall/index.html @@ -0,0 +1,61 @@ +--- +title: getAll() +slug: Mozilla/Add-ons/WebExtensions/API/commands/getAll +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - commands + - getAll +translation_of: Mozilla/Add-ons/WebExtensions/API/commands/getAll +--- +<div>{{AddonSidebar()}}</div> + +<p>Obient toutes les commandes pour l'exécution que vous avez enregistré à l'aide d'une des <a href="/fr/Add-ons/WebExtensions/manifest.json/commands"><code>commandes</code> clef du manifest.json</a>.</p> + +<p>Les commandes sont renvoyées sous la forme d'un tableau d'objets {{WebExtAPIRef('commands.Command')}}. Altenativement, si vous utilisez la version de base promise de l'API, <code>browser.commands.getAll()</code>, les commandes sont passées dans l'argument <code>onFulfilled</code> à <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise/then">Promise.then()</a></code>.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getCommands = browser.commands.getAll(); +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera accompli avec un tableau d'objets <code>{{WebExtAPIRef('commands.Command')}}</code>, un pour chaque commande enregistrée pour l'extension. Si aucune n'a été enregistrée, le tableau sera vide.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.commands.getAll")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function logCommands(commands) { + commands.forEach(function(command) { + console.log(command); + }); +} + +var getCommands = browser.commands.getAll(); +getCommands.then(logCommands);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/commands"><code>chrome.commands</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/commands/index.html b/files/fr/mozilla/add-ons/webextensions/api/commands/index.html new file mode 100644 index 0000000000..9e9beb6cd3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/commands/index.html @@ -0,0 +1,91 @@ +--- +title: commands +slug: Mozilla/Add-ons/WebExtensions/API/commands +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - WebExtensions + - commands +translation_of: Mozilla/Add-ons/WebExtensions/API/commands +--- +<div>{{AddonSidebar}}</div> + +<p>Écoutez l'utilisateur exécutant les commandes que vous avez enregistrées à l'aide des <a href="/fr/Add-ons/WebExtensions/manifest.json/commands">clés <code>commandes</code> du fichier manifest.json</a>.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("commands.Command")}}</dt> + <dd>Objet représentant une commande. Il contient les informations spécifiées pour la commande dans les <a href="/fr/Add-ons/WebExtensions/manifest.json/commands">clés <code>commands</code> du fichier manifest.json</a>.</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("commands.getAll")}}</dt> + <dd> + <p>Obtient toutes les commandes enregistrées pour cette extension.</p> + </dd> + <dt>{{WebExtAPIRef("commands.reset")}}</dt> + <dd> + <p>Réinitialiser la description de la commande donnée et le raccourci vers les valeurs données dans la clé “manifest”.</p> + </dd> + <dt>{{WebExtAPIRef("commands.update")}}</dt> + <dd> + <p>Modifiez la description ou le raccourci de la commande donnée.</p> + </dd> +</dl> + +<h2 id="Événements">Événements</h2> + +<dl> + <dt>{{WebExtAPIRef("commands.onCommand")}}</dt> + <dd> + <div>Activé lorsqu'une commande est exécutée à l'aide du raccourci clavier associé.</div> + </dd> +</dl> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p>{{Compat("webextensions.api.commands")}} {{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/commands"><code>chrome.commands</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/commands/oncommand/index.html b/files/fr/mozilla/add-ons/webextensions/api/commands/oncommand/index.html new file mode 100644 index 0000000000..85c98b3207 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/commands/oncommand/index.html @@ -0,0 +1,98 @@ +--- +title: onCommand +slug: Mozilla/Add-ons/WebExtensions/API/commands/onCommand +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - commands + - onCommand +translation_of: Mozilla/Add-ons/WebExtensions/API/commands/onCommand +--- +<div>{{AddonSidebar()}}</div> + +<div>Lancer quand une commande est exécutée à l'aide de son raccourci clavier associé.</div> + +<div></div> + +<div>L'écouteur reçoit le nom de la commande. Cela correspond au nom donnée à la commande dans une <a href="/fr/Add-ons/WebExtensions/manifest.json/commands">entrée manifest.json</a>.</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.commands.onCommand.addListener(listener) +browser.commands.onCommand.removeListener(listener) +browser.commands.onCommand.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à un événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêter d'écouter un événement. L'arguement <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement . Renvoie <code>true</code> s'il écoute, <code>false</code> sinon.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètre">Paramètre</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsqu'un utilisateur entre dans le raccourci de la commande. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>name</code></dt> + <dd><code>string</code>. Nom de la commande. Cela correspond au nom donné à la commande dans son <a href="/fr/Add-ons/WebExtensions/manifest.json/commands">entrée manifest.json</a>.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.commands.onCommand")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<div>Etant donnée une entrée manifest.json comme ceci :</div> + +<div></div> + +<div> +<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"commands":</span> <span class="punctuation token">{</span> + <span class="key token">"toggle-feature":</span> <span class="punctuation token">{</span> + <span class="key token">"suggested_key":</span> <span class="punctuation token">{</span> + <span class="key token">"default":</span> <span class="string token">"Ctrl+Shift+Y"</span> + <span class="punctuation token">}</span><span class="punctuation token">,</span> + <span class="key token">"description":</span> <span class="string token">"Send a 'toggle-feature' event"</span> + <span class="punctuation token">}</span> +<span class="punctuation token">}</span></code></pre> +</div> + +<div>Vous pouvez écouter cette commande particulière comme ceci :</div> + +<div></div> + +<div> +<pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>commands<span class="punctuation token">.</span>onCommand<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span>command<span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">if</span> <span class="punctuation token">(</span>command <span class="operator token">==</span> <span class="string token">"toggle-feature"</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"toggling the feature!"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> +</div> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/commands"><code>chrome.commands</code></a>.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/commands/reset/index.html b/files/fr/mozilla/add-ons/webextensions/api/commands/reset/index.html new file mode 100644 index 0000000000..136a24cc18 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/commands/reset/index.html @@ -0,0 +1,59 @@ +--- +title: commands.reset() +slug: Mozilla/Add-ons/WebExtensions/API/commands/reset +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - commands + - reset +translation_of: Mozilla/Add-ons/WebExtensions/API/commands/reset +--- +<div>{{AddonSidebar()}}</div> + +<p>Réinitialise la description de la commande donnée et le raccourci clavier aux valeurs indiquées dans <a href="/fr/Add-ons/WebExtensions/manifest.json/commands"><code>commands</code> de la clé du manifest.json</a> de l'extension.</p> + +<p>Cela annule efficacement les modifications apportées à la commande à l'aide de la fonction {{WEbExtAPIRef("commands.update()")}}.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.commands.reset( + name // string +); +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>name</code></dt> + <dd><code>string</code>. Nom de la commande à réinitialiser, comme indiqué par la propriété <code>name</code> de l'objet {{WebExtAPIRef("commands.Command")}}.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments lorsque le raccourci a été réinitialisé.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.commands.reset")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Réinitialise la commande "my-command" lorsque l'utilisateur clique sur le bouton "reset" :</p> + +<pre class="brush: js">const commandName = 'my-command'; + +function resetShortcut() { + browser.commands.reset(commandName); +} + +document.querySelector('#reset').addEventListener('click', resetShortcut);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/commands/update/index.html b/files/fr/mozilla/add-ons/webextensions/api/commands/update/index.html new file mode 100644 index 0000000000..35365ccb34 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/commands/update/index.html @@ -0,0 +1,70 @@ +--- +title: commands.update() +slug: Mozilla/Add-ons/WebExtensions/API/commands/update +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - Update + - WebExtensions + - commands +translation_of: Mozilla/Add-ons/WebExtensions/API/commands/update +--- +<div>{{AddonSidebar()}}</div> + +<p>Changez la description ou le raccourci clavier pour la commande donnée.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.commands.update( + details // object +); +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Un objet avec les propriétés suivantes:</dd> + <dd> + <dl class="reference-values"> + <dt><code>name</code></dt> + <dd><code>string</code>. e nom de la commande à mettre à jour. Cela doit correspondre au nom d'une commande existante, comme indiqué par exemple dans la propriété <code>name</code> de l'objet {{WebExtAPIRef("commands.Command")}}.</dd> + <dt><code>description</code>{{optional_inline}}</dt> + <dd><code>string</code>. Une nouvelle description à définir pour la commande.</dd> + <dt><code>shortcut</code>{{optional_inline}}</dt> + <dd><code>string</code>. Un nouveau raccourci à définir pour la commande. Cela doit correspondre au format donné dans la documentation pour les <a href="/fr/Add-ons/WebExtensions/manifest.json/commands"><code>commands</code> de la clé manifest.json</a>. S'il ne correspond pas à ce format, la fonction va générer une erreur.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments lorsque le raccourci a été réinitialisé. La promesse sera rejetée avec une erreur si la commande n'a pas pu être trouvée.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.commands.update")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Met à jour la commande "my-command" avec la valeur de raccourci donnée, lorsque l'utilisateur clique sur "update" :</p> + +<pre class="brush: js">const commandName = 'my-command'; + +function updateShortcut() { + browser.commands.update({ + name: commandName, + shortcut: document.querySelector('#shortcut').value + }); +} + +document.querySelector('#update').addEventListener('click', updateShortcut);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contentscripts/index.html b/files/fr/mozilla/add-ons/webextensions/api/contentscripts/index.html new file mode 100644 index 0000000000..ff9ccb42bb --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contentscripts/index.html @@ -0,0 +1,45 @@ +--- +title: contentScripts +slug: Mozilla/Add-ons/WebExtensions/API/contentScripts +tags: + - API + - Add-ons + - Extensions + - Interface + - WebExtensions + - contentScripts +translation_of: Mozilla/Add-ons/WebExtensions/API/contentScripts +--- +<div>{{AddonSidebar}}</div> + +<p>Utilisez cette API pour enregistrer des scripts de contenu. L'enregistrement d'un script de contenu demande au navigateur d'insérer les scripts de contenu donnés dans des pages correspondant aux modèles d'URL donnés.</p> + +<p>Cette API est très similaire à la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_scripts">"content_scripts"</a></code> du manifest.json, à l'exception de <code>"content_scripts"</code> , l'ensemble des scripts de contenu et des motifs associés est fixé au moment de l'installation. <span class="seoSummary">Avec l'API <code>contentScripts</code>, une extension peut enregistrer et </span>désenregistrer des scripts au moment de l'exécution<span class="seoSummary">.</span></p> + +<p>Pour utiliser l'API, appelez {{WebExtAPIRef("contentScripts.register()")}} en passant dans un objet définissant les scripts à enregistrer, les modèles d'URL, et d'autres options. Ceci retourne une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue avec un objet {{WebExtAPIRef("contentScripts.RegisteredContentScript")}}.</p> + +<p>L'objet <code>RegisteredContentScript</code> représente les scripts enregistrés dans l'appel <code>register()</code> . Il définit une méthode <code>unregister()</code> que vous pouvez utiliser pour annuler l'inscription des scripts de contenu. Les scripts de contenu sont également désenregistrés automatiquement lorsque la page qui les a créés est détruite. Par exemple, s'ils sont enregistrés à partir de la page d'arrière-plan, ils seront automatiquement désenregistrés lorsque la page d'arrière-plan est détruite et s'ils sont enregistrés depuis une barre latérale ou une fenêtre contextuelle, ils seront automatiquement désinscrits.</p> + +<p>Il n'y a pas de permission de l'API <code>contentScripts</code>, mais une extension doit disposer des <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions d'hôte</a> appropriées pour tous les modèles qu'elle transmet à <code>register()</code>.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("contentScripts.RegisteredContentScript")}}</dt> + <dd> + <p>Un objet de ce type est renvoyé par la fonction {{WebExtAPIRef("contentScripts.register()")}}. Il représente les scripts de contenu enregistrés par cet appel et peut être utilisé pour annuler l'enregistrement du script de contenu.</p> + </dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("contentScripts.register()")}}</dt> + <dd>Enregistre les scripts de contenu donnés.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.contentScripts", 10, 1)}}</p> + +<p> {{WebExtExamples("h2")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contentscripts/register/index.html b/files/fr/mozilla/add-ons/webextensions/api/contentscripts/register/index.html new file mode 100644 index 0000000000..821f078eae --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contentscripts/register/index.html @@ -0,0 +1,106 @@ +--- +title: contentScripts.register() +slug: Mozilla/Add-ons/WebExtensions/API/contentScripts/register +tags: + - API + - Extensions + - Méthode + - Reference + - contentScripts + - register +translation_of: Mozilla/Add-ons/WebExtensions/API/contentScripts/register +--- +<div>{{AddonSidebar()}}</div> + +<p>Utilisez cette fonction pour enregistrer un ou plusieurs scripts de contenu.</p> + +<p>Il accepte un paramètre, qui est un objet avec des propriétés similaires aux objets donnés dans la clé du manifest <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> (mais notez que <code>content_scripts</code> est un tableau d'objets, tandis que l'argument de <code>register()</code> est un simple objet).</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var registering = browser.contentScripts.register( + contentScriptOptions // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>contentScriptOptions</code></dt> + <dd> + <p><code>object</code>. Un objet <code>RegisteredContentScriptOptions</code> représentant les scripts de contenu à enregistrer. Sa syntaxe est similaire à celle des objets du tableau de clés de manifest <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>. Les différences sont :</p> + + <ul> + <li>les noms de propriété utilisent camelCase plutôt que des traits de soulignement (par exemple, <code>excludeMatches</code>, pas <code>exclude_matches</code></li> + <li>les propriétés <code>js</code> et <code>css</code> vous permettent d'enregistrer des chaînes ainsi que des URL, leur syntaxe doit donc distinguer ces types.</li> + </ul> + + <p>L'objet <code>RegisteredContentScriptOptions</code> a les propriétés suivantes :</p> + + <dl class="reference-values"> + <dt><code>allFrames</code>{{optional_inline}}</dt> + <dd>Identique à <code>all_frames</code> dans la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + <dt><code>css</code>{{optional_inline}}</dt> + <dd>Un tableau d'objets. Chaque objet possède soit une propriété nommée <code>file</code>, qui est une URL commençant par manifest.json de l'extension et pointant vers un fichier CSS à enregistrer, soit une propriété nommée <code>code</code>, qui est un code CSS à enregistrer.</dd> + <dt><code>excludeGlobs</code>{{optional_inline}}</dt> + <dd>Identique à <code>exclude_globs</code> dans la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + <dt><code>excludeMatches</code>{{optional_inline}}</dt> + <dd>Identique à <code>exclude_matches</code> dans la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + <dt><code>includeGlobs</code>{{optional_inline}}</dt> + <dd>Identique à <code>include_globs</code> dans la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + <dt><code>js</code>{{optional_inline}}</dt> + <dd>Un tableau d'objets. Chaque objet possède soit une propriété nommée <code>file</code>, qui est une URL commençant par manifest.json de l'extension et pointant vers un fichier JavaScript à enregistrer, soit une propriété nommée <code>code</code>, qui est du code JavaScript à enregistrer.</dd> + <dt><code>matchAboutBlank</code>{{optional_inline}}</dt> + <dd>Identique à <code>match_about_blank</code> dans la clé <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + <dt><code>matches</code></dt> + <dd>Identique à <code>matches</code> dans la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + <dt><code>runAt</code>{{optional_inline}}</dt> + <dd>Identique à <code>run_at</code> dans la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + </dl> + </dd> +</dl> + +<h3 id="Return_value">Return value</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef("contentScripts.RegisteredContentScript")}} que vous pouvez utiliser pour annuler l'enregistrement des scripts de contenu.</p> + +<p>Actuellement, les scripts de contenu ne sont pas enregistrés lorsque la page d'extension correspondante (à partir de laquelle les scripts de contenu ont été enregistrés) est déchargée, vous devez donc enregistrer un script de contenu depuis une page d'extension qui persiste au moins aussi longtemps que vous voulez que les scripts de contenu restent enregistrés.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.contentScripts.register", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple enregistre le script de contenu <code>defaultCode</code> pour toutes les URL <code>.org</code> :</p> + +<pre class="brush: js">const defaultHosts = "*://*.org/*"; +const defaultCode = "document.body.innerHTML = '<h1>This page has been eaten<h1>'"; + +async function register(hosts, code) { + + return await browser.contentScripts.register({ + matches: [hosts], + js: [{code}], + runAt: "document_idle" + }); + +} + +var registered = register(defaultHosts, defaultCode);</pre> + +<p>Ce code enregistre le fichier JS à l'adresse content_scripts/example.js:</p> + +<pre class="brush: js" id="ct-3">const scriptObj = await browser.contentScripts.register({ + "js": [{file: "/content_scripts/example.js"}], + "matches": ["<all_urls>"], + "allFrames": true, + "runAt": "document_start" +}); +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contentscripts/registeredcontentscript/index.html b/files/fr/mozilla/add-ons/webextensions/api/contentscripts/registeredcontentscript/index.html new file mode 100644 index 0000000000..140a7246dc --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contentscripts/registeredcontentscript/index.html @@ -0,0 +1,69 @@ +--- +title: contentScripts.RegisteredContentScript +slug: Mozilla/Add-ons/WebExtensions/API/contentScripts/RegisteredContentScript +tags: + - API + - Extensions + - NeedsTranslation + - Reference + - RegisteredContentScript + - TopicStub + - Type + - contentScripts +translation_of: Mozilla/Add-ons/WebExtensions/API/contentScripts/RegisteredContentScript +--- +<div>{{AddonSidebar()}}</div> + +<p>Un <code>RegisteredContentScript</code> est renvoyé par un appel à {{WebExtAPIRef("contentScripts.register()")}} et représente les scripts de contenu enregistrés dans cet appel.</p> + +<p>Il définit une seule fonction {{WebExtAPIRef("contentScripts.RegisteredContentScript.unregister()", "unregister()")}}, qui peut être utilisée pour annuler l'enregistrement des scripts de contenu.</p> + +<div class="blockIndicator note"> +<p><strong>Note:</strong> Si cet objet est détruit (par exemple parce qu'il est hors de portée), les scripts de contenu seront automatiquement désinscrits. Vous devriez donc garder une référence à cet objet aussi longtemps que vous voulez que les scripts de contenu restent enregistrés.</p> +</div> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("contentScripts.RegisteredContentScript.unregister","unregister()")}}</dt> + <dd>Annule l'inscription des scripts de contenu représentés par cet objet.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.contentScripts.RegisteredContentScript", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code permet de basculer un script de contenu enregistré sur un clic d'action du navigateur :</p> + +<pre class="brush: js">var registered = null; + +async function register() { + + registered = await browser.contentScripts.register({ + matches: ["*://*.org/*"], + js: [{ + code: "document.body.innerHTML = '<h1>This page has been eaten<h1>'" + }], + runAt: "document_idle" + }); + +} + +function toggle() { + if (registered) { + registered.unregister(); + registered = null; + } else { + register(); + } +} + +browser.browserAction.onClicked.addListener(toggle); + +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contentscripts/registeredcontentscript/unregister/index.html b/files/fr/mozilla/add-ons/webextensions/api/contentscripts/registeredcontentscript/unregister/index.html new file mode 100644 index 0000000000..90c045d86b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contentscripts/registeredcontentscript/unregister/index.html @@ -0,0 +1,67 @@ +--- +title: contentScripts.RegisteredContentScript.unregister() +slug: >- + Mozilla/Add-ons/WebExtensions/API/contentScripts/RegisteredContentScript/unregister +tags: + - API + - Extensions + - Reference + - RegisteredContentScript.unregister + - contentScripts +translation_of: >- + Mozilla/Add-ons/WebExtensions/API/contentScripts/RegisteredContentScript/unregister +--- +<div>{{AddonSidebar()}}</div> + +<div>Annule l'inscription des scripts de contenu représentés par cet objet <code>RegisteredContentScript</code>.</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">registered.unregister() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>None.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.contentScripts.RegisteredContentScript.unregister", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code permet de basculer un script de contenu enregistré sur un clic d'action du navigateur :</p> + +<pre class="brush: js">var registered = null; + +async function register() { + + registered = await browser.contentScripts.register({ + matches: ["*://*.org/*"], + js: [{ + code: "document.body.innerHTML = '<h1>This page has been eaten<h1>'" + }], + runAt: "document_idle" + }); + +} + +function toggle() { + if (registered) { + registered.unregister(); + registered = null; + } else { + register(); + } +} + +browser.browserAction.onClicked.addListener(toggle); +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/contextualidentity/index.html b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/contextualidentity/index.html new file mode 100644 index 0000000000..d1e6657309 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/contextualidentity/index.html @@ -0,0 +1,76 @@ +--- +title: contextualIdentitities.ContextualIdentity +slug: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/ContextualIdentity +tags: + - API + - Add-ons + - ContextualIdentity + - Extensions + - Reference + - Type + - WebExtensions + - contextalIdentities +translation_of: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/ContextualIdentity +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code><strong>contextualIdentities</strong></code><strong><code>.ContextualIdentity</code></strong> décrit une identité contextuelle unique.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>cookieStoreId</code></dt> + <dd><code>string</code>. L'ID du magasin de cookies pour l'identité. Puisque les identités contextuelles ne partagent pas les banques de cookies, elles servent d'identificateur unique.</dd> + <dt><code>color</code></dt> + <dd> + <p><code>string</code>. La couleur pour l'identité. Cela sera montré dans les onglets appartenant à cette identité. Les valeurs suivantes sont valides :</p> + + <ul> + <li>"blue"</li> + <li>"turquoise"</li> + <li>"green"</li> + <li>"yellow"</li> + <li>"orange"</li> + <li>"red"</li> + <li>"pink"</li> + <li>"purple"</li> + <li>"toolbar"</li> + </ul> + + <p>La valeur "toolbar" représente une couleur dépendant du thème. Les identités avec la couleur "toolbar" seront affichées dans la même couleur que le texte de la barre d'outils (correspondant à la <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme#colors">clé thème</a> <code>"toolbar_field_text"</code>).</p> + </dd> + <dt><code>colorCode</code></dt> + <dd><code>string</code>. Un code hexadécimal représentant la couleur exacte utilisée pour l'identité. Par exemple : <code>"#37adff"</code>. Dans le cas particulier de la couleur "toolbar", <code>colorCode</code> est toujours <code>"#7c7c7d"</code>, quelle que soit la couleur affichée.</dd> + <dt><code>icon</code></dt> + <dd> + <p><code>string</code>. Le nom d'une icône pour l'identité. Cela s'affichera dans la barre d'URL pour les onglets appartenant à cette identité. Les valeurs suivantes sont valides :</p> + + <ul> + <li>"fingerprint"</li> + <li>"briefcase"</li> + <li>"dollar"</li> + <li>"cart"</li> + <li>"circle"</li> + <li>"gift"</li> + <li>"vacation"</li> + <li>"food"</li> + <li>"fruit"</li> + <li>"pet"</li> + <li>"tree"</li> + <li>"chill"</li> + <li>"fence"</li> + </ul> + </dd> + <dt><code>iconUrl</code></dt> + <dd><code>string</code>. Une URL complète resource:// pointant vers l'icône de l'identité. Par exemple : "resource://usercontext-content/fingerprint.svg".</dd> + <dt><code>name</code></dt> + <dd><code>string</code>. Nom de l'identité. Cela s'affichera dans la barre d'URL pour les onglets appartenant à cette identité. Notez que les noms ne doivent pas nécessairement être uniques .</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.contextualIdentities.ContextualIdentity")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/create/index.html b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/create/index.html new file mode 100644 index 0000000000..de4913c645 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/create/index.html @@ -0,0 +1,108 @@ +--- +title: contextualIdentities.create() +slug: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/create +tags: + - API + - Add-ons + - Create + - Extensions + - Méthode + - Reference + - WebExtensions + - contextualIdentities +translation_of: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/create +--- +<div>{{AddonSidebar()}}</div> + +<p>Crée une nouvelle identité contextuelle. Une fois créée, l'utilisateur pourra créer de nouveaux onglets appartenant à cette identité contextuelle, tout comme ils peuvent le faire avec les identités intégrées.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var createContext = browser.contextualIdentities.create( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd> + <p><code>object</code>. Un objet contenant des propriétés pour la nouvelle identité contextuelle. Cela contient les propriétés suivantes :</p> + + <dl class="reference-values"> + <dt><code>name</code></dt> + <dd> + <p><code>string</code>. Le nom de la nouvelle identité. Cela sera affiché dans l'interface utilisateur du navigateur, leur permettant d'ouvrir un nouvel onglet appartenant à l'identité. Il sera également affiché dans la barre d'URL pour les onglets appartenant à cette identité.</p> + </dd> + <dt><code>color</code></dt> + <dd> + <p><code><code>string</code></code>. La couleur associée à la nouvelle identité. Cela sera utilisé pour mettre en évidence les onglets appartenant à cette identité. Vous pouvez fournir l'une des valeurs suivantes ici :</p> + + <ul> + <li>"blue"</li> + <li>"turquoise"</li> + <li>"green"</li> + <li>"yellow"</li> + <li>"orange"</li> + <li>"red"</li> + <li>"pink"</li> + <li>"purple"</li> + <li>"toolbar"<span style="display: none;"> </span></li> + </ul> + </dd> + <dt><code>icon</code></dt> + <dd> + <p><code>string</code>. Le nom d'une icône à afficher dans la barre d'URL pour les onglets appartenant à cette identité. Vous pouvez fournir l'une des valeurs suivantes ici :</p> + + <ul> + <li>"fingerprint"</li> + <li>"briefcase"</li> + <li>"dollar"</li> + <li>"cart"</li> + <li>"circle"</li> + <li>"gift"</li> + <li>"vacation"</li> + <li>"food"</li> + <li>"fruit"</li> + <li>"pet"</li> + <li>"tree"</li> + <li>"chill"</li> + <li>"fence"</li> + </ul> + </dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un {{WebExtAPIRef('contextualIdentities.ContextualIdentity', 'ContextualIdentity')}} qui décrit la nouvelle identité. Si la fonctionnalité d'identités contextuelles n'est pas activée, la promesse est rejetée.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.contextualIdentities.create")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple crée une nouvelle identité contextuelle et enregistre son ID de cookie :</p> + +<pre class="brush: js">function onCreated(context) { + console.log(`New identity's ID: ${context.cookieStoreId}.`); +} + +function onError(e) { + console.error(e); +} + +browser.contextualIdentities.create({ + name: "my-thing", + color: "purple", + icon: "briefcase" +}).then(onCreated, onError);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/get/index.html b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/get/index.html new file mode 100644 index 0000000000..56ad56f47f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/get/index.html @@ -0,0 +1,65 @@ +--- +title: contextualIdentities.get() +slug: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/get +tags: + - API + - Add-ons + - Extensions + - Méthode + - Reference + - WebExtensions + - contextualIdentities + - get +translation_of: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/get +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient des informations sur une identité contextuelle, compte tenu de son ID de cookie.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getContext = browser.contextualIdentities.get( + cookieStoreId // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>cookieStoreId</code></dt> + <dd> + <p><code>string</code>. L'identifiant du cookie store de cette identité contextuelle. Étant donné que les identités contextuelles ont chacune leur propre magasin de cookies, cela sert d'identifiant pour l'identité contextuelle elle-même.</p> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un {{WebExtAPIRef('contextualIdentities.ContextualIdentity', 'ContextualIdentity')}} qui décrit l'identité. Si l'identité n'a pas pu être trouvée ou si la fonctionnalité d'identités contextuelles n'est pas activée, la promesse est rejetée.</p> + +<h2 id="Comptatiblité_du_navigateur">Comptatiblité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.contextualIdentities.get")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple tente de récupérer l'identité contextuelle dont l'ID est "firefox-container-1":</p> + +<pre class="brush: js">function onGot(context) { + if (!context) { + console.error("Context not found"); + } else { + console.log(`Name: ${context.name}`); + } +} + +function onError(e) { + console.error(e); +} + +browser.contextualIdentities.get("firefox-container-1").then(onGot, onError);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/index.html b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/index.html new file mode 100644 index 0000000000..1b54fb8291 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/index.html @@ -0,0 +1,65 @@ +--- +title: contextualIdentities +slug: Mozilla/Add-ons/WebExtensions/API/contextualIdentities +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/contextualIdentities +--- +<div>{{AddonSidebar}}</div> + +<p>Travailler avec des identités contextuelles : lister, créer, supprimer et mettre à jour des identités contextuelles.</p> + +<p>Les « identités contextuelles », également appelées « conteneurs », sont des fonctions de navigation qui répondent à l’idée que les utilisateurs assument plusieurs identités lorsqu’ils naviguent sur le web, et souhaitent maintenir une certaine séparation entre ces identités. Par exemple, un utilisateur peut considérer que son « identité de travail » est distincte de son « identité personnelle » et ne veut pas partager les cookies entre ces deux contextes.</p> + +<p>Avec la fonctionnalité d’identités contextuelles, chaque identité contextuelle a un nom, une couleur et une icône. De nouveaux onglets peuvent être assignés à une identité et le nom, l’icône et la couleur apparaîtront dans la barre d’adresse. En interne, chaque identité possède son propre magasin de cookies qui n’est pas partagé avec d’autres onglets…</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/14719/containers.png" style="display: block; height: 259px; margin-left: auto; margin-right: auto; width: 515px;">Les identités contextuelles sont une fonctionnalité expérimentale de Firefox et ne sont activées par défaut dans Firefox Nightly. Pour activer dans d’autres versions de Firefox, définissez la préférence <code>privacy.userContext.enabled</code> sur <code>true</code>. Notez que bien que les identités contextuelles soient disponibles dans Firefox pour Android, il n'y a pas d’interface utilisateur pour travailler avec eux dans cette version pour travailler avec eux dans cette versiondu navigateur.</p> + +<p>Avant Firefox 57, l’API <code>contextualIdentities</code> n’était disponible que si la fonctionnalité d’identités contextuelles était activée. Si une extension essayait d’utiliser l’API <code>contextualIdentities</code> sans activer la fonctionnalité, les appels de méthode résolvaient leurs promesses avec <code>false</code>.</p> + +<p>À partir de Firefox 57, si une extension utilisant l’API <code>contextualIdentities</code> est installée, la fonctionnalité d’identités contextuelles est automatiquement activée. Notez cependant qu’il est toujours possible pour l’utilisateur de désactiver la fonctionnalité en utilisant la préférence « privacy.userContext.enabled ». Si cela se produit, les appels de méthode <code>contextualIdentities</code> rejetteront leurs promesses avec un message d’erreur.</p> + +<p>Pour plus d’informations sur les identités contextuelles, consultez <a href="https://wiki.mozilla.org/Security/Contextual_Identity_Project/Containers">ce guide</a>.</p> + +<p>Les identités contextuelles ne sont actuellement pas supportes dans les autres navigateurs.</p> + +<p>Pour utiliser cette API, vous devez inclure la <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> « contextualIdentities » dans votre fichier <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a>.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("contextualIdentities.ContextualIdentity")}}</dt> + <dd>Contient des informations sur une identité contextuelle.</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("contextualIdentities.create()")}}</dt> + <dd>Crée une nouvelle identité contextuelle.</dd> + <dt>{{WebExtAPIRef("contextualIdentities.get()")}}</dt> + <dd>Récupère une identité contextuelle unique, compte tenu de son ID de cookie.</dd> + <dt>{{WebExtAPIRef("contextualIdentities.query()")}}</dt> + <dd>Récupère toutes les identités contextuelles ou toutes les identités contextuelles avec un nom particulier.</dd> + <dt>{{WebExtAPIRef("contextualIdentities.update()")}}</dt> + <dd>Met à jour les propriétés d’une identité contextuelle existante.</dd> + <dt>{{WebExtAPIRef("contextualIdentities.remove()")}}</dt> + <dd>Supprime une identité contextuelle.</dd> + <dt> + <h2 id="Événements">Événements</h2> + </dt> + <dt>{{WebExtAPIRef("contextualIdentities.onCreated")}}</dt> + <dd>Lancé lorsqu’une identité contextuelle est créée</dd> + <dt>{{WebExtAPIRef("contextualIdentities.onRemoved")}}</dt> + <dd>Lancé lorsqu’une identité contextuelle est supprimée</dd> + <dt>{{WebExtAPIRef("contextualIdentities.onUpdated")}}</dt> + <dd>Lancé lorsqu’une ou plusieurs propriétés d’une identité contextuelle sont mises à jour</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.contextualIdentities")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<p> </p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/oncreated/index.html b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/oncreated/index.html new file mode 100644 index 0000000000..76673a8943 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/oncreated/index.html @@ -0,0 +1,98 @@ +--- +title: contextualIdentities.onCreated +slug: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/onCreated +tags: + - API + - APIReference + - Add-ons + - Evènement + - Extensions + - WebExtensions + - contextualIdentities + - onCreated +translation_of: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/onCreated +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'une nouvelle identité contextuelle est créée. Les identités contextuelles peuvent être créées par des extensions en utilisant l'API <code>contextualIdentities</code>, ou directement par l'utilisateur, en utilisant l'interface utilisateur du navigateur.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.contextualIdentities.onCreated.addListener(listener) +browser.contextualIdentities.onCreated.removeListener(listener) +browser.contextualIdentities.onCreated.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>changeInfo</code></dt> + <dd><code>object</code>. Un objet contenant une seule propriété, <code>contextualIdentity</code>, qui est un objet {{WebExtAPIRef("contextualIdentities.ContextualIdentity")}} représentant l'identité créée.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.contextualIdentities.onCreated")}}</p> + +<h2 id="Examples">Examples</h2> + +<pre class="brush: js">function handleCreated(changeInfo) { + console.log(`Created: ${changeInfo.contextualIdentity.name}`); +} + +browser.contextualIdentities.onCreated.addListener(handleCreated);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/onremoved/index.html b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/onremoved/index.html new file mode 100644 index 0000000000..9d0426cbf9 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/onremoved/index.html @@ -0,0 +1,98 @@ +--- +title: contextualIdentities.onRemoved +slug: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/onRemoved +tags: + - API + - Add-ons + - Event + - Extensions + - Reference + - WebExtensions + - contextualIdentities + - onRemoved +translation_of: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/onRemoved +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'une nouvelle identité contextuelle est supprimée. Les identités contextuelles peuvent être supprimées par des extensions en utilisant l'API <code>contextualIdentities</code>, ou directement par l'utilisateur, en utilisant l'interface utilisateur du navigateur.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.contextualIdentities.onRemoved.addListener(listener) +browser.contextualIdentities.onRemoved.removeListener(listener) +browser.contextualIdentities.onRemoved.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>changeInfo</code></dt> + <dd><code>object</code>. Un objet qui contient une seule propriété, <code>contextualIdentity</code>, qui est un objet {{WebExtAPIRef("contextualIdentities.ContextualIdentity")}} représentant l'identité qui a été supprimée.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.contextualIdentities.onRemoved")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function handleRemoved(changeInfo) { + console.log(`Removed: ${changeInfo.contextualIdentity.name}`); +} + +browser.contextualIdentities.onRemoved.addListener(handleRemoved);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/onupdated/index.html b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/onupdated/index.html new file mode 100644 index 0000000000..7966a6f8a7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/onupdated/index.html @@ -0,0 +1,98 @@ +--- +title: contextualIdentities.onUpdated +slug: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/onUpdated +tags: + - API + - Add-ons + - Event + - Extensions + - Reference + - WebExtensions + - contextualIdentities + - onUpdated +translation_of: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/onUpdated +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque les propriétés d'une identité contextuelle, telles que son nom, son icône ou sa couleur, sont modifiées. Les identités contextuelles peuvent être mises à jour par des extensions en utilisant l'API <code>contextualIdentities</code> , ou directement par l'utilisateur, en utilisant l'interface utilisateur du navigateur.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.contextualIdentities.onUpdated.addListener(listener) +browser.contextualIdentities.onUpdated.removeListener(listener) +browser.contextualIdentities.onUpdated.hasListener(listener) +</pre> + +<p>Events have three functions:</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si le <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code>s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>changeInfo</code></dt> + <dd><code>object</code>. Un objet qui contient une seule propriété, <code>contextualIdentity</code>, qui est un objet {{WebExtAPIRef("contextualIdentities.ContextualIdentity")}} représentant l'identité dont les propriétés ont été mises à jour.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.contextualIdentities.onUpdated")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function handleUpdated(changeInfo) { + console.log(`Updated: ${changeInfo.contextualIdentity.name}`); +} + +browser.contextualIdentities.onUpdated.addListener(handleUpdated);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/query/index.html b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/query/index.html new file mode 100644 index 0000000000..e7578e6417 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/query/index.html @@ -0,0 +1,85 @@ +--- +title: contextualIdentities.query() +slug: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/query +tags: + - API + - Add-ons + - Extensions + - Méthode + - Reference + - WebExtensions + - contextualIdentities + - query +translation_of: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/query +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient des informations sur toutes les identités contextuelles ou sur les identités contextuelles correspondant à un argument de filtre donné.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getContext = browser.contextualIdentities.query( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd> + <p><code>object</code>. Un objet qui peut être utilisé pour filtrer les identités contextuelles renvoyées. Cela peut contenir l'une des propriétés suivantes :</p> + + <dl class="reference-values"> + <dt><code>name</code> {{optional_inline}}</dt> + <dd><code>string</code>. Renvoie uniquement les identités contextuelles avec ce nom.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un tableau d'objets {{WebExtAPIRef('contextualIdentities.ContextualIdentity', 'ContextualIdentity')}} chacun décrivant une seule identité. Si la fonctionnalité d'identités contextuelles n'est pas activée, la promesse est rejetée.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.contextualIdentities.query")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Retrieve all contextual identities, and log their names :</p> + +<pre class="brush: js">function onGot(contexts) { + for (let context of contexts) { + console.log(`Name: ${context.name}`); + } +} + +function onError(e) { + console.error(e); +} + +browser.contextualIdentities.query({}).then(onGot, onError);</pre> + +<p>Récupérez toutes les identités contextuelles dont les noms sont "my-thing", et consignez leurs noms :</p> + +<pre class="brush: js">function onGot(contexts) { + for (let context of contexts) { + console.log(`Name: ${context.name}`); + } +} + +function onError(e) { + console.error(e); +} + +browser.contextualIdentities.query({ + name: "my-thing" +}).then(onGot, onError); +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/remove/index.html b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/remove/index.html new file mode 100644 index 0000000000..c2001bcc8a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/remove/index.html @@ -0,0 +1,67 @@ +--- +title: contextualIdentities.remove() +slug: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/remove +tags: + - API + - Add-ons + - Extensions + - Méthode + - Reference + - WebExtensions + - contextualIdentities + - remove + - supprimer +translation_of: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/remove +--- +<div>{{AddonSidebar()}}</div> + +<p>Supprime une identité contextuelle, compte tenu de son ID de cookie.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removeContext = browser.contextualIdentities.remove( + cookieStoreId // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>cookieStoreId</code></dt> + <dd> + <p><code>string</code>. L'identifiant du cookie store de l'identité contextuelle. Étant donné que les identités contextuelles ont chacune leur propre magasin de cookies, cela sert d'identifiant pour l'identité contextuelle elle-même.</p> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un {{WebExtAPIRef('contextualIdentities.ContextualIdentity', 'ContextualIdentity')}} décrivant l'identité qui a été supprimée. Si l'identité n'a pas pu être trouvée ou si la fonctionnalité d'identités contextuelles n'est pas activée, la promesse est rejetée.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.contextualIdentities.remove")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p><span id="result_box" lang="fr"><span>Cet exemple tente de supprimer l'identité contextuelle dont l'ID est "firefox-container-1" </span></span>:</p> + +<pre class="brush: js">function onRemoved(context) { + if (!context) { + console.error("Context not found"); + } else { + console.log(`Removed identity: ${context.cookieStoreId}.`); + } +} + +function onError(e) { + console.error(e); +} + +browser.contextualIdentities.remove("firefox-container-1"). + then(onRemoved, onError);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/update/index.html b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/update/index.html new file mode 100644 index 0000000000..226780b24a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/contextualidentities/update/index.html @@ -0,0 +1,114 @@ +--- +title: contextualIdentities.update() +slug: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/update +tags: + - API + - Add-ons + - Extensions + - Méthode + - Reference + - Update + - WebExtensions + - contextualIdentities +translation_of: Mozilla/Add-ons/WebExtensions/API/contextualIdentities/update +--- +<div>{{AddonSidebar()}}</div> + +<p>Met à jour les propriétés d'une identité contextuelle, compte tenu de son ID de cookie.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var createContext = browser.contextualIdentities.update( + cookieStoreId, // string + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>cookieStoreId</code></dt> + <dd> + <p><code>string</code>. L'identifiant du cookie store de cette identité contextuelle. Étant donné que les identités contextuelles ont chacune leur propre magasin de cookies, cela sert d'identifiant pour l'identité contextuelle elle-même.</p> + </dd> + <dt><code>details</code></dt> + <dd> + <p><code>object</code>. Un objet contenant de nouvelles valeurs pour les propriétés que vous souhaitez modifier. Cela peut contenir l'une des propriétés suivantes :</p> + + <dl class="reference-values"> + <dt><code>name</code> {{optional_inline}}</dt> + <dd> + <p><code>string</code>. Un nouveau nom pour l'identité. Cela sera affiché dans l'interface utilisateur du navigateur, leur permettant d'ouvrir un nouvel onglet dans l'identité. Il sera également affiché dans la barre d'URL pour les onglets appartenant à cette identité.</p> + </dd> + <dt><code>color</code> {{optional_inline}}</dt> + <dd> + <p><code><code>string</code></code>. Une nouvelle couleur pour l'identité. Cela sera utilisé pour mettre en évidence les onglets appartenant à cette identité. Vous pouvez fournir l'une des valeurs suivantes ici :</p> + + <ul> + <li>"blue"</li> + <li>"turquoise"</li> + <li>"green"</li> + <li>"yellow"</li> + <li>"orange"</li> + <li>"red"</li> + <li>"pink"</li> + <li>"purple"</li> + <li>"toolbar"<span style="display: none;"> </span></li> + </ul> + </dd> + <dt><code>icon</code> {{optional_inline}}</dt> + <dd> + <p><code>string</code>. Une nouvelle icône pour l'identité. Vous pouvez fournir l'une des valeurs suivantes ici :</p> + + <ul> + <li>"fingerprint"</li> + <li>"briefcase"</li> + <li>"dollar"</li> + <li>"cart"</li> + <li>"circle"</li> + <li>"gift"</li> + <li>"vacation"</li> + <li>"food"</li> + <li>"fruit"</li> + <li>"pet"</li> + <li>"tree"</li> + <li>"chill"</li> + <li>"fence"</li> + </ul> + </dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un {{WebExtAPIRef('contextualIdentities.ContextualIdentity', 'ContextualIdentity')}} qui décrit l'identité mise à jour. Si l'identité n'a pas pu être trouvée ou si la fonctionnalité d'identités contextuelles n'est pas activée, la promesse est rejetée.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.contextualIdentities.update")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple met à jour l'identité contextuelle dont l'ID est "firefox-container-1" pour avoir un nouveau nom, une nouvelle couleur et une nouvelle icône :</p> + +<pre class="brush: js">function onUpdated(context) { + console.log(`New identity's name: ${context.name}.`); +} + +function onError(e) { + console.error(e); +} + +browser.contextualIdentities.update( + "firefox-container-1", { + name: "my-thing", + color: "purple", + icon: "briefcase" + }).then(onUpdated, onError);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/cookies/cookie/index.html b/files/fr/mozilla/add-ons/webextensions/api/cookies/cookie/index.html new file mode 100644 index 0000000000..edf72e7b14 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/cookies/cookie/index.html @@ -0,0 +1,113 @@ +--- +title: cookies.Cookie +slug: Mozilla/Add-ons/WebExtensions/API/cookies/Cookie +tags: + - API + - Add-ons + - Cookies + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - cookie +translation_of: Mozilla/Add-ons/WebExtensions/API/cookies/Cookie +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code>Cookie</code> de l'API {{WebExtAPIRef("cookies")}} représente des informations sur un cookie HTTP.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets, qui peuvent contenir les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>domain</code></dt> + <dd>Une <code>chaîne</code> représentant le domaine auquel appartient le cookie (par exemple "www.google.com", "example.com").</dd> + <dt><code>expirationDate</code>{{optional_inline}}</dt> + <dd>Un <code>number</code> représentant la date d'expiration du cookie en tant que nombre de secondes depuis l'époque UNIX. Non fourni pour les cookies de session.</dd> + <dt><code>firstPartyDomain</code></dt> + <dd>Une <code>chaîne</code> représentant le domaine de la première partie associé au cookie. Cela sera une chaine vide si le cookie a été défini alors que l'isolation de la première partie est désactivée. Voir <a href="/fr/Add-ons/WebExtensions/API/cookies#Isolement_de_la_première_partie">Isolement de la première partie</a>.</dd> + <dt><code>hostOnly</code></dt> + <dd>Un <code>booléen</code>, <code>true</code> si le cookie est un cookie hôte uniquement (c'est à dire que l'hôte de la requête doit correspondre exactement au domaine du cookie), ou <code>false</code> dans la case contraire.</dd> + <dt><code>httpOnly</code></dt> + <dd>Un <code>booléen</code>, <code>true</code> si le cookie est marqué comme HttpOnly (c'est à dire le cookie est inaccessible aux scripts côté client), ou <code>false</code> dans le cas contraire.</dd> + <dt><code>name</code></dt> + <dd>Une <code>chaîne</code> représentant le nom du cookie.</dd> + <dt><code>path</code></dt> + <dd>Une <code>chaîne</code> représentant le chemin du cookie.</dd> + <dt><code>secure</code></dt> + <dd>Un <code>booléen</code>, true si le cookie est marqué comme sécurisé (c'est à dire que si sa portée est limitée aux canaux sécurisés, généralement HTTPS), ou <code>false</code> dans le cas contraire.</dd> + <dt><code>session</code></dt> + <dd>Un <code>boolean</code>, <code>true</code> si le cookie est un cookie de session, ou <code>false</code> s'il s'agit d'un cookie persistant avec une date expiration.</dd> + <dt><code>sameSite</code></dt> + <dd>Une valeur {{WebExtAPIRef("cookies.SameSiteStatus")}} qui indique l'état SameSite du cookie.</dd> + <dt><code>storeId</code></dt> + <dd>Une <code>chaine</code> représentant l'ID du cookie store contenant ce cookie, tel que fourni par {{WebExtAPIRef("cookies.getAllCookieStores()")}}.</dd> + <dt><code>value</code></dt> + <dd>Une <code>chaîne</code> représentant la valeur du cookie.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.cookies.Cookie")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>La plupart des méthodes de l'API cookies impliquent qu'un objet <code>Cookie</code> soit utilisé en tant que paramètre d'entrée ou en tant que partie de la valeur retournée. Par exemple, un appel à {{WebExtAPIRef("cookies.getAll()")}} retourne un tableau d'objets <code>Cookie</code>.</p> + +<p>Dans l'exemple ci-dessous, nous avons demandé tous les cookies, puis enregistré quelque-unes des valeurs de chacun des objets <code>Cookie</code> :</p> + +<pre class="brush: js">function logCookies(cookies) { + for (cookie of cookies) { + console.log(`Domain: ${cookie.domain}`); + console.log(`Name: ${cookie.name}`); + console.log(`Value: ${cookie.value}`); + console.log(`Persistent: ${!cookie.session}`); + } +} + +var gettingAll = browser.cookies.getAll({}); +gettingAll.then(logCookies);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/cookies"><code>chrome.cookies</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json"><code>cookies.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/cookies/cookiestore/index.html b/files/fr/mozilla/add-ons/webextensions/api/cookies/cookiestore/index.html new file mode 100644 index 0000000000..a37e76b31f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/cookies/cookiestore/index.html @@ -0,0 +1,99 @@ +--- +title: cookies.CookieStore +slug: Mozilla/Add-ons/WebExtensions/API/cookies/CookieStore +tags: + - API + - Add-ons + - CookieStore + - Cookies + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/cookies/CookieStore +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code>CookieStore</code> de l'API {{WebExtAPIRef("cookies")}} représente un cookie store dans le navigateur.</p> + +<p>Les fenperes dans les différents mode de navigations peut utiliser différents magasins de cookies — Une fenêtre de navigation privée/ mode navigation privée, par exemple utilisera un magasin de cookies séparé d'une fenêtre non-privée / privée.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets, qui peuvent contenir les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>id</code></dt> + <dd>Une <code>chaîne</code> représentant l'identification unique pour le cookie store.***</dd> + <dt><code>incognito</code></dt> + <dd>Une valeur booléenne qui indique s'il s'agit d'un magasin de cookies incognito.</dd> + <dt><code>tabIds</code></dt> + <dd>Un <code>tableau</code> d'<code><code>entiers</code></code>, qui identifie tous les onglets du navigateur qui partagent ce cookie store.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.cookies.CookieStore")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Dans l'extrait suivant, la méthode {{WebExtAPIRef("cookies.getAllCookieStores()")}} permet de récupérer tous les magasins de cookies actuellement disponibles dans le navigateur et d'afficher chaque ID de cookie, ainsi que les onglets qui se partagent le cookie store.</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">logStores</span><span class="punctuation token">(</span>cookieStores<span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">for</span><span class="punctuation token">(</span>store <span class="keyword token">of</span> cookieStores<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="template-string token"><span class="string token">`Cookie store: </span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span>store<span class="punctuation token">.</span>id<span class="interpolation-punctuation punctuation token">}</span></span><span class="string token">\n Tab IDs: </span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span>store<span class="punctuation token">.</span>tabIds<span class="interpolation-punctuation punctuation token">}</span></span><span class="string token">`</span></span><span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span> +<span class="punctuation token">}</span> + +<span class="keyword token">var</span> getting <span class="operator token">=</span> browser<span class="punctuation token">.</span>cookies<span class="punctuation token">.</span><span class="function token">getAllCookieStores</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +getting<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>logStores<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>L'extrait de code suivant obtient tous les cookies stockés et enregistre ensuite le nombre total stocké et combien de ces cookies sont incognito.</p> + +<pre class="brush: js">browser.cookies.getAllCookieStores().then((stores) => { + var incognitoStores = stores.map(store => store.incognito); + console.log(`Of ${stores.length} cookie stores, ${incognitoStores.length} are incognito.`); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/cookies"><code>chrome.cookies</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json"><code>cookies.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/cookies/get/index.html b/files/fr/mozilla/add-ons/webextensions/api/cookies/get/index.html new file mode 100644 index 0000000000..be23fa820d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/cookies/get/index.html @@ -0,0 +1,122 @@ +--- +title: cookies.get() +slug: Mozilla/Add-ons/WebExtensions/API/cookies/get +tags: + - API + - Add-ons + - Cookies + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - get +translation_of: Mozilla/Add-ons/WebExtensions/API/cookies/get +--- +<div>{{AddonSidebar()}}</div> + +<p>La méthode <strong><code>get()</code></strong> de l'API {{WebExtAPIRef("cookies")}} récupère les informations d'un seul cookie, par son nom et son URL.</p> + +<p>Si plus d'un cookie portant le même nom existent pour une URL donnée, celui contenant le chemin le plus long sera retourné. Pour les cookies ayant la même longueur de chemin, le plus ancien cookie sera retourné. Si aucun cookie ne correspond alors <code>null</code> est retourné.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getting = browser.cookies.get( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd>Un <code>objet</code> contenant les informations pouvant être utilisées pour récupérer un cookie. Il peut inclure les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>firstPartyDomain</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant le domaine de première partie avec lequel le cookie à récupérer est associé. Cette propriété doit être fournie si l'isolation de la première partie est activée sur le navigateur. Voir <a href="/fr/Add-ons/WebExtensions/API/cookies#Isolement_de_la_première_partie">Isolement de la première partie</a>.</dd> + <dt><code>name</code></dt> + <dd>Une <code>chaîne</code> représentant le nom du cookie à récupérer.</dd> + <dt><code>storeId</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant l'ID du {{WebExtAPIRef("cookies.CookieStore", "cookie store")}} dans lequel rechercher le cookie (tel que renvoyé par {{WebExtAPIRef("cookies.getAllCookieStores()")}}). Par défault, le cookie store du contexte d'exécution actuel sera utilisé.</dd> + <dt><code>url</code></dt> + <dd>Une <code>chaîne</code> représentant l'URL avec laquelle le cookie à récupérer est associé. Cet argument peut être une URL complète, auquel cas toute donnée suivant le chemin d'URL (par exemple la chaîne de requête) est simplement ignorée. Si les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions"> permissions d'hôte</a> pour cette URL ne sont pas spécifiées dans le <a href="/fr/Add-ons/WebExtensions/manifest.json">fichier manifeste</a> de l'extension, l'appel de l'API échouera.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef('cookies.Cookie', 'Cookie')}} contenant des détails sur le cookie, ou <code>null</code> si le cookie n'a pas été trouvé.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.cookies.get")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple tente d'obtenir le cookie nommé "favourite-colour", associé à l'URL de l'onglet actuellement actif :</p> + +<pre class="brush: js">function logCookie(cookie) { + if (cookie) { + console.log(cookie.value); + } +} + +function getCookie(tabs) { + var getting = browser.cookies.get({ + url: tabs[0].url, + name: "favourite-colour" + }); + getting.then(logCookie); +} + +var getActive = browser.tabs.query({ + active: true, + currentWindow: true +}); +getActive.then(getCookie);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/cookies"><code>chrome.cookies</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json"><code>cookies.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/cookies/getall/index.html b/files/fr/mozilla/add-ons/webextensions/api/cookies/getall/index.html new file mode 100644 index 0000000000..f0c9922312 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/cookies/getall/index.html @@ -0,0 +1,120 @@ +--- +title: cookies.getAll() +slug: Mozilla/Add-ons/WebExtensions/API/cookies/getAll +tags: + - API + - Add-ons + - Cookies + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getAll +translation_of: Mozilla/Add-ons/WebExtensions/API/cookies/getAll +--- +<div>{{AddonSidebar()}}</div> + +<p>La méthode <strong><code>getAll()</code></strong> de l'API {{WebExtAPIRef("cookies")}} récupère tous les cookies d'un seul cookie store qui correspondent aux informations fournies.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getting = browser.cookies.getAll( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd>Un <code>object</code> contenant des détails pouvant être utilisés pour faire correspondre les cookies à extraire. Les propriétés incluses sont les suivantes (voir <a href="/fr/Add-ons/WebExtensions/API/cookies/Cookie#Type">type de cookie</a> pour plus d'informations sur celles-ci ) :</dd> + <dd> + <dl class="reference-values"> + <dt><code>domain</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant un domaine auquel les cookies doivent être associés (ils peuvent être associés soit à ce domaine exact, soit à l'un de ses sous-domaines).</dd> + <dt><code>firstPartyDomain</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant le domaine de première partie avec lequel le cookie à récupérer est associé.</dd> + <dd>Cette propriété doit être fournie si l'isolation de la première partie est activée sur le navigateur. Vous pouvez cependant passer <code>null</code> dans cette situation. Si vous faites cela, alors les cookies avec n'importe quelle valeur pour <code>firstPartyDomain</code>, ainsi que les cookies qui n'ont pas de set <code>firstPartyDomain</code> , seront inclus dans les résultats. Voir <a href="/fr/Add-ons/WebExtensions/API/cookies#Isolement_de_la_première_partie">Isolement de la première partie</a>.</dd> + <dt><code>name</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant un nom que les cookies devraient avoir.</dd> + <dt><code>path</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant un chemin - le chemin des cookies doit être identique à celui-ci.</dd> + <dt><code>secure</code>{{optional_inline}}</dt> + <dd>Un <code>booléen</code> — filtre les cookies par leur propriété <code>sécurisée</code>, vous permettant de filtrer les cookies sécurisés contre les cookies non sécurisés.</dd> + <dt><code>session</code>{{optional_inline}}</dt> + <dd>Un <code>booléen</code>— filtre les cookies en fonction de leur propriété de <code>session</code>, ce qui vous permet de filtrer les cookies de session par rapport aux cookies persistants.</dd> + <dt><code>storeId</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant le magasin de cookies pour récupérer les cookies. S'il est omi, le cookie store du contexte d'exécution actuel sera utilisé.</dd> + <dt><code>url</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant une URL à laquelle les cookies récupérés doivent être associés.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un tableau d'objets <code>{{WebExtAPIRef('cookies.Cookie')}}</code> correspondant aux propriétés données dans le paramètre <code>details</code>. Seuls les cookies non expirés sont renvoyés. Les cookies retournés seront triés par longueur de chemin, du plus long au plus court. Si plusieurs cookies ont la même longueur de chemin, ceux dont l'heure de création est la plus proche seront les premiers.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.cookies.getAll")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Dans l'extrait suivant, nous appelons pour obtenir tous les cookies que le navigateur a actuellement stockés qui ont un nom de "favourite-colour". Lorsque le résultat est renvoyé, nous imprimons la valeur de chaque résultat à la console.</p> + +<pre class="brush: js">function logCookies(cookies) { + for (let cookie of cookies) { + console.log(cookie.value); + } +} + +var gettingAll = browser.cookies.getAll({ + name: "favourite-colour" +}); +gettingAll.then(logCookies);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/cookies"><code>chrome.cookies</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json"><code>cookies.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/cookies/getallcookiestores/index.html b/files/fr/mozilla/add-ons/webextensions/api/cookies/getallcookiestores/index.html new file mode 100644 index 0000000000..4b5b2dbfa7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/cookies/getallcookiestores/index.html @@ -0,0 +1,101 @@ +--- +title: cookies.getAllCookieStores() +slug: Mozilla/Add-ons/WebExtensions/API/cookies/getAllCookieStores +tags: + - API + - Add-ons + - Cookies + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getAllCookieStores +translation_of: Mozilla/Add-ons/WebExtensions/API/cookies/getAllCookieStores +--- +<div>{{AddonSidebar()}}</div> + +<p>La méthode <strong><code>getAllCookieStores()</code></strong> de l'API {{WebExtAPIRef("cookies")}} retourne une liste de tous les cookies stores.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingStores = browser.cookies.getAllCookieStores() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun.</p> + +<dl> + <dd> + <dl class="reference-values"> + </dl> + </dd> +</dl> + +<h3 id="Valeur_renvoyée">Valeur renvoyée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un <code>tableau</code> d'objets {{WebExtAPIRef('cookies.CookieStore')}} représentant tous les cookies stores existants.</p> + +<h2 id="Compatibibilité_du_navigateur">Compatibibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.cookies.getAllCookieStores")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Dans l'extrait suivant, la méthode <code>getAllCookieStores()</code> permet de récupérer tous les cookies stores actuellement disponible dans le navigateur et d'afficher chaque ID de cookie et les onglets qui partagent actuellement chaque cookie store.</p> + +<pre class="brush: js">function logStores(cookieStores) { + for (let store of cookieStores) { + console.log(`Cookie store: ${store.id}\n Tab IDs: ${store.tabIds}`); + } +} + +var getting = browser.cookies.getAllCookieStores(); +getting.then(logStores);</pre> + +<p>Chaque membre du tableau <code>cookieStores</code> est un objet {{WebExtAPIRef("cookies.CookieStore")}}.</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/cookies"><code>chrome.cookies</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json"><code>cookies.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/cookies/index.html b/files/fr/mozilla/add-ons/webextensions/api/cookies/index.html new file mode 100644 index 0000000000..41e2ec1268 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/cookies/index.html @@ -0,0 +1,169 @@ +--- +title: cookies +slug: Mozilla/Add-ons/WebExtensions/API/cookies +tags: + - API + - Add-ons + - Cookies + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/cookies +--- +<div>{{AddonSidebar}}</div> + +<p>Permet aux extensions d'obtenir et de définir des cookies, et d'être averti quand ils changent.</p> + +<p>Pour utiliser cette API, vous devez inclure l'<a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API permission</a> "cookies" dans votre fichier <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a>, ainsi que les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions d'hôte</a> pour les sites dont vous devez accéder aux cookies. Voir les <a href="/fr/Add-ons/WebExtensions/API/cookies#Permissions">permissions cookies</a>.</p> + +<h2 id="Permissions">Permissions</h2> + +<p>Pour utiliser cette API, un module complémentaire doit spécifier la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission d'API</a> "cookies" dans son manifest, ainsi que les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions host</a> pour tous les sites pour lesquels il souhaite accéder aux cookies. L'add-on peut lire ou écrire des cookies qui pourraient être lus ou écrits par une URL correspondant aux permissions de l'hôte. Par exemple :</p> + +<dl> + <dt><code>http://*.example.com/</code></dt> + <dd> + <p>Un module complémentaire avec cette autorisation d'hôte peut :</p> + + <ul> + <li>Lire un cookie non sécurisé pour <code>www.example.com</code>, avec n'importe quel chemin.</li> + <li>Écrire un cookie ou non sécurisé pour <code>www.example.com</code>, avec n'importe quel chemin.</li> + </ul> + + <p>Il ne peut <em>pas</em> :</p> + + <ul> + <li>Lire un cookie sécurisé pour <code>www.example.com</code>.</li> + </ul> + </dd> + <dt><code>http://www.example.com/</code></dt> + <dd> + <p>Un module complémentaire avec cette permission d'hôte peut :</p> + + <ul> + <li>Lire un cookie non sécurisé pour <code>www.example.com</code>, avec n'importe quel chemin.</li> + <li>Lire un cookie non sécurisé pour <code>.example.com</code>, avec n'importe quel chemin.</li> + <li>Écrire un cookie sécurisé ou non sécurisé pour <code>www.example.com</code> avec n'importe quel chemin.</li> + <li>Écrire un cookie sécurisé ou non sécurisé pour <code>.example.com</code> avec n'importe quel chemin.</li> + </ul> + + <p>Il ne peut <em>pas</em> :</p> + + <ul> + <li>Lire ou écrire un cookie pour <code>foo.example.com</code>.</li> + <li>Lire ou écrire un cookie pour <code>foo.www.example.com</code>.</li> + </ul> + </dd> + <dt><code>*://*.example.com/</code></dt> + <dd> + <p>Un module complémentaire avec çà permission d'hôtes n add-on with this host permission may:</p> + + <ul> + <li>Read or write a secure or non-secure cookie for <code>www.example.com</code> with any path.</li> + </ul> + </dd> +</dl> + +<h2 id="Isolement_de_la_première_partie">Isolement de la première partie</h2> + +<p>Les cookies tiers sont des cookies qui sont définis par un site Web autre que celui sur lequel vous êtes actuellement. Par exemple :</p> + +<ol> + <li>Vous visitez <a href="http://bbc.com">bbc.com</a>. Il contient une annonce de <a href="http://tracker.com">tracker.com</a> qui définit un cookie associé au domaine "<a href="http://tracker.com">tracker.com</a>".</li> + <li>Vous visitez <a href="http://cnn.com">cnn.com</a>. Il contient également une annonce de <a href="http://tracker.com">tracker.com</a> qui définit un cookie associé au domaine "<a href="http://tracker.com">tracker.com</a>".</li> + <li>Finalement, les deux cookies peuvent être envoyés à <a href="http://tracker.com">tracker.com</a>. qui peut alors comprendre que le même utilisateur a visité les deux sites.</li> +</ol> + +<p>Lorsque l'isolement de la première partie est activé, les cookies sont en outre qualifiés par le domaine de la page d'origine visitée par l'utilisateur (essentiellement, le domaine montré à l'utilisateur dans la barre d'URL, également appelé "première partie du domaine"). Cela signifie qu'un tracker ne peut pas corréler son cookie de <a href="http://bbc.com">bbc.com</a> avec son cookie de <a href="http://cnn.com">cnn.com</a>, de sorte que le tracker ne peut pas suivre un seul utilisateur sur les deux sites.</p> + +<p>L'isolement de la première partie peut être activé directement par l'utilisateur en ajustant la configuration du navigateur et peut être défini par des extensions à l'aide du paramètre <code><a href="/en-US/Add-ons/WebExtensions/API/privacy/websites#Properties">firstPartyIsolate</a></code> de l'API de <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/privacy">privacy</a></code> Notez que l'isolation de première partie est activée par défaut dans le <a href="https://www.torproject.org/">Tor Browser</a>.</p> + +<p>Dans l'API <code>cookies</code>, le domaine de première partie est représenté à l'aide de l'attribut <code>firstPartyDomain</code>. Tous les cookies configurés pendant l'isolement de la première partie ont cet attribut défini sur le domaine de la page d'origine. Dans l'exemple ci-dessus, ce serait "<a href="http://bbc.com">bbc.com</a>" pour un cookie et "<a href="http://cnn.com">cnn.com</a>" pour l'autre. Tous les cookies définis par les sites Web alors que l'isolation de première partie est désactivée auront cette propriété définie sur une chaîne vide.<br> + <br> + Le {{WebExtAPIRef("cookies.get()")}}, {{WebExtAPIRef("cookies.getAll()")}}, {{WebExtAPIRef("cookies.set()")}} et {{WebExtAPIRef("cookies.remove()")}} Les API acceptent toutes une option <code>firstPartyDomain</code>.</p> + +<p>Lorsque l'isolation de première partie est activée, vous devez fournir cette option ou les appels de l'API échoueront. Pour <code>get()</code>, <code>set()</code>, et <code>remove()</code>vous devez passer une valeur de chaîne de caractères.</p> + +<p>Pour <code>getAll()</code>, vous pouvez aussi passer <code>null</code> ici, et ceci obtiendra tous les cookies,<br> + qu'ils aient ou non une valeur non vide pour <code>firstPartyDomain.</code></p> + +<p>Lorsque l'isolation de la première partie est désactivée, le paramètre <code>firstPartyDomain</code> est optionnel et par défaut est une chaîne vide. Une chaîne non vide peut être utilisée pour récupérer ou modifier les cookies d'isolation de première partie. De même, passer <code>null</code> comme <code>firstPartyDomain</code> pour <code>getAll()</code> retournera tous les cookies.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("cookies.Cookie")}}</dt> + <dd>Représente les informations sur un cookie HTTP.</dd> + <dt>{{WebExtAPIRef("cookies.CookieStore")}}</dt> + <dd>Représente un cookie store dans le navigateur.</dd> + <dt>{{WebExtAPIRef("cookies.OnChangedCause")}}</dt> + <dd>Représente la raison pour laquelle un cookie a été modifié.***</dd> + <dt>{{WebExtAPIRef("cookies.SameSiteStatus")}}</dt> + <dd>Représente le même statut du cookie sur le site.</dd> +</dl> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("cookies.get()")}}</dt> + <dd>Récupère les informations sur un cookie unique.</dd> + <dt>{{WebExtAPIRef("cookies.getAll()")}}</dt> + <dd>Récupère tous les cookies correspondant à un ensemble de filtres données.</dd> + <dt>{{WebExtAPIRef("cookies.set()")}}</dt> + <dd>Définit un cookie avec les données d'un cookie donné ; peut remplacer les cookies équivalents s'ils existent.</dd> + <dt>{{WebExtAPIRef("cookies.remove()")}}</dt> + <dd>Supprime un cookie par son nom.</dd> + <dt>{{WebExtAPIRef("cookies.getAllCookieStores()")}}</dt> + <dd>Liste tous les cookies stores existants.</dd> +</dl> + +<h2 id="Gestionnaire_dévénements">Gestionnaire d'événements</h2> + +<dl> + <dt>{{WebExtAPIRef("cookies.onChanged")}}</dt> + <dd>Détails quand un cookie est défini ou supprimé.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.cookies")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/cookies"><code>chrome.cookies</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json"><code>cookies.json</code></a> dans le code Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/cookies/onchanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/cookies/onchanged/index.html new file mode 100644 index 0000000000..c2b067a931 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/cookies/onchanged/index.html @@ -0,0 +1,128 @@ +--- +title: cookies.onChanged +slug: Mozilla/Add-ons/WebExtensions/API/cookies/onChanged +tags: + - API + - Add-ons + - Cookies + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onChanged +translation_of: Mozilla/Add-ons/WebExtensions/API/cookies/onChanged +--- +<div>{{AddonSidebar()}}</div> + +<p>L'événement <code>onChanged</code> de l'API {{WebExtAPIRef("cookies")}} est déclenché lorsqu'un cookie est défini ou supprimé.</p> + +<p>Notez que la mise à jour des propriétés d'un cookie est implémentée en deux étapes :</p> + +<ol> + <li>Tout d'abord, le cookie à mettre à jour est tout d'abord entiérement supprimé, généralement une notification avec un {{WebExtAPIRef("cookies.OnChangedCause")}} d'écrasement.</li> + <li>Ensuite, un nouveau cookie est écrit avec les valeurs mises à jour, généralement une seconde notification avec un {{WebExtAPIRef("cookies.OnChangedCause")}} <code>explicite</code>.</li> +</ol> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.cookies.onChanged.addListener(listener) +browser.cookies.onChanged.removeListener(listener) +browser.cookies.onChanged.hasListener(listener) +</pre> + +<p>Cet API est également disponible en tant que <code>browser.cookies.onChanged.*</code>.</p> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à l'événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument de l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si l'écouteur est enregistré pour cet événement. Retourne <code>true</code> s'il écoute, <code>false</code> sinon.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Une fonction de rappel qui sera appelée lorsque l'événement se produira. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>changeInfo</code></dt> + <dd>Un <code>objet</code> contenant les détails de la modification survenue. Ses propriétés sont les suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>removed</code></dt> + <dd>Un <code>booléen</code> défini sur <code>true</code> si un cookie a été supprimé et sinon false.</dd> + <dt><code>cookie</code></dt> + <dd>Un objet {{WebExtAPIRef('cookies.Cookie')}} contenant les informations sur le cookie qui a été défini ou supprimé.</dd> + <dt><code>cause</code></dt> + <dd>Une valeur {{WebExtAPIRef('cookies.OnChangedCause')}} représentant la raison sous-jacente de la modification du cookie.</dd> + </dl> + </dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.cookies.onChanged")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple écoute les événements <code>onChanged</code> et enregistre les détails de l'argument <code>changeInfo</code> :</p> + +<pre class="brush: js line-numbers language-js">browser.cookies.onChanged.addListener(function(changeInfo) { + console.log('Cookie changed: ' + + '\n * Cookie: ' + JSON.stringify(changeInfo.cookie) + + '\n * Cause: ' + changeInfo.cause + + '\n * Removed: ' + changeInfo.removed); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/cookies"><code>chrome.cookies</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json"><code>cookies.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/cookies/onchangedcause/index.html b/files/fr/mozilla/add-ons/webextensions/api/cookies/onchangedcause/index.html new file mode 100644 index 0000000000..4ee6abaa1d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/cookies/onchangedcause/index.html @@ -0,0 +1,92 @@ +--- +title: cookies.OnChangedCause +slug: Mozilla/Add-ons/WebExtensions/API/cookies/OnChangedCause +tags: + - API + - Add-ons + - Cookies + - Extensions + - Non-standard + - OnChangedCause + - Reference + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/cookies/OnChangedCause +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code>OnChangedCause</code> de l'API {{WebExtAPIRef("cookies")}} représente la raison pour laquelle un cookie a été modifié.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<dl> + <dt><code>evicted</code></dt> + <dd>Un cookie a été automatiquement supprimé en raison d'un nettoyage de mémoire.</dd> + <dt><code>expired</code></dt> + <dd>Un cookie a été automatiquement supprimé en raison de l'expiration.</dd> + <dt><code>explicit</code></dt> + <dd>Un cookie a été inséré ou supprimé via un appel explicite à {{WebExtAPIRef("cookies.remove()")}}.</dd> + <dt><code>expired_overwrite</code></dt> + <dd>Un cookie a été remplacé par un cookie dont la date d'expiration est déjà expirée.</dd> + <dt><code>overwrite</code></dt> + <dd>Un appel à {{WebExtAPIRef("cookies.set()")}} a remplacé ce cookie par un autre.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.cookies.OnChangedCause")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Vous pouvez écouter l'événement {{WebExtAPIRef("cookies.onChanged")}} pour être averti lorsque les cookies changent. L'écouteur reçoit un objet <code>changeInfo</code> qui contient une propriété <code>cause</code>, dont la valeur est une chaîne <code>OnChangeCaused</code> :</p> + +<pre class="brush: js">browser.cookies.onChanged.addListener(function(changeInfo) { + console.log('Cookie changed: ' + + '\n * Cookie: ' + JSON.stringify(changeInfo.cookie) + + '\n * Cause: ' + changeInfo.cause + + '\n * Removed: ' + changeInfo.removed); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/cookies"><code>chrome.cookies</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json"><code>cookies.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/cookies/remove/index.html b/files/fr/mozilla/add-ons/webextensions/api/cookies/remove/index.html new file mode 100644 index 0000000000..68e82fb318 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/cookies/remove/index.html @@ -0,0 +1,121 @@ +--- +title: cookies.remove() +slug: Mozilla/Add-ons/WebExtensions/API/cookies/remove +tags: + - API + - Add-ons + - Cookies + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - remove +translation_of: Mozilla/Add-ons/WebExtensions/API/cookies/remove +--- +<div>{{AddonSidebar()}}</div> + +<p>La méthode <strong><code>remove()</code></strong> de l'API {{WebExtAPIRef("cookies")}} supprime un cookie, compte tenu de son nom et de son URL.</p> + +<p>L'appel réussit uniquement si vous incluez la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API</a> "cookies" dans votre fichier <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a>, ainsi que les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions d'hôte</a> pour l'URL indiquée dans son manifest.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.cookies.remove( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd>Un <code>objet</code> contenant des informations permettant d'identifier le cookie à supprimer. Il contient les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>firstPartyDomain</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant le domaine de première partie avec lequel le cookie sera associé. Cette propriété doit être fournie si l'isolation de la première partie est activée sur le navigateur. Voir <a href="/fr/Add-ons/WebExtensions/API/cookies#Isolement_de_la_première_partie">Isolement de la première partie</a>.</dd> + <dt><code>name</code></dt> + <dd>Une <code>chaîne</code> représenant le nom du cookie à supprimer.</dd> + <dt><code>storeId</code>{{optional_inline}}</dt> + <dd>Une<code> chaîne</code> représentant l'ID du cookie store pour trouver le cookie. Si elle n'est pas spécifiée, le cookie est recherché par défaut dans le cookie store du contexte d'exécution actuel.</dd> + <dt><code>url</code></dt> + <dd>Une <code>chaîne</code> représentant l'URL associée au cookie. Si l'extension n'a pas de <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions d'hôte</a> pour cette URL, l'appel de l'API échouera.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef('cookies.Cookie')}} contenant des détails sur le cookie qui a été supprimé. Si un cookie correspondant au paramètre <code>details</code> n'a pas pu être trouvé, la promesse est remplie avec <code>null</code>. Si l'appel échoue pour une raison quelconque, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.cookies.remove")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple tente de supprimer le cookie nommé "favourite-colour", dont l'URL correspond à l'URL du document hébergé par l'onglet actuellement actif :</p> + +<pre class="brush: js">function onRemoved(cookie) { + console.log(`Removed: ${cookie}`); +} + +function onError(error) { + console.log(`Error removing cookie: ${error}`); +} + +function removeCookie(tabs) { + var removing = browser.cookies.remove({ + url: tabs[0].url, + name: "favourite-colour" + }); + removing.then(onRemoved, onError); +} + +var getActive = browser.tabs.query({active: true, currentWindow: true}); +getActive.then(removeCookie);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/cookies"><code>chrome.cookies</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json"><code>cookies.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/cookies/samesitestatus/index.html b/files/fr/mozilla/add-ons/webextensions/api/cookies/samesitestatus/index.html new file mode 100644 index 0000000000..d52a8c54a5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/cookies/samesitestatus/index.html @@ -0,0 +1,35 @@ +--- +title: cookies.SameSiteStatus +slug: Mozilla/Add-ons/WebExtensions/API/cookies/SameSiteStatus +tags: + - API + - Add-ons + - Cookies + - Extensions + - Interface + - Non-standard + - Reference + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/cookies/SameSiteStatus +--- +<div>{{AddonSidebar()}}</div> + +<div></div> + +<p>Le type <code>SameSiteStatus</code> de l'API {{WebExtAPIRef("cookies")}} représente des informations sur l'état <code>SameSite</code> d'un cookie.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes de caractères. Les valeurs possibles sont :</p> + +<dl> + <dt><code>no_restriction</code></dt> + <dd>Représente un ensemble de cookies sans attribut <code>SameSite</code>.</dd> + <dt><code>lax</code></dt> + <dd>Correspond au <code>SameSite=Lax</code></dd> + <dt><code>strict</code></dt> + <dd>Correspond à un ensemble de témoins avec <code>SameSite=Strict</code></dd> +</dl> + +<p>Voir les <a href="/fr/docs/Web/HTTP/Cookies">cookies HTTP</a> pour plus d'informations.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/cookies/set/index.html b/files/fr/mozilla/add-ons/webextensions/api/cookies/set/index.html new file mode 100644 index 0000000000..209857b300 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/cookies/set/index.html @@ -0,0 +1,124 @@ +--- +title: cookies.set() +slug: Mozilla/Add-ons/WebExtensions/API/cookies/set +tags: + - API + - Add-ons + - Cookies + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - set +translation_of: Mozilla/Add-ons/WebExtensions/API/cookies/set +--- +<div>{{AddonSidebar()}}</div> + +<p>La méthode <strong><code>set()</code></strong> de l'API {{WebExtAPIRef("cookies")}} définit un cookie contenant des données précises de cookie. Cette méthode équivaut à l'émission d'un en-tête HTTP <code>Set-Cookie</code> lors d'une requête à une URL donnée.</p> + +<p>L'appel réussit uniquement si vous incluez la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API</a> "cookies" dans votre fichier <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a>, ainsi que les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions d'hôte</a> pour l'URL indiquée dans son manifest. L’URL donnée a également besoin des permissions nécessaires pour créer un cookie avec les paramètres donnés.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var setting = browser.cookies.set( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd>Un <code>objet</code> contenant les détails du cookie que vous souhaitez définir. Il peut avoir les propriétés suivantes :</dd> + <dt><code>domain</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant le domaine du cookie. S’il est omis, le cookie devient un cookie hôte uniquement.</dd> + <dt><code>expirationDate</code>{{optional_inline}}</dt> + <dd>Un <code>nombre</code> qui représente la date d'expiration du cookie en tant que nombre de secondes écoulées depuis l'époque UNIX. S’il est omis, le cookie devient un cookie de session.</dd> + <dt><code>firstPartyDomain</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant le domaine de première partie avec lequel le cookie sera associé. Cette propriété doit être fournie si l'isolation de la première partie est activée sur le navigateur. Voir <a href="/fr/Add-ons/WebExtensions/API/cookies#Isolement_de_la_première_partie">Isolement de la première partie</a>.</dd> + <dt><code>httpOnly</code>{{optional_inline}}</dt> + <dd>Un <code>booléen</code> qui spécifie si le cookie doit être marqué comme HttpOnly (<code>true</code>), ou pas (false). S’il est omis, la valeur par défaut est <code>false</code>.</dd> + <dt><code>name</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant le nom du cookie. S’il est omis, il est vide par défaut.</dd> + <dt><code>path</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant le chemin du cookie. S’il est omis, la valeur par défaut est la partie du chemin du paramètre de l'URL.</dd> + <dt><code>sameSite{{optional_inline}}</code></dt> + <dd>Une valeur {{WebExtAPIRef("cookies.SameSiteStatus")}} qui indique l’état SameSite du cookie. Si omis, la valeur par défaut 0, 'no_restriction'.</dd> + <dt><code>secure</code>{{optional_inline}}</dt> + <dd>Un <code>booléen</code> qui spécifie si le cookie doit être marqué comme sécurisé (<code>true</code>), ou pas (false). S’il est omis, la valeur par défaut est <code>false</code>.</dd> + <dt><code>storeId</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant l’ID du cookie store dans lequel défini le cookie. S’il est omiS, le cookie est défini par défaut dans le cookie store du contexte d'exécution actuel.</dd> + <dt><code>url</code></dt> + <dd>Une <code>chaîne</code> représentant l'URI de requête à associer au cookie. Cette valeur peut affecter les valeurs par défaut du cookie créé. Si les autorisations d'hôte pour cette URL ne sont pas spécifiées dans le fichier manifest, l’appel de la méthode échouera.</dd> + <dt><code>value</code>{{optional_inline}}</dt> + <dd>Une <code>chaîne</code> représentant la valeur du cookie. S’il est omis, c’est vide par défaut.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef('cookies.Cookie')}} contenant les détails sur le cookie qui a été défini. Si l'appel échoue pour une quelconque raison, la promesse sera rejetée avec un message d’erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.cookies.set")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple définit un cookie pour le document hébergé par l'onglet actuellement actif :</p> + +<pre class="brush: js">var getActive = browser.tabs.query({active: true, currentWindow: true}); +getActive.then(setCookie); + +function setCookie(tabs) { + browser.cookies.set({ + url: tabs[0].url, + name: "favourite-colour", + value: "red" + }); +} +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/cookies"><code>chrome.cookies</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/cookies.json"><code>cookies.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/eval/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/eval/index.html new file mode 100644 index 0000000000..f6cf7e86bb --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/eval/index.html @@ -0,0 +1,219 @@ +--- +title: devtools.inspectedWindow.eval() +slug: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/eval +tags: + - API + - Add-ons + - Devtools.inspectedWindows + - Extensions + - Reference + - WebExtensions + - eval +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/eval +--- +<div>{{AddonSidebar()}}</div> + +<p>Exécute JavaScript dans la fenêtre à laquelle les devtools sont attachés.</p> + +<p>C'est un peu comme utiliser {{WebExtAPIRef("tabs.executeScript()")}} pour joindre un script de contenu, mais avec deux différences principales:</p> + +<p>Tout d'abord, le JavaScript peut utiliser un ensemble de <a href="#Helpers">commandes spéciales que les navigateurs fournissent généralement dans leur implémentation de console devtools </a>: par exemple, en utilisant "$0" pour designer l'élément actuellement sélectionné dans l'inspecteur.</p> + +<p>Deuxièmement, le JavaScript que vous exécutez peut voir les modifications apportées à la page par des scripts que la page a chargés. Cela contraste avec les scripts de contenu, qui voient la page <a href="/fr/Add-ons/WebExtensions/Content_scripts#DOM_access">telle qu'elle existerait si aucun script de page n'était pas chargé</a>. Cependant, notez que l'isolement fourni par les scripts de contenu est une fonction de sécurité délibérée, destinée à rendre plus difficile la confusion ou la subversion des WebExtensions par des pages web malveillantes ou simplement non coopératives en redéfinissant les fonctions et les propriétés du DOM. Cela signifie que vous devez être très prudent si vous renoncez à cette protection en utilisant eval(), et devrait utiliser les scripts de contenu, sauf si vous devez utiliser eval().</p> + +<p>Le script est évalué par défaut dans le cadre principal de la page. Le script doit évaluer une valeur qui peut être représentée comme JSON (ce qui signifie que, par exemple, il peut ne pas évaluer une fonction ou un objet contenant des fonctions). Par défaut, le script ne voit pas les scripts de contenu attachés à la page.</p> + +<p>Vous ne pouvez pas appeler eval() sur les fenêtres de navigateur privilégiées telles que "about: addons".</p> + +<p>Vous pouvez éventuellement fournir un paramètre d'options, qui comprend des options pour évaluer le script dans une image différente ou dans le contexte des scripts de contenu attachés. Notez que Firefox ne supporte pas encore le paramètre d'options.</p> + +<p>La fonction eval() renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui résout le résultat évalué du script ou une erreur.</p> + +<h2 id="Aides">Aides</h2> + +<p>Le script accède à un certain nombre d'objets qui aident le script injecté à interagir avec les outils du développeur. Les assistants suivants sont actuellement pris en charge:</p> + +<dl> + <dt><code>$0</code></dt> + <dd>Contient une référence à l'élément actuellement sélectionné dans l'inspecteur Devtools.</dd> + <dt><code>inspect()</code></dt> + <dd>Etant donné un objet, s'il s'agit d'un élément DOM dans la page, sélectionnez-le dans l'inspecteur devtools, sinon il crée un aperçu de l'objet dans la webconsole.</dd> +</dl> + +<p><a href="#Examples">Voir quelques exemples.</a></p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var evaluating = browser.devtools.inspectedWindow.eval( + expression, // string + options // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>expression</code></dt> + <dd><code>string</code>. L'expression JavaScript à évaluer. La chaîne doit évaluer un objet qui peut être représenté comme JSON, ou une exception sera lancée. Par exemple, l'expression ne doit pas évaluer une fonction.</dd> + <dt><code>options</code>{{optional_inline}}</dt> + <dd><code>object</code>. Options pour la fonction (Notez que Firefox ne supporte pas encore cette option), comme suit :</dd> + <dd> + <dl class="reference-values"> + <dt><code>frameURL</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'URL du cadre dans lequel à évaluer l'expression. Si cela est supprimé, l'expression est évaluée dans la trame principale de la fenêtre.</dd> + <dt><code>useContentScriptContext</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si c'est vrai, évaluez l'expression dans le contexte des scripts de contenu que cette extension a attachée à la page. Si vous définissez cette option, vous devez d'abord attacher certains scripts de contenu à la page ou une erreur Devtools sera lancée.</dd> + <dt><code>contextSecurityOrigin</code> {{optional_inline}}</dt> + <dd><code>string</code>. Evaluez l'expression dans le contexte d'un script de contenu attaché par une extension différente, dont l'origine correspond à la valeur donnée ici. Ces remplacements sont <code>useContentScriptContext</code>.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un tableau contenant deux éléments.</p> + +<p>Si aucune erreur n'est survenue, l'élément 0 contiendra le résultat de l'évaluation de l'expression et l'élément 1 sera indéfini.</p> + +<p>Si une erreur s'est produite, l'élément 0 sera indéfini et l'élément 1 contiendra un objet donnant des détails sur l'erreur. Deux types différents d'erreurs sont distingués :</p> + +<ul> + <li>Des erreurs rencontrées lors de l'évaluation du JavaScript (par exemple, des erreurs de syntaxe dans l'expression). Dans ce cas, l'élément 1 contiendra : + <ul> + <li>Une propriété boolean isException, définie sur true</li> + <li>Une valeur de propriété de chaîne, en donnant plus de détails.</li> + </ul> + </li> + <li>D'autres erreurs (par exemple, une expression qui évalue sur un objet qui ne peut pas être représenté comme JSON). Dans ce cas, l'élément 1 contiendra: + <ul> + <li>Une propriété booléenne isError, définie sur true</li> + <li>Un code de propriété de chaîne contenant un code d'erreur.</li> + </ul> + </li> +</ul> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p>{{Compat("webextensions.api.devtools.inspectedWindow.eval")}}</p> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ceci teste si jQuery est défini dans la fenêtre inspectée et enregistre le résultat. Notez que cela ne fonctionnerait pas dans un script de contenu, car même si jQuery était défini, le script de contenu ne le verrait pas.</p> + +<pre class="brush: js">function handleError(error) { + if (error.isError) { + console.log(`Devtools error: ${error.code}`); + } else { + console.log(`JavaScript error: ${error.value}`); + } +} + +function handleResult(result) { + console.log(result); + if (result[0] !== undefined) { + console.log(`jQuery: ${result[0]}`); + } else if (result[1]) { + handleError(result[1]); + } +} + +const checkjQuery = "typeof jQuery != 'undefined'"; + +evalButton.addEventListener("click", () => { + browser.devtools.inspectedWindow.eval(checkjQuery) + .then(handleResult); +});</pre> + +<h3 id="Exemples_d'aide">Exemples d'aide</h3> + +<p>Cela utilise l'aide de <code>$0</code> pour définir la couleur d'arrière-plan de l'élément, actuellement sélectionné dans l'inspecteur :</p> + +<pre class="brush: js">const evalButton = document.querySelector("#reddinate"); +const evalString = "$0.style.backgroundColor = 'red'"; + +function handleError(error) { + if (error.isError) { + console.log(`Devtools error: ${error.code}`); + } else { + console.log(`JavaScript error: ${error.value}`); + } +} + +function handleResult(result) { + if (result[1]) { + handleError(result[1]); + } +} + +evalButton.addEventListener("click", () => { + browser.devtools.inspectedWindow.eval(evalString) + .then(handleResult); +}); +</pre> + +<p>Cela utilise l'assistant l'inspection() pour sélectionner le premier élément <h1> dans la page:</p> + +<pre class="brush: js">const inspectButton = document.querySelector("#inspect"); +const inspectString = "inspect(document.querySelector('h1'))"; + +function handleError(error) { + if (error.isError) { + console.log(`Devtools error: ${error.code}`); + } else { + console.log(`JavaScript error: ${error.value}`); + } +} + +function handleResult(result) { + if (result[1]) { + handleError(result[1]); + } +} + +inspectButton.addEventListener("click", () => { + browser.devtools.inspectedWindow.eval(inspectString) + .then(handleResult); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools"><code>chrome.devtools</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/index.html new file mode 100644 index 0000000000..2f077b4e9d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/index.html @@ -0,0 +1,82 @@ +--- +title: devtools.inspectedWindow +slug: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow +tags: + - API + - Add-ons + - Devtools.inspectedWindows + - Extensions + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow +--- +<div>{{AddonSidebar}}</div> + +<div class="note"> +<p>Cette page décrit les API de développement de WebExtensions telles qu'elles existent dans Firefox 54. Bien que les API soient basées sur les <a href="https://developer.chrome.com/extensions/devtools">APIs de devtools de Chrome</a>, il existe encore de nombreuses fonctionnalités qui ne sont pas encore implémentées dans Firefox et ne sont donc pas documentées ici. Pour voir les fonctionnalités actuellement manquantes, regarder <a href="/fr/Add-ons/WebExtensions/Using_the_devtools_APIs#Limitations_of_the_devtools_APIs">Limitations des APIs devtools</a>.</p> +</div> + +<p>L'API <code>devtools.inspectedWindow</code> permet à un extension de devtools d'interagir avec la fenêtre sur laquelle les outils de développement sont attachés.</p> + +<p>Comme toutes les APIs de <code>devtools</code>, cette API n'est disponible que pour exécuter le code dans le document défini dans la clé <a href="/fr/Add-ons/WebExtensions/manifest.json/devtools_page">devtools_page</a> du manifest.json, où dans d'autres documents devtools créés par l'extension (tels que le document hébergé par un panneau, l'extension créée). Voir <a href="/fr/Add-ons/WebExtensions/Extending_the_developer_tools">Extension des outils de développement </a> pour plus d'informations.</p> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.inspectedWindow/tabId">devtools.inspectedWindow.tabId</a></code></dt> + <dd>L'ID de la fenêtre sur laquelle sont attachés les outils du développeur.</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.inspectedWindow/eval">devtools.inspectedWindow.eval()</a></code></dt> + <dd>Evaluez certains JavaScript dans la fenêtre de destination.</dd> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.inspectedWindow/reload">devtools.inspectedWindow.reload()</a></code></dt> + <dd>Rechargez le document de la fenêtre destination.</dd> +</dl> + +<h2 id="Comptatibilité_navigateur">Comptatibilité navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.inspectedWindow")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + + + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_inspectedWindow"><code>chrome.devtools.inspectedWindow</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<p>// Copyright 2015 The Chromium Authors. All rights reserved.<br> + //<br> + // Redistribution and use in source and binary forms, with or without<br> + // modification, are permitted provided that the following conditions are<br> + // met:<br> + //<br> + // * Redistributions of source code must retain the above copyright<br> + // notice, this list of conditions and the following disclaimer.<br> + // * Redistributions in binary form must reproduce the above<br> + // copyright notice, this list of conditions and the following disclaimer<br> + // in the documentation and/or other materials provided with the<br> + // distribution.<br> + // * Neither the name of Google Inc. nor the names of its<br> + // contributors may be used to endorse or promote products derived from<br> + // this software without specific prior written permission.<br> + //<br> + // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS<br> + // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT<br> + // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR<br> + // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT<br> + // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,<br> + // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT<br> + // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,<br> + // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY<br> + // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT<br> + // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE<br> + // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/reload/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/reload/index.html new file mode 100644 index 0000000000..f2f7b8cdc8 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/reload/index.html @@ -0,0 +1,100 @@ +--- +title: devtools.inspectedWindow.reload() +slug: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/reload +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - devtools.inspectedWindow + - reload +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/reload +--- +<div>{{AddonSidebar()}}</div> + +<p>Recharge la fenêtre à laquelle les devtools sont attachés.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.devtools.inspectedWindow.reload( + reloadOptions // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>reloadOptions</code>{{optional_inline}}</dt> + <dd><code>object</code>. Options pour la fonction, comme suit</dd> + <dd> + <dl class="reference-values"> + <dt><code>ignoreCache</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. S'il est vrai, cela fait que le rechargement ignore le cache du navigateur (comme si l'utilisateur avait appuyé sur Shift+Ctrl+R).</dd> + <dt><code>userAgent</code>{{optional_inline}}</dt> + <dd><code>string</code>. Définissez un agent utilisateur personnalisé pour la page. Ici, la chaîne fournie sera envoyée dans l'en-tête de l'<a href="/fr/docs/Web/HTTP/Headers/User-Agent">Agent utilisateur</a>, et sera renvoyée par les appels à <code><a href="/fr/docs/Web/API/NavigatorID/userAgent">navigator.userAgent</a></code> réalisé par des scripts s'exécutant sur la page.</dd> + <dt><code>injectedScript</code> {{optional_inline}}</dt> + <dd><code>string</code>. Injectez l'expression JavaScript donnée dans toutes les images de la page, avant tout autre script.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.inspectedWindow.reload")}}</p> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Rechargez la fenêtre inspectée, définissez l'agent utilisateur et injectez un script</p> + +<pre class="brush: js">const reloadButton = document.querySelector("#reload-button"); + +reloadButton.addEventListener("click", () => { + browser.devtools.inspectedWindow.reload({ + injectedScript:"alert(navigator.userAgent);", + userAgent: "Not a real UA" + }); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools"><code>chrome.devtools</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/tabid/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/tabid/index.html new file mode 100644 index 0000000000..b5b3d3b0b2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.inspectedwindow/tabid/index.html @@ -0,0 +1,85 @@ +--- +title: devtools.inspectedWindow.tabId +slug: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/tabId +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - devtools.inpectedWindow + - tabId +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/tabId +--- +<div>{{AddonSidebar()}}</div> + +<p>L'ID de {{WebExtAPIRef("tabs.Tab", "tab")}} est que cette instance des devtools est jointe, représenté comme un nombre.</p> + +<p>Cela peut être envoyé à la page de fond de l'extension, de sorte que la page d'arrière plan peut utiliser l'API {{WebExtAPIRef("tabs")}} pour interargir avec l'onglet :</p> + +<pre class="brush: js">// devtools-panel.js + +const scriptToAttach = "document.body.innerHTML = 'Hi from the devtools';"; + +attachContentScriptButton.addEventListener("click", () => { + browser.runtime.sendMessage({ + tabId: browser.devtools.inspectedWindow.tabId, + script: scriptToAttach + }); +});</pre> + +<pre class="brush: js">// background.js + +function handleMessage(request, sender, sendResponse) { + browser.tabs.executeScript(request.tabId, { + code: request.script + }); +} + +browser.runtime.onMessage.addListener(handleMessage);</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.inspectedWindow.tabId")}}</p> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools"><code>chrome.devtools</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.network/gethar/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.network/gethar/index.html new file mode 100644 index 0000000000..abcdf667e6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.network/gethar/index.html @@ -0,0 +1,88 @@ +--- +title: devtools.network.getHAR() +slug: Mozilla/Add-ons/WebExtensions/API/devtools.network/getHAR +tags: + - Add-ons + - Extensions + - WebExtensions + - devtools.network + - getHAR +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.network/getHAR +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtenez un <a href="http://www.softwareishard.com/blog/har-12-spec/#log">journal HAR</a> pour la page chargée dans l'onglet en cours.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getting = browser.devtools.network.getHAR() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet contenant le journal HAR pour l'onglet en cours. Pour plus de détails sur ce que contient l'objet journal, reportez-vous à la <a href="http://www.softwareishard.com/blog/har-12-spec/#log">spécification HAR</a>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.devtools.network.getHAR")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Consignez les URL des demandes contenues dans le journal HAR :</p> + +<pre class="brush: js">async function logRequests() { + let harLog = await browser.devtools.network.getHAR(); + console.log(`HAR version: ${harLog.version}`); + for (let entry of harLog.entries) { + console.log(entry.request.url); + } +} + +logRequestsButton.addEventListener("click", logRequests); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements : </strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_network"><code>chrome.devtools.network</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.network/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.network/index.html new file mode 100644 index 0000000000..580a823371 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.network/index.html @@ -0,0 +1,75 @@ +--- +title: devtools.network +slug: Mozilla/Add-ons/WebExtensions/API/devtools.network +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - devtools.network +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.network +--- +<div>{{AddonSidebar}}</div> + +<p>L'API <code>devtools.network</code> permet à une extension devtools d'obtenir des informations sur les demandes de réseau associées à la fenêtre à laquelle les devtools sont attachés (la fenêtre inspectée).</p> + +<p>Comme toutes les APIs de devtools, cette API est uniquement disponible pour le code exécuté dans le document défini dans la clé <a href="/fr/Add-ons/WebExtensions/manifest.json/devtools_page">devtools_page</a> du manifest.json, ou dans d'autres documents de devtools créés par l'extension (tel que le document du panneau). Voir <a href="/fr/Add-ons/WebExtensions/Extending_the_developer_tools">Extension des outils de développement</a> pour plus d'informations.</p> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools.network/getHAR">devtools.network.getHAR()</a></dt> + <dd>Obtenez le <a class="external external-icon" href="http://www.softwareishard.com/blog/har-12-spec/#log" rel="noopener">journal HAR</a> pour la page chargée dans l'onglet en cours..</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.network/onNavigated">devtools.network.onNavigated</a></code></dt> + <dd>Attiré lorsque l'utilisateur navigue dans la fenêtre inspectée vers une nouvelle page.</dd> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.network/onRequestFinished">devtools.network.onRequestFinished</a></code></dt> + <dd>Lancé lorsque la demande réseau est terminée et que ses détails sont disponibles pour l'extension.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.network")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements : </strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_network"><code>chrome.devtools.network</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.network/onnavigated/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.network/onnavigated/index.html new file mode 100644 index 0000000000..b7f0d0af31 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.network/onnavigated/index.html @@ -0,0 +1,103 @@ +--- +title: devtools.network.onNavigated +slug: Mozilla/Add-ons/WebExtensions/API/devtools.network/onNavigated +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - devtools.network +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.network/onNavigated +--- +<div>{{AddonSidebar()}}</div> + +<p>Mise en place lorsque l'utilisateur navigue dans la fenêtre inspectée vers une nouvelle page</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.devtools.network.onNavigated.addListener(listener) +browser.devtools.network.onNavigated.removeListener(listener) +browser.devtools.network.onNavigated.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajouter un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêter d'écouter un événement. L'argument de l'auditeur est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si l'auditeur est enregistré pour cet événement. Renvoie <strong>vrai</strong> si elle écoute, sinon <strong>faux</strong>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lors de l'événement. La fonction passera les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>url</code></dt> + <dd><code>string</code>. La nouvelle URL pour la fenêtre.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.network.onNavigated")}}</p> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function handleNavigated(url) { + console.log(url); +} + +browser.devtools.network.onNavigated.addListener(handleNavigated);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/devtools"><code>chrome.devtools</code></a> de Chromium.</p> + +<p>Les données de compatibilité de Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.network/onrequestfinished/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.network/onrequestfinished/index.html new file mode 100644 index 0000000000..e2b4d930fc --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.network/onrequestfinished/index.html @@ -0,0 +1,112 @@ +--- +title: devtools.network.onRequestFinished +slug: Mozilla/Add-ons/WebExtensions/API/devtools.network/onRequestFinished +tags: + - API + - Add-ons + - Event + - Extensions + - Reference + - WebExtensions + - devtools.network + - onRequestFinished +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.network/onRequestFinished +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'une requête réseau est terminée et que ses détails sont disponibles pour l'extension.</p> + +<p>La requête est donnée en tant qu'<a href="http://www.softwareishard.com/blog/har-12-spec/#entries">objet d'entrée HAR</a>, qui est également doté d'une méthode <code>getContent()</code> asynchrone qui récupère le contenu du corps de la réponse.</p> + +<p>Notez que bien que votre extension puisse ajouter un écouteur à tout moment,elle commencera seulement à se déclencher après que l'utilisateur a activé le <a href="/fr/docs/Outils/Moniteur_réseau">moniteur réseau</a> du navigateur au moins une fois.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.devtools.network.onRequestFinished.addListener(listener) +browser.devtools.network.onRequestFinished.removeListener(listener) +browser.devtools.network.onRequestFinished.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument de <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code>s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>request</code></dt> + <dd><code>object</code>. Un objet représentant la requête. Cet objet est un seul objet d'<a href="http://www.softwareishard.com/blog/har-12-spec/#entries">entrée HAR</a>. Il définit également une méthode <code>getContent()</code> asynchrone, qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui se résout avec le corps de la réponse.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.network.onRequestFinished")}}</p> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<h2 id="Examples">Examples</h2> + +<p>Ajoutez un écouteur qui consigne l'adresse IP du serveur et le corps de la réponse pour chaque requête réseau.</p> + +<pre class="brush: js">function handleRequestFinished(request) { + console.log("Server IP: ", request.serverIPAddress); + request.getContent().then(content => { + console.log("Content: ", content); + }); +} + +browser.devtools.network.onRequestFinished.addListener(handleRequestFinished);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/devtools"><code>chrome.devtools</code></a> de Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/create/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/create/index.html new file mode 100644 index 0000000000..60de8f3871 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/create/index.html @@ -0,0 +1,110 @@ +--- +title: devtools.panels.create() +slug: Mozilla/Add-ons/WebExtensions/API/devtools.panels/create +tags: + - API + - Add-ons + - Create + - Extensions + - Reference + - WebExtensions + - devtools.panels +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.panels/create +--- +<div>{{AddonSidebar()}}</div> + +<p>Ajoute un nouveau panneau aux devtools.</p> + +<p><span id="result_box" lang="fr"><span>Cette fonction prend </span></span>: un titre, une URL vers un fichier d'icône et une URL vers un fichier HTML. <span id="result_box" lang="fr"><span>Il crée un nouveau panneau dans les </span></span>devtools, dont le contenu est spécifié par le fichier HTML. Il renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui résout un objet <code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ExtensionPanel">ExtensionPanel</a></code> représentant le nouveau panneau.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var creating = browser.devtools.panels.create( + title, // string + iconPath, // string + pagePath // string +) +</pre> + +<h3 id="Parametères">Parametères</h3> + +<dl> + <dt><code>title</code></dt> + <dd><code>string</code>. Le titre du panneau. Cela apparaitra dans la rangée des onglets le long du haut de la fenêtre des devtools, et c'est la principale façon dont l'utilisateur pourra identifier votre panneau.</dd> + <dt><code>iconPath</code></dt> + <dd><code>string</code>. Spécifie une icône qui sera affichée à côté du titre. Il est fourni sous forme d'URL vers un fichier image qui a été fourni avec votre extension. L'URL est résolue par rapport à la page d'extension courante (sauf si elle est exprimée en url absolue, par exemple "/icons/panel.png").</dd> + <dt><code>pagePath</code></dt> + <dd>string. Spécifie un fichier HTML qui définit le contenu réel du panneau. Il est fourni sous la forme d'une URL d'un fichier HTML qui a été regroupé avec votre extension. L'URL est résolue par rapport à la page d'extension courante (sauf si elle est exprimée en url absolue, par exemple "/devtools/panel.html"). Le fichier HTML peut include des fichiers CSS et JavaScript, juste comme une page web normale. Le JavaScript en cours d'éxécution dans le panneau pourra utiliser les API devtools. Voir <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools">Extention des outils de développement</a>.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet <code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ExtensionPanel">ExtensionPanel</a></code> représentant le nouveau panneau.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.panels.create")}}</p> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Créer un nouveau panneau, et ajoute des auditeurs à ces événements onShown et onHidden :</p> + +<pre class="brush: js">function handleShown() { + console.log("panel is being shown"); +} + +function handleHidden() { + console.log("panel is being hidden"); +} + +browser.devtools.panels.create( + "My Panel", // title + "/icons/star.png", // icon + "/devtools/panel/panel.html" // content +).then((newPanel) => { + newPanel.onShown.addListener(handleShown); + newPanel.onHidden.addListener(handleHidden); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elements/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elements/index.html new file mode 100644 index 0000000000..18223b2718 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elements/index.html @@ -0,0 +1,29 @@ +--- +title: devtools.panels.elements +slug: Mozilla/Add-ons/WebExtensions/API/devtools.panels/elements +tags: + - API + - Add-ons + - Elements + - Extensions + - Reference + - WebExtensions + - devtools.panels +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.panels/elements +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet <code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel">ElementsPanel</a></code> qui représente l'inspecteur HTML/CSS du navigateur</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.devtools.panels.elements", 10)}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elementspanel/createsidebarpane/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elementspanel/createsidebarpane/index.html new file mode 100644 index 0000000000..7eee52fff5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elementspanel/createsidebarpane/index.html @@ -0,0 +1,107 @@ +--- +title: devtools.panels.ElementsPanel.createSidebarPane() +slug: >- + Mozilla/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel/createSidebarPane +tags: + - API + - Add-ons + - DevTools + - Extensions + - Reference + - WebExtensions + - createSidebarPane + - devtools.panels +translation_of: >- + Mozilla/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel/createSidebarPane +--- +<div>{{AddonSidebar()}}</div> + +<p>Ajoute un nouveau volet à la barre latérale dans l'inspecteur HTML / CSS.</p> + +<p>L'inspecteur HTML / CSS, appelé l'<a href="/fr/docs/Outils/Inspecteur">inspecteur de page</a> dans Firefox et le <a href="https://developers.google.com/web/tools/chrome-devtools/inspect-styles/">panneau éléments</a> dans Chrome, affiche la page DOM dans la partie principale de sa fenêtre et possède une barre latérale qui affiche divers autres aspects de la page HTML / CSS dans une interface à onglets. Par exemple, dans Firefox, la barre latérale peut afficher les règles CSS pour l'élément sélectionné, ou ses polices, ou son modèle de boîte.</p> + +<p>La fonction <code>createSidebarPane()</code> ajoute un nouveau volet à la barre latérale. ar exemple, la capture d'écran ci-dessous montre un nouveau volet intitulé "My pane", qui affiche un objet JSON :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15607/inspector-sidebar.png" style="display: block; height: 276px; margin-left: auto; margin-right: auto; width: 836px;"></p> + +<p>Cette fonction prend un argument, qui est une chaîne représentant le titre du volet. Il renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui se résout en un objet <code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane">ExtensionSidebarPane</a></code> représentant le nouveau volet. Vous pouvez utiliser cet objet pour définir le contenu et le comportement du volet.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var creating = browser.devtools.panels.elements.createSidebarPane( + title // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>title</code></dt> + <dd><code>string</code>. Cela apparaîtra dans la rangée d'onglets en haut de la barre latérale, et c'est la principale façon pour l'utilisateur d'identifier votre panneau.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet <code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane">ExtensionSidebarPane</a></code> représentant le nouveau volet.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.panels.ElementsPanel.createSidebarPane", 10)}}</p> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Créez un nouveau volet et remplissez-le avec un objet JSON. Vous pouvez exécuter ce code dans un script chargé par la <a href="/fr/Add-ons/WebExtensions/manifest.json/devtools_page">page devtools</a>.</p> + +<pre class="brush: js">function onCreated(sidebarPane) { + sidebarPane.setObject({ + someBool: true, + someString: "hello there", + someObject: { + someNumber: 42, + someOtherString: "this is my pane's content" + } + }); +} + +browser.devtools.panels.elements.createSidebarPane("My pane").then(onCreated); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elementspanel/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elementspanel/index.html new file mode 100644 index 0000000000..5c2a0413c7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elementspanel/index.html @@ -0,0 +1,73 @@ +--- +title: devtools.panels.ElementsPanel +slug: Mozilla/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel +tags: + - API + - Add-ons + - DevTools + - Extensions + - Reference + - WebExtensions + - devtools.panels + - devtools.panelsElementsPanel +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel +--- +<div>{{AddonSidebar()}}</div> + +<p>Un <code>ElementsPanel</code> représente l'inspecteur HTML/CSS dans la devtools du navigateur. C'est ce qu'on appelle l'inspecteur de page dans Firefox et le panneau Éléments de Chrome.</p> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel/createSidebarPane">devtools.panels.ElementsPanel.createSidebarPane()</a></code></dt> + <dd>Crée un volet dans la barre latérale de l'inspecteur.</dd> + <dt> + <h2 id="Evénements">Evénements</h2> + </dt> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel/onSelectionChanged">devtools.panels.ElementsPanel.onSelectionChanged</a></code></dt> + <dd>Appèle lorsque l'utilisateur sélectionne un élément différent dans la page, par exemple en utilisant l'élément de menu contextuel "inspect élément".</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.devtools.panels.ElementsPanel", 10)}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elementspanel/onselectionchanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elementspanel/onselectionchanged/index.html new file mode 100644 index 0000000000..e753d5aba1 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/elementspanel/onselectionchanged/index.html @@ -0,0 +1,74 @@ +--- +title: onSelectionChanged +slug: >- + Mozilla/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel/onSelectionChanged +tags: + - API + - Add-ons + - DevTools + - Extensions + - Reference + - WebExtensions + - devtools.panels + - devtools.panelsElementsPanel +translation_of: >- + Mozilla/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel/onSelectionChanged +--- +<div>{{AddonSidebar()}}</div> + +<p>Appelles lorsque l'utilisateur sélectionne un élément de page différent pour l'inspection avec les outils de développement du navigateur, par exemple en sélectionnant l'élément de menu contextuel "Inspect Element" dans Firefox.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.devtools.panels.elements.onSelectionChanged.addListener(listener) +browser.devtools.panels.elements.onSelectionChanged.removeListener(listener) +browser.devtools.panels.elements.onSelectionChanged.hasListener(listener) +</pre> + +<p>L'événement a trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute une écoute à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrête une écoute à l'événement. L'argument de l'auditeur est un auditeur supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si l'auditeur est enregistré pour cet événement. Renvoie la valeur Vrai si elle l'écoute, sinon Faux.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lors de l'événement. La fonction ne passera pas d'arguments.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.devtools.panels.ElementsPanel.onSelectionChanged", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ecoutez la sélection des événements modifiés, et enregistrez le contenu du texte de l'élément nouvellement sélectionné :</p> + +<pre class="brush: js">function handleSelectedElement() { + browser.devtools.inspectedWindow.eval("$0.textContent") + .then((result) => { + console.log(result[0]); + }); +} + +browser.devtools.panels.elements.onSelectionChanged.addListener(handleSelectedElement);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools"><code>chrome.devtools</code></a>.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionpanel/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionpanel/index.html new file mode 100644 index 0000000000..e083ff02b3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionpanel/index.html @@ -0,0 +1,93 @@ +--- +title: devtools.panels.ExtensionPanel +slug: Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionPanel +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - devtools.panels +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionPanel +--- +<div>{{AddonSidebar()}}</div> + +<p>Une <code>ExtensionPanel</code> représente un panneau ajouté aux devtools. C'est la résolution de la <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> renvoyé par <code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/create">browser.devtools.panels.create()</a></code>.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Définissez deux événements, <code>onShown</code> et <code>onHidden</code>.</p> + +<ul> + <li><code>onShown</code> est émis lorsque le panneau est affiché dans les devtools (par exemple, quand l'utilisateur a cliqué sur le panneau dans la fenêtre des devtools).</li> + <li><code>onHidden</code> est émis lorsque le panneau est caché (par exemple, quand l'utilisateur a basculé sur un onglet différent dans la fenêtre devtools).</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.panels.ExtensionPanel")}}</p> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code crée un nouveau panneau, puis ajoute des gestionnaires pour ces événements <code>onShown</code> et <code>onHidden</code>.</p> + +<pre class="brush: js">function handleShown(e) { + console.log(e); + console.log("panel is being shown"); +} + +function handleHidden(e) { + console.log(e); + console.log("panel is being hidden"); +} + +browser.devtools.panels.create( + "My Panel", // title + "icons/star.png", // icon + "devtools/panel/panel.html" // content +).then((newPanel) => { + newPanel.onShown.addListener(handleShown); + newPanel.onHidden.addListener(handleHidden); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/index.html new file mode 100644 index 0000000000..02ee0a2073 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/index.html @@ -0,0 +1,89 @@ +--- +title: devtools.panels.ExtensionSidebarPane +slug: Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane +tags: + - API + - Add-ons + - DevTools + - Extensions + - Reference + - WebExtensions + - devtools.panels + - devtools.panels.ExtensionSidebarPane +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane +--- +<div>{{AddonSidebar}}</div> + +<p>L'objet <code>ExtensionSidebarPane</code> représente un volet qu'une extension a ajouté à la barre latérale dans l'inspecteur HTML/CSS du navigateur.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15607/inspector-sidebar.png" style="display: block; height: 276px; margin-left: auto; margin-right: auto; width: 836px;"></p> + +<p>Pour créer un <code>ExtensionSidebarPane</code>, appelez la fonction <code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel/createSidebarPane">browser.devtools.panels.elements.createSidebarane()</a></code>.</p> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/setExpression">devtools.panels.ExtensionSidebarPane.setExpression()</a></code></dt> + <dd> + <p>Évaluer une expression JavaScript dans la page Web inspectée par l'inspecteur. Le résultat est affiché dans le volet de la barre latérale.</p> + </dd> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/setObject">devtools.panels.ExtensionSidebarPane.setObject()</a></code></dt> + <dd> + <p>Définit un objet JSON qui sera affiché dans le volet de la barre latérale.</p> + </dd> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/setPage">devtools.panels.ExtensionSidebarPane.setPage()</a></code></dt> + <dd> + <p>Charge la page pointée par l'URL fournie.</p> + </dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/onShown">devtools.panels.ExtensionSidebarPane.onShown</a></code></dt> + <dd>Lancé lorsque le volet latéral est affiché.</dd> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/onHidden">devtools.panels.ExtensionSidebarPane.onHidden</a></code></dt> + <dd>Lancé lorsque le volet de la barre latérale est masqué.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.panels.ExtensionSidebarPane", 10)}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/onhidden/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/onhidden/index.html new file mode 100644 index 0000000000..a1a18463e5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/onhidden/index.html @@ -0,0 +1,80 @@ +--- +title: devtools.panels.ExtensionSidebarPane.onHidden +slug: >- + Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/onHidden +tags: + - API + - Add-ons + - ExtensionSidebarPane + - Extensions + - Reference + - WebExtensions + - devtools.panels + - onHidden +translation_of: >- + Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/onHidden +--- +<div>{{AddonSidebar()}}</div> + +<p>Appelé lorsque le volet de la barre latérale est masqué, suite à l'abandon de l'utilisateur.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.devtools.panels.onHidden.addListener(listener) +browser.devtools.panels.onHidden.removeListener(listener) +browser.devtools.panels.onHidden.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions:</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrête d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction appelée lorsque cet événement se produit. Cette fonction sera passée sans arguments.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.devtools.panels.ExtensionSidebarPane.onHidden", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Créez un volet de barre latérale et journal afficher et masquer les événements.</p> + +<pre class="brush: js">function onCreated(sidebarPane) { + + sidebarPane.onShown.addListener(() => { + console.log("Shown"); + }); + + sidebarPane.onHidden.addListener(() => { + console.log("Hidden"); + }); + +} + +browser.devtools.panels.elements.createSidebarPane("My pane").then(onCreated); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/onshown/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/onshown/index.html new file mode 100644 index 0000000000..3ca3412af2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/onshown/index.html @@ -0,0 +1,78 @@ +--- +title: devtools.panels.ExtensionSidebarPane.onShown +slug: Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/onShown +tags: + - API + - Add-ons + - Extensions + - ExtesionsSidebarPane + - Reference + - WebExtensions + - devtools.panels + - onShown +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/onShown +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque le volet latéral devient visible suite à un changement d'utilisateur.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.devtools.panels.onShown.addListener(listener) +browser.devtools.panels.onShown.removeListener(listener) +browser.devtools.panels.onShown.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument de <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction sera passée sans arguments.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.devtools.panels.ExtensionSidebarPane.onShown", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Créez un volet de barre latérale et journal afficher et masquer les événements.</p> + +<pre class="brush: js">function onCreated(sidebarPane) { + + sidebarPane.onShown.addListener(() => { + console.log("Shown"); + }); + + sidebarPane.onHidden.addListener(() => { + console.log("Hidden"); + }); + +} + +browser.devtools.panels.elements.createSidebarPane("My pane").then(onCreated); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/setexpression/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/setexpression/index.html new file mode 100644 index 0000000000..d2c97c5f82 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/setexpression/index.html @@ -0,0 +1,106 @@ +--- +title: devtools.panels.ElementsPanel.setExpression() +slug: >- + Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/setExpression +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - devtools.panels + - setExpression +translation_of: >- + Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/setExpression +--- +<div>{{AddonSidebar()}}</div> + +<p>Evalue une expression dans le contexte de la page inspectée et affiche le résultat dans le volet de la barre latérale d'extension.</p> + +<p>Le contexte d'exécution de l'expression est le même que celui de <code><a href="/fr/Add-ons/WebExtensions/API/devtools.inspectedWindow/eval">inspectedWindow.eval()</a></code>.</p> + +<p> Les objets JSON et les noeuds DOM sont affichés en tant qu'arborescence extensible, comme dans la <a href="/fr/docs/Outils/JSON_viewer">visionneuse jSON</a> dans Firefox. Vous pouvez éventuellement spécifier une chaîne <code>rootTitle</code> : elle sera affichée comme le titre de la racine de l'arbre.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var evaluating = browser.devtools.panels.setExpression( + expression, // string + rootTitle // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>expression</code></dt> + <dd><code>string</code>. L'expression à évaluer.</dd> + <dt><code>rootTitle</code> {{optional_inline}}</dt> + <dd>string. Le titre de la racine de l'arbre dans lequel les résultats sont affichés.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> sera remplie sans arguments, une fois l'expression évaluée.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.panels.ExtensionSidebarPane.setExpression", 10)}}</p> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code crée un volet de barre latérale qui affiche le <code><a href="/fr/docs/Web/API/Element/tagName">tagName</a></code> de l'élément actuellement sélectionné :</p> + +<pre class="brush: js">function onCreated(sidebarPane) { + + browser.devtools.panels.elements.onSelectionChanged.addListener(() => { + const exp = "$0 && $0.tagName"; + const title = "Selected Element tagName"; + sidebarPane.setExpression(exp, title); + }); + +} + +browser.devtools.panels.elements.createSidebarPane("My pane").then(onCreated); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/setobject/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/setobject/index.html new file mode 100644 index 0000000000..90252a0c2f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/setobject/index.html @@ -0,0 +1,104 @@ +--- +title: devtools.panels.ExtensionSidebarPane.setObject() +slug: >- + Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/setObject +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - devtools.panels + - setObject +translation_of: >- + Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/setObject +--- +<div>{{AddonSidebar()}}</div> + +<p>Affiche un objet JSON dans le volet de la barre latérale de l'extension.</p> + +<p>L'objet est affiché en tant qu'arborescence extensible, comme dans le <a href="/fr/docs/Outils/JSON_viewer">JSON viewer</a> dans Firefox. Vous pouvez éventuellement spécifier une chaîne <code>rootTitle</code> : elle sera affichée comme le titre de la racine de l'arbre.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var setting = browser.devtools.panels.setObject( + jsonObject, // string, array, or JSON object + rootTitle // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>jsonObject</code></dt> + <dd><code>String</code> ou <code>Array</code> ou <code>Object</code>. L'objet à afficher. S'il s'agit d'un objet JSON-serialized, donc les propriétés comme les fonctions seront omises.</dd> + <dt><code>rootTitle</code> {{optional_inline}}</dt> + <dd><code>String</code>. Le titre de la racine de l'arbre dans lequel l'objet est affiché.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera accomplie sans arguments, une fois l'objet défini.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.panels.ExtensionSidebarPane.setObject", 10)}}</p> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Créez un nouveau volet et remplissez-le avec un objet JSON. Vous pouvez exécuter ce code dans un script chargé par la <a href="/fr/Add-ons/WebExtensions/manifest.json/devtools_page">page devtools</a>. de votre extension</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onCreated</span><span class="punctuation token">(</span>sidebarPane<span class="punctuation token">)</span> <span class="punctuation token">{</span> + sidebarPane<span class="punctuation token">.</span><span class="function token">setObject</span><span class="punctuation token">(</span><span class="punctuation token">{</span> + someBool<span class="punctuation token">:</span> <span class="keyword token">true</span><span class="punctuation token">,</span> + someString<span class="punctuation token">:</span> <span class="string token">"hello there"</span><span class="punctuation token">,</span> + someObject<span class="punctuation token">:</span> <span class="punctuation token">{</span> + someNumber<span class="punctuation token">:</span> <span class="number token">42</span><span class="punctuation token">,</span> + someOtherString<span class="punctuation token">:</span> <span class="string token">"this is my pane's content"</span> + <span class="punctuation token">}</span> + <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>devtools<span class="punctuation token">.</span>panels<span class="punctuation token">.</span>elements<span class="punctuation token">.</span><span class="function token">createSidebarPane</span><span class="punctuation token">(</span><span class="string token">"My pane"</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>onCreated<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/setpage/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/setpage/index.html new file mode 100644 index 0000000000..e4f98e3ff3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/extensionsidebarpane/setpage/index.html @@ -0,0 +1,89 @@ +--- +title: devtools.panels.ExtensionSidebarPane.setPage() +slug: Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/setPage +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - setPage +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane/setPage +--- +<p>Définit une page HTML à afficher dans le volet latéral.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.devtools.panels.setPage( + path // string containing relative path to page +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt>extensionPageURL</dt> + <dd><code>string</code>. Le chemin relatif d'une page HTML à afficher dans la barre latérale.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera tenue sans arguments, une fois l'URL définie.</p> + +<p>La page sélectionnée ne sera pas chargée tant que l'utilisateur n'aura pas sélectionné la barre latérale devtools.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Créez un nouveau volet et remplissez-le d'une page HTML. Vous pouvez exécuter ce code dans un script chargé par la <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/devtools_page">page devtools</a> de votre extension.</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onCreated</span><span class="punctuation token">(</span>sidebarPane<span class="punctuation token">)</span> <span class="punctuation token">{</span> + sidebarPane<span class="punctuation token">.</span><span class="function token">setPage</span><span class="punctuation token">('sidebar/sidebar.html'</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> +</code></pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.panels.ExtensionSidebarPane.setPage", 10)}}</p> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/index.html new file mode 100644 index 0000000000..9f2c06e2a0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/index.html @@ -0,0 +1,103 @@ +--- +title: devtools.panels +slug: Mozilla/Add-ons/WebExtensions/API/devtools.panels +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - devtools.panels +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.panels +--- +<div>{{AddonSidebar}}</div> + +<div class="note"> +<p>Bien que les API soient basées sur les <a href="https://developer.chrome.com/extensions/devtools">APIs de devtools de Chrome</a>, il existe encore de nombreuses fonctionnalités qui ne sont pas encore implémentées dans Firefox et ne sont donc pas documentées ici. Pour voir les fonctionnalités actuellement manquantes, regarder <a href="/fr/Add-ons/WebExtensions/Using_the_devtools_APIs#Limitations_of_the_devtools_APIs">Limitations des APIs devtools</a>.</p> +</div> + +<p>L'API devtools.panels permet à une extension devtools de définir son interface utilisateur à l'intérieur de la fenêtre devtools.</p> + +<p>La fenêtre devtools héberge un certain nombre d'outils distincts - le débogueur JavaScript, le moniteur réseau, etc. Une rangée d'onglets sur le haut permet à l'utilisateur de basculer entre les différents outils. La fenêtre hébergeant l'interface utilisateur de chaque outil s'appelle un "panneau".</p> + +<p>Avec l'API devtools.panels, vous pouvez créer de nouveaux panneaux dans la fenêtre des devtools.</p> + +<p>Comme toutes les API de devtools, cette API est uniquement disponible pour le code exécuté dans le document défini dans la clé <a href="/fr/Add-ons/WebExtensions/manifest.json/devtools_page">devtools_page</a> du manifest.json, ou dans d'autres documents de déploiement créés par une extension (tel que le document du panneau). Voir <a href="/fr/Add-ons/WebExtensions/Extending_the_developer_tools">Extension des outils de développement</a> pour plus for d'informations.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel">devtools.panels.ElementsPanel</a></code></dt> + <dd>Représente l'inspecteur HTML/CSS dans le devtools du navigateur</dd> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ExtensionPanel">devtools.panels.ExtensionPanel</a></code></dt> + <dd>Représente un panneau de déploiement créé par l'extension.</dd> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ExtensionSidebarPane">devtools.panels.ExtensionSidebarPane</a></code></dt> + <dd>Représente un volet ajouté par une extension à l'inspecteur HTML/CC dans les devtools du navigateur.</dd> +</dl> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/elements">devtools.panels.elements</a></code></dt> + <dd>Une référence à un objet <code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel">ElementsPanel</a></code>.</dd> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/themeName">devtools.panels.themeName</a></code></dt> + <dd>Le nom du thème actuel des devtools.</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/create">devtools.panels.create()</a></code></dt> + <dd>Créé un nouveau panneau de développement</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels/onThemeChanged">devtools.panels.onThemeChanged</a></code></dt> + <dd>Mise en place lorsque le thème Devtools change.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools.panels", 2)}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/onthemechanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/onthemechanged/index.html new file mode 100644 index 0000000000..75c9b94ccc --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/onthemechanged/index.html @@ -0,0 +1,72 @@ +--- +title: devtools.panels.onThemeChanged +slug: Mozilla/Add-ons/WebExtensions/API/devtools.panels/onThemeChanged +tags: + - API + - Add-ons + - DevTools + - Reference + - WebExtensions + - devtools.panels + - onThemeChanged +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.panels/onThemeChanged +--- +<div>{{AddonSidebar()}}</div> + +<p>Remplacement quand le thème de devtools change</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.devtools.panels.onThemeChanged.addListener(listener) +browser.devtools.panels.onThemeChanged.removeListener(listener) +browser.devtools.panels.onThemeChanged.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un auditeur à cet événement</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument de l'auditeur est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si l'auditeur est enregistré pour cet événement. Renvoie Vrai si elle écoute, sinon Faux.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Function qui sera appelée lors de l'événement. La fonction passera les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>themeName</code></dt> + <dd><code>string</code>. Nom du nouveau thème : ce sera l'une des valeurs autorisées pour <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/devtools.panels/themeName">devtools.panels.themeName</a></code>.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.devtools.panels.onThemeChanged")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">browser.devtools.panels.onThemeChanged.addListener((newThemeName) => { + console.log(`New theme: ${newThemeName}`); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/themename/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/themename/index.html new file mode 100644 index 0000000000..abddedc962 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools.panels/themename/index.html @@ -0,0 +1,39 @@ +--- +title: devtools.panels.themeName +slug: Mozilla/Add-ons/WebExtensions/API/devtools.panels/themeName +tags: + - API + - Add-ons + - DevTools + - Reference + - WebExtensions + - devtools.panels + - themeName +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools.panels/themeName +--- +<div>{{AddonSidebar()}}</div> + +<p>Le nom du thème de <strong>devtools</strong> actuellement sélectionné.</p> + +<p>Il s'agit d'une chaîne dont les valeurs possibles sont :</p> + +<ul> + <li>"lumière"</li> + <li>"foncé"</li> + <li>"firebug"</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.devtools.panels.themeName")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/devtools_panels"><code>chrome.devtools.panels</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/devtools/index.html b/files/fr/mozilla/add-ons/webextensions/api/devtools/index.html new file mode 100644 index 0000000000..604a1cd590 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/devtools/index.html @@ -0,0 +1,72 @@ +--- +title: devtools +slug: Mozilla/Add-ons/WebExtensions/API/devtools +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - devtools.inspectedWindow + - devtools.network + - devtools.panels +translation_of: Mozilla/Add-ons/WebExtensions/API/devtools +--- +<p>{{AddonSidebar}}</p> + +<p>Permet aux extensions d'interagir avec le {{Glossary("Developer Tools")}} du navigateur. Vous pouvez utiliser cette API pour créer des pages d'outils de développement, interagir avec la fenêtre qui est inspectée, inspecter l'utilisation du réseau de pages.</p> + +<p>Pour utiliser cette API, vous devez disposer de la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission API</a> <code>"devtools"</code> spécifiée dans votre fichier <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a>. Cette permission ne peut pas être facultative.</p> + +<h2 id="Interfaces">Interfaces</h2> + +<dl> + <dt>{{WebExtAPIRef("devtools.inspectedWindow")}}</dt> + <dd>Interagir avec la fenêtre à laquelle les outils de développement sont attachés (fenêtre inspectée). Cela inclut l'obtention de l'onglet ID pour la page inspectée, l'évaluation du code dans le contexte de la fenêtre inspectée, le rechargement de la page ou l'obtention de la liste des ressources dans la page.</dd> + <dt>{{WebExtAPIRef("devtools.network")}}</dt> + <dd>Obtenir des informations sur les requêtes de réseau associées à la fenêtre à laquelle les outils de développement sont attachés (la fenêtre inspectée).</dd> + <dt>{{WebExtAPIRef("devtools.panels")}}</dt> + <dd>Créer des panneaux d'interface utilisateur qui seront affichés dans les outils de développement de l'agent utilisateur.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.devtools")}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basé sur l'API <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a> de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/dns/index.html b/files/fr/mozilla/add-ons/webextensions/api/dns/index.html new file mode 100644 index 0000000000..aaac9b867d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/dns/index.html @@ -0,0 +1,31 @@ +--- +title: dns +slug: Mozilla/Add-ons/WebExtensions/API/dns +tags: + - API + - Add-ons + - DNS + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/dns +--- +<div>{{AddonSidebar}}</div> + +<div>Active une extension pour résoudre les noms de domaine.</div> + +<div></div> + +<div>Pour utiliser cette API, une extension doit demander la permission "dns" <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> dans son fichier <code><a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a></code> .</div> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("dns.resolve()")}}</dt> + <dd>Résout le nom d'hôte donné en un enregistrement DNS</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.dns")}}</p> + +<p>{{WebExtExamples("h2")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/dns/resolve/index.html b/files/fr/mozilla/add-ons/webextensions/api/dns/resolve/index.html new file mode 100644 index 0000000000..ecb976a87e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/dns/resolve/index.html @@ -0,0 +1,102 @@ +--- +title: dns.resolve() +slug: Mozilla/Add-ons/WebExtensions/API/dns/resolve +tags: + - API + - Add-ons + - DNS + - Extensions + - Method + - Reference + - WebExtensions + - resolve +translation_of: Mozilla/Add-ons/WebExtensions/API/dns/resolve +--- +<div>{{AddonSidebar()}}</div> + +<p>Résout le nom d'hôte donné en un enregistrement DNS.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var resolving = browser.dns.resolve( + hostname, // string + flags // array of string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>hostname</code></dt> + <dd><code><code>string</code></code>. Le nom d'hôte à résoudre.</dd> + <dt><code>flags</code> {{optional_inline}}</dt> + <dd><code>array</code> de <code>string</code>. Drapeaux pour modifier la façon dont le nom d'hôte est résolu. Tous les indicateurs omis sont par défaut à <code>false</code>. Vous pouvez passer zéro ou plusieurs des indicateurs suivants :</dd> + <dd> + <ul> + <li><code>"allow_name_collisions"</code>: autorise les résultats de collision de noms qui sont normalement filtrés.</li> + <li><code>"bypass_cache"</code>: Supprime le cache de recherche DNS interne.</li> + <li><code>"canonical_name"</code>: Le nom canonique de l'hôte spécifié sera interrogé.</li> + <li><code>"disable_ipv4"</code>: Seules les adresses IPv6 seront renvoyées.</li> + <li><code>"disable_ipv6"</code>: Seules les adresses IPv4 seront renvoyées.</li> + <li><code>"disable_trr"</code>: n'utilisez pas le TRR (Trusted Recursive Resolver) pour résoudre le nom d'hôte. Un TRR permet la résolution des noms d'hôtes à l'aide d'un serveur <a href="https://tools.ietf.org/html/draft-ietf-doh-dns-over-https-02">DNS-over-HTTPS</a> dédié.</li> + <li><code>"offline"</code>: seuls les littéraux et les entrées mises en cache seront renvoyés.</li> + <li><code>"priority_low"</code>: La priorité est donnée à la requête. Si "priority_medium" est également donné, la requête est prioritaire.</li> + <li><code>"priority_medium"</code>: La priorité est donnée à la requête. Si "priority_low" est également donné, la requête est prioritaire</li> + <li><code>"speculate"</code>: Indique que la requête est spéculative. Les demandes spéculatives renvoient des erreurs si la prélecture est désactivée par la configuration du navigateur.</li> + </ul> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>A <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promisee">Promise</a></code> qui sera remplie avec un objet <code>DNSRecord</code> object. Cet objet peut contenir les propriétés suivantes :</p> + +<dl> + <dt><code>addresses</code></dt> + <dd><code>array</code> of <code>string</code>. Les adresses IP associées à cet enregistrement DNS.</dd> + <dt><code>canonicalName</code></dt> + <dd><code>string</code>. Le nom canonique de cet enregistrement. Ceci n'est inclus dans la réponse que si le drapeau <code>"canonical_name"</code>a été passé à <code>resolve()</code>.</dd> + <dt><code>isTRR</code></dt> + <dd><code>boolean</code>: <code>true</code> si l'enregistrement a été récupéré à l'aide d'un TRR (Trusted Recursive Resolver).</dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function resolved(record) { + console.log(record.addresses); +} + +let resolving = browser.dns.resolve("example.com"); +resolving.then(resolved); + +// > e.g. Array [ "73.284.240.12" ] +</pre> + +<p>Contournez le cache et demandez le nom canonique:</p> + +<pre class="brush: js">function resolved(record) { + console.log(record.canonicalName); + console.log(record.addresses); +} + +let resolving = browser.dns.resolve("developer.mozilla.org", + ["bypass_cache", "canonical_name"]); +resolving.then(resolved); + +// > e.g. xyz.us-west-2.elb.amazonaws.com +// > e.g. Array [ "78.18.187.134", "34.79.135.234" ]</pre> + +<p>{{WebExtExamples}}</p> + + + +<dl> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.dns.resolve")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/acceptdanger/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/acceptdanger/index.html new file mode 100644 index 0000000000..a9e020816f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/acceptdanger/index.html @@ -0,0 +1,86 @@ +--- +title: downloads.acceptDanger() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/acceptDanger +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - acceptDanger + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/acceptDanger +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <code><strong>acceptDanger</strong></code><strong><code>()</code></strong> de l'API {{WebExtAPIRef("downloads")}} invite l'utilisateur à accepter ou à annuler un téléchargement potentiellement dangereux.</p> + +<p>Cette fonction ne peut pas être appelée à partir de scripts d'arrière-plan, uniquement dans les scripts qui s'exécutent dans une fenêtre visible (par exemple un navigateur ou une fenêtre d'action de page).</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var prompting = browser.downloads.acceptDanger( + downloadId // integer +) +</pre> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>downloadId</code></dt> + <dd>Un <code>integer</code> représentant l'<code>id</code> de {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} en question.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Lorsque la boîte de dialogue se ferme, la promesse sera remplie sans arguments.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.acceptDanger")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/booleandelta/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/booleandelta/index.html new file mode 100644 index 0000000000..cb51349e6f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/booleandelta/index.html @@ -0,0 +1,74 @@ +--- +title: downloads.BooleanDelta +slug: Mozilla/Add-ons/WebExtensions/API/downloads/BooleanDelta +tags: + - API + - Add-ons + - BooleanDelta + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/BooleanDelta +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code>BooleanDelta</code> de l'API {{WebExtAPIRef("downloads")}} représente la différence entre deux booléens.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>current</code>{{optional_inline}}</dt> + <dd>Un <code>boolean</code> représentant la valeur booléenne actuelle.</dd> + <dt><code>previous</code>{{optional_inline}}</dt> + <dd>Un <code>boolean</code> représentant la valeur booléenne précédente.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden"><span class="tlid-translation translation"><span title="">Le tableau de compatibilité de cette page est généré à partir de données structurées.</span> <span title="">Si vous souhaitez contribuer aux données, veuillez consulter</span></span> <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> <span class="tlid-translation translation"><span title="">et envoyez-nous une </span></span><span class="gt-baf-term-text"><span class="gt-baf-cell gt-baf-word-clickable">requête</span></span><span class="tlid-translation translation"><span title=""> </span></span></p> + +<p>{{Compat("webextensions.api.downloads.BooleanDelta")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre> <span class="tlid-translation translation">// Copyright 2015 Les auteurs de chrome. Tous les droits sont réservés. +// +// Redistribution et utilisation sous forme source et binaire, avec ou sans +// modification, sont autorisées à condition que les conditions suivantes soient +// rencontré: +// +// * Les redistributions de code source doivent conserver le copyright ci-dessus +// remarque, cette liste de conditions et la clause de non-responsabilité suivante. +// * Les redistributions sous forme binaire doivent reproduire ce qui précède +// avis de droit d'auteur, cette liste de conditions et la clause de non-responsabilité suivante // dans la documentation et / ou les autres éléments fournis avec le +// Distribution. +// * Ni le nom de Google Inc. ni les noms de ses +// les contributeurs peuvent être utilisés pour approuver ou promouvoir des produits dérivés de +// ce logiciel sans autorisation écrite préalable spécifique. +// +// CE LOGICIEL EST FOURNI PAR LES TITULAIRES DE COPYRIGHT ET LES CONTRIBUTEURS +// "EN L'ETAT" ET TOUTE GARANTIE EXPRESSE OU IMPLICITE, Y COMPRIS MAIS NON +// LIMITE AUX GARANTIES IMPLICITES DE QUALITÉ MARCHANDE ET D'ADÉQUATION À +// UN OBJECTIF PARTICULIER EST REFUSÉ. EN AUCUN CAS, LE COPYRIGHT +// LE PROPRIÉTAIRE OU LES CONTRIBUTEURS SONT RESPONSABLES DE TOUT ASSISTANCE DIRECTE, INDIRECTE, ACCESSOIRE, +// DOMMAGES PARTICULIERS, EXEMPLAIRES OU CONSÉCUTIFS (Y COMPRIS, MAIS NON +// LIMITÉE À L'ACQUISITION DE MARCHANDISES OU DE SERVICES DE SUBSTITUTION; PERTE D'USAGE, +// DATA, OR PROFITS; OU INTERRUPTION COMMERCIALE) TOUTEFOIS CAUSÉE ET SUR TOUTE +// THÉORIE DE LA RESPONSABILITÉ, QU'IL SOIT UN CONTRAT, UNE RESPONSABILITÉ STRICTE OU UN TORT +// (INCLUANT LA NÉGLIGENCE OU AUTREMENT) SURVENANT DE TOUTE MANIÈRE DE L'UTILISER +// DE CE LOGICIEL, MÊME SI AVISÉ DE LA POSSIBILITÉ D'UN TEL DOMMAGE.</span> +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/cancel/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/cancel/index.html new file mode 100644 index 0000000000..da18864854 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/cancel/index.html @@ -0,0 +1,101 @@ +--- +title: downloads.cancel() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/cancel +tags: + - API + - Add-ons + - Annuler + - Extensions + - Metho + - Non-standard + - Reference + - Téléchargement + - WebExtensions + - cancel + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/cancel +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <code><strong>cancel</strong></code><strong><code>()</code></strong> de l'API de {{WebExtAPIRef("downloads")}} annule un téléchargement. L'appel échouera si le téléchargement n'est pas actif : par exemple, parce qu'il a terminé le téléchargement..</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var canceling = browser.downloads.cancel( + downloadId // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>downloadId</code></dt> + <dd><code>integer</code>. L'identifiant du téléchargement à annuler.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si la demande a été acceptée, la promesse sera remplie sans arguments. Si la demande a échoué, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.cancel")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">var downloadId = 13; + +function onCanceled() { + console.log(`Canceled download`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var canceling = browser.downloads.cancel(downloadId); +canceling.then(onCanceled, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/dangertype/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/dangertype/index.html new file mode 100644 index 0000000000..c2172ceade --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/dangertype/index.html @@ -0,0 +1,93 @@ +--- +title: downloads.DangerType +slug: Mozilla/Add-ons/WebExtensions/API/downloads/DangerType +tags: + - API + - Add-ons + - DangerType + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/DangerType +--- +<p>{{AddonSidebar()}}</p> + +<p>Le type <code>DangerType</code> de l'API {{WebExtAPIRef("downloads")}} définit un ensemble de raisons possibles pour lesquelles un fichier téléchargeable peut être considéré comme dangereux..</p> + +<p>Une propriété de <code>danger</code> {{WebExtAPIRef('downloads.DownloadItem')}} contiendra une chaîne tirée des valeurs définies dans ce type.</p> + +<div class="note"> +<p><strong>Remarque </strong>: Ces constantes de chaîne ne changeront jamais, mais l'ensemble de DangerTypes peut change.</p> +</div> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<dl> + <dt><code>file</code></dt> + <dd>Le nom de fichier du téléchargement est suspect.</dd> + <dt><code>url</code></dt> + <dd>L'URL du téléchargement est connue pour être malveillante.</dd> + <dt><code>content</code></dt> + <dd>Le fichier téléchargé est connu pour être malveillant.</dd> + <dt><code>uncommon</code></dt> + <dd>L'URL du téléchargement n'est pas généralement téléchargée.</dd> + <dt><code>host</code></dt> + <dd>Le téléchargement provenait d'un hôte connu pour distribuer des binaires malveillants.</dd> + <dt><code>unwanted</code></dt> + <dd>Le téléchargement est potentiellement indésirable ou dangereux..</dd> + <dt><code>safe</code></dt> + <dd>Le téléchargement ne présente aucun danger connu pour l'ordinateur de l'utilisateur.</dd> + <dt><code>accepted</code></dt> + <dd>L'utilisateur a accepté le téléchargement dangereux.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.DangerType")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIEen-S, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/doubledelta/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/doubledelta/index.html new file mode 100644 index 0000000000..cbb6f5bcd3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/doubledelta/index.html @@ -0,0 +1,75 @@ +--- +title: downloads.DoubleDelta +slug: Mozilla/Add-ons/WebExtensions/API/downloads/DoubleDelta +tags: + - API + - Add-ons + - DoubleDelta + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/DoubleDelta +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code>DoubleDelta</code> de l'API {{WebExtAPIRef("downloads")}} représente la différence entre deux doubles.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>current</code>{{optional_inline}}</dt> + <dd>Un <code>number</code> représentant la double valeur actuelle.</dd> + <dt><code>previous</code>{{optional_inline}}</dt> + <dd>Un <code>number</code> représentant la valeur double précédente.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.DoubleDelta")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/download/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/download/index.html new file mode 100644 index 0000000000..91d8ac0098 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/download/index.html @@ -0,0 +1,145 @@ +--- +title: downloads.download() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/download +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - download + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/download +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <strong><code>download()</code></strong> de l'API {{WebExtAPIRef("downloads")}} télécharge le fichier, compte tenu de son URL et d'autres préférences optionnelles.</p> + +<ul> + <li>Si l'<code>url</code> spécifiée utilise le protocole HTTP ou HTTPS, la requête inclura tous les cookies actuellement définis pour son nom d'hôte.</li> + <li>Si à la fois le <code>nom de fichier</code> et <code>saveAs</code> sont spécifiés, la boîte de dialogue Enregistrer sous s'affiche, pré-remplie avec le <code>nom du fichier</code> spécifié.</li> +</ul> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var downloading = browser.downloads.download( + options // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>options</code></dt> + <dd>Un <code>object</code> spécifiant le fichier que vous souhaitez télécharger et toutes les autres préférences que vous souhaitez définir concernant le téléchargement. Il peut contenir les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>allowHttpErrors</code>{{optional_inline}}</dt> + <dd>Un tag <code>booléen</code> qui permet de poursuivre les téléchargements même s'ils rencontrent des erreurs HTTP. L'utilisation de ce drapeau, par exemple, permet le téléchargement des pages d'erreur du serveur. La valeur par défaut est <code>false</code>. Lorsqu'il est défini à : + <ul> + <li><code>false</code>, le téléchargement est annulé lorsqu'il rencontre une erreur HTTP.</li> + <li><code>true</code>, le téléchargement se poursuit lorsqu'une erreur HTTP est rencontrée et que l'erreur du serveur HTTP n'est pas signalée. Toutefois, si le téléchargement échoue en raison d'une erreur liée au fichier, au réseau, à l'utilisateur ou autre, cette erreur est signalée.</li> + </ul> + </dd> + <dt><code>body</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> représentant le corps du message de la requête.</dd> + <dt><code>conflictAction</code>{{optional_inline}}</dt> + <dd>Une chaîne représentant l'action que vous voulez effectuer s'il y a un conflit de nom de fichier, tel que défini dans le {{WebExtAPIRef('downloads.FilenameConflictAction')}} type (par défaut "uniquify" quand il n'est pas spécifié).</dd> + <dt><code>filename</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> eprésentant un chemin d'accès au fichier par rapport au répertoire de téléchargement par défaut, qui indique l'emplacement où vous souhaitez enregistrer le fichier et le nom de fichier que vous souhaitez utiliser. Les chemins absolus, les chemins vides et les chemins contenant des références arrières (<code>../</code>) provoqueront une erreur. Si elle est omise, cette valeur sera par défaut le nom de fichier déjà donné au fichier de téléchargement, et un emplacement immédiatement dans le répertoire de téléchargement.</dd> + <dt><code>headers</code>{{optional_inline}}</dt> + <dd>Si l'URL utilise les protocoles HTTP ou HTTPS, un <code>array</code> d'<code>objects</code> représentant des en-têtes HTTP supplémentaires à envoyer avec la requête. Chaque en-tête est représenté sous la forme d'un objet dictionnaire contenant le <code>name</code> des clés et soit la <code>value</code>, soit la valeur <code>binaryValue</code>. Les en-têtes interdits par <code>XMLHttpRequest</code> et <code>fetch</code> ne peuvent pas être spécifiés, cependant, Firefox 70 et les versions ultérieures permettent d'utiliser l'en-tête <code>Referer</code>. Tenter d'utiliser un en-tête interdit provoque une erreur.</dd> + <dt><code>incognito</code>{{optional_inline}}</dt> + <dd>Un <code>boolean</code>: s'il est présent et défini sur true, associez ce téléchargement à une session de navigation privée. Cela signifie qu'il n'apparaîtra dans le gestionnaire de téléchargement que pour les fenêtres privées actuellement ouvertes.</dd> + <dt><code>method</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> représentant la méthode HTTP à utiliser si l'<code>url</code> utilise le protocole HTTP[S]. Cela peut être "GET" ou "POST".</dd> + <dt><code>saveAs</code>{{optional_inline}}</dt> + <dd> + <p>Un <code>boolean</code> qui spécifie s'il faut fournir une boîte de dialogue de sélection de fichier pour permettre à l'utilisateur de sélectionner un nom de fichier (<code>true</code>), ou non (<code>false</code>).</p> + + <p>Si cette option est omise, le navigateur affichera le sélecteur de fichier ou non en fonction de la préférence générale de l'utilisateur pour ce comportement (dans Firefox cette préférence est intitulée "Toujours vous demander où enregistrer les fichiers" dans about:preferences, ou <code>browser.download.useDownloadDir</code> dans about:config).</p> + + <div class="note"> + <p><strong>Note</strong>: Firefox pour Android provoque une erreur si <code>saveAs</code> est à <code>true</code>. Le paramètre est ignoré lorsque <code>saveAs</code> est <code>false</code> ou non inclus.</p> + </div> + </dd> + <dt><code>url</code></dt> + <dd>Un <code>string</code> représentant l'URL à télécharger.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si le téléchargement a démarré avec succès, la promesse sera remplie avec l'<code>id</code> de la nouvelle {{WebExtAPIRef("downloads.DownloadItem")}}. Sinon, la promesse sera rejetée avec un message d'erreur venant de {{WebExtAPIRef("downloads.InterruptReason")}}.</p> + +<p>Si vous utilisez <a href="/fr/docs/Web/API/URL/createObjectURL">URL.createObjectURL()</a> pour télécharger des données créées en JavaScript et que vous voulez révoquer l'URL de l'objet (avec <a href="/fr/docs/Web/API/URL/revokeObjectURL">revokeObjectURL</a>) plus tard (comme il est fortement recommandé), vous devez le faire après le téléchargement. Pour ce faire, écoutez l'événement <a href="/fr/Add-ons/WebExtensions/API/downloads/onChanged">downloads.onChanged</a>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden"><span class="tlid-translation translation"><span title="">Le tableau de compatibilité de cette page est généré à partir de données structurées.</span> <span title="">Si vous souhaitez contribuer aux données, veuillez consulter</span></span> <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> <span class="tlid-translation translation"><span title="">et envoyez-nous une demande</span></span> .</p> + +<p>{{Compat("webextensions.api.downloads.download")}}</p> + +<h2 id="Examples">Examples</h2> + +<p>Le fragment suivant tente de télécharger un exemple de fichier, en spécifiant également un nom de fichier et un emplacement pour l'enregistrer, ainsi que l'option <code>uniquify</code> <code>conflictAction</code>.</p> + +<pre class="brush: js">function onStartedDownload(id) { + console.log(`Started downloading: ${id}`); +} + +function onFailed(error) { + console.log(`Download failed: ${error}`); +} + +var downloadUrl = "https://example.org/image.png"; + +var downloading = browser.downloads.download({ + url : downloadUrl, + filename : 'my-image-again.png', + conflictAction : 'uniquify' +}); + +downloading.then(onStartedDownload, onFailed);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> +</div> + +<div class="hidden"> +<pre> <span class="tlid-translation translation">// Copyright 2015 Les auteurs de chrome. Tous les droits sont réservés. +// +// Redistribution et utilisation sous forme source et binaire, avec ou sans +// modification, sont autorisées à condition que les conditions suivantes soient +// rencontré: +// +// * Les redistributions de code source doivent conserver le copyright ci-dessus +// remarque, cette liste de conditions et la clause de non-responsabilité suivante. +// * Les redistributions sous forme binaire doivent reproduire ce qui précède +// avis de droit d'auteur, cette liste de conditions et la clause de non-responsabilité suivante // dans la documentation et / ou les autres éléments fournis avec le +// Distribution. +// * Ni le nom de Google Inc. ni les noms de ses +// les contributeurs peuvent être utilisés pour approuver ou promouvoir des produits dérivés de +// ce logiciel sans autorisation écrite préalable spécifique. +// +// CE LOGICIEL EST FOURNI PAR LES TITULAIRES DE COPYRIGHT ET LES CONTRIBUTEURS +// "EN L'ETAT" ET TOUTE GARANTIE EXPRESSE OU IMPLICITE, Y COMPRIS MAIS NON +// LIMITE AUX GARANTIES IMPLICITES DE QUALITÉ MARCHANDE ET D'ADÉQUATION À +// UN OBJECTIF PARTICULIER EST REFUSÉ. EN AUCUN CAS, LE COPYRIGHT +// LE PROPRIÉTAIRE OU LES CONTRIBUTEURS SONT RESPONSABLES DE TOUT ASSISTANCE DIRECTE, INDIRECTE, ACCESSOIRE, +// DOMMAGES PARTICULIERS, EXEMPLAIRES OU CONSÉCUTIFS (Y COMPRIS, MAIS NON +// LIMITÉE À L'ACQUISITION DE MARCHANDISES OU DE SERVICES DE SUBSTITUTION; PERTE D'USAGE, +// DATA, OR PROFITS; OU INTERRUPTION COMMERCIALE) TOUTEFOIS CAUSÉE ET SUR TOUTE +// THÉORIE DE LA RESPONSABILITÉ, QU'IL SOIT UN CONTRAT, UNE RESPONSABILITÉ STRICTE OU UN TORT +// (INCLUANT LA NÉGLIGENCE OU AUTREMENT) SURVENANT DE TOUTE MANIÈRE DE L'UTILISER +// DE CE LOGICIEL, MÊME SI AVISÉ DE LA POSSIBILITÉ D'UN TEL DOMMAGE.</span> +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/downloaditem/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/downloaditem/index.html new file mode 100644 index 0000000000..852f9a66f2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/downloaditem/index.html @@ -0,0 +1,111 @@ +--- +title: downloads.DownloadItem +slug: Mozilla/Add-ons/WebExtensions/API/downloads/DownloadItem +tags: + - API + - Add-ons + - DownloadItem + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/DownloadItem +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code>DownloadItem</code> de l'API {{WebExtAPIRef("downloads")}} représente un fichier téléchargé.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>byExtensionId</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> représentant l'ID de l'extension qui a déclenché le téléchargement (si elle a été déclenchée par une extension). Cela ne change pas une fois réglé. Si le téléchargement n'a pas été déclenché par une extension, ceci n'est pas défini.</dd> + <dt><code>byExtensionName</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> représentant le nom de l'extension qui a déclenché le téléchargement (si elle a été déclenchée par une extension). Cela peut changer si l'extension change de nom ou si l'utilisateur change ses paramètres régionaux. Si le téléchargement n'a pas été déclenché par une extension, ceci n'est pas défini.</dd> + <dt><code>bytesReceived</code></dt> + <dd>Un <code>number</code> représentant le nombre d'octets reçus jusqu'ici de l'hôte pendant le téléchargement ; cela ne prend pas en compte la compression de fichier.</dd> + <dt><code>canResume</code></dt> + <dd>Un <code>boolean</code> indiquant si un téléchargement actuellement interrompu (par exemple en pause) peut être repris à partir du point où il a été interrompu (<code>true</code>), ou non (<code>false</code>).</dd> + <dt><code>danger</code></dt> + <dd>Une chaîne indiquant si ce téléchargement est considéré comme sûr ou suspect. Ses valeurs possibles sont définies dans le type {{WebExtAPIRef('downloads.DangerType')}}.</dd> + <dt><code>endTime</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> (au format <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a>) représentant le nombre de millisecondes entre l'époque UNIX et la fin de ce téléchargement. Ceci n'est pas défini si le téléchargement n'est pas encore terminé.</dd> + <dt><code>error</code>{{optional_inline}}</dt> + <dd>Une chaîne indiquant pourquoi un téléchargement a été interrompu. Les valeurs possibles sont définies dans le type {{WebExtAPIRef('downloads.InterruptReason')}}. Ceci n'est pas défini si une erreur ne s'est pas produite.</dd> + <dt><code>estimatedEndTime</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> (au format <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a>) représentant le nombre estimé de millisecondes entre l'époque UNIX et la date à laquelle ce téléchargement est estimé terminé. Ceci est indéfini s'il n'est pas connu (en particulier, il n'est pas défini dans le <code>DownloadItem</code> qui est passé dans {{WebExtAPIRef("downloads.onCreated")}}).</dd> + <dt><code>exists</code></dt> + <dd>Un <code>boolean</code> indiquant si un fichier téléchargé existe toujours (<code>true</code>) ou non (<code>false</code>). Ces informations peuvent être périmées, car les navigateurs ne surveillent pas automatiquement la suppression des fichiers. Pour vérifier si un fichier existe, appelez la méthode {{WebExtAPIRef('downloads.search()')}}, en filtrant le fichier question.</dd> + <dt><code>filename</code></dt> + <dd>Un <code>string</code> représentant le chemin local absolu du fichier.</dd> + <dt><code>fileSize</code></dt> + <dd>Un <code>number</code> indiquant le nombre total d'octets dans le fichier entier, après décompression. La valeur -1 signifie que la taille totale du fichier est inconnue.</dd> + <dt><code>id</code></dt> + <dd>Un <code>integer</code> représentant un identifiant unique pour le fichier téléchargé qui est persistant entre les sessions du navigateur.</dd> + <dt><code>incognito</code></dt> + <dd>Un <code>boolean</code> qui indique si le téléchargement est enregistré dans l'historique du navigateur (<code>false</code>), ou non (<code>true</code>).</dd> + <dt><code>mime</code></dt> + <dd>Un <code>string</code> représentant le type MIME du fichier téléchargé.</dd> + <dt><code>paused</code></dt> + <dd>Un <code>boolean</code> indiquant si le téléchargement est en pause, c'est-à-dire si le téléchargement a cessé de lire les données de l'hôte mais a maintenu la connexion ouverte. Si c'est le cas, la valeur est <code>true</code>, sinon <code>false</code>.</dd> + <dt><code>referrer</code></dt> + <dd>Un <code>string</code> représentant le référent du fichier téléchargé.</dd> + <dt><code>startTime</code></dt> + <dd>Un <code>string</code> (au format <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a>) représentant le nombre de millisecondes entre l'époque UNIX et le début du téléchargement.</dd> + <dt><code>state</code></dt> + <dd>Un <code>string</code> Indique si le téléchargement progresse, est interrompu ou terminé. Les valeurs possibles sont définies dans le type {{WebExtAPIRef('downloads.State')}}.</dd> + <dt><code>totalBytes</code></dt> + <dd>Un <code>number</code> indiquant le nombre total d'octets dans le fichier en cours de téléchargement. Cela ne prend pas en compte la compression de fichier. Une valeur de -1 signifie que le nombre total d'octets est inconnu..</dd> + <dt><code>url</code></dt> + <dd>Un <code>string</code> représentant l'URL absolue à partir de laquelle le fichier a été téléchargé.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.DownloadItem")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/downloadquery/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/downloadquery/index.html new file mode 100644 index 0000000000..e2ec0675a5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/downloadquery/index.html @@ -0,0 +1,122 @@ +--- +title: downloads.DownloadQuery +slug: Mozilla/Add-ons/WebExtensions/API/downloads/DownloadQuery +tags: + - API + - Add-ons + - DownloadQuery + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/DownloadQuery +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code>DownloadQuery</code> de l'API {{WebExtAPIRef("downloads")}} définit un ensemble de paramètres pouvant être utilisés pour rechercher dans le gestionnaire de téléchargements un ensemble spécifique de téléchargements.</p> + +<p>Ce type est utilisé par exemple dans {{WebExtAPIRef("downloads.search()")}} et {{WebExtAPIRef("downloads.erase()")}}, en tant qu'objet de requête pour filtrer l'ensemble de {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} pour retourner ou effacer.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>query</code>{{optional_inline}}</dt> + <dd>Un <code>tableau</code> de<code><code>chaines</code></code>. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} dont le <code>nom de fichier</code> ou l'<code>URL</code> contient toutes les chaînes données. Vous pouvez également inclure des termes commençant par un titet (-) — ces termes <strong>ne doivent pas</strong> figurer dans le <code>nom du fichier</code> ou l'<code>url</code> de l'élément à inclure.</dd> + <dt><code>startedBefore</code>{{optional_inline}}</dt> + <dd>Un {{WebExtAPIRef('downloads.DownloadTime', "DownloadTime")}}. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} qui a démarré avant l'heure indiquée.</dd> + <dt><code>startedAfter</code>{{optional_inline}}</dt> + <dd>Un {{WebExtAPIRef('downloads.DownloadTime', "DownloadTime")}}. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} qui a démarré après l'heure indiquée.</dd> + <dt><code>endedBefore</code>{{optional_inline}}</dt> + <dd>Un {{WebExtAPIRef('downloads.DownloadTime', "DownloadTime")}}. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} qui s'est terminé avant l'heure indiquée.</dd> + <dt><code>endedAfter</code>{{optional_inline}}</dt> + <dd>Un {{WebExtAPIRef('downloads.DownloadTime', "DownloadTime")}}. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} qui s'est terminé après l'heure indiquée.</dd> + <dt><code>totalBytesGreater</code>{{optional_inline}}</dt> + <dd>Un <code>number</code> représentant un nombre d'octets. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} dont le <code>totalBytes</code> est supérieur au nombre donné.</dd> + <dt><code>totalBytesLess</code>{{optional_inline}}</dt> + <dd>Un <code>number</code> représentant un nombre d'octets. Inclure seulement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} dont le <code>totalBytes</code> est inférieur au nombre donné.</dd> + <dt><code>filenameRegex</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> représentant une expression régulière. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} dont le <code>nom du fichier</code> correspond à l'expression régulière donnée..</dd> + <dt><code>urlRegex</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> représentant une expression régulière. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} dont la valeur d'<code>url</code> correspond à l'expression régulière donnée..</dd> + <dt><code>limit</code>{{optional_inline}}</dt> + <dd>Un <code>integer</code> représentant un nombre de résultats. Incluez uniquement le nombre spécifié de {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}}.</dd> + <dt><code>orderBy</code>{{optional_inline}}</dt> + <dd>Un <code>tableau</code>de <code><code>chaînes</code></code> représentant les propriétés {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} les résultats de la recherche doivent être tirés par exemple, en incluant <code>startTime</code> puis <code>totalBytes</code> dans le tableau trierait {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} par leur heure de début, puis le total des octets — dans l'ordre croissant. Pour spécifier le tri par une propriété dans l'ordre décroissant, préfixez-le avec un trait d'union, par exemple <code>-startTime</code>.</dd> + <dt><code>id</code>{{optional_inline}}</dt> + <dd>Un <code>integer</code> représentant l'ID du {{WebExtAPIRef("downloads.DownloadItem")}} que vous souhaitez interroger.</dd> + <dt><code>url</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> représentant l'URL absolue à partir de laquelle le téléchargement a été initié, avant toute redirection.</dd> + <dt><code>filename</code>{{optional_inline}}</dt> + <dd>Un string représentant le chemin local absolu du fichier téléchargé que vous souhaitez interroger.</dd> + <dt><code>danger</code>{{optional_inline}}</dt> + <dd>Une chaîne représentant un {{WebExtAPIRef('downloads.DangerType')}} — inclut uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur de <code>danger</code> .</dd> + <dt><code>mime</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> représentant un type MIME. Incluez uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur <code>mime</code>.</dd> + <dt><code>startTime</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> représentant une heure au format <a class="external external-icon" href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a>. Incluez seulement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur <code>startTime</code>.</dd> + <dt><code>endTime</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> représentant une heure au format <a class="external external-icon" href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a>. Inclure uniquement sera limité à {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur <code>endTime</code>.</dd> + <dt><code>state</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> représentant un téléchargement {{WebExtAPIRef('downloads.State')}} (<code>in_progress</code>, <code>interrupted</code>, or <code>complete</code>). Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur d' <code>état</code>.</dd> + <dt><code>paused</code>{{optional_inline}}</dt> + <dd>Un <code>boolean</code> qui indique si un téléchargement est en pause — c'est-à-dire qui a cessé de lire les données de l'hôte, mais qui a conservé la connexion ouverte (<code>true</code>), ou non (<code>false</code>). inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur de <code>pause</code>.</dd> + <dt><code>error</code>{{optional_inline}}</dt> + <dd>Une chaîne représentant un {{WebExtAPIRef('downloads.InterruptReason')}} — une raison pour laquelle un téléchargement a été interrompu. Inclure uniquement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur d' <code>erreur</code> .</dd> + <dt><code>bytesReceived</code>{{optional_inline}}</dt> + <dd>Un <code>number</code> représentant le nombre d'octets reçus jusqu'ici de l'hôte, sans tenir compte de la compression de fichier. Inclure seulement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur <code>bytesReceived</code>.</dd> + <dt><code>totalBytes</code>{{optional_inline}}</dt> + <dd>Un <code>number</code> représentant le nombre total d'octets dans le fichier téléchargé, sans tenir compte de la compression de fichier. Inclure seulement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur <code>totalBytes</code>.</dd> + <dt><code>fileSize</code>{{optional_inline}}</dt> + <dd><code>number</code>. Nombre d'octets dans le fichier entier après la décompression, ou -1 si inconnu. Un <code>nombre</code> représentant le nombre total d'octets dans le fichier après la décompression. Inclure seulement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur <code>fileSize</code>.</dd> + <dt><code>exists</code>{{optional_inline}}</dt> + <dd>Un <code>boolean</code> si un fichier téléchargé existe toujours (<code>true</code>) ou non (<code>false</code>). Inclure seulement {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} avec cette valeur <code>existe</code>.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.DownloadQuery")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/downloadtime/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/downloadtime/index.html new file mode 100644 index 0000000000..6f0a8c38cb --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/downloadtime/index.html @@ -0,0 +1,79 @@ +--- +title: downloads.DownloadTime +slug: Mozilla/Add-ons/WebExtensions/API/downloads/DownloadTime +tags: + - API + - Add-ons + - DownloadTime + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/DownloadTime +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code>DownloadTime</code> de l'API {{WebExtAPIRef("downloads")}} représente le temps nécessaire au téléchargement.</p> + +<h2 id="Type">Type</h2> + +<p>Un <code>DownloadTime</code> peut être l'un de trois types différents :</p> + +<ul> + <li>Un objet JavaScript <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date">Date</a></code>.</li> + <li>a string: + <ul> + <li>Si cela ne contient que des chiffres, il est interprété comme le nombre de millisecondes écoulées depuis l'époque UNI.</li> + <li>inon, il est interprété comme une chaîne <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a>.</li> + </ul> + </li> + <li>un nombre : ceci est interprété comme le nombre de millisecondes écoulées depuis l'époque UNIX.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.DownloadTime")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/drag/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/drag/index.html new file mode 100644 index 0000000000..a86ca1a48d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/drag/index.html @@ -0,0 +1,80 @@ +--- +title: downloads.drag() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/drag +tags: + - API + - Add-ons + - Drag + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/drag +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <code><strong>drag</strong></code><strong><code>()</code></strong> de l'API {{WebExtAPIRef("downloads")}} initie le glissement du fichier téléchargé vers une autre application.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">chrome.downloads.drag( + downloadId // integer +) +</pre> + +<p>Cette API est également disponible en tant que <code>browser.downloads.drag()</code>.</p> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>downloadId</code></dt> + <dd>Un <code>integer</code> représentant l'<code>id</code> du {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} ein question.</dd> +</dl> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.drag")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/erase/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/erase/index.html new file mode 100644 index 0000000000..ae4f84a452 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/erase/index.html @@ -0,0 +1,123 @@ +--- +title: downloads.erase() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/erase +tags: + - API + - Add-ons + - Effacer + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - downloads + - erase +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/erase +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <code><strong>erase</strong></code><strong><code>()</code></strong> de l'API {{WebExtAPIRef("downloads")}} efface la correspondance {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} de l'historique de téléchargement du navigateur sans supprimer les fichiers téléchargés du disque.</p> + +<p>Pour supprimer les fichiers du disque, vous devez utiliser {{WebExtAPIRef("downloads.removeFile()")}}.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<div class="note"> +<p><strong>Remarque </strong>: Si vous souhaitez supprimer un fichier téléchargé du disque et l'effacer de l'historique, vous devez appeler {{WebExtAPIRef("downloads.removeFile()")}} before you call <code>erase()</code>. Si vous l'essayez dans l'autre sens, vous obtiendrez une erreur lors de l'appel de {{WebExtAPIRef("downloads.removeFile()")}}, car il n'existe plus selon le navigateur.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var erasing = browser.downloads.erase( + query // DownloadQuery +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>query</code></dt> + <dd>Un objet {{WebExtAPIRef('downloads.DownloadQuery')}}.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si l'appel a réussi, la promesse sera remplie avec un tableau d'entiers représentant les identifiants des {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} effacés. Si aucun élément correspondant au paramètre de requête n'a pu être trouvé, le tableau sera vide. Si l'appel a échoué, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.erase")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Effacer le téléchargement le plus récent :</p> + +<pre class="brush: js">function onErased(ids) { + console.log(`Erased: ${ids}`); +} + +function onError(error) { + console.log(`Error erasing item: ${error}`); +} + +var erasing = browser.downloads.erase({ + limit: 1, + orderBy: ["-startTime"] +}); + +erasing.then(onErased, onError);</pre> + +<p>Tout effacer :</p> + +<pre class="brush: js">function onErased(ids) { + console.log(`Erased: ${ids}`); +} + +function onError(error) { + console.log(`Error erasing item: ${error}`); +} + +var erasing = browser.downloads.erase({}); +erasing.then(onErased, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/filenameconflictaction/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/filenameconflictaction/index.html new file mode 100644 index 0000000000..e5230302c3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/filenameconflictaction/index.html @@ -0,0 +1,79 @@ +--- +title: downloads.FilenameConflictAction +slug: Mozilla/Add-ons/WebExtensions/API/downloads/FilenameConflictAction +tags: + - API + - Add-ons + - Extensions + - FilenameConflitAction + - Non-standard + - Reference + - Type + - WebExtensions + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/FilenameConflictAction +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code>FilenameConflictAction</code> de l'API {{WebExtAPIRef("downloads")}} spécifie que faire si le nom d'un fichier téléchargé est en conflit avec un fichier existant.</p> + +<p>Ce type définit les valeurs pouvant être utilisées pour la propriété <code>conflictAction</code> du paramètre d'<code>options</code> {{WebExtAPIRef("downloads.download")}}.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<dl> + <dt><code>"uniquify"</code></dt> + <dd>Le navigateur modifiera le nom de fichier pour le rendre unique.</dd> + <dt><code>"overwrite"</code></dt> + <dd>Le navigateur écrase l'ancien fichier avec le fichier nouvellement téléchargé.</dd> + <dt><code>"prompt"</code></dt> + <dd>Le navigateur invitera l'utilisateur, lui demandant de choisir s'il souhaite l'uniquifier ou l'écraser.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.FilenameConflictAction")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/getfileicon/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/getfileicon/index.html new file mode 100644 index 0000000000..93ed388d2d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/getfileicon/index.html @@ -0,0 +1,124 @@ +--- +title: downloads.getFileIcon() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/getFileIcon +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - downloads + - getFileIcon +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/getFileIcon +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <code><strong>getFileIcon</strong></code><strong><code>()</code></strong> de l'API {{WebExtAPIRef("downloads")}} récupère une icône pour le téléchargement spécifié.</p> + +<p>Pour les nouveaux téléchargements, les icônes de fichiers sont disponibles après la réception de l'événement {{WebExtAPIRef("downloads.onCreated")}}. L'image renvoyée par cette fonction pendant le téléchargement peut être différente de l'image renvoyée une fois le téléchargement terminé.</p> + +<p>La récupération d'icônes s'effectue en interrogeant la plateforme sous-jacente. L'icône renvoyée dépendra donc d'un certain nombre de facteurs, notamment l'état du téléchargement, la plate-forme, les types de fichiers enregistrés et le thème visuel.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingIcon = browser.downloads.getFileIcon( + downloadId, // integer + options // optional object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>downloadId</code></dt> + <dd>Un <code>integer</code> eprésentant l'ID du téléchargement.</dd> + <dt><code>options</code>{{optional_inline}}</dt> + <dd>Un <code>object</code> d'options représentant les préférences pour l'icône à extraire. Il peut prendre les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>size</code>{{optional_inline}}</dt> + <dd>Un <code>integer</code> représentant la taille de l'icône. La taille de l'icône retournée sera la taille fournie au carré (en pixels). Si elle est omise, la taille par défaut de l'icône est 32x32 pixels.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si la requête réussit, la promesse sera remplie avec une chaîne représentant l'URL absolue de l'icône. Si la requête échoue, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.getFileIcon")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple enregistre l'URL de l'icône pour le téléchargement le plus récent :</p> + +<pre class="brush: js">function gotIcon(iconUrl) { + console.log(iconUrl); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +function getIcon(downloadItems) { + if (downloadItems.length > 0) { + latestDownloadId = downloadItems[0].id; + var gettingIcon = browser.downloads.getFileIcon(latestDownloadId); + gettingIcon.then(gotIcon, onError); + } + } + +var searching = browser.downloads.search({ + limit: 1, + orderBy: ["-startTime"] +}); + +searching.then(getIcon, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/index.html new file mode 100644 index 0000000000..1207f30d8c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/index.html @@ -0,0 +1,132 @@ +--- +title: downloads +slug: Mozilla/Add-ons/WebExtensions/API/downloads +tags: + - API + - Add-ons + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads +--- +<div>{{AddonSidebar}}</div> + +<p>Permet aux extensions d'interagir avec le gestionnaire de téléchargement du navigateur. Vous pouvez utiliser ce module API pour télécharger des fichiers, annuler, suspendre, reprendre des téléchargements et afficher les fichiers téléchargés dans le gestionnaire de fichiers.</p> + +<p>Pour utiliser cette API, vous devez disposer de l' <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API permission</a> "downloads" spécifiée dans votre fichier <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a>.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("downloads.FilenameConflictAction")}}</dt> + <dd>Définit les options pour ce qu'il faut faire si le nom d'un fichier téléchargé est en conflit avec un fichier existant.</dd> + <dt>{{WebExtAPIRef("downloads.InterruptReason")}}</dt> + <dd>Définit un ensemble de raisons possibles pour lesquelles un téléchargement a été interrompu.</dd> + <dt>{{WebExtAPIRef("downloads.DangerType")}}</dt> + <dd>Définit un ensemble d'avertissements communs des dangers possibles associés aux fichiers téléchargeables.</dd> + <dt>{{WebExtAPIRef("downloads.State")}}</dt> + <dd>Définit différents états dans lesquels un téléchargement en cours peut être.</dd> + <dt>{{WebExtAPIRef("downloads.DownloadItem")}}</dt> + <dd>Représente un fichier téléchargé.</dd> + <dt>{{WebExtAPIRef("downloads.StringDelta")}}</dt> + <dd>Représente la différence entre deux chaînes.</dd> + <dt>{{WebExtAPIRef("downloads.DoubleDelta")}}</dt> + <dd>Représente la différence entre deux doubles.</dd> + <dt>{{WebExtAPIRef("downloads.BooleanDelta")}}</dt> + <dd>Représente la différence entre deux booléens.</dd> + <dt>{{WebExtAPIRef("downloads.DownloadTime")}}</dt> + <dd>Représente le temps nécessaire au téléchargement pour terminer.</dd> + <dt>{{WebExtAPIRef("downloads.DownloadQuery")}}</dt> + <dd>Définit un ensemble de paramètres pouvant être utilisés pour rechercher dans le gestionnaire de téléchargements un ensemble de téléchargements spécifique.</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("downloads.download()")}}</dt> + <dd>Télécharge un fichier, compte tenu de son URL et d'autres préférences optionnelles.</dd> + <dt>{{WebExtAPIRef("downloads.search()")}}</dt> + <dd>Interroge le {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} disponible dans le gestionnaire de téléchargements du navigateur et renvoie ceux qui correspondent aux critères de recherche spécifiés.</dd> + <dt>{{WebExtAPIRef("downloads.pause()")}}</dt> + <dd>Suspend un téléchargement.</dd> + <dt>{{WebExtAPIRef("downloads.resume()")}}</dt> + <dd>Reprend un téléchargement suspendu.</dd> + <dt>{{WebExtAPIRef("downloads.cancel()")}}</dt> + <dd>Annule un téléchargement.</dd> + <dt>{{WebExtAPIRef("downloads.getFileIcon()")}}</dt> + <dd>Récupère une icône pour le téléchargement spécifié.</dd> + <dt>{{WebExtAPIRef("downloads.open()")}}</dt> + <dd>Ouvre le fichier téléchargé avec son application associée.</dd> + <dt>{{WebExtAPIRef("downloads.show()")}}</dt> + <dd>Ouvre l'application du gestionnaire de fichiers de la plateforme pour afficher le fichier téléchargé dans son dossier conteneur.</dd> + <dt>{{WebExtAPIRef("downloads.showDefaultFolder()")}}</dt> + <dd>Ouvre l'application du gestionnaire de fichiers de la plateforme pour afficher le dossier de téléchargements par défaut.</dd> + <dt>{{WebExtAPIRef("downloads.erase()")}}</dt> + <dd>Efface la correspondance {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} de l'historique de téléchargement du navigateur, sans supprimer les fichiers téléchargés du disque.</dd> + <dt>{{WebExtAPIRef("downloads.removeFile()")}}</dt> + <dd>Supprime un fichier téléchargé du disque, mais pas de l'historique de téléchargement du navigateur.</dd> + <dt>{{WebExtAPIRef("downloads.acceptDanger()")}}</dt> + <dd>Invite l'utilisateur à accepter ou annuler un téléchargement dangereux.</dd> + <dt>{{WebExtAPIRef("downloads.drag()")}}</dt> + <dd>Lance le glissement du fichier téléchargé vers une autre application.</dd> + <dt>{{WebExtAPIRef("downloads.setShelfEnabled()")}}</dt> + <dd>Active ou désactive l'étagère grise en bas de chaque fenêtre associée au profil de navigateur actuel. L'étagère sera désactivée si au moins une extension l'a désactivée.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("downloads.onCreated")}}</dt> + <dd>Se déclenche avec l'objet {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} lorsqu'un téléchargement commence.</dd> + <dt>{{WebExtAPIRef("downloads.onErased")}}</dt> + <dd>Se déclenche avec <code>downloadId</code> lorsqu'un téléchargement est effacé de l'historique.</dd> + <dt>{{WebExtAPIRef("downloads.onChanged")}}</dt> + <dd>Lorsque l'une des propriétés de {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} sauf les changements <code>bytesReceived</code>, cet événement se déclenche avec le <code>downloadId</code> et un objet contenant les propriétés qui ont changé.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.downloads")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/interruptreason/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/interruptreason/index.html new file mode 100644 index 0000000000..d192c324d2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/interruptreason/index.html @@ -0,0 +1,119 @@ +--- +title: downloads.InterruptReason +slug: Mozilla/Add-ons/WebExtensions/API/downloads/InterruptReason +tags: + - API + - Add-ons + - Extensions + - InterruptReason + - Non-standard + - Reference + - Type + - WebExtensions + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/InterruptReason +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code>InteruptReason</code> de l'API {{WebExtAPIRef("downloads")}} définit un ensemble de raisons possibles pour lesquelles un téléchargement a été interrompu.</p> + +<p>Une propriété {{WebExtAPIRef('downloads.DownloadItem')}} d'<code>erreur</code> contiendra une chaîne tirée des valeurs définies dans ce type.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont divisées en catégories, chaque ensemble ayant la même sous-chaîne au début:</p> + +<p>Erreurs liées au fichier :</p> + +<ul> + <li><code>"FILE_FAILED"</code></li> + <li><code>"FILE_ACCESS_DENIED"</code></li> + <li><code>"FILE_NO_SPACE"</code></li> + <li><code>"FILE_NAME_TOO_LONG"</code></li> + <li><code>"FILE_TOO_LARGE"</code></li> + <li><code>"FILE_VIRUS_INFECTED"</code></li> + <li><code>"FILE_TRANSIENT_ERROR"</code></li> + <li><code>"FILE_BLOCKED"</code></li> + <li><code>"FILE_SECURITY_CHECK_FAILED"</code></li> + <li><code>"FILE_TOO_SHORT"</code></li> +</ul> + +<p>Erreurs liées au réseau :</p> + +<ul> + <li><code>"NETWORK_FAILED"</code></li> + <li><code>"NETWORK_TIMEOUT"</code></li> + <li><code>"NETWORK_DISCONNECTED"</code></li> + <li><code>"NETWORK_SERVER_DOWN"</code></li> + <li><code>"NETWORK_INVALID_REQUEST"</code></li> +</ul> + +<p>Erreurs liées au serveur :</p> + +<ul> + <li><code>"SERVER_FAILED"</code></li> + <li><code>"SERVER_NO_RANGE"</code></li> + <li><code>"SERVER_BAD_CONTENT"</code></li> + <li><code>"SERVER_UNAUTHORIZED"</code></li> + <li><code>"SERVER_CERT_PROBLEM"</code></li> + <li><code>"SERVER_FORBIDDEN"</code></li> +</ul> + +<p>Erreurs liées à l'utilisateur :</p> + +<ul> + <li><code>"USER_CANCELED"</code></li> + <li><code>"USER_SHUTDOWN"</code></li> +</ul> + +<p>Divers :</p> + +<ul> + <li><code>"CRASH"</code></li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.InterruptReason")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/onchanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/onchanged/index.html new file mode 100644 index 0000000000..eced6b4bae --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/onchanged/index.html @@ -0,0 +1,150 @@ +--- +title: downloads.onChanged +slug: Mozilla/Add-ons/WebExtensions/API/downloads/onChanged +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - Téléchargement + - WebExtensions + - downloads + - onChanged +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/onChanged +--- +<div>{{AddonSidebar()}}</div> + +<p>L'événement <code><strong>onChanged</strong></code><strong><code>()</code></strong> de l'API {{WebExtAPIRef("downloads")}} est déclenché lorsque l'une des propriétés de {{WebExtAPIRef('downloads.DownloadItem')}} change (à l'exception de <code>bytesReceived</code>).</p> + +<p>L'écouteur reçoit un fichier <code>downloadDelta</code> en tant que paramètre — un objet contenant le <code>downloadId</code> de l'objet {{WebExtAPIRef('downloads.DownloadItem')}} en question, plus le statut de toutes les propriétés qui ont changé.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.downloads.onChanged.addListener(listener) +browser.downloads.onChanged.removeListener(listener) +browser.downloads.onChanged.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si un <code>listener</code> donné est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Une fonction de rappel qui sera appelée lorsque cet événement se produira. Cette fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>downloadDelta</code></dt> + <dd>Un <a href="#downloadDelta"><code>objet</code></a> représentant l'objet {{WebExtAPIRef('downloads.DownloadItem')}} qui a été modifié, ainsi que l'état de toutes les propriétés qui y ont été modifiées.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="downloadDelta">downloadDelta</h3> + +<p>L'objet <code>downloadDelta</code> a les propriétés suivantes disponibles :</p> + +<dl class="reference-values"> + <dt><code>id</code></dt> + <dd>Un <code>integer</code> représentant l'identifiant de l'<code>id</code> {{WebExtAPIRef('downloads.DownloadItem')}} qui a changé.</dd> + <dt><code>url</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant une modification d'une <code>url</code> {{WebExtAPIRef('downloads.DownloadItem')}}.</dd> + <dt><code>filename</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un <code>filename</code> {{WebExtAPIRef('downloads.DownloadItem')}}</dd> + <dt><code>danger</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un <code>danger</code> {{WebExtAPIRef('downloads.DownloadItem')}}.</dd> + <dt><code>mime</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un <code>mime</code> {{WebExtAPIRef('downloads.DownloadItem')}}</dd> + <dt><code>startTime</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un <code>startTime</code> {{WebExtAPIRef('downloads.DownloadItem')}}.</dd> + <dt><code>endTime</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un <code>endTime</code> {{WebExtAPIRef('downloads.DownloadItem')}}.</dd> + <dt><code>state</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un <code>état</code> {{WebExtAPIRef('downloads.DownloadItem')}}</dd> + <dt><code>canResume</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef('downloads.BooleanDelta')}} décrivant un changement dans un état {{WebExtAPIRef('downloads.DownloadItem')}} <code>canResume</code>.</dd> + <dt><code>paused</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef('downloads.BooleanDelta')}} décrivant un changement dans un état en <code>pause</code> {{WebExtAPIRef('downloads.DownloadItem')}}.</dd> + <dt><code>error</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef('downloads.StringDelta')}} décrivant un changement dans un état d'<code>erreur</code> {{WebExtAPIRef('downloads.DownloadItem')}}.</dd> + <dt><code>totalBytes</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef('downloads.DoubleDelta')}} décrivant un changement dans un <code>totalBytes</code> {{WebExtAPIRef('downloads.DownloadItem')}}.</dd> + <dt><code>fileSize</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef('downloads.DoubleDelta')}} décrivant une modification d'un <code>fileSize</code> {{WebExtAPIRef('downloads.DownloadItem')}}.</dd> + <dt><code>exists</code>{{optional_inline}}</dt> + <dd>Un objet {{WebExtAPIRef('downloads.BooleanDelta')}} décrivant un changement dans un état {{WebExtAPIRef('downloads.DownloadItem')}}.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.onChanged")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez un message lorsque les téléchargements sont terminés :</p> + +<pre class="brush: js">function handleChanged(delta) { + if (delta.state && delta.state.current === "complete") { + console.log(`Download ${delta.id} has completed.`); + } +} + +browser.downloads.onChanged.addListener(handleChanged);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Acknowledgements</strong> + +<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/downloads#event-onChanged"><code>chrome.downloads</code></a> API.</p> + +<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/oncreated/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/oncreated/index.html new file mode 100644 index 0000000000..cdc9aff971 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/oncreated/index.html @@ -0,0 +1,110 @@ +--- +title: downloads.onCreated +slug: Mozilla/Add-ons/WebExtensions/API/downloads/onCreated +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - downlaods + - onCreated +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/onCreated +--- +<div>{{AddonSidebar()}}</div> + +<p>L'événement <code><strong>onCreated</strong></code><strong><code>()</code></strong> de l'API {{WebExtAPIRef("downloads")}} se déclenche lorsqu'un téléchargement commence, c'est à dire lorsque quand {{WebExtAPIRef("downloads.download()")}} est appelé avec succès.</p> + +<p>L'écouteur reçoit l'objet {{WebExtAPIRef('downloads.DownloadItem')}} en question en tant que paramètre.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.downloads.onCreated.addListener(listener) +browser.downloads.onCreated.removeListener(listener) +browser.downloads.onCreated.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si un <code>listener</code> donné est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>function</code></dt> + <dd> + <p>Une fonction de rappel qui sera appelée lorsque cet événement se produira. Cette fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>downloadItem</code></dt> + <dd>L'objet {{WebExtAPIRef('downloads.DownloadItem')}} en question.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.onCreated")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Consignez l'URL des éléments au fur et à mesure qu'ils sont téléchargés :</p> + +<pre class="brush: js">function handleCreated(item) { + console.log(item.url); +} + +browser.downloads.onCreated.addListener(handleCreated);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/onerased/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/onerased/index.html new file mode 100644 index 0000000000..055774ad4a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/onerased/index.html @@ -0,0 +1,115 @@ +--- +title: downloads.onErased +slug: Mozilla/Add-ons/WebExtensions/API/downloads/onErased +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - downloads + - onErased +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/onErased +--- +<div>{{AddonSidebar()}}</div> + +<p>L'événement <code><strong>onErased</strong></code><strong><code>()</code></strong> de l'API {{WebExtAPIRef("downloads")}} se déclenche lorsqu'un téléchargement est effacé de l'historique du navigateur.</p> + +<p>L'écouteur reçoit le paramètre <code>downloadId</code> de l'objet {{WebExtAPIRef('downloads.DownloadItem')}} en question en tant que paramètre.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.downloads.onErased.addListener(listener) +browser.downloads.onErased.removeListener(listener) +browser.downloads.onErased.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer..</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un <code>listener</code> donné est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="syntaxe_addListener">syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Une fonction de rappel qui sera appelée lorsque cet événement se produira. Cette fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>downloadId</code></dt> + <dd>Un <code>integer</code> représentant l'<code>id</code> du {{WebExtAPIRef('downloads.DownloadItem')}} qui a été effacé.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.onErased")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ajoute un écouteur pour les événements <code>onErased</code> , puis effacez le téléchargement le plus récent :</p> + +<pre class="brush: js">function handleErased(item) { + console.log(`Erased: ${item}`); +} + +browser.downloads.onErased.addListener(handleErased); + +var erasing = browser.downloads.erase({ + limit: 1, + orderBy: ["-startTime"] +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/open/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/open/index.html new file mode 100644 index 0000000000..085f4fff38 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/open/index.html @@ -0,0 +1,112 @@ +--- +title: downloads.open() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/open +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - downloads + - open +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/open +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <code><strong>open()</strong></code> de l'API {{WebExtAPIRef("downloads")}} ouvre le fichier téléchargé avec son application associée. Un événement {{WebExtAPIRef("downloads.onChanged")}} se déclenche lorsque l'élément est ouvert pour la première fois.</p> + +<p>Pour utiliser cette fonction dans votre extension, vous devez demander la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission manifest</a> "downloads.open", ainsi que la permission "downloads". En outre, vous pouvez uniquement appeler cette fonction à l'intérieur du gestionnaire pour une <a href="/fr/Add-ons/WebExtensions/User_actions">action utilisateur</a>.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var opening = browser.downloads.open( + downloadId // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>downloadId</code></dt> + <dd>Un <code>integer</code> représentant l'<code>id</code> du {{WebExtAPIRef("downloads.DownloadItem")}} que vous voulez ouvrir.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si la demande a été acceptée, la promesse sera remplie sans arguments. Si la demande a échoué, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.open")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple ouvre l'élément le plus récemment téléchargé :</p> + +<pre class="brush: js">function onOpened() { + console.log(`Opened download item`); +} + +function onError(error) { + console.log(`Error opening item: ${error}`); +} + +function openDownload(downloadItems) { + if (downloadItems.length > 0) { + var opening = browser.downloads.open(downloadItems[0].id); + opening.then(onOpened, onError); + } + } + +var searching = browser.downloads.search({ + limit: 1, + orderBy: ["-startTime"] +}); + +searching.then(openDownload, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/pause/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/pause/index.html new file mode 100644 index 0000000000..abde1025e6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/pause/index.html @@ -0,0 +1,96 @@ +--- +title: downloads.pause() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/pause +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - downloads + - pause +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/pause +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <code><strong>pause</strong></code><strong><code>()</code></strong> de l'API {{WebExtAPIRef("downloads")}} interrompt un téléchargement.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var pausing = browser.downloads.pause( + downloadId // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>downloadId</code></dt> + <dd>Un <code>integer</code> représetant l'<code>id</code> du téléchargement à mettre en pause.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si l'appel a réussi, le téléchargement sera mis en pause et la promesse sera satisfaite sans aucun argument. Si l'appel échoue, la promesse sera rejetée avec un message d'erreur. L'appel échouera si le téléchargement n'est pas actif: par exemple, parce qu'il a fini le téléchargement.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden"><span class="tlid-translation translation"><span title="">Le tableau de compatibilité de cette page est généré à partir de données structurées.</span> <span title="">Si vous souhaitez contribuer aux données, veuillez consulter</span></span> <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data </a> <span class="tlid-translation translation"><span title="">et envoyez-nous une demande</span></span>.</p> + +<p>{{Compat("webextensions.api.downloads.pause")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function onPaused() { + console.log(`Paused download`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var pausing = browser.downloads.pause(downloadId); +pausing.then(onPaused, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre> <span class="tlid-translation translation">// Copyright 2015 Les auteurs de chrome. Tous les droits sont réservés. +// +// Redistribution et utilisation sous forme source et binaire, avec ou sans +// modification, sont autorisées à condition que les conditions suivantes soient +// rencontré: +// +// * Les redistributions de code source doivent conserver le copyright ci-dessus +// remarque, cette liste de conditions et la clause de non-responsabilité suivante. +// * Les redistributions sous forme binaire doivent reproduire ce qui précède +// avis de droit d'auteur, cette liste de conditions et la clause de non-responsabilité suivante // dans la documentation et / ou les autres éléments fournis avec le +// Distribution. +// * Ni le nom de Google Inc. ni les noms de ses +// les contributeurs peuvent être utilisés pour approuver ou promouvoir des produits dérivés de +// ce logiciel sans autorisation écrite préalable spécifique. +// +// CE LOGICIEL EST FOURNI PAR LES TITULAIRES DE COPYRIGHT ET LES CONTRIBUTEURS +// "EN L'ETAT" ET TOUTE GARANTIE EXPRESSE OU IMPLICITE, Y COMPRIS MAIS NON +// LIMITE AUX GARANTIES IMPLICITES DE QUALITÉ MARCHANDE ET D'ADÉQUATION À +// UN OBJECTIF PARTICULIER EST REFUSÉ. EN AUCUN CAS, LE COPYRIGHT +// LE PROPRIÉTAIRE OU LES CONTRIBUTEURS SONT RESPONSABLES DE TOUT ASSISTANCE DIRECTE, INDIRECTE, ACCESSOIRE, +// DOMMAGES PARTICULIERS, EXEMPLAIRES OU CONSÉCUTIFS (Y COMPRIS, MAIS NON +// LIMITÉE À L'ACQUISITION DE MARCHANDISES OU DE SERVICES DE SUBSTITUTION; PERTE D'USAGE, +// DATA, OR PROFITS; OU INTERRUPTION COMMERCIALE) TOUTEFOIS CAUSÉE ET SUR TOUTE +// THÉORIE DE LA RESPONSABILITÉ, QU'IL SOIT UN CONTRAT, UNE RESPONSABILITÉ STRICTE OU UN TORT +// (INCLUANT LA NÉGLIGENCE OU AUTREMENT) SURVENANT DE TOUTE MANIÈRE DE L'UTILISER +// DE CE LOGICIEL, MÊME SI AVISÉ DE LA POSSIBILITÉ D'UN TEL DOMMAGE.</span> +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/removefile/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/removefile/index.html new file mode 100644 index 0000000000..54981387d4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/removefile/index.html @@ -0,0 +1,118 @@ +--- +title: downloads.removeFile() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/removeFile +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - downloads + - removeFile +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/removeFile +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <code><strong>removeFile</strong></code><strong><code>()</code></strong> de l'API {{WebExtAPIRef("downloads")}} supprime un fichier téléchargé du disque.</p> + +<p>Cette API supprime le fichier du disque, mais ne le supprime pas de l'historique des téléchargements du navigateur, donc un appel {{WebExtAPIRef("downloads.search()")}} renvoie toujours l'élément comme {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}}, mais son attribut <code>exists</code> sera <code>false</code>.</p> + +<p>Pour supprimer un fichier de l'historique des téléchargements, vous devez utiliser {{WebExtAPIRef("downloads.erase()")}}.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<div class="note"> +<p><strong>Remarque </strong>: Si vous souhaitez supprimer un fichier téléchargé du disque et l'effacer de l'historique, vous devez appeler <code>removeFile()</code> avant d'appeler {{WebExtAPIRef("downloads.erase()")}}. Si vous l'essayez dans l'autre sens, vous obtiendrez une erreur lors de l'appel de <code>removeFile()</code>, car le navigateur n'aura plus d'enregistrement du téléchargement.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.downloads.removeFile( + downloadId // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>downloadId</code></dt> + <dd>Un <code>integer</code> représentant l'identifiant de {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} que vous souhaitez supprimer du disque.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si la demande a été acceptée, la promesse sera remplie sans arguments. Si la demande a échoué, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.removeFile")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p><span class="short_text" id="result_box" lang="fr"><span>Supprimer le dernier fichier téléchargé :</span></span></p> + +<pre class="brush: js">function onRemoved() { + console.log(`Removed item`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +function remove(downloadItems) { + if (downloadItems.length > 0) { + var removing = browser.downloads.removeFile(downloadItems[0].id); + removing.then(onRemoved, onError); + } +} + +var searching = browser.downloads.search({ + limit: 1, + orderBy: ["-startTime"] +}); + +searching.then(remove, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/resume/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/resume/index.html new file mode 100644 index 0000000000..7f9770596f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/resume/index.html @@ -0,0 +1,99 @@ +--- +title: downloads.resume() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/resume +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - downloads + - resume +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/resume +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <code><strong>resume</strong></code><strong><code>()</code></strong> de l'API {{WebExtAPIRef("downloads")}} reprend un téléchargement suspendu. Si la demande a abouti, le téléchargement ne sera pas interrompu et la progression reprendra. L'appel <code>resume()</code> échouera si le téléchargement n'est pas actif: par exemple, parce qu'il a fini le téléchargement.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var resuming = browser.downloads.resume( + downloadId // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>downloadId</code></dt> + <dd>Un <code>integer</code> représentant l'<code>id</code> du téléchargement à reprendre.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si la demande a été acceptée, la promesse sera remplie sans arguments. Si la demande a échoué, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.resume")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">var downloadId = 2; + +function onResumed() { + console.log(`Resumed download`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var resuming = browser.downloads.resume(downloadId); +resuming.then(onResumed, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/search/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/search/index.html new file mode 100644 index 0000000000..8802c1f068 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/search/index.html @@ -0,0 +1,168 @@ +--- +title: downloads.search() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/search +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Recherche + - Reference + - Search + - WebExtensions + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/search +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <strong><code>search()</code></strong> de l'API {{WebExtAPIRef("downloads")}} interroge les {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} disponibles dans le gestionnaire de téléchargements du navigateur, et renvoie celles qui correspondent aux spécifications critères de recherche.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var searching = browser.downloads.search(query); +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>query</code></dt> + <dd>Un objet {{WebExtAPIRef('downloads.DownloadQuery')}}.</dd> +</dl> + +<h3 id="Return_value">Return value</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. La promise est remplie avec un <code>tableau d'objets</code> <code>{{WebExtAPIRef('downloads.DownloadItem')}}</code> qui correspondent aux critères donnés.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.search")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>En général, vous restreignez les éléments récupérés à l'aide du paramètre de <code>requête</code>.</p> + +<h3 id="Obtenez_les_téléchargements_correspondant_à_query">Obtenez les téléchargements correspondant à "query"</h3> + +<pre class="brush: js">function logDownloads(downloads) { + for (let download of downloads) { + console.log(download.id); + console.log(download.url); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var searching = browser.downloads.search({ + query:["imgur"] +}); + +searching.then(logDownloads, onError);</pre> + +<h3 id="Obtenez_un_article_spécifique">Obtenez un article spécifique</h3> + +<p>Pour obtenir un {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}}, la méthode la plus simple consiste à définir uniquement le champ <code>id</code>, comme indiqué dans l'extrait ci-dessous :</p> + +<pre class="brush: js">function logDownloads(downloads) { + for (let download of downloads) { + console.log(download.id); + console.log(download.url); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var id = 13; + +var searching = browser.downloads.search({id}); +searching.then(logDownloads, onError); +</pre> + +<h3 id="Obtenez_tous_les_téléchargements">Obtenez tous les téléchargements</h3> + +<p>Si vous voulez renvoyer tout {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}}, définissez la <code>query</code> sur un objet vide.</p> + +<pre class="brush: js">function logDownloads(downloads) { + for (let download of downloads) { + console.log(download.id); + console.log(download.url); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var searching = browser.downloads.search({}); +searching.then(logDownloads, onError);</pre> + +<h3 id="Obtenez_le_téléchargement_le_plus_récent">Obtenez le téléchargement le plus récent</h3> + +<p>Vous pouvez obtenir le téléchargement le plus récent en spécifiant les paramètres de recherche suivants :</p> + +<pre class="brush: js">function logDownloads(downloads) { + for (let download of downloads) { + console.log(download.id); + console.log(download.url); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var searching = browser.downloads.search({ + limit: 1, + orderBy: ["-startTime"] +}); +searching.then(logDownloads, onError);</pre> + +<p>Vous pouvez voir ce code en action par exemple dans notre <a href="https://github.com/mdn/webextensions-examples/blob/master/latest-download/popup/latest_download.js">dernier téléchargement</a>.</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/setshelfenabled/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/setshelfenabled/index.html new file mode 100644 index 0000000000..28f79f1bf6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/setshelfenabled/index.html @@ -0,0 +1,84 @@ +--- +title: downloads.setShelfEnabled() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/setShelfEnabled +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - downloads + - setShelfEnabled +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/setShelfEnabled +--- +<p>{{AddonSidebar()}}</p> + +<p>La fonction <code><strong>setShelfEnabled</strong></code><strong><code>()</code></strong> de l'API {{WebExtAPIRef("downloads")}} active ou désactive l'étagère grise située en bas de chaque fenêtre associée au profil de navigateur actuel. L'étagère sera désactivée si au moins une extension l'a désactivée.</p> + +<p>Si vous essayez d'activer l'étagère lorsqu'au moins une autre extension l'a déjà désactivé, l'appel échouera et {{WebExtAPIRef("runtime.lastError")}} sera défini avec un message d'erreur approprié.</p> + +<div class="note"> +<p><strong>Remarque </strong>: Pour utiliser cette fonction dans votre extension, vous devez demander la <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission manifest</a>, <code>"downloads.shelf"</code>, ainsi que la permission <code>"downloads"</code>.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">chrome.downloads.setShelfEnabled(enabled); +</pre> + +<p>Cette API est également disponible en tant que <code>browser.downloads.setShelfEnabled()</code>.</p> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>enabled</code></dt> + <dd>Un <code>boolean</code> l'état que vous souhaitez définir <code>setShelfEnabled()</code> à — <code>true</code> pour activer et <code>false</code> pour désactiver.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.setShelfEnabled")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/show/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/show/index.html new file mode 100644 index 0000000000..57f50fed3f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/show/index.html @@ -0,0 +1,111 @@ +--- +title: downloads.show() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/show +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - downloads + - show +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/show +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <code><strong>show</strong></code><strong><code>()</code></strong> de l'API {{WebExtAPIRef("downloads")}} affiche le fichier téléchargé dans son dossier contenant dans le gestionnaire de fichiers de la plate-forme sous-jacente.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var showing = browser.downloads.show( + downloadId // integer +) +</pre> + +<h3 id="Paramètes">Paramètes</h3> + +<dl> + <dt><code>downloadId</code></dt> + <dd>Un <code>integer</code> représentant l'ID du {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} à afficher.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si la demande est acceptée, la promise sera remplie avec un booléen indiquant si la demande a été acceptée. Si la demande échoue, la promise sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.show")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple montre l'élément le plus récemment téléchargé :</p> + +<pre class="brush: js">function onShowing(success) { + console.log(`Showing download item: ${success}`); +} + +function onError(error) { + console.log(`Error opening item: ${error}`); +} + +function openDownload(downloadItems) { + if (downloadItems.length > 0) { + latestDownloadId = downloadItems[0].id; + var showing = browser.downloads.show(latestDownloadId); + showing.then(onShowing, onError); + } + } + +var searching = browser.downloads.search({ + limit: 1, + orderBy: ["-startTime"] +}); + +searching.then(openDownload, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/showdefaultfolder/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/showdefaultfolder/index.html new file mode 100644 index 0000000000..e254eaadd5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/showdefaultfolder/index.html @@ -0,0 +1,86 @@ +--- +title: downloads.showDefaultFolder() +slug: Mozilla/Add-ons/WebExtensions/API/downloads/showDefaultFolder +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Refernce + - ShwoDefaultFolder + - Téléchargement + - WebExtensions + - downloads +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/showDefaultFolder +--- +<div>{{AddonSidebar()}}</div> + +<p>La fonction <code><strong>showDefaultFolder</strong></code><strong><code>()</code></strong> de l'API {{WebExtAPIRef("downloads")}} ouvre le dossier de téléchargement par défaut dans le gestionnaire de fichiers de la plateforme.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.downloads.showDefaultFolder(); +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dd>None.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.showDefaultFolder")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>L'extrait suivant contient un bouton d'affichage qui, lorsqu'il est cliqué, appelle <code>showDefaultFolder()</code> pour ouvrir le dossier de téléchargement par défaut dans le gestionnaire de fichiers de la plateforme :</p> + +<pre class="brush: js">var showBtn = document.querySelector('.show'); + +showBtn.onclick = function() { + browser.downloads.showDefaultFolder(); +}</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/state/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/state/index.html new file mode 100644 index 0000000000..4b60116efe --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/state/index.html @@ -0,0 +1,83 @@ +--- +title: downloads.State +slug: Mozilla/Add-ons/WebExtensions/API/downloads/State +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - downloads + - state +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/State +--- +<p>{{AddonSidebar()}}</p> + +<p>Le type d'<code>état</code> de l'API {{WebExtAPIRef("downloads")}} définit différents états dans lesquels un téléchargement en cours peut se trouver.</p> + +<p>Une propriété d'<code>state</code> {{WebExtAPIRef('downloads.DownloadItem')}} contiendra une chaîne tirée des valeurs définies dans ce type.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<dl> + <dt><code>in_progress</code></dt> + <dd>Le navigateur reçoit actuellement les données de téléchargement du serveur .</dd> + <dt><code>interrupted</code></dt> + <dd>Une erreur a rompu la connexion avec le serveur.</dd> + <dt><code>complete</code></dt> + <dd>Le téléchargement s'est terminé avec succès.</dd> +</dl> + +<div class="note"> +<p><strong>Remarque </strong>: Ces constantes de chaîne ne changeront jamais, mais de nouvelles constantes peuvent être ajoutées.</p> +</div> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.State")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/downloads/stringdelta/index.html b/files/fr/mozilla/add-ons/webextensions/api/downloads/stringdelta/index.html new file mode 100644 index 0000000000..0fac27ea06 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/downloads/stringdelta/index.html @@ -0,0 +1,75 @@ +--- +title: downloads.StringDelta +slug: Mozilla/Add-ons/WebExtensions/API/downloads/StringDelta +tags: + - API + - Add-ons + - Extensions + - Reference + - StringDelta + - Type + - Téléchargement + - WebExtensions + - download +translation_of: Mozilla/Add-ons/WebExtensions/API/downloads/StringDelta +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code>StringDelta</code> de l'API {{WebExtAPIRef("downloads")}} représente la différence entre deux chaînes.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes:</p> + +<dl class="reference-values"> + <dt><code>current</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> représentant la valeur de chaîne actuelle.</dd> + <dt><code>previous</code>{{optional_inline}}</dt> + <dd>Un <code>string</code> représentant la valeur de chaîne précédente.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.downloads.StringDelta")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/events/event/index.html b/files/fr/mozilla/add-ons/webextensions/api/events/event/index.html new file mode 100644 index 0000000000..7e535f112b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/events/event/index.html @@ -0,0 +1,87 @@ +--- +title: events.Event +slug: Mozilla/Add-ons/WebExtensions/API/events/Event +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - events +translation_of: Mozilla/Add-ons/WebExtensions/API/events/Event +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet qui permet l'ajout et la suppression d'écouteurs pour un événement de navigateur.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets.</p> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("events.Event.addListener()")}}</dt> + <dd>Enregistre un rappel d'écouteur d'événement sur un événement.</dd> + <dt>{{WebExtAPIRef("events.Event.removeListener()")}}</dt> + <dd>Désinscrit un rappel d'écouteur d'événement d'un événement.</dd> + <dt>{{WebExtAPIRef("events.Event.hasListener()")}}</dt> + <dd>Teste l'état d'enregistrement d'un écouteur.</dd> + <dt>{{WebExtAPIRef("events.Event.hasListeners()")}}</dt> + <dd>Teste si des écouteurs sont enregistrés pour l'événement.</dd> + <dt>{{WebExtAPIRef("events.Event.addRules()")}}</dt> + <dd>Enregistre les règles pour gérer les événements.</dd> + <dt>{{WebExtAPIRef("events.Event.getRules()")}}</dt> + <dd>Renvoie les règles actuellement enregistrées.</dd> + <dt>{{WebExtAPIRef("events.Event.removeRules()")}}</dt> + <dd>Annule l'inscription des règles actuellement enregistrées.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.events.Event")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/events"><code>chrome.events</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/events.json"><code>events.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/events/index.html b/files/fr/mozilla/add-ons/webextensions/api/events/index.html new file mode 100644 index 0000000000..0f5e711402 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/events/index.html @@ -0,0 +1,72 @@ +--- +title: events +slug: Mozilla/Add-ons/WebExtensions/API/events +tags: + - API + - Add-ons + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions + - events +translation_of: Mozilla/Add-ons/WebExtensions/API/events +--- +<div>{{AddonSidebar}}</div> + +<p>Types communs utilisés par les API qui distribuent les événements.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("events.Rule")}}</dt> + <dd>Description d'une règle déclarative pour gérer les événements.</dd> + <dt>{{WebExtAPIRef("events.Event")}}</dt> + <dd>Un objet qui permet l'ajout et la suppression d'écouteurs pour un événement Chrome.</dd> + <dt>{{WebExtAPIRef("events.UrlFilter")}}</dt> + <dd>Filtre les URL pour différents critères. Si un critère donné correspond, alors tout le filtre correspond.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.events")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/events"><code>chrome.events</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/events.json"><code>events.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/events/rule/index.html b/files/fr/mozilla/add-ons/webextensions/api/events/rule/index.html new file mode 100644 index 0000000000..84e0066e51 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/events/rule/index.html @@ -0,0 +1,81 @@ +--- +title: events.Rule +slug: Mozilla/Add-ons/WebExtensions/API/events/Rule +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Rule + - Type + - WebExtensions + - events +translation_of: Mozilla/Add-ons/WebExtensions/API/events/Rule +--- +<p>{{AddonSidebar()}}</p> + +<p>Description d'une règle déclarative pour la gestion des événements.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>id</code>{{optional_inline}}</dt> + <dd><code>string</code>. Identifiant facultatif permettant de référencer cette règle.</dd> + <dt><code>tags</code>{{optional_inline}}</dt> + <dd><code>array</code> of <code><code>string</code></code>. Les balises peuvent être utilisées pour annoter des règles et effectuer des opérations sur des ensembles de règles.</dd> + <dt><code>conditions</code></dt> + <dd><code>array</code> de <code><code>any</code></code>. Liste des conditions qui peuvent déclencher les actions.</dd> + <dt><code>actions</code></dt> + <dd><code>array</code> de <code><code>any</code></code>. Liste des actions qui sont déclenchées si l'une des conditions est remplie.</dd> + <dt><code>priority</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Priorité optionnelle de cette règle. Par défaut à 100.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.events.Rule")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/events"><code>chrome.events</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/events.json"><code>events.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/events/urlfilter/index.html b/files/fr/mozilla/add-ons/webextensions/api/events/urlfilter/index.html new file mode 100644 index 0000000000..0f77415edc --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/events/urlfilter/index.html @@ -0,0 +1,142 @@ +--- +title: events.UrlFilter +slug: Mozilla/Add-ons/WebExtensions/API/events/UrlFilter +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Type + - UrlFilter + - WebExtensions + - events +translation_of: Mozilla/Add-ons/WebExtensions/API/events/UrlFilter +--- +<div>{{AddonSidebar()}}</div> + +<p>Décrit différents critères de filtrage des URL. Si tous les critères spécifiés dans les propriétés du filtre correspondent à l'URL, le filtre correspond. Les filtres sont souvent fournis aux méthodes API dans un <a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a> d'UrlFilters. Par exemple, les écouteurs <a href="/fr/Add-ons/WebExtensions/API/webNavigation">webNavigation</a> peuvent être ajoutés avec un filtre qui est un objet avec une seule propriété url qui est un <a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a> de UrlFilters, par exemple <code>{url:[UrlFilter,UrlFilter,...]}</code>. Si un filtre dans le tableau de UrlFilters correspond, il est considéré comme une correspondance pour le tableau. En effet, les critères spécifiés dans un seul filtre sont associés ensemble, alors que tous les filtres individuels dans un tableau sont où.</p> + +<p>Tous les critères sont sensibles à la casse.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes:</p> + +<p>Toutefois, notez que ces deux derniers modèles ne correspondent pas au dernier composant du nom d'hôte, car aucun point implicite n'est ajouté à la fin du nom d'hôte. Ainsi, par exemple, <code>"org."</code> correspondra à "https://borg.com" mais pas "https://example.org". Pour faire correspondre ces modèles, utilisez <code>hostSuffix</code>.</p> + +<dl class="reference-values"> + <dt><code>hostContains</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si le <a href="/fr/docs/Web/API/HTMLHyperlinkElementUtils/hostname">hostname</a> de l'URL contient la chaîne donnée. + <ul> + <li>Pour tester si un composant de nom d'hôte commence par "foo", utilisez <code>".foo"</code>. Cela correspond à "www.foobar.com" et "foo.com", car un point implicite est ajouté au début du nom d'hôte.</li> + <li>Pour tester si un composant de nom d'hôte se termine par "foo", utilisez <code>"foo."</code>.</li> + <li>Pour tester si un composant de nom d'hôte correspond exactement à "foo", utilisez <code>".foo."</code>.</li> + </ul> + </dd> + <dt><code>hostEquals</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si le nom d'hôte de l'URL est égal à une chaîne spécifiée.</dd> + <dt><code>hostPrefix</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si le nom d'hôte de l'URL commence par une chaîne spécifiée.</dd> + <dt><code>hostSuffix</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si le nom d'hôte de l'URL se termine par une chaîne spécifiée. + <ul> + <li>Exemple: <code>".example.com"</code> correspond à "http://www.example.com/", mais pas à "http://example.com/".</li> + <li>Exemple: <code>"example.com"</code> correspond à "http://www.example.com/", et "http://fakeexample.com/".</li> + </ul> + </dd> + <dt><code>pathContains</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si le segment de chemin de l'URL contient une chaîne spécifiée.</dd> + <dt><code>pathEquals</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si le segment de chemin de l'URL est égal à une chaîne spécifiée.</dd> + <dt><code>pathPrefix</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si le segment de chemin de l'URL commence par une chaîne spécifiée.</dd> + <dt><code>pathSuffix</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si le segment de chemin de l'URL se termine par une chaîne spécifiée.</dd> + <dt><code>queryContains</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si le segment de requête de l'URL contient une chaîne spécifiée.</dd> + <dt><code>queryEquals</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si le segment de requête de l'URL est égal à une chaîne spécifiée.</dd> + <dt><code>queryPrefix</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si le segment de requête de l'URL commence par une chaîne spécifiée.</dd> + <dt><code>querySuffix</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si le segment de requête de l'URL se termine par une chaîne spécifiée.</dd> + <dt><code>urlContains</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si l'URL (sans identificateur de fragment) contient une chaîne spécifiée. Les numéros de port sont supprimés de l'URL s'ils correspondent au numéro de port par défaut.</dd> + <dt><code>urlEquals</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si l'URL (sans l'identificateur de fragment) est égale à une chaîne spécifiée. Les numéros de port sont supprimés de l'URL s'ils correspondent au numéro de port par défaut.</dd> + <dt><code>urlMatches</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si l'URL (sans l'identificateur de fragment) correspond à une <a href="/fr/docs/Web/JavaScript/Guide/Regular_Expressions">expression régulière</a>. Les numéros de port sont supprimés de l'URL s'ils correspondent au numéro de port par défaut. + <ul> + <li>Par exemple : <code>urlMatches: "^[^:]*:(?://)?(?:[^/]*\\.)?mozilla\\.org/.*$"</code> correspond "http://mozilla.org/", "https://developer.mozilla.org/", "ftp://foo.mozilla.org/", mais pas "https://developer.fakemozilla.org/".</li> + </ul> + </dd> + <dt><code>originAndPathMatches</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si l'URL sans segment de requête et l'identificateur de fragment correspondent à une <a href="/fr/docs/Web/JavaScript/Guide/Regular_Expressions">expression régulière</a> spécifiée. Les numéros de port sont supprimés de l'URL s'ils correspondent au numéro de port par défaut.</dd> + <dt><code>urlPrefix</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si l'URL (sans l'identificateur de fragment) commence par une chaîne spécifiée. Les numéros de port sont supprimés de l'URL s'ils correspondent au numéro de port par défaut. + <ul> + <li>Exemple: <code>"https://developer"</code> correspond "https://developer.mozilla.org/" et "https://developers.facebook.com/".</li> + </ul> + </dd> + <dt><code>urlSuffix</code>{{optional_inline}}</dt> + <dd><code>string</code>. Correspond si l'URL (sans l'identificateur de fragment) se termine par une chaîne spécifiée. Les numéros de port sont supprimés de l'URL s'ils correspondent au numéro de port par défaut. Notez qu'un slash "/" implicite est ajoutée après l'hôte, donc <code>"com/"</code> correspond "https://example.com", mais pas <code>"com"</code>.</dd> + <dt><code>schemas</code>{{optional_inline}}</dt> + <dd><code>array</code> of <code><code>string</code></code>. Correspond si le schéma de l'URL est identique à l'un des schémas spécifiés dans le tableau. Comme les schémas sont toujours convertis en minuscules, ils doivent toujours être en minuscules ou ne correspondent jamais. + <ul> + <li>Exemple: <code>["https"]</code> correspond uniquement aux URL HTTPS.</li> + </ul> + </dd> + <dt><code>ports</code>{{optional_inline}}</dt> + <dd><code>array</code> de <code><code><code>(integer</code></code> </code>ou<code> <code><code>array</code> of <code><code>integer</code></code></code></code>). Un tableau qui peut contenir des entiers et des tableaux d'entiers. Les entiers sont interprétés comme des numéros de port, tandis que les tableaux d'entiers sont interprétés comme des plages de ports. Correspond si le port de l'URL correspond à un numéro de port ou est contenu dans des plages. + <ul> + <li>Par exemple: <code>[80, 443, [1000, 1200]]</code> correspond à toutes les demandes sur les ports 80, 443, et dans la plage 1000-1200.</li> + </ul> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.events.UrlFilter")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/events"><code>chrome.events</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/events.json"><code>events.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/getbackgroundpage/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/getbackgroundpage/index.html new file mode 100644 index 0000000000..81ba330d0d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/getbackgroundpage/index.html @@ -0,0 +1,100 @@ +--- +title: extension.getBackgroundPage() +slug: Mozilla/Add-ons/WebExtensions/API/extension/getBackgroundPage +tags: + - API + - Add-ons + - Extension + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - getBackgroundPage +translation_of: Mozilla/Add-ons/WebExtensions/API/extension/getBackgroundPage +--- +<div>{{AddonSidebar()}}</div> + +<p>Alias de {{WebExtAPIRef("runtime.getBackgroundPage()")}}.</p> + +<div class="note"> +<p><strong>Remarque</strong> : Cette méthode ne peut pas être utilisée en mode Navigation privée - elle renvoie toujours un tableau vide. Pour plus d'informations, voir {{bug(1329304)}}.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var page = browser.extension.getBackgroundPage() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dd>None.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p><code>object</code>. <a href="/fr/docs/Web/API/Window">Window</a> de la page d'arrière plan.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extension.getBackgroundPage")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supposons un <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">script d'arrière plan</a> définisse une fonction <code>foo()</code>:</p> + +<pre class="brush: js">// background.js + +function foo() { + console.log("I'm defined in background.js"); +}</pre> + +<p>Un script exécuté dans un <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Browser_actions_2">popup</a> peut appeler cette fonction directement comme ceci :</p> + +<pre class="brush: js">// popup.js + +var page = browser.extension.getBackgroundPage(); +page.foo(); // -> "I'm defined in background.js"</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/getextensiontabs/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/getextensiontabs/index.html new file mode 100644 index 0000000000..53f3ebde96 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/getextensiontabs/index.html @@ -0,0 +1,88 @@ +--- +title: extension.getExtensionTabs() +slug: Mozilla/Add-ons/WebExtensions/API/extension/getExtensionTabs +tags: + - API + - Add-ons + - Extension + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getExtensionTabs +translation_of: Mozilla/Add-ons/WebExtensions/API/extension/getExtensionTabs +--- +<div>{{AddonSidebar()}}</div> + +<div class="warning"> +<p>Cette méthode a été dépréciée. Utilisez {{WebExtAPIRef("extension.getViews()")}} à la place.</p> +</div> + +<p>Renvoie un tableau des objets de la <a href="/en-US/docs/Web/API/Window">Window</a> JavaScriptpour chacun des onglets qui s'exécutent dans l'extension actuelle. Si <code>windowId</code> est spécifié, renvoie uniquement les objets Window des onglets attachés à la fenêtre spécifiée.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">chrome.extension.getExtensionTabs( + windowId // optional integer +) +</pre> + +<p>Cette API est également disponible en tant que <code>browser.extension.getExtensionTabs()</code>.</p> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p><code>array</code> of <code>object</code>. Tableau d'objets de fenêtre globaux</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extension.getExtensionTabs")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/geturl/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/geturl/index.html new file mode 100644 index 0000000000..dd23369df0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/geturl/index.html @@ -0,0 +1,94 @@ +--- +title: extension.getURL() +slug: Mozilla/Add-ons/WebExtensions/API/extension/getURL +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getURL +translation_of: Mozilla/Add-ons/WebExtensions/API/extension/getURL +--- +<div>{{AddonSidebar}}</div> + +<div class="warning"> +<p>Cette fonction est obsolète. Veuillez utiliser <a href="/fr/Add-ons/WebExtensions/API/runtime/getURL"><code>runtime.getURL</code></a>.</p> +</div> + +<p>Convertit un chemin relatif dans le répertoire d'installation d'une extension en une URL complète.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.extension.getURL( + path // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>path</code></dt> + <dd><code>string</code>. Un chemin vers une ressource dans une extension exprimée par rapport à son répertoire d'installation.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p><code>string</code>. The fully-qualified URL to the resource.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extension.getURL")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Donné un fichier empaqueté avec l'add-on à "beasts/frog.html", obtenez l'URL complète comme ceci :</p> + +<pre class="brush: js">var fullURL = browser.extension.getURL("beasts/frog.html"); + +// -> something like: +// moz-extension://2c127fa4-62c7-7e4f-90e5-472b45eecfdc/beasts/frog.html</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/getviews/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/getviews/index.html new file mode 100644 index 0000000000..48fbbcd5c7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/getviews/index.html @@ -0,0 +1,117 @@ +--- +title: extension.getViews() +slug: Mozilla/Add-ons/WebExtensions/API/extension/getViews +tags: + - API + - Add-ons + - Extension + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - getViews +translation_of: Mozilla/Add-ons/WebExtensions/API/extension/getViews +--- +<div>{{AddonSidebar()}}</div> + +<p>Renvoie un tableau des objets <a href="/fr/docs/Web/API/Window">Window</a> pour chacune des pages exécutées dans l'extension en cours. Cela inclut, par exemple :</p> + +<ul> + <li>la page d'arrière-plan, si une est définie</li> + <li>toutes les pages contextuelles, si définies et chargées</li> + <li>toutes les pages d'options, si définies et chargées</li> + <li>les onglets du navigateur hébergeant le contenu fourni avec l'extension</li> +</ul> + +<p>Dans Firefox, si cette méthode est appelée à partir d'une page faisant partie d'une fenêtre de navigation privée, telle qu'une barre latérale dans une fenêtre privée ou une fenêtre ouverte à partir d'une fenêtre privée, sa valeur de retour n'inclut pas la page d'arrière-plan de l'extension.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var windows = browser.extension.getViews( + fetchProperties // optional object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>fetchProperties</code>{{optional_inline}}</dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>type</code>{{optional_inline}}</dt> + <dd><code>string</code>. Un {{WebExtAPIRef('extension.ViewType')}} indiquant le type de vue à obtenir. Si omis, cette fonction renvoie toutes les vues.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. La fenêtre pour restreindre la recherche. Si omis, cette fonction renvoie toutes les vues.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p><code>array</code> of <code>object</code>. Un tableau d'objets <a href="/fr/docs/Web/API/Window">Window</a>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extension.getViews")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenez toutes les fenêtres appartenant à cette extension et consignez leurs URL :</p> + +<pre class="brush: js">var windows = browser.extension.getViews(); + +for (var extensionWindow of windows) { + console.log(extensionWindow.location.href); +}</pre> + +<p>Obtenez uniquement des fenêtres dans les onglets du navigateur hébergeant du contenu fourni avec l'extension :</p> + +<pre class="brush: js">var windows = browser.extension.getViews({type: "tab"});</pre> + +<p>Obtenir seulement des fenêtres dans les popups :</p> + +<pre class="brush: js">var windows = browser.extension.getViews({type: "popup"});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/index.html new file mode 100644 index 0000000000..0d201d9620 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/index.html @@ -0,0 +1,109 @@ +--- +title: extension +slug: Mozilla/Add-ons/WebExtensions/API/extension +tags: + - API + - Add-ons + - Extension + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/extension +--- +<div>{{AddonSidebar}}</div> + +<p>Utilitaires liés à votre extension. Obtenez des URL vers des packages de ressources avec votre extension, récupérez l'objet <code><a href="/en-US/docs/Web/API/Window">Window</a></code> pour les pages de votre extension, récupérez les valeurs pour différents paramètres. Notez que les API de messagerie de ce module sont déconseillées au profit des API équivalentes dans le module <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime">runtime</a></code>.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("extension.ViewType")}}</dt> + <dd>Le type de vue d'extension.</dd> +</dl> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt>{{WebExtAPIRef("extension.lastError")}}</dt> + <dd>Défini pour la durée de vie d'un rappel si une extension ansychronique a généré une erreur. Si aucune erreur n'est survenue, lastError sera <em>indéfini</em>.</dd> + <dt>{{WebExtAPIRef("extension.inIncognitoContext")}}</dt> + <dd>True pour les scripts de contenu s'exécutant dans les onglets de navigation privée et pour les pages d'extension exécutées dans un processus de navigation privée. Ce dernier ne s'applique qu'aux extensions avec 'incognito_behavior'.</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("extension.getBackgroundPage()")}}</dt> + <dd>Renvoie l'objet <code><a href="/en-US/docs/Web/API/Window">Window</a></code> pour la page d'arrière-plan qui s'exécute dans l'extension en cours. Renvoie null si l'extension n'a pas de page d'arrière-plan.</dd> + <dt>{{WebExtAPIRef("extension.getExtensionTabs()")}} {{deprecated_inline}}</dt> + <dd>Renvoie un tableau des objets de la <a href="https://developer.mozilla.org/en-US/docs/Web/API/Window">Window</a> JavaScript pour chacun des onglets qui s'exécutent dans l'extension actuelle.</dd> + <dt>{{WebExtAPIRef("extension.getURL()")}} {{deprecated_inline}}</dt> + <dd>Convertit un chemin relatif dans un répertoire d'installation d'extension en une URL complète.</dd> + <dt>{{WebExtAPIRef("extension.getViews()")}}</dt> + <dd>Renvoie un tableau des objets <code><a href="/en-US/docs/Web/API/Window">Window</a></code> pour chacune des pages exécutées dans l'extension en cours.</dd> + <dt>{{WebExtAPIRef("extension.isAllowedIncognitoAccess()")}}</dt> + <dd>Récupère l'état de l'accès de l'extension en mode navigation privée (déterminé par la case à cocher "Autorisé dans navigation privée").</dd> + <dt>{{WebExtAPIRef("extension.isAllowedFileSchemeAccess()")}}</dt> + <dd>Récupère l'état de l'accès de l'extension au schéma 'file://' (déterminé par la case à cocher 'Autoriser l'accès aux URL des fichiers').***</dd> + <dt>{{WebExtAPIRef("extension.sendRequest()")}} {{deprecated_inline}}</dt> + <dd>Envoie une seule requête aux autres écouteurs de l'extension.</dd> + <dt>{{WebExtAPIRef("extension.setUpdateUrlData()")}}</dt> + <dd>Définit la valeur du paramètre CGI AP utilisé dans l'URL de mise à jour de l'extension. Cette valeur est ignorée pour les extensions hébergées dans le magasin du fournisseur du navigateur.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("extension.onRequest")}} {{deprecated_inline}}</dt> + <dd>Lancé lorsqu'une requête est envoyée par un processus d'extension ou un script de contenu.</dd> + <dt>{{WebExtAPIRef("extension.onRequestExternal")}} {{deprecated_inline}}</dt> + <dd>Lancé lorsqu'une requête est envoyée depuis une autre extension.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.extension")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/inincognitocontext/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/inincognitocontext/index.html new file mode 100644 index 0000000000..b27209b60f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/inincognitocontext/index.html @@ -0,0 +1,64 @@ +--- +title: extension.inIncognitoContext +slug: Mozilla/Add-ons/WebExtensions/API/extension/inIncognitoContext +tags: + - API + - Add-ons + - Extension + - Extensions + - Non-standard + - Property + - Reference + - WebExtensions + - inIncognitoContext +translation_of: Mozilla/Add-ons/WebExtensions/API/extension/inIncognitoContext +--- +<div>{{AddonSidebar()}}</div> + +<p>Valeur booléenne, <code>true</code> pour les scripts de contenu s'exécutant dans les onglets de navigation privée et pour les pages d'extension exécutées dans un processus de navigation privé..</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extension.inIncognitoContext")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/isallowedfileschemeaccess/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/isallowedfileschemeaccess/index.html new file mode 100644 index 0000000000..78b7cfd521 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/isallowedfileschemeaccess/index.html @@ -0,0 +1,94 @@ +--- +title: extension.isAllowedFileSchemeAccess() +slug: Mozilla/Add-ons/WebExtensions/API/extension/isAllowedFileSchemeAccess +tags: + - API + - Add-ons + - Extension + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - isAllowedFileSchemeAccess +translation_of: Mozilla/Add-ons/WebExtensions/API/extension/isAllowedFileSchemeAccess +--- +<div>{{AddonSidebar()}}</div> + +<div>Renvoie <code>true</code> si l'extension peut accéder au schéma "file://", sinon <code>false</code>.</div> + +<div></div> + +<div> +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var isAllowed = browser.extension.isAllowedFileSchemeAccess() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un booléen : <code>true</code> si l'extension est autorisée à accéder aux URLs "file://", sinon <code>false</code>.</p> + +<p>Firefox retournera toujours <code>false</code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extension.isAllowedFileSchemeAccess")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function logIsAllowed(answer) { + console.log(`Is allowed: ${answer}`); +} + +var isAllowed = browser.extension.isAllowedFileSchemeAccess(); +isAllowed.then(logIsAllowed);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/isallowedincognitoaccess/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/isallowedincognitoaccess/index.html new file mode 100644 index 0000000000..367b8af532 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/isallowedincognitoaccess/index.html @@ -0,0 +1,92 @@ +--- +title: extension.isAllowedIncognitoAccess() +slug: Mozilla/Add-ons/WebExtensions/API/extension/isAllowedIncognitoAccess +tags: + - API + - Add-ons + - Extension + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - isAllowedIncognitoAccess +translation_of: Mozilla/Add-ons/WebExtensions/API/extension/isAllowedIncognitoAccess +--- +<div>{{AddonSidebar()}}</div> + +<p>Vérifiez si l'extension est autorisée à accéder aux onglets ouverts en mode "navigation privée".</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var isAllowed = browser.extension.isAllowedIncognitoAccess() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un booléen : <code>true</code> si l'extension est autorisée à accéder aux onglets privés, sinon <code>false</code>.</p> + +<p> </p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function logIsAllowed(answer) { + console.log(`Is allowed: ${answer}`); +} + +var isAllowed = browser.extension.isAllowedIncognitoAccess(); +isAllowed.then(logIsAllowed);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extension.isAllowedIncognitoAccess")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/lasterror/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/lasterror/index.html new file mode 100644 index 0000000000..f1803043c3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/lasterror/index.html @@ -0,0 +1,64 @@ +--- +title: extension.lastError +slug: Mozilla/Add-ons/WebExtensions/API/extension/lastError +tags: + - API + - Add-ons + - Extension + - Extensions + - Non-standard + - Property + - Reference + - WebExtensions + - lastError +translation_of: Mozilla/Add-ons/WebExtensions/API/extension/lastError +--- +<div>{{AddonSidebar()}}</div> + +<p>Un alias de {{WebExtAPIRef("runtime.lastError")}}.</p> + +<h2 id="Compatibilité_du_navoigateur">Compatibilité du navoigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extension.lastError")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/onrequest/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/onrequest/index.html new file mode 100644 index 0000000000..75e4ea7efe --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/onrequest/index.html @@ -0,0 +1,117 @@ +--- +title: extension.onRequest +slug: Mozilla/Add-ons/WebExtensions/API/extension/onRequest +tags: + - API + - Add-ons + - Event + - Extension + - Extensions + - Reference + - WebExtensions + - onRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/extension/onRequest +--- +<div>{{AddonSidebar()}}</div> + +<div class="warning"> +<p><strong>Not implémenté : </strong>Ceci n'est pas implémenté dans Firefox car il est obsolète depuis Chrome 33. Veuillez utiliser <a href="/fr/Add-ons/WebExtensions/API/runtime/onMessageExternal">runtime.onMessageExternal</a> à la place.</p> +</div> + +<p>Lancé lorsqu'une requête est envoyée par un processus d'extension ou un script de contenu.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">chrome.extension.onRequest.addListener(function( + request, // optional any + sender, // runtime.MessageSender + function() {...} // function +) {...}) +chrome.extension.onRequest.removeListener(listener) +chrome.extension.onRequest.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + + + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>request</code></dt> + <dd><code>any</code>. La requête envoyée par le script appelant.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>sender</code></dt> + <dd>{{WebExtAPIRef('runtime.MessageSender')}}.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>sendResponse</code></dt> + <dd><code>function</code>. Fonction à appeler (au plus une fois) lorsque vous avez une réponse. L'argument doit être n'importe quel objet JSON-ifiable, ou undefined s'il n'y a pas de réponse. Si vous avez plus d'un écouteur <code>onRequest</code> dans le même document, un seul peut envoyer une réponse.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extension.onRequest")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/onrequestexternal/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/onrequestexternal/index.html new file mode 100644 index 0000000000..9eade45d3e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/onrequestexternal/index.html @@ -0,0 +1,116 @@ +--- +title: extension.onRequestExternal +slug: Mozilla/Add-ons/WebExtensions/API/extension/onRequestExternal +tags: + - API + - Add-ons + - Event + - Extension + - Extensions + - Non-standard + - Reference + - WebExtensions + - onRequestExternal +translation_of: Mozilla/Add-ons/WebExtensions/API/extension/onRequestExternal +--- +<div>{{AddonSidebar()}}</div> + +<div class="warning"> +<p><strong>Not implémenté : </strong>Ceci n'est pas implémenté dans Firefox car il est obsolète depuis Chrome 33. Veuillez utiliser <a href="/fr/Add-ons/WebExtensions/API/runtime/onMessageExternal">runtime.onMessageExternal</a> à la place.</p> +</div> + +<p>Lancé lorsqu'une requête est envoyée depuis une autre extension.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">chrome.extension.onRequestExternal.addListener(function( + request, // optional any + sender, // runtime.MessageSender + function() {...} // function +) {...}) +chrome.extension.onRequestExternal.removeListener(listener) +chrome.extension.onRequestExternal.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>request</code></dt> + <dd><code>any</code>. La requête envoyée par le script appelant.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>sender</code></dt> + <dd>{{WebExtAPIRef('runtime.MessageSender')}}.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>sendResponse</code></dt> + <dd><code>function</code>. Fonction à appeler lorsque vous avez une réponse. L'argument doit être n'importe quel objet JSON-ifiable, ou undefined s'il n'y a pas de réponse.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extension.onRequestExternal")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/sendrequest/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/sendrequest/index.html new file mode 100644 index 0000000000..c1f843101e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/sendrequest/index.html @@ -0,0 +1,97 @@ +--- +title: extension.sendRequest() +slug: Mozilla/Add-ons/WebExtensions/API/extension/sendRequest +tags: + - API + - Add-ons + - Extension + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - sendRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/extension/sendRequest +--- +<div>{{AddonSidebar}}{{Deprecated_Header}} +<div class="blockIndicator warning"> +<p>Cette méthode est dépréciée. utilisez {{WebExtAPIRef("runtime.sendMessage")}} à la place.</p> +</div> +</div> + +<p>Envoie une seule requête aux autres écouteurs de l'extension. Similaire à {{WebExtAPIRef('runtime.connect')}},mais envoie seulement une seule requête avec une réponse optionnelle. L'événement {{WebExtAPIRef('extension.onRequest')}} est déclenché dans chaque page de l'extension</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">chrome.extension.sendRequest( + extensionId, // optional string + request, // any + function(response) {...} // optional function +) +</pre> + +<p>Cette API est également disponible en tant que <code>browser.extension.sendRequest()</code> dans une <a href="/en-US/Add-ons/WebExtensions/Using_the_JavaScript_APIs#Callbacks_and_promises">version qui renvoie une promise</a>.</p> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>extensionId</code>{{Optional_Inline}}</dt> + <dd><code>string</code>. L'ID d'extension de l'extension à laquelle vous souhaitez vous connecter. Si omis, la valeur par défaut est votre propre extension.</dd> + <dt><code>request</code></dt> + <dd><code>any</code>.</dd> + <dt><code>responseCallback</code>{{Optional_Inline}}</dt> + <dd><code>function</code>. La fonction est passée les arguments suivants : + + + <dl class="api-reference-values"> + <dt><code>response</code></dt> + <dd><code>any</code>. Objet de réponse JSON envoyé par le gestionnaire de la requête. Si une erreur survient lors de la connexion à l'extension, le rappel sera appelé sans arguments et {{WebExtAPIRef('runtime.lastError')}} sera défini sur le message d'erreur.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extension.sendRequest")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="blockIndicator note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/setupdateurldata/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/setupdateurldata/index.html new file mode 100644 index 0000000000..516d490702 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/setupdateurldata/index.html @@ -0,0 +1,80 @@ +--- +title: extension.setUpdateUrlData() +slug: Mozilla/Add-ons/WebExtensions/API/extension/setUpdateUrlData +tags: + - API + - Add-ons + - Extension + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - setUpdateUrlData +translation_of: Mozilla/Add-ons/WebExtensions/API/extension/setUpdateUrlData +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit les paramètres de l'URL de mise à jour de l'extension. Cette valeur est ignorée pour les extensions hébergées dans le magasin du fournisseur du navigateur.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.extension.setUpdateUrlData( + data // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>data</code></dt> + <dd><code>string</code>.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extension.setUpdateUrlData")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extension/viewtype/index.html b/files/fr/mozilla/add-ons/webextensions/api/extension/viewtype/index.html new file mode 100644 index 0000000000..f20c377ff0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extension/viewtype/index.html @@ -0,0 +1,68 @@ +--- +title: extension.ViewType +slug: Mozilla/Add-ons/WebExtensions/API/extension/ViewType +tags: + - API + - Add-ons + - Extension + - Extensions + - Non-standard + - Reference + - Type + - ViewType + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/extension/ViewType +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type de vue de l'extension.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont : <code>"tab"</code>, <code>"popup"</code>, <code>"sidebar"</code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extension.ViewType")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/extension"><code>chrome.extension</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/extension.json"><code>extension.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/imagedetails/index.html b/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/imagedetails/index.html new file mode 100644 index 0000000000..f73c1058cb --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/imagedetails/index.html @@ -0,0 +1,75 @@ +--- +title: extensionTypes.ImageDetails +slug: Mozilla/Add-ons/WebExtensions/API/extensionTypes/ImageDetails +tags: + - API + - Add-ons + - Extensions + - ImageDetails + - Non-standard + - Reference + - Type + - WebExtensions + - extensionType +translation_of: Mozilla/Add-ons/WebExtensions/API/extensionTypes/ImageDetails +--- +<div>{{AddonSidebar()}}</div> + +<p>Details sur le format et la qualité de l'image.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>format</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('extensionTypes.ImageFormat')}}. Le format du résultat de l'image. Par défaut est <code>"png"</code>.</dd> + <dt><code>quality</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Quand le format est <code>"jpeg"</code>, cela controle la qualité du résultat de l'image. C'est un nombre compris entre 0 et 100, qui est converti en une valeur entre 0 et 1 puis utilisé comme argument <code>encoderOptions</code> sur <code><a href="/en-US/docs/Web/API/HTMLCanvasElement/toDataURL">HTMLCanvasElement.toDataURL()</a></code>. Si c'est choisi, 92 est utilisé. A mesure que la qualité baisse, le résultat de l'image aura plus d'artefacts visuel, et le nombre d'octets nécessaires pour le stocker diminuera. Cette valeur est ignorée pour les images PNG.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extensionTypes.ImageDetails")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basé sur l'API Chromium <a href="https://developer.chrome.com/extensions/extensionTypes"><code>chrome.extensionTypes</code></a> . Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/extension_types.json"><code>extension_types.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/imageformat/index.html b/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/imageformat/index.html new file mode 100644 index 0000000000..59432b5a7c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/imageformat/index.html @@ -0,0 +1,68 @@ +--- +title: extensionTypes.ImageFormat +slug: Mozilla/Add-ons/WebExtensions/API/extensionTypes/ImageFormat +tags: + - API + - Add-ons + - Extensions + - ImageFormat + - Non-standard + - Reference + - Type + - WebExtensions + - extensionTypes +translation_of: Mozilla/Add-ons/WebExtensions/API/extensionTypes/ImageFormat +--- +<div>{{AddonSidebar()}}</div> + +<p>Les valeurs de ce type sont des chaînes de caractères. Les valeurs possibles sont : <code>"jpeg"</code>, <code>"png"</code>.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaines. Les valeurs possibles sont : <code>"jpeg"</code>, <code>"png"</code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extensionTypes.ImageFormat")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basé sur l'API Chromium <a href="https://developer.chrome.com/extensions/extensionTypes"><code>chrome.extensionTypes</code></a> . Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/extension_types.json"><code>extension_types.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/index.html b/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/index.html new file mode 100644 index 0000000000..575ce212e1 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/index.html @@ -0,0 +1,76 @@ +--- +title: extensionTypes +slug: Mozilla/Add-ons/WebExtensions/API/extensionTypes +tags: + - API + - Add-ons + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions + - extensionType +translation_of: Mozilla/Add-ons/WebExtensions/API/extensionTypes +--- +<div>{{AddonSidebar}}</div> + +<p>Certains types communs utilisés dans d'autres APIs WebExtensions.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("extensionTypes.ImageDetails")}}</dt> + <dd>Détails sur le format et la qualité de l'image.</dd> + <dt>{{WebExtAPIRef("extensionTypes.ImageFormat")}}</dt> + <dd>Le format d'une image.</dd> + <dt>{{WebExtAPIRef("extensionTypes.ImageDetails")}}</dt> + <dd>Injecte des détails dans une page</dd> + <dt>{{WebExtAPIRef("extensionTypes.RunAt")}}</dt> + <dd>Le plus tot que le Javascript ou le CSS est injecté dans l'onglet.</dd> + <dt><code>extensionTypes.CSSOrigin</code></dt> + <dd>Indique si une feuille de style CSS injectée par <code><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/insertCSS">tabs.insertCSS</a></code> doit être traitée comme une feuille de style "auteur" ou "utilisateur".</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.extensionTypes")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basé sur l'API Chromium <a href="https://developer.chrome.com/extensions/extensionTypes"><code>chrome.extensionTypes</code></a> . Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/extension_types.json"><code>extension_types.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/injectdetails/index.html b/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/injectdetails/index.html new file mode 100644 index 0000000000..4282d1c192 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/injectdetails/index.html @@ -0,0 +1,24 @@ +--- +title: extensionTypes.InjectDetails +slug: Mozilla/Add-ons/WebExtensions/API/extensionTypes/InjectDetails +tags: + - API + - Add-ons + - Extensions + - InjectDetails + - Non-standard + - Reference + - Type + - WebExtensions + - extensionTypes +translation_of: Mozilla/Add-ons/WebExtensions/API/extensionTypes/InjectDetails +--- +<div>{{AddonSidebar}}</div> + +<p>Ce type est donné en tant que paramètre aux méthodes <code>tabs.executeScript()</code>, <code>tabs.insertCSS()</code>, et <code>tabs.removeCSS()</code> . Pour plus de détails sur ses propriétés et leur utilisation, consultez les pages de documentation de ces méthodes :</p> + +<ul> + <li>{{WebExtAPIRef("tabs.executeScript()")}}</li> + <li>{{WebExtAPIRef("tabs.insertCSS()")}}</li> + <li>{{WebExtAPIRef("tabs.removeCSS()")}}</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/runat/index.html b/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/runat/index.html new file mode 100644 index 0000000000..08bd963e8c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/extensiontypes/runat/index.html @@ -0,0 +1,76 @@ +--- +title: extensionTypes.RunAt +slug: Mozilla/Add-ons/WebExtensions/API/extensionTypes/RunAt +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - RunAt + - Type + - WebExtensions + - extensionTypes +translation_of: Mozilla/Add-ons/WebExtensions/API/extensionTypes/RunAt +--- +<div>{{AddonSidebar()}}</div> + +<p>Le plus tot que le Javascript ou CSS sera injecté dans l'onglet.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaines. Les valeurs possibles sont : <code>"document_start"</code>, <code>"document_end"</code>, <code>"document_idle"</code>.</p> + +<ul> + <li><code>"document_start"</code>: corresponds au <code>chargement</code>. Le DOM est toujours en cours de chargement.</li> + <li><code>"document_end"</code>: corresponds à l'<code>interactif</code>. Le DOM a fini de charger, mais des ressources telles que des scripts et des images peuvent toujours être en cours de chargement.</li> + <li><code>"document_idle"</code>: corresponds à <code>complete</code>. Le document et toutes ses ressources ont terminé le changement.</li> +</ul> + +<p>La valeur par défaut est <code>"document_idle"</code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.extensionTypes.RunAt")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basé sur l'API Chromium <a href="https://developer.chrome.com/extensions/extensionTypes"><code>chrome.extensionTypes</code></a> . Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/extension_types.json"><code>extension_types.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/find/find/index.html b/files/fr/mozilla/add-ons/webextensions/api/find/find/index.html new file mode 100644 index 0000000000..e51d5330c0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/find/find/index.html @@ -0,0 +1,292 @@ +--- +title: find.find() +slug: Mozilla/Add-ons/WebExtensions/API/find/find +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - find +translation_of: Mozilla/Add-ons/WebExtensions/API/find/find +--- +<div>{{AddonSidebar()}}</div> + +<p>Recherche du texte dans un onglet.</p> + +<p>Vous pouvez utiliser cette fonction pour rechercher des pages Web HTTP(S) normales. Il recherche un seul onglet : vous pouvez spécifier l'ID d'un onglet particulier à rechercher, ou il recherchera l'onglet actif par défaut. Il recherche toutes les images de l'onglet..</p> + +<p>Vous pouvez rendre la recherche sensible à la casse et la faire correspondre uniquement à des mots entiers.</p> + +<p>Par défaut, la fonction renvoie juste le nombre de correspondances trouvées. En transmettant les options <code>includeRangeData</code> et <code>includeRectData</code>, vous pouvez obtenir plus d'informations sur l'emplacement des correspondances dans l'onglet cible.</p> + +<p>Cette fonction stocke les résultats en interne, donc la prochaine fois qu'une extension appelle {{WebExtAPIRef("find.highlightResults()")}}, alors les résultats de cet appel <em>find</em> seront mis en surbrillance, jusqu'à ce que quelqu'un appelle <code>find()</code>.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.find.find( + queryphrase, // string + options // optional object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl class="reference-values"> + <dt><code>queryphrase</code></dt> + <dd><code>string</code>. Le texte à rechercher</dd> + <dt><code>options</code>{{optional_inline}}</dt> + <dd> + <p><code>object</code>. Un objet spécifiant des options supplémentaires. Il peut prendre l'une des propriétés suivantes, toutes facultatives :</p> + + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet à rechercher. Par défaut à l'onglet actif</dd> + <dt><code>caseSensitive</code></dt> + <dd><code>boolean</code>. Si true, la recherche est sensible à la casse. Par défault à <code>false</code>.</dd> + <dt><code>entireWord</code></dt> + <dd><code>boolean</code>. Comparaison seulement entre les mots entiers : ainsi "Tok" ne sera pas comparé dans "Tokyo". Par défaut à <code>false</code>.</dd> + <dt><code>includeRangeData</code></dt> + <dd><code>boolean</code>. Inclure les groupes de données dans la réponse, which describe where in the page DOM the match was found. Defaults to <code>false</code>.</dd> + <dt><code>includeRectData</code></dt> + <dd><code>boolean</code>. Inclure les données de rectangle dans la réponse, qui décrit où la correspondance a été trouvée dans la page de rendu. Par défaut à <code>false</code>.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p> Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet contenant jusqu'à trois propriétés :</p> + +<dl class="reference-values"> + <dt><code>count</code></dt> + <dd><code>integer</code>. Le nombre de résultat trouvés.</dd> + <dt><code>rangeData</code>{{optional_inline}}</dt> + <dd> + <p><code>array</code>. Si <code>includeRangeData</code> a été donné dans le paramètre <code>options</code>, cette propriété sera incluse. Il est fourni sous la forme d'un tableau d'objets <code>RangeData</code>, un pour chaque correspondance. Chaque objet <code>RangeData</code> décrit où la correspondance a été trouvée dans l'arborescence DOM. Cela permettrait, par exemple, une extension pour obtenir le texte entourant chaque correspondance, afin d'afficher le contexte pour les correspondances.</p> + + <p>Les élements correspondent aux éléments données dans <code>rectData</code>, donc <code>rangeData[i]</code> décrit la même correspondance que <code>rectData[i]</code>.</p> + + <p>Chaque <code>RangeData</code> contient les propriétés suivantes :</p> + + <dl class="reference-values"> + <dt><code>framePos</code></dt> + <dd>L'index de l'image contenant la correspondance. 0 correspond à une fenêtre parente. Notez que l'ordre des objets dans un tableau <code>rangeData</code> s'alignera séquentiellement avec l'ordre des index d'images : par exemple, <code>framePos</code> pour la première séquence d'objets <code>rangeData</code> sera 0, <code>framePos</code> pour la séquence suivante sera 1, et ainsi de suite.</dd> + <dt><code>startTextNodePos</code></dt> + <dd>La position ordinale du noeud de texte dans lequel la correspondance a démarrée.</dd> + <dt><code>endTextNodePos</code></dt> + <dd>La position ordinale du noeud de texte dans lequel la correspondance s'est terminée.</dd> + <dt><code>startOffset</code></dt> + <dd>La position de la chaîne de caractères ordinale du début du mot correspondant dans le noeud texte de début.</dd> + <dt><code>endOffset</code></dt> + <dd>La position de la chaîne de caractères ordinale de la fin du mot trouvé dans le nœud de texte final.</dd> + </dl> + </dd> + <dt><code>rectData</code>{{optional_inline}}</dt> + <dd> + <p><code>array</code>. Si <code>includeRectData</code> a été donné dans les paramètres des <code>options</code>, cette propriété sera incluse. C'est un tableau d'objets <code>RectData</code> . Il contient des rectangles clients pour tout le texte correspondant à la recherche, par rapport à la partie supérieure gauche de la fenêtre. Les extensions peuvent l'utiliser pour fournir une mise en évidence personnalisée les résultats..</p> + + <p>Chaque objet <code>RectData</code> contient des données rectangle pour une seule correspondance. Il a deux propriétés :</p> + + <dl class="reference-values"> + <dt><code>rectsAndTexts</code></dt> + <dd>Un objet contenant deux propriétés, les deux tableaux : + <ul> + <li><code>rectList</code>: un tableau d'objets ayant chacun quatre propriétés entières : <code>top</code>, <code>left</code>, <code>bottom</code>, <code>right</code>. Ceux-ci décrivent un rectangle par rapport à la partie supérieure gauche de la fenêtre.</li> + <li><code>textList</code>: un tableau de chaînes, correspondant au tableau <code>rectList</code>. L'entrée de <code>textList[i]</code> contient la partie du match délimitée par le rectangle de <code>rectList[i]</code>.</li> + </ul> + + <p>Par exemple, considérons une partie d'une page Web qui ressemble à ceci :</p> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15582/rects-1.png" style="display: block; height: 227px; margin-left: auto; margin-right: auto; width: 488px;">Si vous recherchez "You may", la comparaison doit être décrit par deux rectangles :</p> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15583/rects-2.png" style="display: block; height: 227px; margin-left: auto; margin-right: auto; width: 488px;">Dans le cas, dans le <code>RectData</code> qui décrit cette correspondance, <code>rectsAndTexts.rectList</code> et <code>rectsAndTexts.textList</code> auront chacun 2 éléments.</p> + + <ul> + <li><code>textList[0]</code> contiendra "You ", et <code>rectList[0]</code> contiendra son rectangle de délimitation.</li> + <li><code>textList[1]</code> contiendra "may", et <code>rectList[1]</code> contiendra son rectangle de délimitation.</li> + </ul> + </dd> + <dt><code>text</code></dt> + <dd>Le texte complet de comparaison, "You may" dans l'exemple ci-dessus.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.find.find", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<h3 id="Exemples_basics">Exemples basics</h3> + +<p>Recherchez "banana" dans l'onglet actif, log le nombre de correspondances et mettez-les en surbrillance :</p> + +<pre class="brush: js">function found(results) { + console.log(`There were: ${results.count} matches.`); + if (results.count > 0) { + browser.find.highlightResults(); + } +} + +browser.find.find("banana").then(found);</pre> + +<p>Rechercher "banana" dans tous les onglets (notez que cela nécessite la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "tabs", car il accède à <code>tab.url</code>):</p> + +<pre class="brush: js">async function findInAllTabs(allTabs) { + for (let tab of allTabs) { + let results = await browser.find.find("banana", {tabId: tab.id}); + console.log(`In page "${tab.url}": ${results.count} matches.`) + } +} + +browser.tabs.query({}).then(findInAllTabs);</pre> + +<h3 id="Utilisation_de_rangeData">Utilisation de rangeData</h3> + +<p>Dans cet exemple, l'extension utilise <code>rangeData</code> pour obtenir le contexte dans lequel la correspondance a été trouvée. Le contexte est le <code>textContent</code> complet du noeud dans lequel la correspondance a été trouvée. Si la correspondance s'étend sur des noeuds, le contexte est la concaténation du <code>textContent</code> de tous les noeuds étendus.</p> + +<p>Notez que pour des raisons de simplicité, cet exemple ne gère pas les pages contenant des cadres. Pour cela, vous devez divisez <code>rangeData</code> en groupes, un par frame, et executer le script dans chaque image.</p> + +<p>Le script d'arrière plan :</p> + +<pre class="brush: js">// background.js + +async function getContexts(matches) { + + // get the active tab ID + let activeTabArray = await browser.tabs.query({ + active: true, currentWindow: true + }); + let tabId = activeTabArray[0].id; + + // execute the content script in the active tab + await browser.tabs.executeScript(tabId, {file: "get-context.js"}); + // ask the content script to get the contexts for us + let contexts = await browser.tabs.sendMessage(tabId, { + ranges: matches.rangeData + }); + for (let context of contexts) { + console.log(context); + } + +} + +browser.browserAction.onClicked.addListener((tab) => { + browser.find.find("example", {includeRangeData: true}).then(getContexts); +}); +</pre> + +<p>Le script de contenu :</p> + +<pre class="brush: js">/** + * Get all the text nodes into a single array + */ +function getNodes() { + let walker = document.createTreeWalker(document, window.NodeFilter.SHOW_TEXT, null, false); + let nodes = []; + while(node = walker.nextNode()) { + nodes.push(node); + } + + return nodes; +} + +/** + * Gets all text nodes in the document, then for each match, return the + * complete text content of nodes that contained the match. + * If a match spanned more than one node, concatenate the textContent + * of each node. + */ +function getContexts(ranges) { + + let contexts = []; + let nodes = getNodes(); + + for (let range of ranges) { + let context = nodes[range.startTextNodePos].textContent; + let pos = range.startTextNodePos; + while (pos < range.endTextNodePos) { + pos++; + context += nodes[pos].textContent; + } + contexts.push(context); + } + return contexts; +} + +browser.runtime.onMessage.addListener((message, sender, sendResponse) => { + sendResponse(getContexts(message.ranges)); +}); +</pre> + +<h3 id="Utiliser_rectData">Utiliser rectData</h3> + +<p>Dans cet exemple, l'extensions utilise <code>rectData</code> pour comparer "redact", en ajoutant des DIVs noires au dessus de leurs rectangles de délimitation :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15584/redacted.png" style="display: block; height: 416px; margin-left: auto; margin-right: auto; width: 625px;">Notez qu'il y a plusieurs façons, c'est une mauvaise façon d'atteindre les pages.</p> + +<p>Le script d'arrière-plan :</p> + +<pre class="brush: js">// background.js + +async function redact(matches) { + + // get the active tab ID + let activeTabArray = await browser.tabs.query({ + active: true, currentWindow: true + }); + let tabId = activeTabArray[0].id; + + // execute the content script in the active tab + await browser.tabs.executeScript(tabId, {file: "redact.js"}); + // ask the content script to redact matches for us + await browser.tabs.sendMessage(tabId, {rects: matches.rectData}); +} + +browser.browserAction.onClicked.addListener((tab) => { + browser.find.find("banana", {includeRectData: true}).then(redact); +}); +</pre> + +<p>Le script de contenu :</p> + +<pre class="brush: js">// redact.js + +/** + * Add a black DIV where the rect is. + */ +function redactRect(rect) { + var redaction = document.createElement("div"); + redaction.style.backgroundColor = "black"; + redaction.style.position = "absolute"; + redaction.style.top = `${rect.top}px`; + redaction.style.left = `${rect.left}px`; + redaction.style.width = `${rect.right-rect.left}px`; + redaction.style.height = `${rect.bottom-rect.top}px`; + document.body.appendChild(redaction); +} + +/** + * Go through every rect, redacting them. + */ +function redactAll(rectData) { + for (match of rectData) { + for (rect of match.rectsAndTexts.rectList) { + redactRect(rect); + } + } +} + +browser.runtime.onMessage.addListener((message) => { + redactAll(message.rects); +}); +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/find/highlightresults/index.html b/files/fr/mozilla/add-ons/webextensions/api/find/highlightresults/index.html new file mode 100644 index 0000000000..cf5ad19d07 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/find/highlightresults/index.html @@ -0,0 +1,53 @@ +--- +title: find.highlightResults() +slug: Mozilla/Add-ons/WebExtensions/API/find/highlightResults +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - find + - highlightResults +translation_of: Mozilla/Add-ons/WebExtensions/API/find/highlightResults +--- +<div>{{AddonSidebar()}}</div> + +<p>Souligne les résultats d'un précédent appel à {{WebExtAPIRef("find.find()")}}.</p> + +<p>Lorsqu'une extension appelle <code>find()</code>, les correspondances ne sont pas automatiquement mises en surbrillance, mais elles sont stockées par le navigateur. Appelez <code>highlightResults()</code> pour les mettre en surbrillance.</p> + +<p>Notez que les résultats stockés sont globaux pour toutes les extensions, par exemple, si l'extension appelle <code>find("apple")</code>, alors si l'extensions B appelle <code>find("banana")</code>, alors si l'extensions A appelle <code>highlightResults()</code>, le résultat pour "banana" sera mis en évidence.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.find.highlightResults() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Aucune.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.find.highlightResults", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Recherchez "banana" dans l'onglet actif, notez le nombre de correspondances et mettez-les en surbrillance :</p> + +<pre class="brush: js">function found(results) { + console.log(`There were: ${results.count} matches.`); + if (results.count > 0) { + browser.find.highlightResults(); + } +} + +browser.find.find("banana").then(found);</pre> diff --git a/files/fr/mozilla/add-ons/webextensions/api/find/index.html b/files/fr/mozilla/add-ons/webextensions/api/find/index.html new file mode 100644 index 0000000000..98ce0ae4f0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/find/index.html @@ -0,0 +1,32 @@ +--- +title: find +slug: Mozilla/Add-ons/WebExtensions/API/find +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - find +translation_of: Mozilla/Add-ons/WebExtensions/API/find +--- +<div>{{AddonSidebar}}</div> + +<p>Trouve un texte dans une page web, et met en évidence les correspondances.</p> + +<p>Pour utiliser cette API, vous devez disposez de la <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "find".</p> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("find.find()")}}</dt> + <dd>Trouver du texte dans une page web.</dd> + <dt>{{WebExtAPIRef("find.highlightResults()")}}</dt> + <dd>Mettez en surbrillance le dernier jeu de correspondance trouvé.</dd> + <dt>{{WebExtAPIRef("find.removeHighlighting()")}}</dt> + <dd>Supprimez toute mise en évidence.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.find", 1, 1)}} {{WebExtExamples("h2")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/find/removehighlighting/index.html b/files/fr/mozilla/add-ons/webextensions/api/find/removehighlighting/index.html new file mode 100644 index 0000000000..5e51362135 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/find/removehighlighting/index.html @@ -0,0 +1,41 @@ +--- +title: find.removeHighlighting() +slug: Mozilla/Add-ons/WebExtensions/API/find/removeHighlighting +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - find + - removeHighlighting +translation_of: Mozilla/Add-ons/WebExtensions/API/find/removeHighlighting +--- +<div>{{AddonSidebar()}}</div> + +<p>Supprimer toute mise en évidence d'une recherche précédente qui a été appliquée par un appel précédent à {{WebExtAPIRef("highlightResults()")}}, ou par l'interface utilisateur native du navigateur.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.find.removeHighlighting() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Aucune.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.find.removeHighlighting", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">browser.find.removeHighlighting(); +</pre> diff --git a/files/fr/mozilla/add-ons/webextensions/api/history/addurl/index.html b/files/fr/mozilla/add-ons/webextensions/api/history/addurl/index.html new file mode 100644 index 0000000000..8899e837e9 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/history/addurl/index.html @@ -0,0 +1,150 @@ +--- +title: history.addUrl() +slug: Mozilla/Add-ons/WebExtensions/API/history/addUrl +tags: + - API + - Add-ons + - Extensions + - History + - Method + - Non-standard + - Reference + - WebExtensions + - addUrl +translation_of: Mozilla/Add-ons/WebExtensions/API/history/addUrl +--- +<div>{{AddonSidebar()}}</div> + +<p>Ajoute un enregistrement à l'historique du navigateur d'une visite à l'URL donnée. L'heure de la visite est enregistrée comme l'heure de l'appel, et le {{WebExtAPIRef("history.TransitionType", "TransitionType")}} est enregistré comme "liens".</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var addingUrl = browser.history.addUrl( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Objet contenant l'URL à ajouter.</dd> + <dd> + <dl class="reference-values"> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL à ajouter.</dd> + <dt><code>title</code>{{optional_inline}}</dt> + <dd>string: Le titre de la page. Si ce n'est pas fourni, le titre sera enregistré comme <code>null</code>.</dd> + <dt><code>transition</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef("history.TransitionType")}}. Décrit comment le navigateur a navigué vers la page à cette occasion. Si ce n'est pas fourni, un type de transition de "lien" sera enregistré.</dd> + <dt><code>visitTime</code>{{optional_inline}}</dt> + <dd><code>number</code> ou <code>string</code> ou <code>object</code>. Cela peut être représenté par: un objet <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Date">Date</a></code>, une <a class="external external-icon" href="http://www.iso.org/iso/home/standards/iso8601.htm">chaîne de date ISO 8601</a>, ou le nombre de millisecondes depuis l'époque. Définit le temps de visite à cette valeur. Si ce n'est pas fourni, l'heure actuelle sera enregistrée.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> sera rempli sans paramètres lorsque l'élément a été ajouté.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.history.addUrl")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ajoutez un enregistrement d'une visite à "https://example.org/", puis vérifiez que la nouvelle visite a été enregistrée en recherchant l'historique de l'élément le plus récent et en l'enregistrant :</p> + +<pre class="brush: js">function onGot(results) { + if (results.length) { + console.log(results[0].url); + console.log(new Date(results[0].lastVisitTime)); + } +} + +function onAdded() { + var searching = browser.history.search({ + text: "https://example.org/", + startTime: 0, + maxResults: 1 + }); + searching.then(onGot); +} + +var addingUrl = browser.history.addUrl({url: "https://example.org/"}); +addingUrl.then(onAdded);</pre> + +<p>Ajouter un enregistrement d'une visite à "https://example.org", mais lui donner une <code>visitTime</code> de 24 heures dans le passé, et une <code>transition</code> "typed":</p> + +<pre class="brush: js">const DAY = 24 * 60* 60 * 1000; + +function oneDayAgo() { + return Date.now() - DAY; +} + +function onGot(visits) { + for (visit of visits) { + console.log(new Date(visit.visitTime)); + console.log(visit.transition); + } +} + +function onAdded() { + var gettingVisits = browser.history.getVisits({ + url: "https://example.org/" + }); + + gettingVisits.then(onGot); +} + +var addingUrl = browser.history.addUrl({ + url: "https://example.org/", + visitTime: oneDayAgo(), + transition: "typed" +}); + +addingUrl.then(onAdded);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/history"><code>chrome.history</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/history/deleteall/index.html b/files/fr/mozilla/add-ons/webextensions/api/history/deleteall/index.html new file mode 100644 index 0000000000..1490ee3c0b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/history/deleteall/index.html @@ -0,0 +1,96 @@ +--- +title: history.deleteAll() +slug: Mozilla/Add-ons/WebExtensions/API/history/deleteAll +tags: + - API + - Add-ons + - Extensions + - History + - Méthode + - Non-standard + - Reference + - WebExtensions + - deleteAll +translation_of: Mozilla/Add-ons/WebExtensions/API/history/deleteAll +--- +<div>{{AddonSidebar()}}</div> + +<p>Supprime toutes les visites de l'historique du navigateur.</p> + +<p>Cette fonction déclenche {{WebExtAPIRef("history.onVisitRemoved")}} une seule fois, avec <code>allHistory</code> défini sur <code>true</code> et un argument <code>urls</code> vide.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var deletingAll = browser.history.deleteAll() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> sera remplie sans paramètre lorsque tout l'historique a été supprimé.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.history.deleteAll")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<p><span id="result_box" lang="fr"><span>Supprimer tout l'historique lorsque l'utilisateur clique sur une action du navigateur :</span></span></p> + +<pre class="brush: js">function onDeleteAll() { + console.log("Deleted all history"); +} + +function deleteAllHistory() { + var deletingAll = browser.history.deleteAll(); + deletingAll.then(onDeleteAll); +} + +deleteAllHistory();</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/history"><code>chrome.history</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/history/deleterange/index.html b/files/fr/mozilla/add-ons/webextensions/api/history/deleterange/index.html new file mode 100644 index 0000000000..64e192e848 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/history/deleterange/index.html @@ -0,0 +1,107 @@ +--- +title: history.deleteRange() +slug: Mozilla/Add-ons/WebExtensions/API/history/deleteRange +tags: + - API + - Add-ons + - Extensions + - History + - Méthode + - Non-standard + - Reference + - WebExtensions + - deleteRange +translation_of: Mozilla/Add-ons/WebExtensions/API/history/deleteRange +--- +<div>{{AddonSidebar()}}</div> + +<p>Supprime toutes les visites aux pages que l'utilisateur a effectuées pendant la période donnée. Si cela supprime toutes les visites effectuées sur une page donnée, alors la page n'apparaîtra plus dans l'historique du navigateur et {{WebExtAPIRef("history.onVisitRemoved")}} se déclenchera pour cela.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var deletingRange = browser.history.deleteRange( + range // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>range</code></dt> + <dd><code>object</code>. Spécification de la plage de temps pour laquelle supprimer des visites.</dd> + <dd> + <dl class="reference-values"> + <dt><code>startTime</code></dt> + <dd><code>number</code> ou <code>string</code> ou <code>object</code>. Une valeur indiquant une date et une heure. Cela peut être représenté par: un objet <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Date">Date</a></code>, une <a href="http://www.iso.org/iso/home/standards/iso8601.htm">chaîne de de date ISO 8601</a>, ou le nombre de <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>. Spécifie l'heure de début de la plage.</dd> + <dt><code>endTime</code></dt> + <dd><code>number</code> ou <code>string</code> ou <code>object</code>. Une valeur indiquant une date et une heure. Cela peut être représenté par: un objet <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Date">Date</a></code>, une <a href="http://www.iso.org/iso/home/standards/iso8601.htm">chaîne de date ISO 8601</a>, ou le nombre de <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>. Spécifie l'heure de fin de la plage.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> sera remplie sans paramètre lorsque la plage a été supprimée.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.history.deleteRange")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supprimer toutes les visites effectuées à la dernière minute :</p> + +<pre class="brush: js">const MINUTE = 60 * 1000; + +function oneMinuteAgo() { + return Date.now() - MINUTE; +} + +browser.history.deleteRange({ + startTime: oneMinuteAgo(), + endTime: Date.now() +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Acknowledgements</strong> + +<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/history#method-deleteRange"><code>chrome.history</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> in the Chromium code.</p> + +<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/history/deleteurl/index.html b/files/fr/mozilla/add-ons/webextensions/api/history/deleteurl/index.html new file mode 100644 index 0000000000..24e2918f0d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/history/deleteurl/index.html @@ -0,0 +1,142 @@ +--- +title: history.deleteUrl() +slug: Mozilla/Add-ons/WebExtensions/API/history/deleteUrl +tags: + - API + - Add-ons + - Extensions + - History + - Method + - Non-standard + - Reference + - WebExtensions + - deleteUrl +translation_of: Mozilla/Add-ons/WebExtensions/API/history/deleteUrl +--- +<div>{{AddonSidebar()}}</div> + +<p>Supprime toutes les visites à l'URL donnée de l'historique du navigateur.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var deletingUrl = browser.history.deleteUrl( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Objet contenant l'URL dont les visites doivent être supprimées.</dd> + <dd> + <dl class="reference-values"> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL dont les visites doivent être supprimées.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> sera remplie sans paramètres lorsque les visites auront été supprimées.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.history.deleteUrl")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supprimez toutes les visites de "https://example.org/" de l'historique, puis vérifiez que cette URL n'est plus renvoyée par {{WebExtAPIRef("history.search()")}}:</p> + +<pre class="brush: js">var urlToRemove = "https://example.org/"; + +function onGot(results) { + if (!results.length) { + console.log(urlToRemove + " was removed"); + } else { + console.log(urlToRemove + " was not removed"); + } +} + +function onRemoved() { + var searching = browser.history.search({ + text: urlToRemove, + startTime: 0 + }); + + searching.then(onGot); +} + +var deletingUrl = browser.history.deleteUrl({url: urlToRemove}); + +deletingUrl.then(onRemoved);</pre> + +<p>Supprimez la dernière page visitée de l'historique, avec un écouteur à {{WebExtAPIRef("history.onVisitRemoved")}} pour consigner l'URL de la page supprimée :</p> + +<pre class="brush: js">function onRemoved(removeInfo) { + if (removeInfo.urls.length) { + console.log("Removed: " + removeInfo.urls[0]); + } +} + +browser.history.onVisitRemoved.addListener(onRemoved); + +function onGot(results) { + if (results.length) { + console.log("Removing: " + results[0].url); + browser.history.deleteUrl({url: results[0].url}); + } +} + +var searching = browser.history.search({ + text: "", + startTime: 0, + maxResults: 1 +}); + +searching.then(onGot);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/history"><code>chrome.history</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/history/getvisits/index.html b/files/fr/mozilla/add-ons/webextensions/api/history/getvisits/index.html new file mode 100644 index 0000000000..38bb7a8800 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/history/getvisits/index.html @@ -0,0 +1,119 @@ +--- +title: history.getVisits() +slug: Mozilla/Add-ons/WebExtensions/API/history/getVisits +tags: + - API + - Add-ons + - Extensions + - History + - Méthode + - Non-standard + - Reference + - WebExtensions + - getVisits +translation_of: Mozilla/Add-ons/WebExtensions/API/history/getVisits +--- +<div>{{AddonSidebar()}}</div> + +<p>Récupère des informations sur toutes les visites de l'URL donnée.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getting = browser.history.getVisits( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL pour laquelle récupérer les informations de visite.</dd> + </dl> + </dd> +</dl> + +<h3 id="valeur_retournée">valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> sera remplie avec un tableau d'objets <code>{{WebExtAPIRef('history.VisitItem')}}</code> représentant chacun une visite à l'URL donnée. Les visites sont triées dans l'ordre chronologique inverse.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.history.getVisits")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Liste toutes les visites de la page la plus récemment visitée :</p> + +<pre class="brush: js">function gotVisits(visits) { + console.log("Visit count: " + visits.length); + for (visit of visits) { + console.log(visit.visitTime); + } +} + +function listVisits(historyItems) { + if (historyItems.length) { + console.log("URL " + historyItems[0].url); + var gettingVisits = browser.history.getVisits({ + url: historyItems[0].url + }); + gettingVisits.then(gotVisits); + } +} + +var searching = browser.history.search({ + text: "", + startTime: 0, + maxResults: 1 +}); + +searching.then(listVisits);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/history"><code>chrome.history</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/history/historyitem/index.html b/files/fr/mozilla/add-ons/webextensions/api/history/historyitem/index.html new file mode 100644 index 0000000000..4ebd963d77 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/history/historyitem/index.html @@ -0,0 +1,83 @@ +--- +title: history.HistoryItem +slug: Mozilla/Add-ons/WebExtensions/API/history/HistoryItem +tags: + - API + - Add-ons + - Extensions + - History + - HistoryItem + - Non-standard + - Reference + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/history/HistoryItem +--- +<p>{{AddonSidebar()}}</p> + +<p>Un objet <code>HistoryItem</code> fournit des informations sur une page dans l'historique du navigateur.</p> + +<h2 id="Type">Type</h2> + +<p>C'est un objet avec les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>id</code></dt> + <dd><code>string</code>. Identifiant unique pour l'article.</dd> + <dt><code>url</code> {{optional_inline}}</dt> + <dd><code>string</code>. L'URL de la page.</dd> + <dt><code>title</code> {{optional_inline}}</dt> + <dd><code>string</code>. Le titre de la page.</dd> + <dt><code>lastVisitTime</code> {{optional_inline}}</dt> + <dd><code>number</code>. Date et heure du dernier chargement de la page, représentée en millisecondes depuis l'époque.</dd> + <dt><code>visitCount</code> {{optional_inline}}</dt> + <dd><code>number</code>. Le nombre de fois que l'utilisateur a visité la page.</dd> + <dt><code>typedCount</code> {{optional_inline}}</dt> + <dd><code>number</code>. Le nombre de fois que l'utilisateur a navigué sur cette page en tapant l'adresse.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.history.HistoryItem")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/history"><code>chrome.history</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/history/index.html b/files/fr/mozilla/add-ons/webextensions/api/history/index.html new file mode 100644 index 0000000000..3ffbd7ef01 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/history/index.html @@ -0,0 +1,134 @@ +--- +title: history +slug: Mozilla/Add-ons/WebExtensions/API/history +tags: + - API + - Add-ons + - Extensions + - History + - Interface + - Non-standard + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/history +--- +<div>{{AddonSidebar}}</div> + +<p>Utilisez l'API <code>historique</code> pour interargir avec l'historique du navigateur.</p> + +<p>Si vous recherchez des informations sur l'historique de session du navigateur, consultez l'<a href="/fr/docs/Web/API/History">interface historique</a>.</p> + +<div class="note"> +<p><strong>Notez : </strong>Les téléchargements sont traités comme des objets <a href="/fr/Add-ons/WebExtensions/API/history/HistoryItem" title="A HistoryItem object provides information about a page in the browser history."><code>HistoryItem</code></a>. Par conséquent, des événements tels que <a href="/fr/Add-ons/WebExtensions/API/history/onVisited" title="Fired each time the user visits a page. A history.HistoryItem object is passed to the listener. This event fires before the page has loaded."><code>history.onVisited</code></a> seront également déclenchés pour les téléchargements.</p> +</div> + +<p>L'historique du navigateur est un enregistrement chronologique des pages que l'utilisateur a visitées. l'API d'historique vous permet de :</p> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/API/history/search">Recherchez dans des pagesqui apparaissent dans l'historique du navigateur</a></li> + <li><a href="/fr/Add-ons/WebExtensions/API/history/deleteUrl">Supprimer des pages individuelles de l'historique du navigateur</a></li> + <li><a href="/fr/Add-ons/WebExtensions/API/history/addUrl">Ajouter des pages à l'historique du navigateur</a></li> + <li><a href="/fr/Add-ons/WebExtensions/API/history/deleteAll">Supprimer toutes les pages de l'historique du navigateur</a>.</li> +</ul> + +<p>Cependant, l'utilisateur peut avoir visité une seule page, plusieurs fois, de sorte que l'API a également le concept de"visites". Vous pouvez également utiliser cette API pour :</p> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/API/history/getVisits">Récupérer l'ensemble des visites effectuées par l'utilisateur sur une page particulière</a></li> + <li><a href="/fr/Add-ons/WebExtensions/API/history/deleteRange">Supprimer les visites à toutes les pages faites pendant une période de temps</a>.</li> +</ul> + +<p>Pour utiliser cette API, une extension doit demander la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "history" dans le fichier <code><a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a></code>.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("history.TransitionType")}}</dt> + <dd>Décrit comment le navigateur a navigué vers une page particulière.</dd> + <dt>{{WebExtAPIRef("history.HistoryItem")}}</dt> + <dd> + <p>Fournit des informations sur une page particulière dans l'historique du navigateur.</p> + </dd> + <dt>{{WebExtAPIRef("history.VisitItem")}}</dt> + <dd> + <p>Décrit une seule visite sur une page.</p> + </dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("history.search()")}}</dt> + <dd>Recherche dans l'historique du navigateur les objets <a href="/fr/Add-ons/WebExtensions/API/History/HistoryItem" title="A HistoryItem object provides information about one result from a history query."><code>history.HistoryItem</code></a> correspondant aux critères donnés.</dd> + <dt>{{WebExtAPIRef("history.getVisits()")}}</dt> + <dd>Récupère des informations sur les visites sur une page donnée.</dd> + <dt>{{WebExtAPIRef("history.addUrl()")}}</dt> + <dd>Ajoute un enregistrement à l'historique du navigateur d'une visite sur la page donnée.</dd> + <dt>{{WebExtAPIRef("history.deleteUrl()")}}</dt> + <dd>Supprime toutes les visites à l'URL donnée de l'historique du navigateur.</dd> + <dt>{{WebExtAPIRef("history.deleteRange()")}}</dt> + <dd>Supprime toutes les visites aux pages que l'utilisateur a effectuées pendant la période donnée.</dd> + <dt>{{WebExtAPIRef("history.deleteAll()")}}</dt> + <dd>Supprime toutes les visites de l'historique du navigateur.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("history.onTitleChanged")}}</dt> + <dd> + <div>Lancé lorsque le titre d'une page visitée par l'utilisateur est enregistré.</div> + </dd> + <dt>{{WebExtAPIRef("history.onVisited")}}</dt> + <dd>Lancé chaque fois que l'utilisateur visite une page, en fournissant les données {{WebExtAPIRef("history.HistoryItem")}} pour cette page.</dd> + <dt>{{WebExtAPIRef("history.onVisitRemoved")}}</dt> + <dd> + <p>Lancé lorsqu'une URL est complètement supprimée de l'historique du navigateur.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.history")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/history"><code>chrome.history</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/history/ontitlechanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/history/ontitlechanged/index.html new file mode 100644 index 0000000000..2098601f11 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/history/ontitlechanged/index.html @@ -0,0 +1,117 @@ +--- +title: history.onTitleChanged +slug: Mozilla/Add-ons/WebExtensions/API/history/onTitleChanged +tags: + - API + - Add-ons + - Event + - History + - Reference + - WebExtensions + - onTitleChanged +translation_of: Mozilla/Add-ons/WebExtensions/API/history/onTitleChanged +--- +<div>{{AddonSidebar()}}</div> + +<div>Lancé lorsque le titre d'une page visitée par l'utilisateur est enregistré.</div> + +<div></div> + +<div>Pour écouter les visites d'une page, vous pouvez utiliser {{WebExtAPIRef("history.onVisited")}}. Cependant, le {{WebExtAPIRef("history.HistoryItem")}} que cet événement passe à son écouteur n'inclut pas le titre de la page, car le titre de la page n'est généralement pas connu au moment où <code>history.onVisited</code> est envoyé.</div> + +<div></div> + +<div>Au lieu de cela, {{WebExtAPIRef("history.HistoryItem")}} stocké est mis à jour avec le titre de la page après le chargement de la page, une fois le titre connu. L'événement history.onTitleChanged est déclenché à ce moment-là. Donc, si vous avez besoin de connaître les titres des pages telles qu'elles sont visitées, écoutez <code>history.onTitleChanged</code>.</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.history.onTitleChanged.addListener(listener) +browser.history.onTitleChanged.removeListener(listener) +browser.history.onTitleChanged.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> argument est l'écouteur à supprimer</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Function that will be called when this event occurs. The function will be passed an object with the following properties:</p> + + <dl class="reference-values"> + <dt><code>url</code></dt> + <dd><code>String</code>. URL of the page visited.</dd> + <dt><code>title</code></dt> + <dd><code>String</code>. Title of the page visited.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.history.onTitleChanged")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Écoutez les événements de changement de titre et consignez l'URL et le titre des pages visitées</p> + +<pre class="brush: js">function handleTitleChanged(item) { + console.log(item.title); + console.log(item.url); +} + +browser.history.onTitleChanged.addListener(handleTitleChanged);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/history"><code>chrome.history</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/history/onvisited/index.html b/files/fr/mozilla/add-ons/webextensions/api/history/onvisited/index.html new file mode 100644 index 0000000000..adc2465f78 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/history/onvisited/index.html @@ -0,0 +1,113 @@ +--- +title: history.onVisited +slug: Mozilla/Add-ons/WebExtensions/API/history/onVisited +tags: + - API + - Add-ons + - Event + - Extensions + - History + - Non-standard + - Reference + - WebExtensions + - onVisited +translation_of: Mozilla/Add-ons/WebExtensions/API/history/onVisited +--- +<div>{{AddonSidebar()}}</div> + +<p>Mise en place à chaque fois que l'utilisateur visite une page. Un objet {{WebExtAPIRef("history.HistoryItem")}} est transmis à l'écouteur. Cet événement se déclenche avant que la page ne soit chargée.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.history.onVisited.addListener(listener) +browser.history.onVisited.removeListener(listener) +browser.history.onVisited.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>result</code></dt> + <dd> + <p>{{WebExtAPIRef('history.HistoryItem')}}. Un objet représentant l'élément dans l'historique du navigateur.</p> + + <p>Au moment où cet événement est envoyé, le navigateur ne connaît pas encore le titre de la page. Si le navigateur a déjà visité cette page et s'est souvenu de son ancien titre, l'objet <code>HistoryItem.title</code> contiendra l'ancien titre de la page. Si le navigateur n'a pas d'enregistrement de l'ancien titre de la page, alors <code>HistoryItem.title</code> sera vide. Pour obtenir les titres des pages dès qu'ils sont connus, écoutez {{WebExtAPIRef("history.onTitleChanged")}}.</p> + </dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.history.onVisited")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Écoutez les visites et consignez l'URL et l'heure de visite.</p> + +<pre class="brush: js">function onVisited(historyItem) { + console.log(historyItem.url); + console.log(new Date(historyItem.lastVisitTime)); +} + +browser.history.onVisited.addListener(onVisited);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/history"><code>chrome.history</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/history/onvisitremoved/index.html b/files/fr/mozilla/add-ons/webextensions/api/history/onvisitremoved/index.html new file mode 100644 index 0000000000..054e60ca0f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/history/onvisitremoved/index.html @@ -0,0 +1,122 @@ +--- +title: history.onVisitRemoved +slug: Mozilla/Add-ons/WebExtensions/API/history/onVisitRemoved +tags: + - API + - Add-ons + - Event + - Extensions + - History + - Non-standard + - Reference + - WebExtensions + - onVisitRemoved +translation_of: Mozilla/Add-ons/WebExtensions/API/history/onVisitRemoved +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'une page est complètement supprimée de l'historique du navigateur.</p> + +<ul> + <li>Si toutes les visites d'une seule page sont supprimées (par exemple, en utilisant {{WebExtAPIRef("history.deleteUrl")}}), cet événement est déclenché une fois.</li> + <li>Si une série de visites est supprimée (par exemple, en utilisant {{WebExtAPIRef("history.deleteRange")}} ou une fonctionnalité de navigateur telle que "Effacer l'historique récent"), alors il est tiré une fois pour chaque page <em>dont les visites tombent toutes dans la plage autorisée</em>.</li> + <li>Si l'historique complet du navigateur est effacé (par exemple, en utilisant {{WebExtAPIRef("history.deleteAll")}}), il est déclenché une seule fois.</li> +</ul> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.history.onVisitRemoved.addListener(listener) +browser.history.onVisitRemoved.removeListener(listener) +browser.history.onVisitRemoved.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions:</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction sera passée l'argument suivant :</p> + + <dl class="reference-values"> + <dt><code>removed</code></dt> + <dd><code>object</code>. Détails de l'enlèvement. C'est un objet contenant deux propriétés: un booléen <code>allHistory</code> et un tableau <code>urls</code>.</dd> + <dd> + <ul> + <li>Si cet événement se déclenche parce qu'il est clair, <code>allHistory</code> sera <code>true</code> et <code>urls</code> sera un tableau vide.</li> + <li>Dans le cas contraire, <code>allHistory</code> sera <code>false</code> et <code>urls</code> contiendront un qui est l'URL de la page supprimée.</li> + </ul> + </dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.history.onVisitRemoved")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function onRemoved(removed) { + if (removed.allHistory) { + console.log("All history removed"); + } else if (removed.urls.length) { + console.log("URL removed: " + removed.urls[0]); + } +} + +browser.history.onVisitRemoved.addListener(onRemoved);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/history"><code>chrome.history</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/history/search/index.html b/files/fr/mozilla/add-ons/webextensions/api/history/search/index.html new file mode 100644 index 0000000000..d8579eb27c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/history/search/index.html @@ -0,0 +1,155 @@ +--- +title: history.search() +slug: Mozilla/Add-ons/WebExtensions/API/history/search +tags: + - API + - Add-ons + - Extensions + - History + - Method + - Non-standard + - Reference + - Search + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/history/search +--- +<div>{{AddonSidebar()}}</div> + +<p>Recherche dans l'historique du navigateur les objets {{WebExtAPIRef("history.HistoryItem")}} correspondant aux critères donnés.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var searching = browser.history.search( + query // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>query</code></dt> + <dd>Un objet qui indique ce qu'il faut rechercher dans l'historique du navigateur. Cet objet a les champs suivants :</dd> + <dd> + <dl class="reference-values"> + <dt><code>text</code></dt> + <dd><code>string</code>. Rechercher des éléments d'historique par URL et titre. La chaîne est divisée en termes de recherche distincts aux limites de l'espace. Chaque terme de recherche est insensible à la casse par rapport à l'URL et au titre de l'élément d'historique. L'élément d'historique sera renvoyé si tous les termes de recherche correspondent.</dd> + <dd>Par exemple, considérez cet article :</dd> + <dd>URL: <code>"http://example.org"</code><br> + Title: <code>"Example Domain"</code></dd> + <dd> + <pre class="no-line-numbers">"http" -> matches +"domain" -> matches +"MAIN ample" -> matches +"main tt" -> matches +"main https" -> does not match</pre> + </dd> + <dd>Spécifiez une chaîne vide (<code>""</code>) pour récupérer tous les objets {{WebExtAPIRef("history.HistoryItem")}} qui répondent à tous les autres critères.</dd> + <dt><code>startTime</code> {{optional_inline}}</dt> + <dd><code>number</code> ou <code>string</code> ou <code>object</code>. Une valeur indiquant une date et une heure. Cela peut être représenté par : un objet <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Date">Date</a></code>, une <a href="http://www.iso.org/iso/home/standards/iso8601.htm">chaîne de date ISO 8601</a>, ou le nombre de millisecondes depuis l'époque. Si elle est fournie, cette option exclut les résultats dont <code>lastVisitTime</code> est antérieure à cette heure. Si elle est omise, la recherche est limitée aux dernières 24 heures.</dd> + <dt><code>endTime</code> {{optional_inline}}</dt> + <dd><code>number</code> ou <code>string</code> ou <code>object</code>. Une valeur indiquant une date et une heure. Cela peut être représenté par : un objet <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Date">Date</a></code>, une <a href="http://www.iso.org/iso/home/standards/iso8601.htm">chaîne de date ISO 8601</a>, ou le nombre de millisecondes depuis l'époque. Si elle est fournie, cette option exclut les résultats dont <code>lastVisitTime</code> est postérieur à cette fois. Si elle est omise, toutes les entrées sont prises en compte à partir de l'heure de début.</dd> + <dt><code>maxResults</code> {{optional_inline}}</dt> + <dd><code>number</code>. Le nombre maximum de résultats à récupérer. La valeur par défaut est 100, avec une valeur minimale de 1. La fonction renvoie une erreur si vous lui transmettez une valeur <code>maxResults</code> inférieure à 1.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> sera remplie avec un tableau d'objets de type {{WebExtAPIRef("history.HistoryItem")}}, chacun décrivant un seul élément d'historique correspondant. Les articles sont triés dans l'ordre chronologique inverse.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Consigne l'URL et la dernière heure de visite pour tous les éléments d'historique visités au cours des dernières 24 heures :</p> + +<pre class="brush: js">function onGot(historyItems) { + for (item of historyItems) { + console.log(item.url); + console.log(new Date(item.lastVisitTime)); + } +} + +var searching = browser.history.search({text: ""}); + +searching.then(onGot);</pre> + +<p>Logs the URL and last visit time for all history items ever visited:</p> + +<pre class="brush: js">function onGot(historyItems) { + for (item of historyItems) { + console.log(item.url); + console.log(new Date(item.lastVisitTime)); + } +} + +var searching = browser.history.search({ + text: "", + startTime: 0 +}); + +searching.then(onGot);</pre> + +<p>Consigne l'URL et la dernière visite de la dernière visite sur une page contenant la chaîne "mozilla" :</p> + +<pre class="brush: js">function onGot(historyItems) { + for (item of historyItems) { + console.log(item.url); + console.log(new Date(item.lastVisitTime)); + } +} + +var searching = browser.history.search({ + text: "mozilla", + startTime: 0, + maxResults: 1 +}); + +searching.then(onGot);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.history.search")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/history"><code>chrome.history</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/history/transitiontype/index.html b/files/fr/mozilla/add-ons/webextensions/api/history/transitiontype/index.html new file mode 100644 index 0000000000..8e40323c42 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/history/transitiontype/index.html @@ -0,0 +1,93 @@ +--- +title: history.TransitionType +slug: Mozilla/Add-ons/WebExtensions/API/history/TransitionType +tags: + - API + - Add-ons + - Extensions + - History + - Non-standard + - Reference + - TransitionType + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/history/TransitionType +--- +<p>{{AddonSidebar()}}</p> + +<p>Ceci décrit comment le navigateur a navigué vers une page particulière. Par exemple, "lien" signifie que le navigateur a navigué vers la page parce que l'utilisateur a cliqué sur un lien</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<dl> + <dt>"link"</dt> + <dd>L'utilisateur a cliqué sur un lien dans une autre page.</dd> + <dt>"typed"</dt> + <dd>L'utilisateur a tapé l'URL dans la barre d'adresse. Ceci est également utilisé si l'utilisateur a commencé à taper dans la barre d'adresse, puis sélectionné une URL parmi les suggestions qu'il a proposées. Voir aussi "généré".</dd> + <dt>"auto_bookmark"</dt> + <dd>L'utilisateur a cliqué sur un signet ou un élément dans l'historique du navigateur.</dd> + <dt>"auto_subframe"</dt> + <dd>Les iframes imbriqués qui sont automatiquement chargés par leur parent.</dd> + <dt>"manual_subframe"</dt> + <dd>Les iframes imbriqués chargés en tant qu'action utilisateur explicite. Le chargement d'une telle iframe générera une entrée dans la liste de navigation avant / arrière.</dd> + <dt>"generated"</dt> + <dd>L'utilisateur a commencé à taper dans la barre d'adresse, puis a cliqué sur une entrée suggérée qui ne contenait pas d'URL.</dd> + <dt>"auto_toplevel"</dt> + <dd>La page a été passée à la ligne de commande ou est la page de démarrage.</dd> + <dt>"form_submit"</dt> + <dd>L'utilisateur a soumis un formulaire. Notez que dans certaines situations, par exemple lorsqu'un formulaire utilise un script pour soumettre son contenu, l'envoi d'un formulaire n'entraîne pas ce type de transition.</dd> + <dt>"reload"</dt> + <dd>L'utilisateur a rechargé la page en utilisant le bouton Recharger ou en appuyant sur Entrée dans la barre d'adresse. Ceci est également utilisé pour la restauration de session et la réouverture des onglets fermés.</dd> + <dt>"keyword"</dt> + <dd>L'URL a été générée à l'aide d'une <a href="https://support.mozilla.org/en-US/kb/how-search-from-address-bar">recherche par mot clé</a> configuré par l'utilisateur.</dd> + <dt>"keyword_generated"</dt> + <dd>Correspond à une visite générée pour un mot clé.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.history.TransitionType")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/history"><code>chrome.history</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/history/visititem/index.html b/files/fr/mozilla/add-ons/webextensions/api/history/visititem/index.html new file mode 100644 index 0000000000..ef766d5cf3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/history/visititem/index.html @@ -0,0 +1,81 @@ +--- +title: history.VisitItem +slug: Mozilla/Add-ons/WebExtensions/API/history/VisitItem +tags: + - API + - Add-ons + - Extensions + - History + - Non-standard + - Reference + - Type + - VisiItem + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/history/VisitItem +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet décrivant une seule visite sur une page.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>id</code></dt> + <dd><code>string</code>. L'identifiant unique du {{WebExtAPIRef("history.HistoryItem")}} associé à cette visite.</dd> + <dt><code>visitId</code></dt> + <dd><code>string</code>. L'identifiant unique pour cette visite.</dd> + <dt><code>visitTime</code>{{optional_inline}}</dt> + <dd><code>number</code>. Lorsque cette visite s'est produite, représentée en millisecondes depuis l'époque.</dd> + <dt><code>referringVisitId</code></dt> + <dd><code>string</code>. L'ID de visite du référent.</dd> + <dt><code>transition</code></dt> + <dd>{{WebExtAPIRef('history.TransitionType')}}. Décrit comment le navigateur a navigué vers la page à cette occasion.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.history.VisitItem")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/history"><code>chrome.history</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/history.json"><code>history.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/i18n/detectlanguage/index.html b/files/fr/mozilla/add-ons/webextensions/api/i18n/detectlanguage/index.html new file mode 100644 index 0000000000..20b63588d6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/i18n/detectlanguage/index.html @@ -0,0 +1,115 @@ +--- +title: i18n.detectLanguage() +slug: Mozilla/Add-ons/WebExtensions/API/i18n/detectLanguage +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - detectLanguage + - i18n +translation_of: Mozilla/Add-ons/WebExtensions/API/i18n/detectLanguage +--- +<div>{{AddonSidebar()}}</div> + +<p>Détecte la langue du texte fourni à l'aide du <a href="https://github.com/CLD2Owners/cld2">détecteur de langue compact</a> (CLD).</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var detectingLanguages = browser.i18n.detectLanguage( + text // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>text</code></dt> + <dd><code>string</code>. Chaîne d'entrée de l'utilisateur à traduire.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet résultat. L'objet résultat a deux propriétés :</p> + +<dl class="reference-values"> + <dt><code>isReliable</code></dt> + <dd><code>boolean</code>. Si la langue a été détectée de manière fiable.</dd> + <dt><code>languages</code></dt> + <dd><code>array</code> d'objets, dont chacun a deux propriétés:</dd> + <dd> + <dl class="reference-values"> + <dt><code>language</code></dt> + <dd>{{WebExtAPIRef('i18n.LanguageCode')}}. La langue détectée.</dd> + <dt><code>percentage</code></dt> + <dd><code>integer</code>. Le pourcentage de la chaîne d'entrée qui était dans la langue détectée.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.i18n.detectLanguage")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function onLanguageDetected(langInfo) { + for (lang of langInfo.languages) { + console.log("Le langage est : " + lang.language); + console.log("Le pourcentage est : " + lang.percentage); + } +} + +var text = "L'homme est né libre, et partout il est dans les fers." + +var detecting = browser.i18n.detectLanguage(text); +detecting.then(onLanguageDetected); + +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/i18n"><code>chrome.i18n</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/i18n.json"><code>i18n.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/i18n/getacceptlanguages/index.html b/files/fr/mozilla/add-ons/webextensions/api/i18n/getacceptlanguages/index.html new file mode 100644 index 0000000000..a7868e3b35 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/i18n/getacceptlanguages/index.html @@ -0,0 +1,92 @@ +--- +title: i18n.getAcceptLanguages() +slug: Mozilla/Add-ons/WebExtensions/API/i18n/getAcceptLanguages +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getAcceptLanguages + - i18n +translation_of: Mozilla/Add-ons/WebExtensions/API/i18n/getAcceptLanguages +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient les <a href="/fr/docs/Web/HTTP/Content_negotiation#The_Accept-Language_header">accept-languages</a> du navigateur. Ceci est différent des paramètres régionaux utilisés par le navigateur. Pour obtenir les paramètres régionaux, utilisez {{WebExtAPIRef('i18n.getUILanguage')}}.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingAcceptLanguages = browser.i18n.getAcceptLanguages() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un <code>array</code> d'objets <code>{{WebExtAPIRef('i18n.LanguageCode')}}</code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.i18n.getAcceptLanguages")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function onGot(languages) { + console.log(languages); + //e.g. Array [ "en-US", "en" ] +} + +var gettingAcceptLanguages = browser.i18n.getAcceptLanguages(); +gettingAcceptLanguages.then(onGot); +</pre> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/i18n"><code>chrome.i18n</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/i18n.json"><code>i18n.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/i18n/getmessage/index.html b/files/fr/mozilla/add-ons/webextensions/api/i18n/getmessage/index.html new file mode 100644 index 0000000000..464a46cfc0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/i18n/getmessage/index.html @@ -0,0 +1,119 @@ +--- +title: i18n.getMessage() +slug: Mozilla/Add-ons/WebExtensions/API/i18n/getMessage +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getMessage + - i18n +translation_of: Mozilla/Add-ons/WebExtensions/API/i18n/getMessage +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient la chaîne localisée pour le message spécifié.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.i18n.getMessage( + messageName, // string + substitutions // optional any +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>messageName</code></dt> + <dd><code>string</code>. Le nom du message, tel que spécifié dans le fichier messages.json. Si le message ne peut pas être trouvé dans messages.json :</dd> + <dd> + <ul> + <li>Firefox renvoie "" et enregistre une erreur.</li> + <li>Chrome renvoie "" et n'enregistre pas d'erreur.</li> + </ul> + </dd> + <dt><code>substitutions</code>{{optional_inline}}</dt> + <dd><code>string</code> ou <code>array</code> de <code>string</code>. Une chaîne de substitution unique ou un tableau de chaînes de substitution.</dd> + <dd>Dans Chrome, si vous fournissez plus de 9 chaînes de substitution, <code>getMessage()</code> renvoie <code>undefined</code>.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p><code>string</code>. Message localisé pour les paramètres régionaux en cours.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.i18n.getMessage")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenez la chaîne localisée pour <code>"messageContent"</code>, avec <code>target.url</code> substitué :</p> + +<pre class="brush: js">var message = browser.i18n.getMessage("messageContent", target.url); +console.log(message); +</pre> + +<p>Cela fonctionnerait avec un fichier _locales/en/messages.json contenant :</p> + +<pre class="brush: json">{ + "messageContent": { + "message": "You clicked $URL$.", + "description": "Tells the user which link they clicked.", + "placeholders": { + "url" : { + "content" : "$1", + "example" : "https://developer.mozilla.org" + } + } + } +}</pre> + +<p>Si <code>target.url</code> est "https://developer.mozilla.org", alors la valeur de message, dans la locale "en", serait :</p> + +<pre>"You clicked https://developer.mozilla.org."</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/i18n"><code>chrome.i18n</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/i18n.json"><code>i18n.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/i18n/getuilanguage/index.html b/files/fr/mozilla/add-ons/webextensions/api/i18n/getuilanguage/index.html new file mode 100644 index 0000000000..0e5c7c343d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/i18n/getuilanguage/index.html @@ -0,0 +1,86 @@ +--- +title: i18n.getUILanguage() +slug: Mozilla/Add-ons/WebExtensions/API/i18n/getUILanguage +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getUILanguage + - i18n +translation_of: Mozilla/Add-ons/WebExtensions/API/i18n/getUILanguage +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient la langue de l'interface utilisateur du navigateur. Ceci est différent de {{WebExtAPIRef('i18n.getAcceptLanguages')}} qui renvoie les langues utilisateur préférées.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.i18n.getUILanguage() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dd>None.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p><code>string</code>. Le code de langue de l'interface utilisateur du navigateur en tant que {{WebExtAPIRef("i18n.LanguageCode")}}.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.i18n.getUILanguage")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">var uiLanguage = browser.i18n.getUILanguage(); +console.log(uiLanguage); + +//e.g. "fr"</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/i18n"><code>chrome.i18n</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/i18n.json"><code>i18n.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/i18n/index.html b/files/fr/mozilla/add-ons/webextensions/api/i18n/index.html new file mode 100644 index 0000000000..bb22f56649 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/i18n/index.html @@ -0,0 +1,57 @@ +--- +title: i18n +slug: Mozilla/Add-ons/WebExtensions/API/i18n +tags: + - API + - Add-ons + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions + - i18n +translation_of: Mozilla/Add-ons/WebExtensions/API/i18n +--- +<div>{{AddonSidebar}}</div> + +<p>Fonctions permettant d'internationaliser votre extension. Vous pouvez utiliser ces API pour obtenir des chaînes localisées à partir de fichiers locaux conditionnés avec votre extension, connaître la langue actuelle du navigateur et en connaître la valeur de son <a href="/fr/docs/Web/HTTP/Content_negotiation#The_Accept-Language_header">En-tete "Accept-Language"</a>.</p> + +<p id="See_also">Pour plus de détails sur l'utilisation de i18n pour votre extension, voir :</p> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/Internationalization">Internationalization</a>: un guide d'utilisation du système WebExtension i18n.</li> + <li><a href="/fr/Add-ons/WebExtensions/API/i18n/Locale-Specific_Message_reference">Référence de message spécifique aux paramètres régionaux </a>: Les extensions fournissent des chaînes de caractères locales dans des fichiers appelés <code>messages.json</code>. Cette page décrit le format de <code>messages.json</code>.</li> +</ul> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("i18n.LanguageCode")}}</dt> + <dd>Une <a href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.10">balise de langue</a> telle que <code>"en-US"</code> ou "<code>fr</code>".</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("i18n.getAcceptLanguages()")}}</dt> + <dd>Obtient les <a href="/fr/docs/Web/HTTP/Content_negotiation#The_Accept-Language_header">accept-languages</a> du navigateur. Ceci est différent des paramètres régionaux utilisés par le navigateur. Pour obtenir les paramètres régionaux, utilisez {{WebExtAPIRef('i18n.getUILanguage')}}.</dd> + <dt>{{WebExtAPIRef("i18n.getMessage()")}}</dt> + <dd>Obtient la chaîne localisée pour le message spécifié.</dd> + <dt>{{WebExtAPIRef("i18n.getUILanguage()")}}</dt> + <dd>Obtient la langue de l'interface utilisateur du navigateur. Ceci est différent de {{WebExtAPIRef('i18n.getAcceptLanguages')}} qui renvoie les langues utilisateur préférées.</dd> + <dt>{{WebExtAPIRef("i18n.detectLanguage()")}}</dt> + <dd>Détecte la langue du texte fourni en utilisant le <a href="https://github.com/CLD2Owners/cld2">détecteur de langue compact</a>.</dd> +</dl> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p>{{Compat("webextensions.api.i18n")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="blockIndicator note"> +<p><strong>Remerciements</strong><br> + Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/i18n"><code>chrome.i18n</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/i18n.json"><code>i18n.json</code></a> dans le code de Chromium.<br> + <br> + Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/i18n/languagecode/index.html b/files/fr/mozilla/add-ons/webextensions/api/i18n/languagecode/index.html new file mode 100644 index 0000000000..1030735ae9 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/i18n/languagecode/index.html @@ -0,0 +1,69 @@ +--- +title: i18n.LanguageCode +slug: Mozilla/Add-ons/WebExtensions/API/i18n/LanguageCode +tags: + - API + - Add-ons + - Extension + - Extensions + - LanguageCode + - Non-standard + - Reference + - Type + - WebExtensions + - i18n +translation_of: Mozilla/Add-ons/WebExtensions/API/i18n/LanguageCode +--- +<div>{{AddonSidebar()}}</div> + +<p>Une <a href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.10">balise de langue</a> telle que <code>"en-US"</code> ou "<code>fr</code>".</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.i18n.LanguageCode")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/i18n"><code>chrome.i18n</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/i18n.json"><code>i18n.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/i18n/locale-specific_message_reference/index.html b/files/fr/mozilla/add-ons/webextensions/api/i18n/locale-specific_message_reference/index.html new file mode 100644 index 0000000000..843010173d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/i18n/locale-specific_message_reference/index.html @@ -0,0 +1,129 @@ +--- +title: Locale-specific message reference +slug: Mozilla/Add-ons/WebExtensions/API/i18n/Locale-Specific_Message_reference +tags: + - Internationalization + - Localization + - Reference + - String + - WebExtensions + - i18n + - message + - messages.json + - placeholders +translation_of: Mozilla/Add-ons/WebExtensions/API/i18n/Locale-Specific_Message_reference +--- +<p>{{AddonSidebar()}}</p> + +<p>Chaque extension internationalisée a au moins un fichier nommé <code>messages.json</code> qui fournit des chaînes spécifiques aux paramètres régionaux. Cette page décrit le format des fichiers <code>messages.json</code>.</p> + +<div class="note"> +<p><strong>Remarque </strong>: Pour plus d'informations sur l'internationalisation de vos extensions, consultez notre guide <a href="/fr/Add-ons/WebExtensions/WebExtension_i18n">i18n</a>.</p> +</div> + +<h2 id="Exemple_messages.json">Exemple messages.json</h2> + +<p>Le code suivant montre un exemple de fichier <code>messages.json file</code>, tiré de notre extension <a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">d'exemple notify-link-clicks-i18n</a>. Seuls les champs "<em>name</em>" et "message" ont obligatoires.</p> + +<pre class="brush: json">{ + "extensionName": { + "message": "Notify link clicks i18n", + "description": "Name of the extension." + }, + + "extensionDescription": { + "message": "Shows a notification when the user clicks on links.", + "description": "Description of the extension." + }, + + "notificationTitle": { + "message": "Click notification", + "description": "Title of the click notification." + }, + + "notificationContent": { + "message": "You clicked $URL$.", + "description": "Tells the user which link they clicked.", + "placeholders": { + "url" : { + "content" : "$1", + "example" : "https://developer.mozilla.org" + } + } + } +}</pre> + +<h2 id="Placement">Placement</h2> + +<p>Vos fichiers <code>messages.json</code> doivent être placés dans des répertoires nommés d'après les paramètres régionaux que chacun supporte — <code>en</code>, <code>de</code>, <code>ja</code>, etc. Ceux-ci doivent être placés dans un répertoire appelé <code>_locales</code>, à l'intérieur de la racine de votre extension.</p> + +<h2 id="Détails_des_membres">Détails des membres</h2> + +<p>Cette section décrit chaque membre qui peut apparaître dans un fichier <code>messages.json</code>.</p> + +<h3 id="name">name</h3> + +<p>Chaque membre de niveau supérieur est nommé d'après le nom de la chaîne de message que vous localisez, par exemple <code>"extensionName"</code> ou <code>"notificationContent"</code> dans l'exemple ci-dessus. Chaque nom est insensible à la casse et agit comme une clé vous permettant de récupérer le texte du message localisé.</p> + +<p>Le nom peut inclure les caractères suivants :</p> + +<ul> + <li>A-Z</li> + <li>a-z</li> + <li>0-9</li> + <li>_ (underscore)</li> + <li>@</li> +</ul> + +<p class="note"><strong>Remarque :</strong> Vous ne devez pas définir les noms commençant par @@. Ces noms sont réservés aux <a href="/fr/Add-ons/WebExtensions/Internationalization#Predefined_messages">messages prédéfinis</a>.</p> + +<h3 id="message">message</h3> + +<p>Au moins, cette propriété doit être définie pour chaque chaîne. Le membre <code>"message"</code> contient une chaîne localisée qui peut contenir {{anch("placeholders")}}. Vous pouvez utiliser :</p> + +<ul> + <li><em>$placeholder_name$</em> (case insensitive) pour insérer un espace réservé particulier (par exemple $URL$ dans l'exemple ci-dessus) dans votre chaîne.</li> + <li><code>$1</code>, <code>$2</code>,<code> $3</code>, etc. pour insérer directement les valeurs obtenues à partir d'un {{WebExtAPIRef("i18n.getMessage()")}} appel dans votre chaîne.</li> +</ul> + +<p>Autres points à noter :</p> + +<ul> + <li>Tout nombre de signes dollar consécutifs apparaissant dans les chaînes est remplacé par le même nombre de signes dollar moins un. donc, $$ > $, $$$ > $$, etc.</li> + <li>Lorsque le fichier de paramètres régionaux est lu, les jetons correspondant à <code>/\$([a-z0-9_@]+)\$/i</code> sont remplacés par la valeur correspondante de l'objet "placeholders" de la chaîne. Ces substitutions se produisent avant le traitement des <code>/\$\d/</code> jetons dans le message.</li> + <li>Lorsqu'une chaîne locale est utilisée, les jetons correspondant à <code>/\$\d+/</code> sont remplacés par les remplacements passés à {{WebExtAPIRef("i18n.getMessage()")}}.</li> + <li><code>getMessage()</code> ne traitera pas les appels avec plus de 9 placeholders/substitutions.</li> +</ul> + +<h3 id="description">description</h3> + +<p>{{optional_inline}}</p> + +<p>Le membre <code>"description"</code> doit contenir une description du contenu de la chaîne de message, destinée à fournir un traducteur pour aider à créer la meilleure traduction possible de la chaîne.</p> + +<h3 id="placeholders">placeholders</h3> + +<p>{{optional_inline}}</p> + +<p>Le membre <code>"placeholders"</code> définit une ou plusieurs sous-chaînes à utiliser dans le message — celles-ci peuvent être utilisées pour coder en dur les éléments que vous ne voulez pas traduire, ou vous référer à des variables.</p> + +<p>Chaque définition de sous-chaîne d'espace réservé possède un certain nombre de valeurs :</p> + +<pre class="brush: json">"url" : { + "content" : "$1", + "example" : "https://developer.mozilla.org" +}</pre> + +<h4 id="Nom_placeholder">Nom placeholder</h4> + +<p>Le nom de l'espace réservé est utilisé pour représenter l'espace réservé dans la chaîne de substitution (par exemple <code>"url"</code> devient <code>$url$</code>). Il est insensible à la casse et peut contenir les mêmes caractères qu'une chaîne de message {{anch("name")}}.</p> + +<h4 id="contenu">contenu</h4> + +<p>L'élément "contenu" définit le contenu de l'espace réservé. Cela peut être une chaîne codée en dur, telle que "My placeholder", mais elle peut également inclure des valeurs obtenues à partir d'un appel {{WebExtAPIRef("i18n.getMessage()")}}. Cette propriété est obligatoire Pour plus d'informations, voir <a href="/fr/Add-ons/WebExtensions/Internationalization#Retrieving_message_strings_from_JavaScript">Récupération des chaînes de messages à partir de Javascript</a>.</p> + +<h4 id="exemple">exemple</h4> + +<p>{{optional_inline}}</p> + +<p>L'élément optionnel "exemple" est là encore destiné à aider les traducteurs en leur montrant un exemple de la façon dont l'espace réservé apparaîtrait aux utilisateurs finaux, leur permettant de faire le meilleur choix lors de la localisation du fichier.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/identity/getredirecturl/index.html b/files/fr/mozilla/add-ons/webextensions/api/identity/getredirecturl/index.html new file mode 100644 index 0000000000..e4fad4475f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/identity/getredirecturl/index.html @@ -0,0 +1,55 @@ +--- +title: identity.getRedirectURL() +slug: Mozilla/Add-ons/WebExtensions/API/identity/getRedirectURL +tags: + - API + - Add-ons + - Extensions + - Identity + - Method + - Reference + - WebExtensions + - getRedirectURL +translation_of: Mozilla/Add-ons/WebExtensions/API/identity/getRedirectURL +--- +<div>{{AddonSidebar()}}</div> + +<p>Génère une URL que vous pouvez utiliser comme URL de redirection.</p> + +<p>L'URL est dérivée de l'ID de votre extension. Si vous utilisez cette fonction, vous devrez probablement définir explicitement l'ID de votre extension à l'aide de la clé des <code><a href="/fr/Add-ons/WebExtensions/manifest.json/applications">applications</a></code> (sinon, chaque fois que vous installerez <a href="/fr/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">temporairement l'extension</a>, vous obtiendrez une URL de redirection différente).</p> + +<p>Voir <a href="/fr/Add-ons/WebExtensions/API/identity#Getting_the_redirect_URL">Obtenir une URL de redirection</a> pour plus d'informations sur les URL de redirection.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var redirectURL = browser.identity.getRedirectURL() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une chaîne contenant une valeur d'URL de redirection.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.identity.getRedirectURL")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenez l'URL de redirection :</p> + +<pre class="brush: js">var redirectURL = browser.identity.getRedirectURL();</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/identity"><code>chrome.identity</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/identity/index.html b/files/fr/mozilla/add-ons/webextensions/api/identity/index.html new file mode 100644 index 0000000000..86dbe24142 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/identity/index.html @@ -0,0 +1,106 @@ +--- +title: identity +slug: Mozilla/Add-ons/WebExtensions/API/identity +tags: + - API + - Add-ons + - Extensions + - Identity + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/identity +--- +<div>{{AddonSidebar}}</div> + +<p>Utilisez l'API d'identité pour obtenir un code d'autorisation ou un jeton d'accès <a href="https://oauth.net/2/">OAuth2</a>, qu'une extension peut ensuite utiliser pour accéder aux données utilisateur d'un service prenant en charge l'accès à OAuth2 (tel qu'un compte Google ou Facebook).</p> + +<p>Les détails du fonctionnement du flux OAuth2 diffèrent d'un fournisseur de services à l'autre. Pour utiliser cette API avec un fournisseur de services particulier, vous devez consulter leur documentation. Par exemple :</p> + +<ul> + <li><a href="https://developers.google.com/identity/protocols/OAuth2UserAgent">https://developers.google.com/identity/protocols/OAuth2UserAgent</a></li> + <li><a href="https://developer.github.com/v3/oauth/">https://developer.github.com/v3/oauth/</a></li> +</ul> + +<p>L'API d'identité fournit la fonction {{WebExtAPIRef("identity.launchWebAuthFlow()")}}. Cela authentifie l'utilisateur avec le service, si nécessaire, et demande à l'utilisateur d'autoriser l'extension à accéder aux données, si nécessaire. La fonction se termine par un jeton d'accès ou un code d'autorisation, selon le fournisseur.</p> + +<p>L'extension termine alors le flux OAuth2 pour obtenir un jeton d'accès validé, et peut ensuite l'utiliser dans les requêtes HTTP pour accéder aux données de l'utilisateur en fonction de l'autorisation donnée par l'utilisateur.</p> + +<p>Pour utiliser cette API, vous devez posséder la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API </a>"identity"</p> + +<h2 id="Installer">Installer</h2> + +<p>Il y a une certaine configuration que vous devez faire avant de publier votre extension.</p> + +<h3 id="Obtenir_l'URL_de_redirection">Obtenir l'URL de redirection</h3> + +<p>L'<a href="https://www.oauth.com/oauth2-servers/redirect-uris/">URL de redirection</a> représente le point final de {{WebExtAPIRef("identity.launchWebAuthFlow()")}}, dans lequel le jeton d'accès ou le code d'autorisation est remis à l'extension..</p> + +<p>Vous pouvez obtenir une URL de redirection en appelant {{WebExtAPIRef("identity.getRedirectURL()")}}. Cette fonction dérive une URL de redirection à partir de l'ID du module, donc si vous voulez l'utiliser, vous devez probablement définir explicitement l'ID de votre module en utilisant la clé des <code><a href="/fr/Add-ons/WebExtensions/manifest.json/applications">applications</a></code> (sinon, chaque fois que vous <a href="/fr/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">installez temporairement le module complémentaire</a>, vous obtiendrez une URL de redirection différente).</p> + +<p>Vous n'avez pas besoin d'utiliser l'URL de redirection retournée par <code>identity.getRedirectURL()</code>: vous pouvez fournir la vôtre, et cela peut être tout ce que le service redirigera. Cependant, il devrait utiliser un domaine que vous contrôlez.</p> + +<p>Vous utiliserez l'URL de redirection à deux endroits :</p> + +<ul> + <li>Fournissez-le lors de l'enregistrement de votre extension en tant que client OAuth2</li> + <li>Transmettez-le dans <code>identity.launchWebAuthFlow()</code>, en tant que paramètre d'URL ajouté à l'argument <code>url</code> de cette fonction.</li> +</ul> + +<h3 id="Enregistrement_de_votre_extension">Enregistrement de votre extension</h3> + +<p>Avant de pouvoir utiliser OAuth2 avec un fournisseur de services, vous devez enregistrer l'extension auprès du fournisseur en tant que client OAuth2.</p> + +<p>Cela aura tendance à être spécifique au fournisseur de services, mais en général cela signifie créer une entrée pour votre extension sur le site Web du fournisseur. Dans ce processus, vous fournirez votre URL de redirection, et recevrez un identifiant de client (et parfois aussi un secret). Vous devrez passer les deux dans {{WebExtAPIRef("identity.launchWebAuthFlow()")}}.</p> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("identity.getRedirectURL()")}}</dt> + <dd>Obtient l'URL de redirection.</dd> + <dt>{{WebExtAPIRef("identity.launchWebAuthFlow()")}}</dt> + <dd>Lancement WAF.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.identity")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/identity"><code>chrome.identity</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/identity/launchwebauthflow/index.html b/files/fr/mozilla/add-ons/webextensions/api/identity/launchwebauthflow/index.html new file mode 100644 index 0000000000..da6f253b07 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/identity/launchwebauthflow/index.html @@ -0,0 +1,124 @@ +--- +title: identity.launchWebAuthFlow +slug: Mozilla/Add-ons/WebExtensions/API/identity/launchWebAuthFlow +tags: + - API + - Add-ons + - Extensions + - Identity + - Method + - Reference + - WebExtensions + - launchWebAuthFlow +translation_of: Mozilla/Add-ons/WebExtensions/API/identity/launchWebAuthFlow +--- +<div>{{AddonSidebar()}}</div> + +<p>Effectue la première partie d'un flux <a href="https://oauth.net/2/">OAuth2</a> y compris l'authentification de l'utilisateur et l'autorisation du client.</p> + +<p>Le seul paramètre obligatoire de cette fonction est l'URL d'autorisation du fournisseur de services, qui doit contenir un certain nombre de paramètres d'URL, y compris l'<span class="im"><a href="/fr/Add-ons/WebExtensions/API/identity#Getting_the_redirect_URL">URL de redirection</a> et l'<a href="/fr/Add-ons/WebExtensions/API/identity#Registering_your_add-on">ID client</a> de l'extension. </span>Le fournisseur de service alors :</p> + +<ul> + <li>authentifie l'utilisateur auprès du fournisseur de services, si nécessaire (c'est-à-dire: s'ils ne sont pas déjà connectés)</li> + <li>demande à l'utilisateur d'autoriser l'extension à accéder aux données demandées, si nécessaire (c'est-à-dire : si l'utilisateur n'a pas déjà autorisé l'extension)</li> +</ul> + +<p>Notez que si aucune authentification ou autorisation n'est nécessaire, cette fonction se terminera silencieusement, sans interaction de l'utilisateur.</p> + +<p>Cette fonction prend également un paramètre facultatif <code>interactif</code>: si cette valeur est omise ou définie sur false, le flux est forcé de se terminer en mode silencieux. Dans ce cas, si l'utilisateur doit s'authentifier ou autoriser, l'opération échouera tout simplement.</p> + +<p>Cette fonction renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>: si l'authentification et l'autorisation ont abouti, la promesse est remplie avec une URL de redirection contenant un certain nombre de paramètres d'URL. En fonction du flux OAuth2 implémenté par le fournisseur de services en question, l'extension devra passer par d'autres étapes pour obtenir un code d'accès valide, qu'elle pourra ensuite utiliser pour accéder aux données de l'utilisateur.</p> + +<p>S'il y a une erreur, la promesse est rejetée avec un message d'erreur. Les conditions d'erreur peuvent inclure :</p> + +<ul> + <li>l'URL du fournisseur de services n'a pas pu être atteinte</li> + <li>l'ID du client ne correspond pas à l'ID d'un client enregistré</li> + <li>l'URL de redirection ne correspond à aucune URL de redirection enregistrée pour ce client</li> + <li>l'utilisateur ne s'est pas authentifié avec succès</li> + <li>l'utilisateur n'a pas autorisé l'extension</li> + <li>Le paramètre <code>interactif</code> a été omis ou faux, mais l'interaction de l'utilisateur aurait été nécessaire pour autoriser l'extension.</li> +</ul> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var authorizing = browser.identity.launchWebAuthFlow( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Options pour le flux, contenant les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>url</code></dt> + <dd> + <p><code>string</code>. URL fournie par le fournisseur de services OAuth2 pour obtenir un jeton d'accès. Les détails de cette URL doivent figurer dans la documentation du fournisseur de services en question, mais les paramètres d'URL doivent toujours inclure :</p> + + <ul> + <li>redirect_uri: ceci représente l'URI que votre extension est redirigée lorsque le flux est terminé. Il n'est pas nécessaire pour que le flux fonctionne du côté navigateur s'il correspond à l'URL de redirection générée. Voir <a href="/fr/Add-ons/WebExtensions/API/identity#Getting_the_redirect_URL">Obtenir l'URL de redirection</a>.</li> + </ul> + </dd> + <dt><code>interactive</code> {{optional_inline}}</dt> + <dd> + <p><code>boolean</code>. Si omis ou <code>false</code>, force le flux à se terminer en silence, sans interaction de l'utilisateur.</p> + + <p>Si l'utilisateur est déjà connecté et a déjà accordé l'accès pour l'extension, <code>launchWebAuthFlow()</code> peut se terminer en mode silencieux, sans interaction de l'utilisateur. Sinon (si le fournisseur de services a besoin que l'utilisateur se connecte ou autorise l'extension), <code>launchWebAuthFlow()</code> invite l'utilisateur, c'est-à-dire que le flux sera interactif.</p> + + <p>Les extensions ne doivent pas lancer de flux interactifs sauf en réponse à une action de l'utilisateur. Cependant, parfois les extensions veulent toujours accéder aux données de l'utilisateur sans une action directe de l'utilisateur (par exemple, imaginez une extension qui veut accéder aux données lorsque le navigateur se lance).</p> + + <p>TC'est le but de l'<code>interactif</code>: Si vous omettez <code>interactif</code> ou le définissez sur <code>false</code>, le flux est forcé de conclure en silence : si le fournisseur de services doit interagir avec l'utilisateur, le flux échouera tout simplement. Donc en règle générale: mettez <code>interactif</code> à <code>true</code> si vous lancez le flux en réponse à une action de l'utilisateur, et omettez le sinon.</p> + </dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si l'extension est autorisée avec succès, elle sera remplie avec une chaîne contenant l'URL de redirection. L'URL inclura un paramètre qui est un jeton d'accès ou qui peut être échangé contre un jeton d'accès, en utilisant le flux documenté pour le fournisseur de services particulier. </p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.identity.launchWebAuthFlow")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cette fonction autorise une extension des données Google d'un utilisateur, conformément à la documentation disponible à l'adresse <a href="https://developers.google.com/identity/protocols/OAuth2UserAgent">https://developers.google.com/identity/protocols/OAuth2UserAgent</a>. La validation du jeton d'accès renvoyé n'est pas affichée ici :</p> + +<pre class="brush: js">function validate(redirectURL) { + // validate the access token +} + +function authorize() { + const redirectURL = browser.identity.getRedirectURL(); + const clientID = "664583959686-fhvksj46jkd9j5v96vsmvs406jgndmic.apps.googleusercontent.com"; + const scopes = ["openid", "email", "profile"]; + let authURL = "https://accounts.google.com/o/oauth2/auth"; + authURL += `?client_id=${clientID}`; + authURL += `&response_type=token`; + authURL += `&redirect_uri=${encodeURIComponent(redirectURL)}`; + authURL += `&scope=${encodeURIComponent(scopes.join(' '))}`; + + return browser.identity.launchWebAuthFlow({ + interactive: true, + url: authURL + }); +} + +function getAccessToken() { + return authorize().then(validate); +}</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/identity"><code>chrome.identity</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/idle/idlestate/index.html b/files/fr/mozilla/add-ons/webextensions/api/idle/idlestate/index.html new file mode 100644 index 0000000000..33db7e72e9 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/idle/idlestate/index.html @@ -0,0 +1,68 @@ +--- +title: idle.IdleState +slug: Mozilla/Add-ons/WebExtensions/API/idle/IdleState +tags: + - API + - Add-ons + - Extensions + - Idle + - IdleState + - Non-standard + - Reference + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/idle/IdleState +--- +<div>{{AddonSidebar()}}</div> + +<p>Chaîne d'écrivant l'état d'inactivité du périphérique.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont : <code>"active"</code>, <code>"idle"</code>, <code>"locked"</code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.idle.IdleState")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/idle"><code>chrome.idle</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/idle.json"><code>idle.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/idle/index.html b/files/fr/mozilla/add-ons/webextensions/api/idle/index.html new file mode 100644 index 0000000000..72e908b0b9 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/idle/index.html @@ -0,0 +1,88 @@ +--- +title: idle +slug: Mozilla/Add-ons/WebExtensions/API/idle +tags: + - API + - Add-ons + - Extensions + - Idle + - Interface + - Non-standard + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/idle +--- +<div>{{AddonSidebar}}</div> + +<p>Découvrez quand le système de l'utilisateur est inactif, vérouillé ou actif.</p> + +<p>Pour utiliser cette API, vous disposez de la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "idle" .</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("idle.IdleState")}}</dt> + <dd> + <p>Chaîne décrivant l'état d'inactivité du périphérique</p> + </dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("idle.queryState()")}}</dt> + <dd>Renvoie <code>"locked"</code> si le système est verrouillé, <code>"idle"</code> si l'utilisateur n'a généré aucune entrée pendant un nombre de secondes spécifié, ou sinon <code>"active"</code></dd> + <dt>{{WebExtAPIRef("idle.setDetectionInterval()")}}</dt> + <dd>Définit l'intervalle utilisé pour déterminer quand le système est inactif pour les événements {{WebExtAPIRef("idle.onStateChanged")}}.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("idle.onStateChanged")}}</dt> + <dd>Définit quand le système change d'état.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.idle")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/idle"><code>chrome.idle</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/idle.json"><code>idle.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/idle/onstatechanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/idle/onstatechanged/index.html new file mode 100644 index 0000000000..a5432302d7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/idle/onstatechanged/index.html @@ -0,0 +1,113 @@ +--- +title: idle.onStateChanged +slug: Mozilla/Add-ons/WebExtensions/API/idle/onStateChanged +tags: + - API + - Add-ons + - Event + - Extensions + - Idle + - Inactif + - Non-standard + - Reference + - WebExtensions + - onStateChanged +translation_of: Mozilla/Add-ons/WebExtensions/API/idle/onStateChanged +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque le système change passe à l'état actif, inactif ou vérouillé. L'écouteur d'événement reçoit une chaîne qui a l'une des trois valeurs suivantes :</p> + +<ul> + <li>"vérouillé" si l'écran est vérouillé ou si l'économisateur d'écran s'active</li> + <li>"inactif" si le système est vérouillé ou si l'économisateur n'a généré aucune entrée pendant un nombre de secondes spécifié. Ce nombre est défini par défaut sur 60, mais peut-être défini à l'aide de {{WebExtAPIRef("idle.setDetectionInterval()")}}.</li> + <li>"actif" quand l'utilisateur génère une entrée sur un système inactif.</li> +</ul> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.idle.onStateChanged.addListener(listener) +browser.idle.onStateChanged.removeListener(listener) +browser.idle.onStateChanged.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrétez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si l' <code>écouteur</code> est enregistré pour cet événement. Retourne <code>true</code> s'il écoute, <code>false</code> sinon.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>newState</code></dt> + <dd>{{WebExtAPIRef('idle.IdleState')}}. Le nouvel état est inactif.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.idle.onStateChanged")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function newState(state) { + console.log(`New state: ${state}`); +} + +browser.idle.onStateChanged.addListener(newState);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/idle"><code>chrome.idle</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/idle.json"><code>idle.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/idle/querystate/index.html b/files/fr/mozilla/add-ons/webextensions/api/idle/querystate/index.html new file mode 100644 index 0000000000..ea708e5029 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/idle/querystate/index.html @@ -0,0 +1,100 @@ +--- +title: idle.queryState() +slug: Mozilla/Add-ons/WebExtensions/API/idle/queryState +tags: + - API + - Add-ons + - Extensions + - Idle + - Inactif + - Méthode + - Non-standard + - Reference + - WebExtensions + - queryState +translation_of: Mozilla/Add-ons/WebExtensions/API/idle/queryState +--- +<div>{{AddonSidebar()}}</div> + +<p>Renvoie <code>"locked"</code> si le système est vérouillé, <code>"inactif"</code> si l'utilisation n'a généré aucune entrée pendant un nombre de secondes spécifié, ou <code>"actif"</code> dans le cas contraire.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var querying = browser.idle.queryState( + detectionIntervalInSeconds // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>detectionIntervalInSeconds</code></dt> + <dd><code>integer</code>. Le système est considéré inactif si <code>detectionIntervalInSeconds</code> secondes s'est écoulé depuis la dernière entrée utilisateur détectée.</dd> +</dl> + +<h3 id="Valeur_renvoyée">Valeur renvoyée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec une chaîne {{WebExtAPIRef('idle.IdleState')}}, indiquant l'état actuel.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.idle.queryState")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Dans cet extrait simple, nous appelons <code>queryState()</code> et vérifions si le <code>newState</code> est <code>inactif</code> ou <code>active</code>, en enregistrant un message selon le cas. Comme nous avons spécifié une valeur de <code>detectionIntervalInSeconds</code> de 15, un état <code>inactif</code> ne sera signalé que s'il n'y a pas eu d'activité de l'utilisateur depuis au moins 15 secondes</p> + +<pre class="brush: js">function onGot(newState) { + if (newState === 'idle') { + console.log('Please come back — we miss you!'); + } else if (newState === 'active') { + console.log('Glad to still have you with us!'); + } +} + +var querying = browser.idle.queryState(15); +querying.then(onGot);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/idle"><code>chrome.idle</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/idle.json"><code>idle.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/idle/setdetectioninterval/index.html b/files/fr/mozilla/add-ons/webextensions/api/idle/setdetectioninterval/index.html new file mode 100644 index 0000000000..bf0c9d3274 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/idle/setdetectioninterval/index.html @@ -0,0 +1,84 @@ +--- +title: idle.setDetectionInterval() +slug: Mozilla/Add-ons/WebExtensions/API/idle/setDetectionInterval +tags: + - API + - Add-ons + - Extensions + - Idle + - Method + - Non-standard + - Reference + - WebExtensions + - setDetectionInterval +translation_of: Mozilla/Add-ons/WebExtensions/API/idle/setDetectionInterval +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit l'intervalle, en secondes, utilisé pour déterminer quand le système est dans un état inactif pour les événements {{WebExtAPIRef("idle.onStateChanged")}} . L'intervalle par défaut est de 60 secondes.</p> + +<p>L'intervalle de détection est spécifique à l'extension qui appelle la méthode. La modification de l'intervalle dans une extension n'affecte pas l'intervalle de détection dans une autre extension.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.idle.setDetectionInterval( + intervalInSeconds // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>intervalInSeconds</code></dt> + <dd><code>integer</code>. Seuil, en secondes, utilisé pour déterminer quand le système est dans un état inactif. La valeur minimum que vous pouvez fournir ici est 15.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.idle.setDetectionInterval")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">browser.idle.setDetectionInterval(15);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/idle"><code>chrome.idle</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/idle.json"><code>idle.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/index.html b/files/fr/mozilla/add-ons/webextensions/api/index.html new file mode 100644 index 0000000000..94ccefbb58 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/index.html @@ -0,0 +1,60 @@ +--- +title: Les APIs JavaScript +slug: Mozilla/Add-ons/WebExtensions/API +tags: + - API + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API +--- +<div>{{AddonSidebar}}</div> + +<div> +<p>Les APIs WebExtensions en JavaScript peuvent être utilisées au sein des <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">scripts d’arrière plan</a> de l’extension et dans tout autre document livré avec celle-ci. Ceci inclut les pop-ups relatives à une <a href="/fr/Add-ons/WebExtensions/user_interface/Browser_action">action navigateur</a> ou <a href="/fr/Add-ons/WebExtensions/user_interface/Page_actions">action de page</a>, <a href="/fr/Add-ons/WebExtensions/user_interface/barres_laterales">barres latérales</a>, <a href="/fr/Add-ons/WebExtensions/user_interface/Options_pages">pages d’options</a>, ou <a href="/fr/Add-ons/WebExtensions/manifest.json/chrome_url_overrides">pages de nouvel onglet</a>. Certaines de ces APIs peuvent également être interrogées par des <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Content_scripts">scripts de contenu</a> de l’extension (voir la <a href="/fr/Add-ons/WebExtensions/Content_scripts#WebExtension_APIs">liste dans le guide des scripts de contenu</a>).</p> + +<p>Pour utiliser les APIs plus puissantes, vous devez en <a href="https://developer.mozilla.org/fr/Add-ons/WebExtensions/manifest.json/permissions">demander la permission</a> dans le manifest.json de votre extension.</p> + +<p>Vous pouvez accéder aux APIs en utilisant l’espace de noms <code>browser</code> :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> afficher<span class="function token">Tabs</span><span class="punctuation token"> (</span>tabs<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>tabs<span class="punctuation token">)</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">query</span><span class="punctuation token">(</span><span class="punctuation token">{</span>currentWindow<span class="punctuation token">:</span> <span class="keyword token">true</span><span class="punctuation token">}</span><span class="punctuation token">,</span> afficherTabs<span class="punctuation token">)</span></code></pre> +</div> + +<div> +<p>De nombreuses APIs sont asynchrones et retournent une {{JSxRef("Promise")}}:</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> afficher<span class="function token">Cookie </span><span class="punctuation token">(</span>c<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>c<span class="punctuation token">)</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> afficherErreur <span class="punctuation token">(</span>e<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>e<span class="punctuation token">)</span> +<span class="punctuation token">}</span> + +<span class="keyword token">let</span> setCookie <span class="operator token">=</span> browser<span class="punctuation token">.</span>cookies<span class="punctuation token">.</span><span class="keyword token">set</span><span class="punctuation token">(</span> +<span class="punctuation token"> {</span>url<span class="punctuation token">:</span> <span class="string token">"https://developer.mozilla.org/"</span><span class="punctuation token">} +</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +setCookie<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>logCookie<span class="punctuation token">,</span> afficherErreur<span class="punctuation token">)</span></code></pre> +</div> + +<div> +<p>Notez que ceci est différent du système d'extension de Google Chrome, qui utilise l’espace de noms <code>chrome</code> à la place de <code>browser</code>, et qui utilise des fonctions de rappel (callbacks) plutôt que des promesses pour les fonctions asynchrones. Afin de favoriser la portabilité, l’implémentation Firefox des WebExtensions prend en charge <code>chrome</code> et les fonctions de rappel ainsi que <code>browser</code> et les promesses. Mozilla a également écrit une prothèse d’émulation (polyfill) permettant au code qui utilise <code>browser</code> et les promesses de fonctionner sans modification dans Chrome: <a class="external external-icon" href="https://github.com/mozilla/webextension-polyfill">https://github.com/mozilla/webextension-polyfill</a>.</p> + +<p>Firefox implémente également ces API sous l’espace de noms Chrome à l’aide de rappels. Cela permet au code écrit pour Chrome de fonctionner en grande partie inchangé dans Firefox pour les API documentées ici.</p> + +<p>Microsoft Edge utilise l’espace de noms <code>browser</code>, mais ne supporte pas encore les APIs asynchrones basées sur les promesses. Avec Edge, à l’heure actuelle, les API asynchrones doivent utiliser des fonctions de rappel.</p> + +<p>Tous les navigateurs ne sont pas compatibles avec toutes les APIs : pour de plus amples informations, consultez <a href="/fr/Add-ons/WebExtensions/prise_en_charge_du_navigateur_pour_les_api_javascript">la compatibilité navigateur pour les APIs JavaScript</a>.</p> + +<p>Conseil : dans les listes d'API JavaScript, vous trouverez des exemples de codes courts qui illustrent la manière dont l'API est utilisée. Vous pouvez utiliser ces exemples, sans avoir besoin de créer une extension web, en utilisant la console de la <a href="https://extensionworkshop.com/documentation/develop/debugging/#developer-tools-toolbox">boîte à outils</a>. Par exemple, voici le premier exemple de code sur cette page fonctionnant dans la console de la boîte à outils dans Firefox Developpeur Edition :</p> + +<p><img alt="Illustration of a snippet of web extension code run from the console in the Toolbox" src="https://mdn.mozillademos.org/files/17186/JavaScript_exercised_in_console.jpg" style="height: 347px; width: 680px;"></p> + +<h2 id="Liste_des_API_JavaScript">Liste des API JavaScript</h2> + +<p>Voir ci-dessous pour une liste complète des API JavaScript :</p> +</div> + +<div>{{SubpagesWithSummaries}}</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/extensioninfo/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/extensioninfo/index.html new file mode 100644 index 0000000000..4f58fb50c7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/extensioninfo/index.html @@ -0,0 +1,128 @@ +--- +title: ExtensionInfo +slug: Mozilla/Add-ons/WebExtensions/API/management/ExtensionInfo +tags: + - API + - Add-ons + - ExtensionInfo + - Extensions + - Reference + - Type + - WebExtensions + - management +translation_of: Mozilla/Add-ons/WebExtensions/API/management/ExtensionInfo +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet <code>ExtensionInfo</code> contenant les informations sur l'extension.</p> + +<h2 id="Type">Type</h2> + +<p>Il s'agit d'un objet avec les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>description</code></dt> + <dd><code>string</code>. La description de l'extension, prise à partir de la clé de <a href="/fr/Add-ons/WebExtensions/manifest.json/description">description</a> du manifest.json.</dd> + <dt><code>disabledReason</code></dt> + <dd><code>string</code>. Si l'extension est désactivée, la raison pour laquelle il a été désactivé. L'une des "inconnnues' or "permissions_increase".</dd> + <dt><code>enabled</code></dt> + <dd><code>boolean</code>. Que l'extension soit activée ou pas.</dd> + <dt><code>homepageUrl</code></dt> + <dd><code>string</code>. L'URL de la page d'accueil de l'extension, prise en compte de la clé <a href="/fr/Add-ons/WebExtensions/manifest.json/homepage_url">homepage_url</a> du fichier manifest.json.</dd> + <dt><code>hostPermissions</code></dt> + <dd><code>ensemble</code> de <code>chaîne</code>. Les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions d'hôtes</a> de l'extension.</dd> + <dt><code>icons</code></dt> + <dd><code>array</code> of <code>object</code>. les informations sur les icônes des extensions. Un tableau d'objets, un par chaque icône. Chaque objet contient deux propriétés : + <ul> + <li><code>size</code>: un entier représentant la largeur et la hauteur de l'icônes en pixels.</li> + <li><code>url</code>: une chaîne contenant l'url relative de l'icône, en commençant par la racine de l'extensions.</li> + </ul> + </dd> + <dt><code>id</code></dt> + <dd><code>string</code>. l'ID de l'extension.</dd> + <dt><code>installType</code></dt> + <dd><code>string</code>. Une chaîne décriantn comme l'extension a été ajouté. Une des options suivantes : + <ul> + <li>"admin": l'extension a été installé en raison d'une politique administrative.</li> + <li>"development": l'extension a été installé décompressé sur le disque.</li> + <li>"normal": l'extension a été installé normalement à partir du package d'installation.</li> + <li>"sideload": l'extension a été installé par un autre logiciel sur l'ordinateur de l'utilisateur.</li> + <li>"other": l'extension a été installé d'une autre manière.</li> + </ul> + </dd> + <dt><code>mayDisable</code></dt> + <dd><code>boolean</code>. Que cette extensions a été désactivé ou désinstallé par l'utilisateur.</dd> + <dt><code>name</code></dt> + <dd><code>string</code>. Le nom de l'extension, pris à partir de la clé <a href="/fr/Add-ons/WebExtensions/manifest.json/name">name</a> du manifest.json.</dd> + <dt><code>offlineEnabled</code></dt> + <dd><code>boolean</code>. Que les demandes de l'extensions soient prises en charge hors connexion.</dd> + <dt><code>optionsUrl</code></dt> + <dd><code>string</code>. l'URL pour la <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages">page d'options</a> de l'élément, s'il y en a un. Il s'agit d'une URL relative, à partir de la racine de l'extension.</dd> + <dt><code>permissions</code></dt> + <dd><code>array</code> of <code>string</code>. les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permissions de l'API</a> de l'extension.</dd> + <dt><code>shortName</code></dt> + <dd><code>string</code>. Une courte version du nom de l'extension, prise à partir de la clé <a href="/fr/Add-ons/WebExtensions/manifest.json/short_name">short_name</a> du manifest.json.</dd> + <dt><code>type</code></dt> + <dd><code>string</code>. Chaîne décrivant le type d'extension. Ceci permet de distinguer les extensions des applications et des thèmes. Il peut prendre l'une des valeurs suivantes :</dd> + <dd> + <ul> + <li>"extension": le type d'extension la plus courante.</li> + <li>"hosted_app"</li> + <li>"packaged_app"</li> + <li>"legacy_packaged_app"</li> + <li>"theme"</li> + </ul> + </dd> + <dt><code>updateUrl</code></dt> + <dd><code>string</code>. URL pour la mise à jour de l'extension, tiré de la clé <a href="/fr/Add-ons/WebExtensions/manifest.json/applications">applications</a> de manifest.json.</dd> + <dt><code>version</code></dt> + <dd><code>string</code>. La version de l'extension, tiré de la clé <a href="/fr/Add-ons/WebExtensions/manifest.json/version">version</a> du manifest.json</dd> + <dt><code>versionName</code></dt> + <dd><code>string</code>. Le nom descriptif pour la version de l'extension, tiré de la clé <a href="/fr/Add-ons/WebExtensions/manifest.json/version_name">version_name</a> du manifest.json.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.management.ExtensionInfo")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/get/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/get/index.html new file mode 100644 index 0000000000..b345415a15 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/get/index.html @@ -0,0 +1,98 @@ +--- +title: management.get() +slug: Mozilla/Add-ons/WebExtensions/API/management/get +tags: + - API + - Add-ons + - Méthode + - Reference + - WebExtensions + - get + - management +translation_of: Mozilla/Add-ons/WebExtensions/API/management/get +--- +<div>{{AddonSidebar()}}</div> + +<p>Récupère un objet {{WebExtAPIRef("management.ExtensionInfo", "ExtensionInfo")}} contenant des informations sur l'extension spécifiée.</p> + +<p>Cette API requière la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission API</a> "management"</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingInfo = browser.management.get( + id // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>id</code></dt> + <dd><code>string</code>. l'ID de l'extension dont vous souhaitez récupérer les informations.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef("management.ExtensionInfo", "ExtensionInfo")}} , contenant les informations sur l'extension. La promise sera rejetée si aucune extension avec l'ID donné n'est installée ou si l'appelant ne peut pas accéder à l'extension.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.management.get")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez le nom de l'extension dont l'ID est "my-add-on":</p> + +<pre class="brush: js">var id = "my-add-on"; + +function got(info) { + console.log(info.name); +} + +var getting = browser.management.get(id); +getting.then(got); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/getall/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/getall/index.html new file mode 100644 index 0000000000..c8a6ceb193 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/getall/index.html @@ -0,0 +1,96 @@ +--- +title: management.getAll() +slug: Mozilla/Add-ons/WebExtensions/API/management/getAll +tags: + - API + - Add-ons + - Méthode + - Reference + - WebExtensions + - getAll + - management +translation_of: Mozilla/Add-ons/WebExtensions/API/management/getAll +--- +<div>{{AddonSidebar()}}</div> + +<p>Récupère un ensemble d'objets {{WebExtAPIRef("management.ExtensionInfo", "ExtensionInfo")}}, un pour chaque extension installé.</p> + +<p>Notez que Google Chrome récupère les applications ainsi que les modules complémentaires. Dans Chrome vous pouvez distinguer les applications des extensions en utilisant la propriété <code>type</code> de {{WebExtAPIRef("management.ExtensionInfo", "ExtensionInfo")}}.</p> + +<p>Cette API requiert la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission de l'API</a> de "management"</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingAll = browser.management.getAll() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera rempli avec un ensemble d'objets {{WebExtAPIRef("management.ExtensionInfo", "ExtensionInfo")}}, un pour chaque extension installée.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.management.getAll")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez le nom de toutes les extensions installées :</p> + +<pre class="brush: js">function gotAll(infoArray) { + for (info of infoArray) { + if (info.type == "extension") { + console.log(info.name); + } + } +} + +var gettingAll = browser.management.getAll(); +gettingAll.then(gotAll);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/getpermissionwarningsbyid/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/getpermissionwarningsbyid/index.html new file mode 100644 index 0000000000..c3531b3141 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/getpermissionwarningsbyid/index.html @@ -0,0 +1,103 @@ +--- +title: management.getPermissionWarningsById() +slug: Mozilla/Add-ons/WebExtensions/API/management/getPermissionWarningsById +tags: + - API + - Add-ons + - Méthode + - Reference + - WebExtensions + - getPermissionWarningsById + - management +translation_of: Mozilla/Add-ons/WebExtensions/API/management/getPermissionWarningsById +--- +<div>{{AddonSidebar()}}</div> + +<div>Lorsque l'utilisateur installe ou met à jour une extension, le navigateur peut avertir l'utilisateur des <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a> particulièrement puissantes que l'extension a demandée. Toutes les permissions ne donnent pas lieu à des alertes et ce comportement n'est pas normalisé dans les navigateurs.</div> + +<div></div> + +<p>Compte tenu de l'ID d'une extension, cette fonction retourne les avertisseurs de permissions comme un tableau de chaînes.</p> + +<p>Cette API requière l'<a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">API permission</a> "management"</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingWarnings = browser.management.getPermissionWarningsById( + id // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>id</code></dt> + <dd><code>string</code>. ID de l'extension dont vous souhaitez récupérer les avertisseurs de permissions.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un ensemble de chaînes, chacune contenant un texte d'un avertissement de permissions.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.management.getPermissionWarningsById")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez les avertissements de permissions pour l'extension dont l'ID est "my-add-on" :</p> + +<pre class="brush: js">var id = "my-add-on"; + +function gotWarnings(warnings) { + for (warning of warnings) { + console.log(warning); + } +} + +var gettingWarnings = browser.management.getPermissionWarningsById(id); +gettingWarnings.then(gotWarnings);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/getpermissionwarningsbymanifest/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/getpermissionwarningsbymanifest/index.html new file mode 100644 index 0000000000..1835063905 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/getpermissionwarningsbymanifest/index.html @@ -0,0 +1,112 @@ +--- +title: management.getPermissionWarningsByManifest() +slug: Mozilla/Add-ons/WebExtensions/API/management/getPermissionWarningsByManifest +tags: + - API + - Add-ons + - Méthode + - Reference + - WebExtensions + - getPermissionWarningsByManifest + - management +translation_of: Mozilla/Add-ons/WebExtensions/API/management/getPermissionWarningsByManifest +--- +<div>{{AddonSidebar()}}</div> + +<div>Lorsque l'utilisateur installe ou met à jour une extension, la navigateur peut avertir l'utilisateur des <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permissions</a> obligatoires. Toutes les permissions ne donnent pas lieu à des avertissements, et cela n'est pas normalisé dans les navigateurs.</div> + +<div></div> + +<p>Compte tenu du texte du fichier <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a>, cette fonction retourne les avertisseurs de permissions qui seraient donnés pour l'extension comme un ensemble de chaines.</p> + +<p>Cette API <em>ne requière pas</em> l'<a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">API de permission</a> "management".</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingWarnings = browser.management.getPermissionWarningsByManifest( + manifestString // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>manifestString</code></dt> + <dd><code>string</code>. Chaîne contenant le fichier manifest. Cela doit être un manifest valide : par exemple, il doit contenir toutes les clés obligatoires du manifest..</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera rempli avec un ensemble de chaînes, chacune contenant le texte un avertisseur de permission.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.management.getPermissionWarningsByManifest")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez les avertissements de permissions dans le fichier manifest donné :</p> + +<pre class="brush: js">var manifest = { + "manifest_version": 2, + "name": "test", + "version": "1.0", + "permissions": ["management", "<all_urls>"] +} + +var manifestString = JSON.stringify(manifest); + +function gotWarnings(warnings) { + console.log(warnings); +} + +function gotError(error) { + console.log(`Error: ${error}`); +} + +var gettingWarnings = browser.management.getPermissionWarningsByManifest(manifestString); +gettingWarnings.then(gotWarnings, gotError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/getself/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/getself/index.html new file mode 100644 index 0000000000..09d60bab5f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/getself/index.html @@ -0,0 +1,90 @@ +--- +title: management.getSelf() +slug: Mozilla/Add-ons/WebExtensions/API/management/getSelf +tags: + - API + - Add-ons + - Méthode + - Reference + - WebExtensions + - getSelf + - management +translation_of: Mozilla/Add-ons/WebExtensions/API/management/getSelf +--- +<div>{{AddonSidebar()}}</div> + +<p>Récupère un objet {{WebExtAPIRef("management.ExtensionInfo", "ExtensionInfo")}} contenant les informations de l'extension appelée.</p> + +<p>Cette API <em>ne requière pas</em> l' <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">API de permission</a> "management".</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingSelf = browser.management.getSelf() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef("management.ExtensionInfo", "ExtensionInfo")}}, contenant les informations sur l'extension.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.management.getSelf")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez le nom de l'extension :</p> + +<pre class="brush: js">function gotSelf(info) { + console.log("Add-on name: " + info.name); +} + +var gettingSelf = browser.management.getSelf(); +gettingSelf.then(gotSelf);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/index.html new file mode 100644 index 0000000000..ccf2d2a647 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/index.html @@ -0,0 +1,112 @@ +--- +title: management +slug: Mozilla/Add-ons/WebExtensions/API/management +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - management +translation_of: Mozilla/Add-ons/WebExtensions/API/management +--- +<div>{{AddonSidebar}}</div> + +<p>Obtenez les éléments sur les modules complémentaires installés.</p> + +<p>Avec l'API de <code>gestion</code> vous pouvez :</p> + +<ul> + <li>Obtenir des informations sur les modules complémentaires installés</li> + <li>Activer / Désactiver les modules complémentaires</li> + <li>Désinstaller les modules complémentaires</li> + <li>Découvrez quels sont les alertes des permissions envoyés particulièrement par les modules complémentaires ou les manifest</li> + <li>Obtenir les notifications sur l'ajout des modules complémentaires, désinstallé, activé ou désactivé.</li> +</ul> + +<p>La plupart de ces opérations requièrent les <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/permissions">permissions d'APIs</a> de gestion. Les opérations qui ne fournissent pas d'accès à d'autres modules complémentaires ne nécessitent pas de permissions.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("management.ExtensionInfo")}}</dt> + <dd>Un objet contenant des informations sur un module complémentaire installé.</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("management.getAll()")}}</dt> + <dd>Renvoie des informations sur tous les modules complémentaires installés</dd> + <dt>{{WebExtAPIRef("management.get()")}}</dt> + <dd>Renvoie des informations sur un module complémentaire particulier, compte tenu de son ID.</dd> + <dt>{{WebExtAPIRef("management.getSelf()")}}</dt> + <dd>Renvoie des informations sur l'appel du module complémentaire.</dd> + <dt>{{WebExtAPIRef("management.install()")}}</dt> + <dd>Installe un thème particulier, étant donné son URL à l'adresse <a href="https://addons.mozilla.org">addons.mozilla.org</a>.</dd> + <dt>{{WebExtAPIRef("management.uninstall()")}}</dt> + <dd>Désinstalle un module complémenaire particulier, compte tenu de son ID.</dd> + <dt>{{WebExtAPIRef("management.uninstallSelf()")}}</dt> + <dd>Désinstalle l'appel d'un module complémentaire.</dd> + <dt>{{WebExtAPIRef("management.getPermissionWarningsById()")}}</dt> + <dd>Obtenez l'ensemble des alertes des permissions particulièrement pour un module complémentaire, compte tenu de son ID.</dd> + <dt>{{WebExtAPIRef("management.getPermissionWarningsByManifest()")}}</dt> + <dd>Obtenez l'ensemble des alertes de permission qui seraient affichés pour la chaîne de manifest donnée.</dd> + <dt>{{WebExtAPIRef("management.setEnabled()")}}</dt> + <dd>Activer / désactiver un module complémentaire, compte tenu de son ID.</dd> + <dt> + <h2 id="Evénements">Evénements</h2> + </dt> + <dt>{{WebExtAPIRef("management.onInstalled")}}</dt> + <dd>Action quand un module complémentaire est installé.</dd> + <dt>{{WebExtAPIRef("management.onUninstalled")}}</dt> + <dd>Action quand un module complémentaire est désinstallé.</dd> + <dt>{{WebExtAPIRef("management.onEnabled")}}</dt> + <dd>Action quand un module complémentaire est activé.</dd> + <dt>{{WebExtAPIRef("management.onDisabled")}}</dt> + <dd>Action quand un module complémenaire est désactivé.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.management")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2012 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/install/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/install/index.html new file mode 100644 index 0000000000..7d34f8cf48 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/install/index.html @@ -0,0 +1,85 @@ +--- +title: management.install() +slug: Mozilla/Add-ons/WebExtensions/API/management/install +tags: + - API + - Add-ons + - Méthode + - Reference + - Theme + - WebExtensions + - install + - management +translation_of: Mozilla/Add-ons/WebExtensions/API/management/install +--- +<div>{{AddonSidebar()}}</div> + +<div>Installe et active une extension de thème à partir de l'URL donnée.</div> + +<div></div> + +<p>Cette API nécessite la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission de l'API</a> "management" et ne fonctionnera qu'avec des thèmes signés.</p> + +<p>C'est une fonction asynchrone qui renvoie une <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">let {id} = await browser.management.install({url}); +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt>options</dt> + <dd>Un objet qui inclut l'URL du fichier XPI du thème à <a href="https://addons.mozilla.org">addons.mozilla.org</a> et un hachage facultatif du fichier XPI, en utilisant sha256 ou plus.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a> qui sera remplie avec un objet, contenant l'<code>ExtensionID</code> défini pour le thème dans manifest.json.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.management.install")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Parcourez une liste de thèmes :</p> + +<pre class="brush: js">"use strict"; + +let themes = [ + "https://addons.mozilla.org/firefox/downloads/file/1063216/insightscare-1.0-fx.xpi", + "https://addons.mozilla.org/firefox/downloads/file/1063419/orange_roses-1.0-fx.xpi", + "https://addons.mozilla.org/firefox/downloads/file/1062647/sticktoyourguns-2.0-fx.xpi", + "https://addons.mozilla.org/firefox/downloads/file/0/bad_url.xpi", +]; + +let current; + +async function install(url) { + try { + current = url; + let {id} = await browser.management.install({url}); + console.log("Theme installed: " + id); + } catch (e) { + console.error("Installation failed: " + e); + } +} + +browser.browserAction.onClicked.addListener(() => { + let id = themes.indexOf(current); + install(themes[(id + 1) % themes.length]); +}); + +for (let url of themes) { + browser.menus.create({ + title: url, + onclick: () => install(url), + contexts: ["browser_action"], + }); +}</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/ondisabled/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/ondisabled/index.html new file mode 100644 index 0000000000..14d78eb5e0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/ondisabled/index.html @@ -0,0 +1,106 @@ +--- +title: management.onDisabled() +slug: Mozilla/Add-ons/WebExtensions/API/management/onDisabled +tags: + - API + - Add-ons + - Event + - Reference + - WebExtensions + - management + - onDisabled +translation_of: Mozilla/Add-ons/WebExtensions/API/management/onDisabled +--- +<div>{{AddonSidebar()}}</div> + +<p>Action quand l'extension est désactivée.</p> + +<p>L'API requière l'<a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions">API de permission</a> "management".</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.management.onDisabled.addListener(listener) +browser.management.onDisabled.removeListener(listener) +browser.management.onDisabled.hasListener(listener) +</pre> + +<p>Les événement ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoutez un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>L'argument de l'auditeur est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si l'auditeur est enregistré à l'événement. Renvoie <code>true</code> s'il est à l'écoute, sinon <code>false</code> .</dd> +</dl> + +<h2 id="addListener_syntaxe">addListener syntaxe</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>function</code></dt> + <dd> + <p>Fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction passera par l'argument suivant :</p> + + <dl class="reference-values"> + <dt><code>info</code></dt> + <dd><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/management/ExtensionInfo">ExtensionInfo</a></code>: informations de l'extension qui a été désactivé</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.management.onDisabled")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez les noms des extensions lorsqu'ils sont désactivés.</p> + +<pre class="brush: js">browser.management.onDisabled.addListener((info) => { + console.log(info.name + " was disabled"); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/onenabled/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/onenabled/index.html new file mode 100644 index 0000000000..51cc3883cb --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/onenabled/index.html @@ -0,0 +1,106 @@ +--- +title: management.onEnabled() +slug: Mozilla/Add-ons/WebExtensions/API/management/onEnabled +tags: + - API + - Add-ons + - Event + - Reference + - WebExtensions + - management + - onEnabled +translation_of: Mozilla/Add-ons/WebExtensions/API/management/onEnabled +--- +<div>{{AddonSidebar()}}</div> + +<p>L'auditeur de l'événement appelé lorsque l'événement <span class="seoSummary"><code>enabled</code> </span>est déclenché, indiquant qu'un add-on est maintenant activé<span class="seoSummary">.</span></p> + +<p>L'API requière l'<a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">API de permission </a>"management"</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.management.onEnabled.addListener(listener) +browser.management.onEnabled.removeListener(listener) +browser.management.onEnabled.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoutez un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>L'argument de l'auditeur est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si l'auditeur est enregistré à l'événement. Renvoie <code>true</code> s'il est à l'écoute, sinon <code>false</code> .</dd> +</dl> + +<h2 id="addListener_syntaxe">addListener syntaxe</h2> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>function</code></dt> + <dd> + <p>Fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction passera par l'argument suivant :</p> + + <dl class="reference-values"> + <dt><code>info</code></dt> + <dd><code><a href="/fr/Add-ons/WebExtensions/API/management/ExtensionInfo">ExtensionInfo</a></code>: informations de l'extension qui a été désinstallé.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.management.onEnabled")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez les noms des extensions lorsqu'ils sont activés :</p> + +<pre class="brush: js">browser.management.onEnabled.addListener((info) => { + console.log(info.name + " was enabled"); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/oninstalled/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/oninstalled/index.html new file mode 100644 index 0000000000..4133c0101a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/oninstalled/index.html @@ -0,0 +1,106 @@ +--- +title: management.onInstalled() +slug: Mozilla/Add-ons/WebExtensions/API/management/onInstalled +tags: + - API + - Add-ons + - Event + - Reference + - WebExtensions + - management + - onInstalled +translation_of: Mozilla/Add-ons/WebExtensions/API/management/onInstalled +--- +<div>{{AddonSidebar()}}</div> + +<p>Action quand une extension est installée.</p> + +<p>Cette API requière l'<a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">API de permission </a>"management".</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.management.onInstalled.addListener(listener) +browser.management.onInstalled.removeListener(listener) +browser.management.onInstalled.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajout un auditeur à l'événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouvter l'événement. L'argument de l'auditeur est un auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un auditeur est enregistré pour cet événement. Renvoie <code>vrai</code> si elle est à l'écoute, sinon <code>faux</code> .</dd> +</dl> + +<h2 id="addListener_syntaxe">addListener syntaxe</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>function</code></dt> + <dd> + <p>fonction de rappel qui sera appelée quand l'événement se produira. La fonction passera l'argument suivant :</p> + + <dl class="reference-values"> + <dt><code>info</code></dt> + <dd><code><a href="/fr/Add-ons/WebExtensions/API/management/ExtensionInfo">ExtensionInfo</a></code>: informations sur l'extension qui a été installée.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.management.onInstalled")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez les noms des extensions lorsqu'ils sont installés :</p> + +<pre class="brush: js">browser.management.onInstalled.addListener((info) => { + console.log(info.name + " was installed"); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/onuninstalled/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/onuninstalled/index.html new file mode 100644 index 0000000000..22323ddd12 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/onuninstalled/index.html @@ -0,0 +1,106 @@ +--- +title: management.onUninstalled() +slug: Mozilla/Add-ons/WebExtensions/API/management/onUninstalled +tags: + - API + - Add-ons + - Event + - Reference + - WebExtensions + - management + - onUninstalled +translation_of: Mozilla/Add-ons/WebExtensions/API/management/onUninstalled +--- +<div>{{AddonSidebar()}}</div> + +<p>Action quand une extension est désinstallée.</p> + +<p>L'API requière l'<a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">API de permission </a>"management".</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.management.onUninstalled.addListener(listener) +browser.management.onUninstalled.removeListener(listener) +browser.management.onUninstalled.hasListener(listener) +</pre> + +<p>Les événement ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoutez un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>L'argument de l'auditeur est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si l'auditeur est enregistré à l'événement. Renvoie <code>true</code> s'il est à l'écoute, sinon <code>false</code> .</dd> +</dl> + +<h2 id="addListener_syntaxe">addListener syntaxe</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>function</code></dt> + <dd> + <p>Fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction passera par l'argument suivant :</p> + + <dl class="reference-values"> + <dt><code>info</code></dt> + <dd><code><a href="/fr/Add-ons/WebExtensions/API/management/ExtensionInfo">ExtensionInfo</a></code>: informations de l'extension qui a été désinstallé.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.management.onUninstalled")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez les noms des extensions lorsqu'ils sont désinstallés :</p> + +<pre class="brush: js">browser.management.onUninstalled.addListener((info) => { + console.log(info.name + " was uninstalled"); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/setenabled/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/setenabled/index.html new file mode 100644 index 0000000000..b2f074c381 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/setenabled/index.html @@ -0,0 +1,105 @@ +--- +title: management.setEnabled() +slug: Mozilla/Add-ons/WebExtensions/API/management/setEnabled +tags: + - API + - Add-ons + - Méthode + - Reference + - WebExtensions + - management + - setEnabled +translation_of: Mozilla/Add-ons/WebExtensions/API/management/setEnabled +--- +<div>{{AddonSidebar()}}</div> + +<p>Active ou désactive l'extension ajoutée.</p> + +<p>Cette fonction doit généralement être appelée dans le contexte d'une action utilisateur, comme le gestionnaire de clics d'un bouton. Le navigateur peut également demander à l'utilisateur de confirmer le changement.</p> + +<p>Cette API requière l'<a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">API permission</a> "management".</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var settingEnabled = browser.management.setEnabled( + id, // string + enabled // boolean +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>id</code></dt> + <dd><code>string</code>. ID de l'extension pour activer ou désactiver.</dd> + <dt><code>enabled</code></dt> + <dd><code>boolean</code>. Que ce soit pour active ou désactiver l'extension.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promisee">Promise</a></code> qui sera remplie sans arguments lorsque l'extension a été désactivé ou activé.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.management.setEnabled")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Actviez / Désactivez l'option pour l'extension dont l'ID est "my-add-on":</p> + +<pre class="brush: js">var id = "my-add-on"; + +function toggleEnabled(id) { + var getting = browser.management.get(id); + getting.then((info) => { + browser.management.setEnabled(id, !info.enabled); + }); +} + +toggleEnabled(id); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/uninstall/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/uninstall/index.html new file mode 100644 index 0000000000..38c6ac84e4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/uninstall/index.html @@ -0,0 +1,111 @@ +--- +title: management.uninstall() +slug: Mozilla/Add-ons/WebExtensions/API/management/uninstall +tags: + - API + - Add-ons + - Méthode + - Reference + - WebExtensions + - management + - uninstall +translation_of: Mozilla/Add-ons/WebExtensions/API/management/uninstall +--- +<div>{{AddonSidebar()}}</div> + +<p>Désinstalle une extension, compte tenu de son ID.</p> + +<p>Cette API requiert l'<a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">API de permission</a>. "management"</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var uninstalling = browser.management.uninstall( + id, // string + options // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>id</code></dt> + <dd><code>string</code>. ID de l'extensions à désinstaller.</dd> + <dt><code>options{{optional_inline}}</code></dt> + <dd><code>object</code>. l'objet qui peut contenir une propriété unique, <code>showConfirmDialog</code>. Si <code>showConfirmDialog</code> est <code>true</code>, le navigateur affiche une boie de dialogue demandant à l'utilisateur de confirmer que le complément doit être désinstallé. + <ul> + <li>Si <code>id</code> est l'ID de l'extension appelant, <code>showConfirmDialog</code> est par défaut à <code>false</code>.</li> + <li>Si <code>id</code> est l'ID d'une extension différente, cette option est ignorée et la boite de dialogue de confirmation s'affche toujours.</li> + </ul> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera rejetée avec un message d'erreur si l'utilisateur a annulé la désintallatiion.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.management.uninstall")}}</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Désinstallez l'extension dont l'ID est "my-addon-id", en demandant à l'utilisateur de confirmer. Dans le rappel, vérifiez si l'utilisateur a annué la désinstallation.</p> + +<p>Notez que nous n'avons réussi un gestionnaire d'exécution, car si la désinstallation réussit, l'extension n'est plus disponible pour le gérer.</p> + +<pre class="brush: js">var id = "my-addon-id"; + +function onCanceled(error) { + console.log(`Uninstall canceled: ${error}`); +} + +var uninstalling = browser.management.uninstall(id); +uninstalling.then(null, onCanceled);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/management/uninstallself/index.html b/files/fr/mozilla/add-ons/webextensions/api/management/uninstallself/index.html new file mode 100644 index 0000000000..9bdfbb763d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/management/uninstallself/index.html @@ -0,0 +1,121 @@ +--- +title: management.uninstallSelf() +slug: Mozilla/Add-ons/WebExtensions/API/management/uninstallSelf +tags: + - API + - Add-ons + - Méthode + - Reference + - UnintallSeft + - WebExtensions + - management +translation_of: Mozilla/Add-ons/WebExtensions/API/management/uninstallSelf +--- +<div>{{AddonSidebar()}}</div> + +<p>Désinstalle l'appel de l'extension.</p> + +<p>Cette API <em>ne requiert pas</em> la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission API</a> "management"</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var uninstallingSelf = browser.management.uninstallSelf( + options // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>options{{optional_inline}}</code></dt> + <dd><code>object</code>. L'objet qui peut comporter deux propriétés, toutes deux facultatives :</dd> + <dd> + <dl class="reference-values"> + <dt><code>showConfirmDialog{{optional_inline}}</code></dt> + <dd>Boolean. Si <code>showConfirmDialog</code> est <code>true</code>, le navigateur affiche la boite de dialogue demandant à l'utilisateur de confirmer que le complément doit être désinstallé. Par défaut à <code>false</code>.</dd> + <dt><code>dialogMessage{{optional_inline}}</code></dt> + <dd>String. Un message supplémentaire qui sera affiché dans la boite de dialogue de confirmation.</dd> + </dl> + + <h3 id="Valeur_retournée">Valeur retournée</h3> + + <p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera rejetée avec un message d'erreur si l'utilisateur a annulé la désinstallation.</p> + + <h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + <p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + <p>{{Compat("webextensions.api.management.uninstallSelf")}}</p> + + <h2 id="Exemples">Exemples</h2> + + <p>Désinsallez l'extension, en demandant à l'utilisateur de confirmer. Dans le rappel, vérifiez si l'utilisateur a annulé la désinstallation.</p> + + <p>Notez que n'avons pas passé un gestionnaire d'éxécution, car si la desinstallation réussit, l'extension n'est plus disponible pour le gérer.</p> + + <pre class="brush: js">function onCanceled(error) { + console.log(`Canceled: ${error}`); +} + +var uninstalling = browser.management.uninstallSelf({ + showConfirmDialog: true +}); + +uninstalling.then(null, onCanceled);</pre> + + <p>Le même, mais aussi l'ajout d'un message personnalisé à la boite de dialogue :</p> + + <pre class="brush: js">function onCanceled(error) { + console.log(`Canceled: ${error}`); +} + +var uninstalling = browser.management.uninstallSelf({ + showConfirmDialog: true, + dialogMessage: "Testing self-uninstall" +}); + +uninstalling.then(null, onCanceled);</pre> + + <p>{{WebExtExamples}}</p> + + <div class="note"><strong>Remerciements :</strong> + + <p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/management"><code>chrome.management</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/management.json"><code>management.json</code></a> dans le code de Chromium code.</p> + + <p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> + </div> + + <div class="hidden"> + <pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> + </div> + </dd> +</dl> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/action_menu_top_level_limit/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/action_menu_top_level_limit/index.html new file mode 100644 index 0000000000..4fa664e6e6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/action_menu_top_level_limit/index.html @@ -0,0 +1,66 @@ +--- +title: menus.ACTION_MENU_TOP_LEVEL_LIMIT +slug: Mozilla/Add-ons/WebExtensions/API/menus/ACTION_MENU_TOP_LEVEL_LIMIT +tags: + - ACTION_MENU_TOP_LEVEL_LIMIT + - API + - Add-ons + - Extensions + - Non-standard + - Property + - Reference + - WebExtensions + - contextMenus +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/ACTION_MENU_TOP_LEVEL_LIMIT +--- +<div>{{AddonSidebar()}}</div> + +<p>Le nombre maximal d'éléments d'extension de niveau supérieur pouvant être ajoutés à un élément de menu dont {{WebExtAPIRef("contextMenus.ContextType", "ContextType")}} est "browser_action" ou "page_action". Tout élément au-delà de cette limite sera ignoré.</p> + +<p>Sa valeur est de <code>6</code> pour Firefox et Chrome.</p> + +<p>Pour la compatibilité avec d'autres navigateurs, Firefox rend cette propriété disponible via l'espace de noms <code>contextMenus</code> ainsi que l'espace de noms des <code>menus</code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.menus.ACTION_MENU_TOP_LEVEL_LIMIT", 10)}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/contextMenus"><code>chrome.contextMenus</code></a> de chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/context_menus.json"><code>context_menus.json</code></a> dans le code Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/contexttype/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/contexttype/index.html new file mode 100644 index 0000000000..955e0e0a40 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/contexttype/index.html @@ -0,0 +1,103 @@ +--- +title: menus.ContextType +slug: Mozilla/Add-ons/WebExtensions/API/menus/ContextType +tags: + - API + - Add-ons + - ContextType + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - contextMenus + - menus +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/ContextType +--- +<div>{{AddonSidebar()}}</div> + +<p>Les différents contextes dans lesquels un élément de menu peut apparaître.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. L'élément est affiché lorsque le contexte donné s'applique. Les valeurs possibles sont :</p> + +<dl> + <dt>all</dt> + <dd>La spécification de "tous" équivaut à la combinaison de tous les autres contextes, à l'exception de 'bookmark', 'tab' et 'tools_menu'.</dd> + <dt>audio</dt> + <dd>S'applique lorsque l'utilisateur clique sur le contexte d'un élément <a href="/fr/docs/Web/HTML/Element/audio">audio</a>.</dd> + <dt>bookmark</dt> + <dd>S'applique lorsque l'utilisateur clique en contexte sur un élément de signet dans la barre d'outils des signets, le menu des signets, la barre latérale des signets (<kbd>Ctrl</kbd> + <kbd>B</kbd>) et la fenêtre Bibliothèque (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>B</kbd>). Ces deux derniers sont supportés à partir de Firefox 66. Nécessite la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission d'API</a> dans le manifest.</dd> + <dt>browser_action</dt> + <dd>S'applique lorsque l'utilisateur clique en contexte sur l'action de votre navigateur. Le nombre maximal d'éléments pouvant être ajoutés au menu contextuel de l'action du navigateur de niveau supérieur est {{WebExtAPIRef("menus.ACTION_MENU_TOP_LEVEL_LIMIT")}}, mais vous pouvez ajouter n'importe quel nombre d'éléments aux sous-menus.</dd> + <dt>editable</dt> + <dd>S'applique lorsque l'utilisateur clique en contexte sur un élément modifiable, comme un <a href="/fr/docs/Web/HTML/Element/textarea">textarea</a>.</dd> + <dt>frame</dt> + <dd>S'applique lorsque l'utilisateur clique sur le contexte dans une <a href="/fr/docs/Web/HTML/Element/iframe">iframe</a> imbriqué.</dd> + <dt>image</dt> + <dd>S'applique lorsque l'utilisateur clique sur le contexte d'une image.</dd> + <dt>link</dt> + <dd>S'applique lorsque l'utilisateur clique en contexte sur un lien.</dd> + <dt>page</dt> + <dd>S'applique lorsque l'utilisateur clique sur le contexte dans la page, mais aucun des autres contextes de page ne s'applique (par exemple, le clic ne se trouve pas sur une image ou une <em>iframe</em> imbriqué ou un lien).</dd> + <dt>page_action</dt> + <dd>S'applique lorsque l'utilisateur clique en contexte sur l'action de votre page. Le nombre maximal d'éléments pouvant être ajoutés au menu contextuel de l'action de page de niveau supérieur est {{WebExtAPIRef("menus.ACTION_MENU_TOP_LEVEL_LIMIT")}}, mais vous pouvez ajouter n'importe quel nombre d'éléments aux sous-menus.</dd> + <dt>password</dt> + <dd>S'applique lorsque l'utilisateur clique en contexte sur un <a href="/fr/docs/Web/HTML/Element/input/password">élément d'entrée de mot de passe</a>.</dd> + <dt>selection</dt> + <dd>S'applique lorsqu'une partie de la page est sélectionnée.</dd> + <dt>tab</dt> + <dd>S'applique lorsque l'utilisateur clique en contexte sur un onglet (en particulier, il s'agit de l'onglet ou d'un autre élément de l'interface utilisateur permettant à l'utilisateur de passer d'un onglet de navigateur à un autre, et non à la page elle-même).</dd> + <dd>Depuis Firefox 63, cliquer sur l'élément du menu d'un onglet accorde la permission <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission">activeTab</a> pour l'onglet cliqué, même si ce n'est pas l'onglet actuellement actif.</dd> + <dt>tools_menu</dt> + <dd>L'élément sera ajouté au menu des outils du navigateur. Notez que ceci n'est disponible que si vous accédez à <code>ContextType</code> via l'espace de nom des <code>menus</code>. Il n'est pas disponible si vous y accédez via l'espace de noms <code>contextMenus</code>.</dd> + <dt>video</dt> + <dd>S'applique lorsque l'utilisateur clique sur le contexte d'un élément <a href="/fr/docs/Web/HTML/Element/video">video</a>.</dd> +</dl> + +<p>Notez que "launcher" n'est pas supporté.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.menus.ContextType", 10)}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/contextMenus"><code>chrome.contextMenus</code></a> de chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/context_menus.json"><code>context_menus.json</code></a> dans le code Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/create/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/create/index.html new file mode 100644 index 0000000000..a1931b2216 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/create/index.html @@ -0,0 +1,228 @@ +--- +title: menus.create() +slug: Mozilla/Add-ons/WebExtensions/API/menus/create +tags: + - API + - Add-ons + - Create + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - contextMenus +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/create +--- +<div>{{AddonSidebar()}}</div> + +<p>Crée un nouvel élément de menu, avec un objet d'options définissant les propriétés de l'élément.</p> + +<p>Contrairement aux autres fonctions asynchrones, celle-ci ne renvoie pas de promesse, mais utilise un callback optionnel pour communiquer le succès ou l'échec. C'est parce que sa valeur de retour est l'ID du nouvel élément.</p> + +<p>Pour la compatibilité avec d'autres navigateurs, Firefox rend cette méthode disponible via l'espace noms <code>contextMenus</code> ainsi que l'espace de noms des <code>menus</code>. Notez cependant qu'il n'est pas possible de créer des éléments de menu d'outils (<code>contexts: ["tools_menu"]</code>) en utilisant l'espace de noms <code>contextMenus</code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.menus.create( + createProperties, // object + function() {...} // optional function +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>createProperties</code></dt> + <dd><code>object</code>. Propriétés pour le nouvel élément de menu.</dd> + <dd> + <dl class="reference-values"> + <dt><code>checked</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. L'état initial d'une case à cocher ou d'un élément radio : <code>true</code> pour selected et <code>false</code> pour non sélectionné. Un seul élément radio peut être sélectionné à la fois dans un groupe donné d'éléments radio.</dd> + <dt><code>command</code> {{optional_inline}}</dt> + <dd> + <p><code>string</code>. Chaîne décrivant une action à effectuer lorsque l'utilisateur clique sur l'élément. Les valeurs possibles sont:</p> + + <ul> + <li><code>"_execute_browser_action"</code>: simule un clic sur l'action du navigateur de l'extension, en ouvrant son popup s'il en a un</li> + <li><code>"_execute_page_action"</code>: simule un clic sur l'action de la page de l'extension, en ouvrant son popup s'il en a un</li> + <li><code>"_execute_sidebar_action"</code>: ouvre la barre latérale de l'extension</li> + </ul> + + <p>Cliquer sur l'élément déclenchera toujours l'événement {{WebExtAPIRef("menus.onClicked")}}, mais il n'y a aucune garantie de la commande ici: la commande peut être exécutée avant les incendies <code>onClicked</code>.</p> + </dd> + <dt><code>contexts</code> {{optional_inline}}</dt> + <dd> + <p><code>array</code> de <code>{{WebExtAPIRef('menus.ContextType')}}</code>. Tableau des contextes dans lesquels cet élément de menu apparaîtra. Si cette option est omise :</p> + + <ul> + <li>Si l'élément parent a des contextes définis, alors cet élément héritera des contextes de ses parents</li> + <li>sinon, l'élément reçoit un tableau de contexte de ["page"].</li> + </ul> + </dd> + <dt><code>documentUrlPatterns</code> {{optional_inline}}</dt> + <dd><code>array</code> de <code><code>string</code></code>. Vous permet de restreindre l'élément à appliquer uniquement aux documents dont l'URL correspond à l'un des <a href="/fr/Add-ons/WebExtensions/Match_patterns">motifs</a> données. Cela s'applique également aux cadres.</dd> + <dt><code>enabled</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si cet élément de menu est activé ou désactivé. Par défaut à <code>true</code>.</dd> + <dt><code>icons</code> {{optional_inline}}</dt> + <dd> + <p><code>object</code>. Une ou plusieurs icônes personnalisées à afficher en regard 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é est la taille de l'icône en pixels et sa valeur est un chemin vers l'icône à partir du répertoire racine de l'extension. Le navigateur va essayer de choisir une icône de 16x16 pixels pour un affichage normal ou une icône de 32x32 pixels pour un affichage haute densité. Donc, pour éviter toute mise à l'échelle, vous pouvez spécifier des icônes comme ceci :</p> + + <pre class="brush: json no-line-numbers language-json"><code class="language-json"><span class="key token">"icons":</span> <span class="punctuation token">{</span> + <span class="key token">"16":</span> <span class="string token">"path/to/geo-16.png"</span><span class="punctuation token">,</span> + <span class="key token">"32":</span> <span class="string token">"path/to/geo-32.png"</span> + <span class="punctuation token">}</span></code></pre> + + <p>Vous pouvez également spécifier une seule icône SVG, qui sera mise à l'échelle de manière appropriée :</p> + + <pre class="brush: json no-line-numbers language-json"><code class="language-json"><span class="key token">"icons":</span> <span class="punctuation token">{</span> + <span class="key token">"16":</span> <span class="string token">"path/to/geo.svg"</span> + <span class="punctuation token">}</span></code></pre> + + <div class="blockIndicator note"> + <p><strong>Note</strong>: L'élément de menu de niveau supérieur utilise les <a href="/fr/Add-ons/WebExtensions/manifest.json/icons">icônes</a> spécifiées dans le manifest plutôt que ce qui est spécifié avec cette touche.</p> + </div> + </dd> + <dt><code>id</code> {{optional_inline}}</dt> + <dd><code>string</code>. Identifiant unique à attribuer à cet élément Obligatoire pour les pages d'événement. Ne peut pas être identique à un autre ID pour cette extension.</dd> + <dt><code>onclick</code> {{optional_inline}}</dt> + <dd><code>function</code>. Une fonction qui sera appelée lorsque l'élément de menu est cliqué. Les pages d'événements ne peuvent pas utiliser ceci : à la place, elles devraient enregistrer un écouteur pour {{WebExtAPIRef('menus.onClicked')}}.</dd> + <dt><code>parentId</code> {{optional_inline}}</dt> + <dd><code><code>integer</code></code> ou <code><code>string</code></code>. L'ID d'un élément de menu parent; Cela fait de l'élément un enfant d'un élément ajouté précédemment. 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.</dd> + <dt><code>targetUrlPatterns</code> {{optional_inline}}</dt> + <dd><code>array</code> de <code><code>string</code></code>. Similaire à <code>documentUrlPatterns</code>, mais vous permet de filtrer en fonction du <code>href</code> des balises d'ancrage et de l'attribut <code>src</code> des balises img/audio/video tags. 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.</dd> + <dt><code>title</code> {{optional_inline}}</dt> + <dd> + <p><code>string</code>. Le texte à afficher dans l'article. Obligatoire sauf si le <code>type</code> est "separator".</p> + + <p>Vous pouvez utiliser "<code>%s</code>" dans la chaîne. Si vous le faites dans un élément de menu et que du texte est sélectionné dans la page lorsque le menu est affiché, le texte sélectionné sera interpolé dans le titre. Par exemple, si le <code>titre</code> est "traduire '%s' en Pig Latin" et que l'utilisateur sélectionne le mot "cool", alors le menu est activé, le titre de l'élément de menu sera : "Traduire 'cool' en Pig Latin".</p> + + <p>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 :</p> + + <ul> + <li>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.</li> + <li>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.</li> + <li>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.</li> + </ul> + + <p>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.</p> + </dd> + <dt><code>type</code> {{optional_inline}}</dt> + <dd><code>{{WebExtAPIRef('menus.ItemType')}}</code>. Le type d'élément de menu : "normal", "checkbox", "radio", "separator". Par défault à "normal".</dd> + <dt><code>viewType</code> {{optional_inline}}</dt> + <dd><code>{{WebExtAPIRef('extension.ViewType')}}</code>. 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 <code>viewType</code>.</dd> + <dt><code>visible</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'élément est affiché dans le menu. Par défaut, la valeur est <code>true</code>.</dd> + </dl> + </dd> + <dt><code>callback</code> {{optional_inline}}</dt> + <dd><code>function</code>. Appelé lorsque l'élément a été créé. S'il y a eu des problèmes lors de la création de l'élément, les détails seront disponibles dans {{WebExtAPIRef('runtime.lastError')}}.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p><code><code>integer</code></code> ou <code><code>string</code></code>. L'ID de l'article nouvellement créé.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple crée un élément de menu contextuel qui s'affiche lorsque l'utilisateur a sélectionné du texte dans la page. Il enregistre simplement le texte sélectionné sur la console</p> + +<pre class="brush: js">browser.menus.create({ + id: "log-selection", + title: "Log '%s' to the console", + contexts: ["selection"] +}); + +browser.menus.onClicked.addListener(function(info, tab) { + if (info.menuItemId == "log-selection") { + console.log(info.selectionText); + } +});</pre> + +<p>Cet exemple ajoute deux éléments radio, que vous pouvez utiliser pour choisir d'appliquer une bordure verte ou bleue à la page. Notez que cet exemple nécessitera la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission">permission activeTab</a>.</p> + +<pre class="brush: js">function onCreated() { + if (browser.runtime.lastError) { + console.log("error creating item:" + browser.runtime.lastError); + } else { + console.log("item created successfully"); + } +} + +browser.menus.create({ + id: "radio-green", + type: "radio", + title: "Make it green", + contexts: ["all"], + checked: false +}, onCreated); + +browser.menus.create({ + id: "radio-blue", + type: "radio", + title: "Make it blue", + contexts: ["all"], + checked: false +}, onCreated); + +var makeItBlue = 'document.body.style.border = "5px solid blue"'; +var makeItGreen = 'document.body.style.border = "5px solid green"'; + +browser.menus.onClicked.addListener(function(info, tab) { + if (info.menuItemId == "radio-blue") { + browser.tabs.executeScript(tab.id, { + code: makeItBlue + }); + } else if (info.menuItemId == "radio-green") { + browser.tabs.executeScript(tab.id, { + code: makeItGreen + }); + } +});</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.menus.create", 10)}}</p> + + + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/contextMenus"><code>chrome.contextMenus</code></a> de chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/context_menus.json"><code>context_menus.json</code></a> dans le code Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/createproperties/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/createproperties/index.html new file mode 100644 index 0000000000..072350b414 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/createproperties/index.html @@ -0,0 +1,130 @@ +--- +title: createProperties +slug: Mozilla/Add-ons/WebExtensions/API/menus/createProperties +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/createProperties +--- +<p>{{AddonSidebar()}}</p> + +<p>Un <code>object</code> passé au méthodes {{WebExtAPIRef("menus.create()", "menus.create()")}} ou {{WebExtAPIRef("menus.update()", "menus.update()")}} pour décrire les propriétés de l'élément de menu nouveau ou mis à jour.</p> + +<dl class="reference-values"> + <dt><code>checked</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. The initial state of a checkbox or radio item: <code>true</code> for selected and <code>false</code> for unselected. Only one radio item can be selected at a time in a given group of radio items.</dd> + <dt><code>command</code> {{optional_inline}}</dt> + <dd> + <p><code>string</code>. String describing an action that should be taken when the user clicks the item. Possible values are:</p> + + <ul> + <li><code>"_execute_browser_action"</code>: simulate a click on the extension's browser action, opening its popup if it has one</li> + <li><code>"_execute_page_action"</code>: simulate a click on the extension's page action, opening its popup if it has one</li> + <li><code>"_execute_sidebar_action"</code>: open the extension's sidebar</li> + </ul> + + <p>Clicking the item will still trigger the {{WebExtAPIRef("menus.onClicked")}} event, but there's no guarantee of the ordering here: the command may be executed before <code>onClicked</code> fires.</p> + </dd> + <dt><code>contexts</code> {{optional_inline}}</dt> + <dd> + <p><code>array</code> of <code>{{WebExtAPIRef('menus.ContextType')}}</code>. Array of contexts in which this menu item will appear. If this option is omitted:</p> + + <ul> + <li>if the item's parent has contexts set, then this item will inherit its parent's contexts</li> + <li>otherwise, the item is given a context array of ["page"].</li> + </ul> + </dd> + <dt><code>documentUrlPatterns</code> {{optional_inline}}</dt> + <dd><code>array</code> of <code><code>string</code></code>. Lets you restrict the item to apply only to documents whose URL matches one of the given <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">match patterns</a>. This applies to frames as well.</dd> + <dt><code>enabled</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Whether this menu item is enabled or disabled. Defaults to <code>true</code>.</dd> + <dt><code>icons</code> {{optional_inline}}</dt> + <dd> + <p><code>object</code>. One or more custom icons to display next to the item. Custom icons can only be set for items appearing in submenus. This property is an object with one property for each supplied icon: the property's name should include the icon's size in pixels, and path is relative to the icon from the extension's root directory. The browser tries to choose a 16x16 pixel icon for a normal display or a 32x32 pixel icon for a high-density display. To avoid any scaling, you can specify icons like this:</p> + + <pre class="brush: json no-line-numbers language-json"><code class="language-json"><span class="key token">"icons":</span> <span class="punctuation token">{</span> + <span class="key token">"16":</span> <span class="string token">"path/to/geo-16.png"</span><span class="punctuation token">,</span> + <span class="key token">"32":</span> <span class="string token">"path/to/geo-32.png"</span> + <span class="punctuation token">}</span></code></pre> + + <p>Alternatively, you can specify a single SVG icon, and it will be scaled appropriately:</p> + + <pre class="brush: json no-line-numbers language-json"><code class="language-json"><span class="key token">"icons":</span> <span class="punctuation token">{</span> + <span class="key token">"16":</span> <span class="string token">"path/to/geo.svg"</span> + <span class="punctuation token">}</span></code></pre> + + <div class="blockIndicator note"> + <p><strong>Note</strong>: The top-level menu item uses the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons">icons</a> specified in the manifest rather than what is specified with this key.</p> + </div> + </dd> + <dt><code>id</code> {{optional_inline}}</dt> + <dd><code>string</code>. The unique ID to assign to this item. Mandatory for event pages. Cannot be the same as another ID for this extension.</dd> + <dt><code>onclick</code> {{optional_inline}}</dt> + <dd><code>function</code>. A function that will be called when the menu item is clicked. Event pages cannot use this: instead, they should register a listener for {{WebExtAPIRef('menus.onClicked')}}.</dd> + <dt><code>parentId</code> {{optional_inline}}</dt> + <dd><code><code>integer</code></code> or <code><code>string</code></code>. The ID of a parent menu item; this makes the item a child of a previously added item. Note: If you have created more than one menu item, then the items will be placed in a submenu. The submenu's parent will be labeled with the name of the extension.</dd> + <dt><code>targetUrlPatterns</code> {{optional_inline}}</dt> + <dd><code>array</code> of <code><code>string</code></code>. Similar to <code>documentUrlPatterns</code>, but lets you filter based on the <code>href</code> of anchor tags and the <code>src</code> attribute of img/audio/video tags. This parameter supports any URL scheme, even those that are usually not allowed in a match pattern.</dd> + <dt><code>title</code> {{optional_inline}}</dt> + <dd> + <p><code>string</code>. The text to be displayed in the item. Mandatory unless <code>type</code> is "separator".</p> + + <p>You can use "<code>%s</code>" in the string. If you do this in a menu item, and some text is selected in the page when the menu is shown, then the selected text will be interpolated into the title. For example, if <code>title</code> is "Translate '%s' to Pig Latin" and the user selects the word "cool", then activates the menu, then the menu item's title will be: "Translate 'cool' to Pig Latin".</p> + + <p>If the title contains an ampersand "&" then the next character will be used as an access key for the item, and the ampersand will not be displayed. Exceptions to this are:</p> + + <ul> + <li>If the next character is also an ampersand: then a single ampersand will be displayed and no access key will be set. In effect, "&&" is used to display a single ampersand.</li> + <li>If the next characters are the interpolation directive "%s": then the ampersand will not be displayed and no access key will be set.</li> + <li>If the ampersand is the last character in the title: then the ampersand will not be displayed and no access key will be set.</li> + </ul> + + <p>Only the first ampersand will be used to set an access key: subsequent ampersands will not be displayed but will not set keys. So "&A and &B" will be shown as "A and B" and set "A" as the access key.</p> + </dd> + <dt><code>type</code> {{optional_inline}}</dt> + <dd><code>{{WebExtAPIRef('menus.ItemType')}}</code>. The type of menu item: "normal", "checkbox", "radio", "separator". Defaults to "normal".</dd> + <dt><code>viewTypes</code> {{optional_inline}}</dt> + <dd><code>{{WebExtAPIRef('extension.ViewType')}}</code>. List of view types where the menu item will be shown. Defaults to any view, including those without a <code>viewType</code>.</dd> + <dt><code>visible</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Whether the item is shown in the menu. Defaults to <code>true</code>.</dd> +</dl> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.menus.createProperties", 10)}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Acknowledgements</strong> + +<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/contextMenus#type-OnClickData" style="outline: 1px dotted currentcolor; outline-offset: 0px;"><code>chrome.contextMenus</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/context_menus.json"><code>context_menus.json</code></a> in the Chromium code.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/gettargetelement/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/gettargetelement/index.html new file mode 100644 index 0000000000..d45f8004cf --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/gettargetelement/index.html @@ -0,0 +1,74 @@ +--- +title: menus.getTargetElement() +slug: Mozilla/Add-ons/WebExtensions/API/menus/getTargetElement +tags: + - API + - Méthode + - Reference + - WebExtensions + - getTargetElement + - menus +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/getTargetElement +--- +<div>{{AddonSidebar}}</div> + +<p class="summary">Renvoie l'élément pour un <code>targetElementId</code> donné</p> + +<p class="summary">Cette méthode est disponible pour tous les contextes de script d'extension (scripts de contenu, pages de fond et autres pages d'extension) et retourne l'élément pour un <code>info.targetElementId</code> donnée, à condition que l'élément existe toujours dans le document où la méthode est appelée.</p> + +<p>La méthode ne fonctionne que dans le document qui inclut l'élément cliqué avec le bouton droit de la souris et la méthode <code>targetElementId</code> expire lorsque l'utilisateur ouvre un autre menu contextuel.</p> + +<div class="blockIndicator note"> +<p><strong>Note:</strong> <code>menus.getTargetElement</code> ne retourne l'élément demandé que s'il est appelé dans le même contexte que le document qui contient l'élément, par exemple en utilisant des scripts de contenu (comme dans l'exemple ci-dessous).</p> +</div> + +<p><br> + Une extension nécessite la permission "menus" pour utiliser cette API</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox">let elem = browser.menus.getTargetElement(targetElementId); +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>targetElementId</code></dt> + <dd>La propriété de l'objet <code>{{WebExtAPIRef("menus.OnClickData")}}</code> passé au gestionnaire <code>{{WebExtAPIRef("menus.onClicked")}}</code>ou à l'événement <code>{{WebExtAPIRef("menus.onShown")}}</code>.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>L'élément auquel se réfère le paramètre <code>targetElementId</code>. Si le paramètre <code>targetElementId</code> n'est pas valide, La méthode retourne <code>null</code>.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>L'exemple suivant utilise la méthode <code>getTargetElement</code> pour obtenir l'élément auquel se réfère la propriété <code>info.targetElementId</code> puis le supprime.</p> + +<pre class="brush: js">browser.menus.create({ + title: "Remove element", + documentUrlPatterns: ["*://*/*"], + contexts: ["audio", "editable", "frame", "image", "link", "page", "password", "video"], + onclick(info, tab) { + browser.tabs.executeScript(tab.id, { + frameId: info.frameId, + code: `browser.menus.getTargetElement(${info.targetElementId}).remove();`, + }); + }, +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.menus.getTargetElement")}}</p> + +<h2 id="voir_aussi">voir aussi</h2> + +<ul> + <li>{{WebExtAPIRef("menus.create")}}</li> + <li>{{WebExtAPIRef("menus.OnClickData")}}</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/index.html new file mode 100644 index 0000000000..ff1fd72e31 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/index.html @@ -0,0 +1,203 @@ +--- +title: menus +slug: Mozilla/Add-ons/WebExtensions/API/menus +tags: + - API + - Add-ons + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions + - contextMenus + - menus +translation_of: Mozilla/Add-ons/WebExtensions/API/menus +--- +<div>{{AddonSidebar}}</div> + +<p>Ajoutez des éléments au système de menus du navigateur.</p> + +<p>Cette API est modélisée dans l'API <a href="https://developer.chrome.com/extensions/contextMenus">"contextMenus"</a> de Chrome, qui permet aux extensions Chrome d'ajouter des éléments au menu contextuel du navigateur. L'API <code>browser.menus</code> ajoute quelques fonctionnalités à l'API de Chrome.</p> + +<p>Avant Firefox 55, cette API s'appelait à l'origine <code>contextMenus</code>, et ce nom a été retenu comme alias. Vous pouvez donc utiliser <code>contextMenus</code> pour écrire du code qui fonctionne dans Firefox et dans d'autres navigateurs.</p> + +<p>Pour utiliser cette API, vous devez avoir la <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> des <code>menus.</code> vous pouvez également utiliser l'alias <code>contextMenus</code> à la place des <code>menus</code>, mais si vous le faites, vous devez accéder aux API sous le nom <code>browser.contextMenus</code> à la place.</p> + +<p>Excepté que <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/menus/getTargetElement">menus.getTargetElement()</a></code>, cette API ne peut pas être utilisée à partir de scripts de contenu.</p> + +<h2 id="Créer_des_éléments_de_menu">Créer des éléments de menu</h2> + +<p>Pour créer un élément de menu, appelez la méthode {{WebExtAPIRef("menus.create()")}}. Vous transmettez à cette méthode un objet contenant des options pour l'élément, y compris l'ID d'élément, le type d'élément et les contextes dans lesquels il doit être affiché.</p> + +<p>Écoutez les clics sur votre élément de menu en ajoutant un écouteur à l'événement {{WebExtAPIRef("menus.onClicked")}}. Cet écouteur recevra un objet {{WebExtAPIRef("menus.OnClickData")}} contenant les détails de l'événement.</p> + +<p>Vous pouvez créer quatre types différents d'élément de menu, en fonction de la valeur de la propriété <code>type</code> que vous fournissez dans les options de <code>create()</code>:</p> + +<ul> + <li>"normal": un élément de menu qui affiche simplement une étiquette</li> + <li>"checkbox": un élément de menu qui représente un état binaire. Il affiche une coche à côté de l'étiquette. Cliquez sur l'élément pour activer la case. L'écouteur de clic recevra deux propriétés supplémentaires : "checked",indiquant si l'élément est vérifié maintenant, et "wasChecked", indiquant si l'élément a été vérifié avant l'événement click.</li> + <li>"radio": un élément de menu qui représente l'un des groupes de choix. Tout comme une case à cocher, cela affiche également une coche à côté de l'étiquette, et son écouteur de clic est passé "checked" et "wasChecked". Cependant, si vous créez plus d'un élément radio, les éléments fonctionnent comme un groupe d'éléments radio: un seul élément du groupe peut être vérifié, et cliquer sur un élément en fait l'élément sélectionné.</li> + <li>"separateur": une ligne séparant un groupe d'éléments.</li> +</ul> + +<p>Si vous avez créé plus d'un élément de menu contextuel ou plus d'un élément de menu d'outils, les éléments seront placés dans un sous-menu. Le parent du sous-menu sera étiqueté avec le nom de l'extension. Par exemple, voici une extension appelée "Menu démo" qui ajoute deux éléments de menu contextuel:</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15431/menus-1.png" style="display: block; height: 406px; margin-left: auto; margin-right: auto; width: 500px;"></p> + +<h2 id="Icônes">Icônes</h2> + +<p>Si vous avez spécifié des icônes pour votre extension à l'aide de la <a href="/fr/Add-ons/WebExtensions/manifest.json/icons">clé de manifest "icons"</a>, votre élément de menu affichera l'icône spécifiée à côté de son libellé. Le navigateur va essayer de choisir une icône de 16x16 pixels pour un affichage normal ou une icône de 32x32 pixels pour un affichage haute définition :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15433/menus-2.png" style="display: block; height: 409px; margin-left: auto; margin-right: auto; width: 500px;"></p> + +<p>Uniquement pour les éléments d'un sous-menu, vous pouvez spécifier des icônes personnalisées en passant l'option <code>icons</code> à {{WebExtAPIRef("menus.create()")}} :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15435/menus-3.png" style="display: block; height: 396px; margin-left: auto; margin-right: auto; width: 500px;"></p> + +<h2 id="Exemple">Exemple</h2> + +<p>Voici un menu contextuel contenant 4 éléments: un élément normal, deux éléments radio avec des séparateurs de chaque côté et une case à cocher. Les éléments radio sont dotés d'icônes personnalisées.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15437/menus-4.png" style="display: block; height: 790px; margin-left: auto; margin-right: auto; width: 500px;">Vous pouvez créer un sous-menu comme celui-ci en utilisant du code comme :</p> + +<pre class="brush: js">browser.menus.create({ + id: "remove-me", + title: browser.i18n.getMessage("menuItemRemoveMe"), + contexts: ["all"] +}, onCreated); + +browser.menus.create({ + id: "separator-1", + type: "separator", + contexts: ["all"] +}, onCreated); + +browser.menus.create({ + id: "greenify", + type: "radio", + title: browser.i18n.getMessage("menuItemGreenify"), + contexts: ["all"], + checked: true, + icons: { + "16": "icons/paint-green-16.png", + "32": "icons/paint-green-32.png" + } +}, onCreated); + +browser.menus.create({ + id: "bluify", + type: "radio", + title: browser.i18n.getMessage("menuItemBluify"), + contexts: ["all"], + checked: false, + icons: { + "16": "icons/paint-blue-16.png", + "32": "icons/paint-blue-32.png" + } +}, onCreated); + +browser.menus.create({ + id: "separator-2", + type: "separator", + contexts: ["all"] +}, onCreated); + +var checkedState = true; + +browser.menus.create({ + id: "check-uncheck", + type: "checkbox", + title: browser.i18n.getMessage("menuItemUncheckMe"), + contexts: ["all"], + checked: checkedState +}, onCreated);</pre> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("menus.ContextType")}}</dt> + <dd>Les différents contextes dans lesquels un menu peut apparaître.</dd> + <dt>{{WebExtAPIRef("menus.ItemType")}}</dt> + <dd>Le type d'élément de menu : "normal", "checkbox", "radio", "separator".</dd> + <dt>{{WebExtAPIRef("menus.OnClickData")}}</dt> + <dd>Informations envoyées lorsqu'un élément de menu est cliqué.</dd> +</dl> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt>{{WebExtAPIRef("menus.ACTION_MENU_TOP_LEVEL_LIMIT")}}</dt> + <dd>Le nombre maximal d'éléments d'extension de niveau supérieur pouvant être ajoutés à un élément de menu dont le type de contexte est "browser_action" ou "page_action".</dd> +</dl> + +<h2 id="Functions">Functions</h2> + +<dl> + <dt>{{WebExtAPIRef("menus.create()")}}</dt> + <dd>Crée un nouvel élément de menu.</dd> + <dt>{{WebExtApiRef("menus.getTargetElement()")}}</dt> + <dd>Retourne l'élément pour un <code>info.targetElementId</code> donné</dd> + <dt>{{WebExtApiRef("menus.overrideContext()")}}</dt> + <dd>Masquer tous les éléments de menu par défaut de Firefox en faveur d'une interface utilisateur de menu contextuel personnalisé.</dd> + <dt>{{WebExtAPIRef("menus.refresh()")}}</dt> + <dd>Mettre à jour un menu actuellement affiché.</dd> + <dt>{{WebExtAPIRef("menus.remove()")}}</dt> + <dd>Supprime un élément de menu.</dd> + <dt>{{WebExtAPIRef("menus.removeAll()")}}</dt> + <dd>Supprime tous les éléments de menu ajoutés par cette extension.</dd> + <dt>{{WebExtAPIRef("menus.update()")}}</dt> + <dd>Met à jour un élément de menu précédemment créé.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("menus.onClicked")}}</dt> + <dd>Lancé lorsqu'un élément de menu est cliqué.</dd> + <dt>{{WebExtAPIRef("menus.onHidden")}}</dt> + <dd>Lancé lorsque le navigateur cache un menu.</dd> + <dt>{{WebExtAPIRef("menus.onShown")}}</dt> + <dd>Lancé lorsque le navigateur affiche un menu.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{ Compat("webextensions.api.menus", 1, "true") }}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/contextMenus"><code>chrome.contextMenus</code></a> de chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/context_menus.json"><code>context_menus.json</code></a> dans le code Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/itemtype/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/itemtype/index.html new file mode 100644 index 0000000000..88a6c00e24 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/itemtype/index.html @@ -0,0 +1,81 @@ +--- +title: menus.ItemType +slug: Mozilla/Add-ons/WebExtensions/API/menus/ItemType +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - contextMenus + - itemtype +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/ItemType +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type d'élément de menu.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont:</p> + +<dl> + <dt>normal</dt> + <dd>Un élément de menu qui affiche simplement une étiquette.</dd> + <dt>checkbox</dt> + <dd> + <p>Un élément de menu qui représente un état binaire. Il affiche une coche à côté de l'étiquette. Cliquez sur l'élément pour activer la coche. L'écouteur {{WebExtAPIRef("menus.onClicked")}} recevra deux propriétés supplémentaires : "checked", indiquant si l'élément est vérifié maintenant, et "wasChecked", indiquant si l'élément a été vérifié avant l'événement click.</p> + </dd> + <dt>radio</dt> + <dd> + <p>Un élément de menu qui représente l'un des groupes de choix. Tout comme une case à cocher, cela affiche également une coche à côté de l'étiquette, et son écouteur {{WebExtAPIRef("menus.onClicked")}} est passé "checked" et "wasChecked". However, Cependant, si vous créez plus d'un élément radio, les éléments fonctionnent comme un groupe d'éléments radio items: un seul élément du groupe peut être vérifié, et cliquer sur un élément en fait l'élément sélectionné.</p> + </dd> + <dt>separator</dt> + <dd>Une ligne séparant un groupe d'éléments.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.menus.ItemType", 10)}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/contextMenus"><code>chrome.contextMenus</code></a> de chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/context_menus.json"><code>context_menus.json</code></a> dans le code Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/menus.overridecontext()/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/menus.overridecontext()/index.html new file mode 100644 index 0000000000..8d8463f069 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/menus.overridecontext()/index.html @@ -0,0 +1,62 @@ +--- +title: menus.overrideContext() +slug: Mozilla/Add-ons/WebExtensions/API/menus/menus.overrideContext() +tags: + - API + - Add-ons + - Extensions + - Méthode + - WebExtensions + - contextMenus +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/menus.overrideContext() +--- +<div>{{AddonSidebar()}}</div> + +<p>Cette API permet aux extensions de masquer tous les éléments de menu par défaut de Firefox afin de fournir une interface utilisateur de menu contextuel personnalisée. Ce menu contextuel peut comprendre plusieurs éléments de menu de niveau supérieur de l'extension et éventuellement inclure des éléments de menu contextuel d'onglet ou de signet provenant d'autres extensions. Cela doit être appelé lors d'un gestionnaire d'événements DOM du menu <code>contextmenu</code>, et s'applique uniquement au menu qui s'ouvre après cet événement.</p> + +<p>Cette API ne peut être appelée que si l'addon dispose de la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"menus.overrideContext"</code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.menus.overrideContext( + contextOptions // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>contextOptions</code></dt> + <dd><code>object</code>.Propriétés qui définissent le contexte du menu contextuel.</dd> + <dd> + <dl class="reference-values"> + <dt><code>bookmarkId</code> {{optional_inline}}</dt> + <dd><code>string</code> Requis lorsque le contexte est un <code>signet</code>. Nécessite la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission </a> <code>"bookmark"</code> .</dd> + <dt><code>context</code> {{optional_inline}}</dt> + <dd><code>string</code>. pour passer outre, pour autoriser les éléments de menu d'autres extensions dans le menu. Actuellement, seuls <code>"bookmark"</code> et <code>"tab"</code> sont supportés. <code>showDefaults</code> ne peut pas être utilisé avec cette option.</dd> + <dt><code>showDefaults</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. S'il faut également inclure des éléments de menu par défaut dans le menu.</dd> + <dt><code>tabId</code> {{optional_inline}}</dt> + <dd><code>string</code> Requis lorsque le contexte est <code>"tab"</code>. Nécessite la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"tabs"</code> .</dd> + </dl> + </dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Ouvrez le menu contextuel de l'onglet de votre interface utilisateur personnalisée, dans ce cas :</p> + +<pre class="brush:js">document.addEventListener('contextmenu', event => { + const foo = event.target.closest('.foo'); + if (foo) { + // When the context menu is opened on an element with the foo class + // set the context to "opening a tab context menu". + browser.menus.overrideContext({ + context: 'tab', + tabId: parseInt(foo.dataset.tabId) + }); + } +}, { capture: true }); +</pre> + +<p>Voir <a href="https://blog.mozilla.org/addons/2018/11/08/extensions-in-firefox-64/#cm">ce billet de blog</a> pour plus de détails.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/onclickdata/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/onclickdata/index.html new file mode 100644 index 0000000000..7393f73820 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/onclickdata/index.html @@ -0,0 +1,105 @@ +--- +title: menus.OnClickData +slug: Mozilla/Add-ons/WebExtensions/API/menus/OnClickData +tags: + - API + - Add-ons + - Extensions + - Non-standard + - OnClickData + - Reference + - Type + - WebExtensions + - contextMenus +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/OnClickData +--- +<div>{{AddonSidebar()}}</div> + +<p>Informations transmises à l'écouteur d'événement {{WebExtAPIRef("menus.onClicked")}} lorsque vous cliquez sur un élément de menu.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>bookmarkId</code> {{optional_inline}}</dt> + <dd><code>string</code>. L'ID du signet dans lequel le menu contextuel a été cliqué.***</dd> + <dt><code>button</code> {{optional_inline}}</dt> + <dd><code>integer</code>. Quel bouton de la souris a été enfoncé. Les valeurs sont les mêmes que pour <a href="/fr/docs/Web/API/MouseEvent/button"><code>MouseEvent.button</code></a>.</dd> + <dt><code>checked</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Un <em>flag</em> indiquant si une case à cocher ou un élément radio a été vérifié après avoir été cliqué.</dd> + <dt><code>editable</code></dt> + <dd><code>boolean</code>. Un indicateur indiquant si l'élément est modifiable: par exemple, s'il s'agit d'un <a href="/fr/docs/Web/HTML/Element/textarea">textarea</a>.</dd> + <dt><code>frameId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'image dans laquelle l'élément a été cliqué. L'ID de trame peut être utilisé dans d'autres API acceptant des ID de trame, tels que {{WebExtAPIRef("tabs.sendMessage()")}}. Si l'élément a été cliqué dans le document de niveau supérieur,par exemple, dans <code>tools_menu</code> ou <code>tab</code> context), <code>frameId</code> n'est <code>pas défini</code>.</dd> + <dt><code>frameUrl</code> {{optional_inline}}</dt> + <dd><code>string</code>. L'URL du cadre de l'élément sur lequel le menu contextuel a été cliqué, s'il était dans un cadre</dd> + <dt><code>linkText</code> {{optional_inline}}</dt> + <dd><code>string</code>. Si l'élément est un lien, le texte du lien. Si le lien ne contient aucun texte, l'URL elle-même est donnée ici.</dd> + <dt><code>linkUrl </code>{{optional_inline}}</dt> + <dd><code>string</code>. Si l'élément est un lien, l'URL vers laquelle il pointe.</dd> + <dt><code>mediaType</code> {{optional_inline}}</dt> + <dd><code>string</code>. Une de "image", "video", ou "audio" si le menu contextuel a été activé sur l'un de ces types d'éléments.</dd> + <dt><code>menuItemId</code></dt> + <dd><code><code>integer</code></code> ou <code><code>string</code></code>. ID de l'élément de menu sur lequel vous avez cliqué.</dd> + <dt><code>modifiers</code></dt> + <dd><code><code>Array</code></code> de<code><code>string</code></code>. Un tableau contenant toutes les touches de modification qui ont été pressées lorsque l'élément a été cliqué. Les valeurs possibles sont : "Alt", "Command", "Ctrl", "MacCtrl", et "Shift". Sur un Mac, si l'utilisateur a la touche Ctrl enfoncée, alors "Ctrl" et "MacCtrl" sont inclus.</dd> + <dt><code>pageUrl</code> {{optional_inline}}</dt> + <dd><code>string</code>. L'URL de la page sur laquelle l'élément de menu a été cliqué. Cette propriété n'est pas présente si le clic s'est produit dans un contexte où il n'y a pas de page en cours, comme dans le cas d'une action du navigateur.</dd> + <dt><code>parentMenuItemId</code> {{optional_inline}}</dt> + <dd><code><code>integer</code></code> ou <code><code>string</code></code>. L'ID parent, le cas échéant, pour l'élément cliqué.</dd> + <dt><code>selectionText </code>{{optional_inline}}</dt> + <dd><code>string</code>. Si du texte a été sélectionné dans la page, il contient le texte sélectionné.</dd> + <dt><code>srcUrl</code> {{optional_inline}}</dt> + <dd><code>string</code>. Sera présent pour les éléments avec une URL "src".</dd> + <dt><code>targetElementId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Un identificateur de l'élément, le cas échéant, sur lequel le menu contextuel a été créé. Utilisez {{WebExtAPIRef("menus.getTargetElement()")}} dans le script de contenu pour localiser l'élément. Notez que ce n'est pas l'attribut <a href="/fr/docs/Web/HTML/Attributs_universels/id">id</a> de l'élément page.</dd> + <dt><code>viewType</code> {{optional_inline}}</dt> + <dd>{{WebExtAPIRef("extension.ViewType", "ViewType")}}. Le type de vue de l'extension.</dd> + <dt><code>wasChecked</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Un indicateur indiquant si une case à cocher ou un élément radio a été vérifié avant d'avoir cliqué.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.menus.OnClickData", 10)}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/contextMenus"><code>chrome.contextMenus</code></a> de chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/context_menus.json"><code>context_menus.json</code></a> dans le code Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/onclicked/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/onclicked/index.html new file mode 100644 index 0000000000..cea1c7c4df --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/onclicked/index.html @@ -0,0 +1,118 @@ +--- +title: menus.onClicked +slug: Mozilla/Add-ons/WebExtensions/API/menus/onClicked +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - contextMenus + - onClicked +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/onClicked +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'un élément de menu est cliqué.</p> + +<p>Pour la compatibilité avec les autres navigateurs, Firefox rend cet événement disponible via l'espace de noms <code>contextMenus</code> ainsi que l'espace de noms des <code>menus</code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.menus.onClicked.addListener(listener) +browser.menus.onClicked.removeListener(listener) +browser.menus.onClicked.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>info</code></dt> + <dd>{{WebExtAPIRef('menus.OnClickData')}}. Informations sur l'élément cliqué et le contexte dans lequel le clic s'est produit.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>tab</code></dt> + <dd>{{WebExtAPIRef('tabs.Tab')}}. Les détails de l'onglet où le clic a eu lieu. Si le clic n'a pas eu lieu dans ou sur un onglet, ce paramètre sera manquant.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilté_du_navigateur">Compatibilté du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.menus.onClicked", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple écoute les clics sur un élément de menu, puis enregistre l'ID de l'élément et l'ID de l'onglet :</p> + +<pre class="brush: js">browser.menus.create({ + id: "click-me", + title: "Click me!", + contexts: ["all"] +}); + +browser.menus.onClicked.addListener((info, tab) => { + console.log("Item " + info.menuItemId + " clicked " + + "in tab " + tab.id); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/contextMenus"><code>chrome.contextMenus</code></a> de chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/context_menus.json"><code>context_menus.json</code></a> dans le code Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/onhidden/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/onhidden/index.html new file mode 100644 index 0000000000..bfa8de8fa9 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/onhidden/index.html @@ -0,0 +1,70 @@ +--- +title: menus.onHidden +slug: Mozilla/Add-ons/WebExtensions/API/menus/onHidden +tags: + - API + - Add-ons + - Event + - Extensions + - Reference + - WebExtensions + - menus + - onHidden +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/onHidden +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque le navigateur cesse d'afficher un menu: par exemple, parce que l'utilisateur a cliqué à l'extérieur ou sélectionné un élément.</p> + +<p>Elle est seulement déclenchée pour les menus qui peuvent être manipulés en utilisant l'API {{WebExtAPIRef("menus")}} elle-même: ceci inclut le menu contextuel, le menu des outils du navigateur et le menu des signets.</p> + +<p>Ceci est plus susceptible d'être utilisé en combinaison avec {{WebExtAPIRef("menus.onShown")}} et {{WebExtAPIRef("menus.refresh()")}} API: une extension peut mettre à jour le menu quand il est affiché , puis annuler les modifications quand il est caché.</p> + +<p>Firefox rend cet événement disponible via l'espace de noms <code>contextMenus</code> ainsi que l'espace de nom des <code>menus</code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.menus.onHidden.addListener(listener) +browser.menus.onHidden.removeListener(listener) +browser.menus.onHidden.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, <code>false</code> sinon.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction sera transmise sans paramètre.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.menus.onHidden", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple enregistre simplement un message chaque fois qu'un menu est masqué :</p> + +<pre class="brush: js">function hidden() { + console.log("Menu was hidden"); +} + +browser.menus.onHidden.addListener(hidden);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/onshown/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/onshown/index.html new file mode 100644 index 0000000000..5df0ebab15 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/onshown/index.html @@ -0,0 +1,153 @@ +--- +title: menus.onShown +slug: Mozilla/Add-ons/WebExtensions/API/menus/onShown +tags: + - API + - Add-ons + - Event + - Extensiosn + - Reference + - WebExtensions + - menus + - onShown +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/onShown +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque le navigateur a montré un menu.</p> + +<p>Une extension peut utiliser cet événement pour mettre à jour ses éléments de menu en utilisant des informations qui ne sont disponibles qu'une fois le menu affiché. Généralement, une extension trouvera la mise à jour dans son gestionnaire <code>onShown</code> puis appellera {{WebExtAPIRef("menus.refresh()")}} pour mettre à jour le menu lui-même.</p> + +<p>Le gestionnaire peut ajouter, supprimer ou mettre à jour des éléments de menu.</p> + +<p>Par exemple, l'extension d'exemple <a href="https://github.com/mdn/webextensions-examples/tree/master/menu-labelled-open">menu-labelled-open</a> ajoute un élément de menu qui s'affiche lorsque l'utilisateur clique sur un lien et qui, lorsqu'il est cliqué, ouvre simplement le lien. Il utilise <code>onShown</code> et <code>refresh()</code> pour annoter l'élément de menu avec le nom d'hôte du lien, afin que l'utilisateur puisse facilement voir où il ira avant de cliquer.</p> + +<p>Notez qu'une extension ne devrait pas prendre trop de temps avant d'appeler <code>refresh()</code>, sinon la mise à jour sera visible par l'utilisateur.</p> + +<p>Le gestionnaire reçoit des informations sur le menu et son contenu, ainsi que des informations sur la page (telles que le lien et / ou le texte de sélection). Pour accéder aux informations de la page, votre extension doit avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission de l'hôte</a>.</p> + +<p>Si le gestionnaire <code>onShown</code> appelle des API asynchrones, il est possible que le menu ait été fermé à nouveau avant que le gestionnaire ne reprenne l'exécution. Pour cette raison, si un gestionnaire appelle des API asynchrones, il doit vérifier que le menu est toujours affiché avant la mise à jour du menu. Par exemple :</p> + +<pre class="brush: js">var lastMenuInstanceId = 0; +var nextMenuInstanceId = 1; + +browser.menus.onShown.addListener(async function(info, tab) { + var menuInstanceId = nextMenuInstanceId++; + lastMenuInstanceId = menuInstanceId; + + // Call an async function + await .... ; + + // After completing the async operation, check whether the menu is still shown. + if (menuInstanceId !== lastMenuInstanceId) { + return; // Menu was closed and shown again. + } + // Now use menus.create/update + menus.refresh. +}); + +browser.menus.onHidden.addListener(function() { + lastMenuInstanceId = 0; +});</pre> + +<p>Notez qu'il est possible d'appeler les fonctions API des menus de manière synchrone, et dans ce cas vous n'avez pas à effectuer cette vérification :</p> + +<pre class="brush: js">browser.menus.onShown.addListener(async function(info, tab) { + browser.menus.update(menuId, ...); + // Note: Not waiting for returned promise. + browser.menus.refresh(); +});</pre> + +<p>Toutefois, si vous appelez ces API de manière asynchrone, vous devez effectuer la vérification suivante :</p> + +<pre class="brush: js">browser.menus.onShown.addListener(async function(info, tab) { + var menuInstanceId = nextMenuInstanceId++; + lastMenuInstanceId = menuInstanceId; + + await browser.menus.update(menuId, ...); + // must now perform the check + if (menuInstanceId !== lastMenuInstanceId) { + return; + } + browser.menus.refresh(); +});</pre> + +<p>Firefox rend cet événement disponible via l'espace de noms <code>contextMenus</code> ainsi que l'espace de nom des <code>menus</code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.menus.onShown.addListener(listener) +browser.menus.onShown.removeListener(listener) +browser.menus.onShown.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute un écouteur à cet événement</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si le <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>info</code></dt> + <dd> + <p><code>Object</code>. Ceci est juste comme l'objet {{WebExtAPIRef('menus.OnClickData')}}, sauf qu'il contient deux propriétés supplémentaires:</p> + + <ul> + <li><code>contexts</code>: un tableau de tous les {{WebExtAPIRef("menus.ContextType", "contexts")}} applicables à ce menu.</li> + <li><code>menuIds</code>: un tableau d'ID de tous les éléments de menu appartenant à cette extension qui sont affichés dans ce menu.</li> + </ul> + + <p>En comparaison avec <code>menus.OnClickData</code>, l'objet <code>info</code> omet également les propriétés <code>menuItemId</code> et <code>modifiers</code>, car bien sûr, celles-ci ne sont pas disponibles tant qu'un élément de menu n'a pas été sélectionné.</p> + + <p>Les propriétés <code>contexts</code>, <code>menuIds</code>, <code>frameId</code>, et <code>editable</code> modifiables sont toujours fournis. Toutes les autres propriétés dans <code>info</code> sont uniquement fournies si l'extension a la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission d'hôte</a> pour la page.</p> + </dd> + </dl> + + <dl class="reference-values"> + <dt><code>tab</code></dt> + <dd>{{WebExtAPIRef('tabs.Tab')}}. Les détails de l'onglet où le clic a eu lieu. Si le clic n'a pas eu lieu dans ou sur un onglet, ce paramètre sera manquant.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.menus.onShown", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple permet d'afficher le menu contextuel sur un lien, puis met à jour l'élément de menu <code>openLabelledId</code> avec le nom d'hôte du lien :</p> + +<pre class="brush: js">function updateMenuItem(linkHostname) { + browser.menus.update(openLabelledId, { + title: `Open (${linkHostname})` + }); + browser.menus.refresh(); +} + +browser.menus.onShown.addListener(info => { + if (!info.linkUrl) { + return; + } + let linkElement = document.createElement("a"); + linkElement.href = info.linkUrl; + updateMenuItem(linkElement.hostname); +}); +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/overridecontext/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/overridecontext/index.html new file mode 100644 index 0000000000..6869036f24 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/overridecontext/index.html @@ -0,0 +1,46 @@ +--- +title: overrideContext() +slug: Mozilla/Add-ons/WebExtensions/API/menus/overrideContext +tags: + - API + - Add-ons + - Create + - Extensions + - Method + - WebExtensions + - contextMenus +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/overrideContext +--- +<p>{{AddonSidebar}}</p> + +<p>Masquer tous les éléments de menu par défaut de Firefox en faveur d'un menu contextuel personnalisé.</p> + +<p>La méthode overrideContext permet d'afficher les éléments de menu correspondants de cette extension à la place du menu par défaut. Cette méthode doit être appelée à partir d'un gestionnaire d'événements DOM 'contextmenu', et ne s'applique qu'au menu qui s'ouvre après cet événement.</p> + +<p>Pour appeler cette méthode, votre extension doit avoir la permission <code>menus.overrideContext</code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.menus.overrideContext( + contextOptions // object +)</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>contextOptions</code></dt> + <dd><code>object</code>. Options sur la façon dont les menus contextuels seront remplacés.</dd> + <dd> + <dl> + <dt><code>showDefaults</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. S'il faut également inclure les éléments de menu par défaut dans le menu.</dd> + <dt><code>context </code>{{optional_inline}}</dt> + <dd><code>string</code>. Le ContextType à surcharger, pour autoriser les éléments de menu d'autres extensions dans le menu. Actuellement, seuls <code>'bookmark'</code> et <code>'tab'</code> sont supportés. <code>showDefaults</code> ne peut pas être utilisé avec cette option.</dd> + <dt><code>bookmarkId </code>{{optional_inline}}</dt> + <dd><code>string</code>. Requis lorsque le contexte est <code>'bookmark'</code>. Nécessite la permission 'bookmark'.</dd> + <dt><code>tabId </code>{{optional_inline}}</dt> + <dd><code>integer</code>. Requis lorsque le contexte est <code>'tab'</code>. Nécessite la permission 'tabs'.</dd> + <dt></dt> + </dl> + </dd> +</dl> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/refresh/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/refresh/index.html new file mode 100644 index 0000000000..f2914a6c0f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/refresh/index.html @@ -0,0 +1,66 @@ +--- +title: menus.refresh() +slug: Mozilla/Add-ons/WebExtensions/API/menus/refresh +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - menus + - refresh +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/refresh +--- +<div>{{AddonSidebar()}}</div> + +<p>Actualise un menu affiché.</p> + +<p>Met à jour les éléments de menu de l'extension dans le menu affiché par le navigateur, y compris les modifications effectuées depuis l'affichage du menu. N'a aucun effet si le menu n'est pas affiché. La reconstruction d'un menu affiché est une opération coûteuse. N'utilisez cette méthode que lorsque cela est nécessaire.</p> + +<p>Cela est généralement appelé depuis l'intérieur d'un gestionnaire d'événements {{WebExtAPIRef("menus.onShown")}} après que le gestionnaire a effectué des mises à jour dans le menu.</p> + +<p>Firefox rend cette fonction disponible via l'espace de noms <code>contextMenus</code> ainsi que l'espace de noms des <code>menus</code>.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.menus.refresh() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui se réalise sans arguments.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.menus.refresh", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple permet d'afficher le menu contextuel sur un lien, puis met à jour l'élément de menu <code>openLabelledId</code> menu item avec le nom d'hôte du lien :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">updateMenuItem</span><span class="punctuation token">(</span>linkHostname<span class="punctuation token">)</span> <span class="punctuation token">{</span> + browser<span class="punctuation token">.</span>menus<span class="punctuation token">.</span><span class="function token">update</span><span class="punctuation token">(</span>openLabelledId<span class="punctuation token">,</span> <span class="punctuation token">{</span> + title<span class="punctuation token">:</span> <span class="template-string token"><span class="string token">`Open (</span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span>linkHostname<span class="interpolation-punctuation punctuation token">}</span></span><span class="string token">)`</span></span> + <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + browser<span class="punctuation token">.</span>menus<span class="punctuation token">.</span><span class="function token">refresh</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>menus<span class="punctuation token">.</span>onShown<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>info <span class="operator token">=</span><span class="operator token">></span> <span class="punctuation token">{</span> + <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>info<span class="punctuation token">.</span>linkUrl<span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">return</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span> + <span class="keyword token">let</span> linkElement <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">createElement</span><span class="punctuation token">(</span><span class="string token">"a"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + linkElement<span class="punctuation token">.</span>href <span class="operator token">=</span> info<span class="punctuation token">.</span>linkUrl<span class="punctuation token">;</span> + <span class="function token">updateMenuItem</span><span class="punctuation token">(</span>linkElement<span class="punctuation token">.</span>hostname<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/remove/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/remove/index.html new file mode 100644 index 0000000000..74db66b876 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/remove/index.html @@ -0,0 +1,113 @@ +--- +title: menus.remove() +slug: Mozilla/Add-ons/WebExtensions/API/menus/remove +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - contextMenus + - remove +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/remove +--- +<div>{{AddonSidebar()}}</div> + +<p>Supprime un élément de menu.</p> + +<p>Pour la compatibilité avec d'autres navigateurs, Firefox rend cette méthode disponible via l'espace de noms <code>contextMenus</code> ainsi que l'espace de noms des <code>menus</code>.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.menus.remove( + menuItemId // integer or string +) +</pre> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>menuItemId</code></dt> + <dd><code><code>integer</code></code> or <code><code>string</code></code>. The ID of the menu item to remove.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera définit sans argument si la suppression a réussi, ou rejetée avec un message d'erreur si la suppression a échoué (par exemple, parce que l'élément n'a pas pu être trouvé).</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cette extension ajoute un élément de menu intitulé "Remove me!". Si vous cliquez sur l'élément, l'extension le supprime.</p> + +<pre class="brush: js">function onRemoved() { + console.log("item removed successfully"); +} + +function onError() { + console.log("error removing item:" + browser.runtime.lastError); +} + +browser.menus.create({ + id: "remove-me", + title: "Remove me!", + contexts: ["all"] +}); + +browser.menus.onClicked.addListener(function(info, tab) { + if (info.menuItemId == "remove-me") { + var removing = browser.menus.remove(info.menuItemId); + removing.then(onRemoved, onError); + } +});</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.menus.remove", 10)}}</p> + + + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/contextMenus"><code>chrome.contextMenus</code></a> de chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/context_menus.json"><code>context_menus.json</code></a> dans le code Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/removeall/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/removeall/index.html new file mode 100644 index 0000000000..bd485607ac --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/removeall/index.html @@ -0,0 +1,107 @@ +--- +title: menus.removeAll() +slug: Mozilla/Add-ons/WebExtensions/API/menus/removeAll +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - contextMenus + - menus + - removeAll +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/removeAll +--- +<div>{{AddonSidebar()}}</div> + +<p>Supprime tous les éléments de menu ajoutés par l'extension.</p> + +<p>Pour la compatibilité avec d'autres navigateurs, Firefox rend cette méthode disponible via l'espace de noms <code>contextMenus</code> ainsi que l'espace de noms des <code>menus</code>.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.menus.removeAll() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans argument lorsque tous les éléments ont été supprimés.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.menus.removeAll", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple ajoute deux éléments de menu. Lorsque l'utilisateur clique sur l'élément "Supprimer tout !", L'extension supprime les deux éléments en utilisant <code>removeAll()</code>.</p> + +<pre class="brush: js">function onRemoved() { + console.log("items removed successfully"); +} + +browser.menus.create({ + id: "click-me", + title: "Click me!", + contexts: ["all"] +}); + +browser.menus.create({ + id: "remove-all", + title: "Remove all!", + contexts: ["all"] +}); + +browser.menus.onClicked.addListener(function(info, tab) { + if (info.menuItemId == "remove-all") { + var removing = browser.menus.removeAll(); + removing.then(onRemoved); + } +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/contextMenus"><code>chrome.contextMenus</code></a> de chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/context_menus.json"><code>context_menus.json</code></a> dans le code Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/menus/update/index.html b/files/fr/mozilla/add-ons/webextensions/api/menus/update/index.html new file mode 100644 index 0000000000..f56c65c361 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/menus/update/index.html @@ -0,0 +1,193 @@ +--- +title: menus.update() +slug: Mozilla/Add-ons/WebExtensions/API/menus/update +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - Update + - WebExtensions + - contextMenus +translation_of: Mozilla/Add-ons/WebExtensions/API/menus/update +--- +<div>{{AddonSidebar()}}</div> + +<p>Met à jour un élément de menu précédemment créé.</p> + +<p>Pour la compatibilité avec d'autres navigateurs, Firefox rend cette méthode disponible via l'espace de noms <code>contextMenus</code> ainsi que l'espace de noms des <code>menus</code>.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var updating = browser.menus.update( + id, // integer or string + updateProperties // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>id</code></dt> + <dd><code><code>integer</code></code> ou <code><code>string</code></code>. L'ID de l'article à mettre à jour.</dd> + <dt><code>updateProperties</code></dt> + <dd><code>object</code>. Les propriétés à mettre à jour. Identique à l'objet <code>createProperties</code> passé à {{WebExtAPIRef("menus.create()", "menus.create()")}}, sauf que l'<code>id</code> ne peut être défini. En outre, les <code>icônes</code> 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. + <dl class="reference-values"> + <dt><code>checked</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. L'état initial d'une case à cocher ou d'un élément radio : <code>true</code> fpour sélectionné et <code>false</code> pour non sélectionné. Un seul élément radio peut être sélectionné à la fois dans un groupe donné d'éléments radio.</dd> + <dt><code>command</code> {{optional_inline}}</dt> + <dd> + <p><code>string</code>. Chaîne décrivant une action qui doit être effectuée lorsque l'utilisateur clique sur l'élément. Les valeurs possibles sont :</p> + + <ul> + <li><code>"_execute_browser_action"</code>: simuler un clic sur l'action du navigateur de l'extension, en ouvrant son popup s'il en a un</li> + <li><code>"_execute_page_action"</code>: simuler un clic sur l'action de la page de l'extension, en ouvrant son popup si elle en a une</li> + <li><code>"_execute_sidebar_action"</code>: ouvre la barre latérale de l'extension</li> + </ul> + + <p>Cliquer sur l'élément déclenchera toujours l'événement {{WebExtAPIRef("menus.onClicked")}}, mais rien ne garantit l'ordre ici: la commande peut être exécutée avant le lancement de <code>onClicked</code>.</p> + </dd> + <dt><code>contexts</code> {{optional_inline}}</dt> + <dd> + <p><code>array</code> de <code>{{WebExtAPIRef('menus.ContextType')}}</code>. Tableau des contextes dans lesquels cet élément de menu apparaîtra. Si cette option est omise :</p> + + <ul> + <li>si le parent de l'élément a des contextes définis, alors cet élément héritera des contextes de son parent</li> + <li>sinon, l'élément reçoit un tableau de contexte de ["page"].</li> + </ul> + </dd> + <dt><code>documentUrlPatterns</code> {{optional_inline}}</dt> + <dd><code>array</code> de <code><code>string</code></code>. Vous permet de limiter l'élément à s'appliquer uniquement aux documents dont l'URL correspond à l'un des éléments <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">motifs</a> de données. Ceci s'applique également aux cadres.</dd> + <dt><code>enabled</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si cet élément de menu est activé ou désactivé. La valeur par défaut est <code>true</code>.</dd> + <dt><code>icons</code> {{optional_inline}}</dt> + <dd> + <p><code>object</code>. 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 :</p> + + <pre class="brush: json no-line-numbers language-json"><code class="language-json"><span class="key token">"icons":</span> <span class="punctuation token">{</span> + <span class="key token">"16":</span> <span class="string token">"path/to/geo-16.png"</span><span class="punctuation token">,</span> + <span class="key token">"32":</span> <span class="string token">"path/to/geo-32.png"</span> + <span class="punctuation token">}</span></code></pre> + + <p>Alternativement, vous pouvez spécifier une seule icône SVG, et elle sera mise à l'échelle de manière appropriée :</p> + + <pre class="brush: json no-line-numbers language-json"><code class="language-json"><span class="key token">"icons":</span> <span class="punctuation token">{</span> + <span class="key token">"16":</span> <span class="string token">"path/to/geo.svg"</span> + <span class="punctuation token">}</span></code></pre> + + <div class="blockIndicator note"> + <p><strong>Note</strong>: The top-level menu item uses the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons">icons</a> specified in the manifest rather than what is specified with this key.</p> + </div> + </dd> + <dt><code>id</code> {{optional_inline}}</dt> + <dd><code>string</code>. 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.</dd> + <dt><code>onclick</code> {{optional_inline}}</dt> + <dd><code>function</code>. 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 {{WebExtAPIRef('menus.onClicked')}}.</dd> + <dt><code>parentId</code> {{optional_inline}}</dt> + <dd><code><code>integer</code></code> ou <code><code>string</code></code>. 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.</dd> + <dt><code>targetUrlPatterns</code> {{optional_inline}}</dt> + <dd><code>array</code> de <code><code>string</code></code>. Similairer à <code>documentUrlPatterns</code>, mais vous permet de filtrer en fonction de la <code>href</code> des balises d'ancre et l'attribut <code>src</code> 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.</dd> + <dt><code>title</code> {{optional_inline}}</dt> + <dd> + <p><code>string</code>. Le texte à afficher dans le poste. Obligatoire sauf si le <code>type</code> est "separateur".</p> + + <p>Vous pouvez utiliser "<code>%s</code>" 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 <code>title</code> 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".</p> + + <p>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 :</p> + + <ul> + <li>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.</li> + <li>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.</li> + <li>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.</li> + </ul> + + <p>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</p> + </dd> + <dt><code>type</code> {{optional_inline}}</dt> + <dd><code>{{WebExtAPIRef('menus.ItemType')}}</code>. Le type d'élément de menu : "normal", "checkbox", "radio", "separator". Defaults to "normal".</dd> + <dt><code>viewTypes</code> {{optional_inline}}</dt> + <dd><code>{{WebExtAPIRef('extension.ViewType')}}</code>. 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 <code>viewType</code>.</dd> + <dt><code>visible</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'élément est affiché dans le menu. La valeur par défaut est <code>true</code>.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> 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é.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple crée un élément de menu, puis met à jour son titre lorsque l'utilisateur clique dessus :</p> + +<pre class="brush: 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); + } +});</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.menus.update", 10)}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/contextMenus"><code>chrome.contextMenus</code></a> de chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/context_menus.json"><code>context_menus.json</code></a> dans le code Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/notifications/clear/index.html b/files/fr/mozilla/add-ons/webextensions/api/notifications/clear/index.html new file mode 100644 index 0000000000..f2eb8989ba --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/notifications/clear/index.html @@ -0,0 +1,80 @@ +--- +title: notifications.clear() +slug: Mozilla/Add-ons/WebExtensions/API/notifications/clear +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Notifications + - Reference + - WebExtensions + - clear +translation_of: Mozilla/Add-ons/WebExtensions/API/notifications/clear +--- +<div>{{AddonSidebar()}}</div> + +<p>Efface une notification, compte tenu de son identifiant.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var clearing = browser.notifications.clear( + id // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>id</code></dt> + <dd><code>string</code>. L'ID de la notification à effacer. C'est la même chose que l'ID transmis dans le callback {{WebExtAPIRef('notifications.create()')}}.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un booléen : <code>true</code> la notification a été effacée, ou <code>false</code> si ce n'est pas le cas (par exemple, parce que la notification référencée par <code>id </code> n'existe pas).</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.notifications.clear")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple affiche une notification lorsque l'utilisateur clique sur une action du navigateur, à moins que la notification ne soit déjà affichée, auquel cas il efface la notification :</p> + +<pre class="brush: js">var myNotification = "my-notification"; + +function toggleAlarm(all) { + if (myNotification in all) { + browser.notifications.clear(myNotification); + } else { + browser.notifications.create(myNotification, { + "type": "basic", + "iconUrl": browser.extension.getURL("icons/cake-48.png"), + "title": "Am imposing title", + "message": "Some interesting content" + }); + } +} + +function handleClick() { + var gettingAll = browser.notifications.getAll(); + gettingAll.then(toggleAlarm); +} + +browser.browserAction.onClicked.addListener(handleClick); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/notifications"><code>chrome.notifications</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/notifications/create/index.html b/files/fr/mozilla/add-ons/webextensions/api/notifications/create/index.html new file mode 100644 index 0000000000..129bb2a553 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/notifications/create/index.html @@ -0,0 +1,149 @@ +--- +title: notifications.create() +slug: Mozilla/Add-ons/WebExtensions/API/notifications/create +tags: + - API + - Add-ons + - Create + - Extensions + - Method + - Non-standard + - Notifications + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/notifications/create +--- +<div>{{AddonSidebar()}}</div> + +<p>Crée et affiche une notification.</p> + +<p>Passez un {{WebExtAPIRef("notifications.NotificationOptions")}} pour définir le contenu et le comportement de la notification.</p> + +<p>Vous pouvez éventuellement fournir un ID pour la notification. Si vous omettez l'ID, un ID sera généré. Vous pouvez utiliser l'ID pour {{WebExtAPIRef("notifications.update()", "update")}} ou {{WebExtAPIRef("notifications.clear()", "clear")}} la notification.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<div class="warning"> +<p>Si vous appelez <code>notifications.create()</code> plus d'une fois de suite, Firefox peut ne pas afficher de notification pour tout.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var creating = browser.notifications.create( + id, // optional string + options // NotificationOptions +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>id</code>{{optional_inline}}</dt> + <dd><code>string</code>. Ceci est utilisé pour faire référence à cette notification dans {{WebExtAPIRef("notifications.update()")}}, {{WebExtAPIRef("notifications.clear()")}}, et les écouteurs d'événements. Si vous omettez cet argument ou passez une chaîne vide, un nouvel ID sera généré pour cette notification. Si l'ID que vous fournissez correspond à l'ID d'une notification existante provenant de cette extension, l'autre notification sera effacée.</dd> + <dt><code>options</code></dt> + <dd>{{WebExtAPIRef('notifications.NotificationOptions')}}. Définit le contenu et le comportement de la notification.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie lorsque la notification est créée et que le processus d'affichage a été démarré, avant que la notification ne s'affiche réellement à l'utilisateur. Il est rempli avec une chaîne représentant l'identifiant de la notification.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.notifications.create")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Créez et affichez périodiquement une notification de base à l'aide d'un {{WebExtAPIRef("alarms", "alarm")}}. En cliquant sur l'action du navigateur, la notification est rejetée.</p> + +<p>Notez que vous aurez besoin de la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "alarms" pour créer des alarmes (ainsi que de la permission "notifications" pour créer des notifications).</p> + +<pre class="brush: js">var cakeNotification = "cake-notification" + +/* + +CAKE_INTERVAL is set to 6 seconds in this example. +Such a short period is chosen to make the extension's behavior +more obvious, but this is not recommended in real life. +Note that in Chrome, alarms cannot be set for less +than a minute. + +*/ +var CAKE_INTERVAL = 0.1; + +browser.alarms.create("", {periodInMinutes: CAKE_INTERVAL}); + +browser.alarms.onAlarm.addListener(function(alarm) { + browser.notifications.create(cakeNotification, { + "type": "basic", + "iconUrl": browser.extension.getURL("icons/cake-96.png"), + "title": "Time for cake!", + "message": "Something something cake" + }); +}); + +browser.browserAction.onClicked.addListener(()=> { + var clearing = browser.notifications.clear(cakeNotification); + clearing.then(() => { + console.log("cleared"); + }); +});</pre> + +<p>Affichez une notification similaire, mais ajoutez des boutons nommant des gâteaux et consignez le gâteau sélectionné lorsque vous cliquez sur un bouton :</p> + +<pre class="brush: js">var cakeNotification = "cake-notification" + +/* + +CAKE_INTERVAL is set to 6 seconds in this example. +Such a short period is chosen to make the extension's behavior +more obvious, but this is not recommended in real life. +Note that in Chrome, alarms cannot be set for less +than a minute. + +*/ +var CAKE_INTERVAL = 0.1; + +var buttons = [ + { + "title": "Chocolate" + }, { + "title": "Battenberg" + } +]; + +browser.alarms.create("", {periodInMinutes: CAKE_INTERVAL}); + +browser.alarms.onAlarm.addListener(function(alarm) { + browser.notifications.create(cakeNotification, { + "type": "basic", + "iconUrl": browser.extension.getURL("icons/cake-96.png"), + "title": "Time for cake!", + "message": "Something something cake", + "buttons": buttons + }); +}); + +browser.browserAction.onClicked.addListener(()=> { + var clearing = browser.notifications.clear(cakeNotification); + clearing.then(() => { + console.log("cleared"); + }); +}); + +browser.notifications.onButtonClicked.addListener((id, index) => { + browser.notifications.clear(id); + console.log("You chose: " + buttons[index].title); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/notifications"><code>chrome.notifications</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/notifications/getall/index.html b/files/fr/mozilla/add-ons/webextensions/api/notifications/getall/index.html new file mode 100644 index 0000000000..4b7056ef9b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/notifications/getall/index.html @@ -0,0 +1,88 @@ +--- +title: notifications.getAll() +slug: Mozilla/Add-ons/WebExtensions/API/notifications/getAll +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Notifications + - Reference + - WebExtensions + - getAll +translation_of: Mozilla/Add-ons/WebExtensions/API/notifications/getAll +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient toutes les notifications actuellement actives créées par l'extension.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingAll = browser.notifications.getAll() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera accomplie avec un objet. Chaque notification actuellement active est une propriété de cet objet : le nom de la propriété est l'ID de la notification et la valeur de la propriété est un objet {{WebExtAPIRef("notifications.NotificationOptions")}} décrivant cette notification.</p> + +<p>Notez que vous pouvez définir explicitement un ID pour une notification en le passant dans {{WebExtAPIRef("notifications.create()")}}. Si vous ne le faites pas, le navigateur en générera un. Les ID spécifiés explicitement sont des chaînes, mais les ID générés sont des nombres. </p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.notifications.getAll")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple affiche une notification lorsque l'utilisateur clique sur une action du navigateur, à moins que la notification ne soit déjà affichée, auquel cas il efface la notification. Il utilise getAll() pour déterminer si la notification est affichée :</p> + +<pre class="brush: js">var myNotification = "my-notification"; + +function toggleAlarm(all) { + let ids = Object.keys(all); + if (ids.indexOf(myNotification) != -1) { + browser.notifications.clear(myNotification); + } else { + console.log("showing") + + browser.notifications.create(myNotification, { + "type": "basic", + "title": "Am imposing title", + "message": "Some interesting content" + }); + } +} + +function handleClick() { + console.log("clicked") + browser.notifications.getAll().then(toggleAlarm); +} + +browser.browserAction.onClicked.addListener(handleClick);</pre> + +<p>Cet exemple enregistre le titre de toutes les notifications actives :</p> + +<pre class="brush: js">function logNotifications(all) { + for (let id in all) { + console.log(`Title: ${all[id].title}`); + } +} + +browser.notifications.getAll().then(logNotifications);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/notifications"><code>chrome.notifications</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/notifications/index.html b/files/fr/mozilla/add-ons/webextensions/api/notifications/index.html new file mode 100644 index 0000000000..cfd71dfe37 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/notifications/index.html @@ -0,0 +1,66 @@ +--- +title: notifications +slug: Mozilla/Add-ons/WebExtensions/API/notifications +tags: + - API + - Add-ons + - Extensions + - Notifications + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/notifications +--- +<div>{{AddonSidebar}}</div> + +<p>Afficher les notifications à l'utilisateur, en utilisant le mécanisme de notification du système d'exploitation sous-jacent. Étant donné que cette API utilise le mécanisme de notification du système d'exploitation, les détails de l'apparence et du comportement des notifications peuvent varier en fonction du système d'exploitation et des paramètres de l'utilisateur.</p> + +<p>Pour utiliser cette API, vous devez avoir la <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "notifications".</p> + +<p>La notification est identique sur tous les systèmes d'exploitation de bureau. Quelque chose comme :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/16856/notification.png" style="display: block; margin: 0 auto;"></p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("notifications.NotificationOptions")}}</dt> + <dd>Définit le contenu d'une notification.</dd> + <dt>{{WebExtAPIRef("notifications.TemplateType")}}</dt> + <dd>Le type de notification Par exemple, cela définit si la notification peut contenir une image.</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("notifications.clear()")}}</dt> + <dd>Effacer une notification spécifique, compte tenu de son identifiant.</dd> + <dt>{{WebExtAPIRef("notifications.create()")}}</dt> + <dd> Créez et affichez une nouvelle notification.</dd> + <dt>{{WebExtAPIRef("notifications.getAll()")}}</dt> + <dd>Recevez toutes les notifications</dd> + <dt>{{WebExtAPIRef("notifications.update()")}}</dt> + <dd>Mettre à jour une notification</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("notifications.onButtonClicked")}}</dt> + <dd>Lancé lorsque l'utilisateur a cliqué sur un bouton dans la notification.</dd> + <dt>{{WebExtAPIRef("notifications.onClicked")}}</dt> + <dd>Lancé lorsque l'utilisateur a cliqué sur la notification, mais pas sur un bouton.</dd> + <dt>{{WebExtAPIRef("notifications.onClosed")}}</dt> + <dd>Lancé lorsqu'une notification est fermée, soit par le système, soit parce que l'utilisateur l'a rejeté..</dd> + <dt>{{WebExtAPIRef("notifications.onShown")}}</dt> + <dd>Lancé immédiatement après l'affichage d'une notification.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.notifications")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/notifications"><code>chrome.notifications</code></a>.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/notifications/notificationoptions/index.html b/files/fr/mozilla/add-ons/webextensions/api/notifications/notificationoptions/index.html new file mode 100644 index 0000000000..a932728032 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/notifications/notificationoptions/index.html @@ -0,0 +1,91 @@ +--- +title: notifications.NotificationOptions +slug: Mozilla/Add-ons/WebExtensions/API/notifications/NotificationOptions +tags: + - AP + - Add-ons + - Extensions + - Non-standard + - NotificationOptions + - Refere + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/notifications/NotificationOptions +--- +<div>{{AddonSidebar()}}</div> + +<p>Ce type contient les données nécessaires pour :</p> + +<ul> + <li>créer une notification avec {{WebExtAPIRef("notifications.create()")}},</li> + <li>mettre à jour une notification avec {{WebExtAPIRef("notifications.update()")}}.</li> +</ul> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets qui contiennent les propriétés listées ci-dessous.</p> + +<p>Les trois premières propriétés - <code>type</code>, <code>title</code>, <code>message</code> - sont obligatoires pour {{WebExtAPIRef("notifications.create()")}}, mais pas avec {{WebExtAPIRef("notifications.update()")}}. Firefox ne supporte que les propriétés <code>type</code>, <code>title</code>, <code>message</code>, et <code>iconUrl</code> pour le moment, et le seul <code>type</code> disponible est <code>'basic'</code>.</p> + +<dl class="reference-values"> + <dt><code>type</code></dt> + <dd>{{WebExtAPIRef("notifications.TemplateType")}}. Le type de notification que vous voulez. Selon votre choix ici, certaines propriétés seront soit nécéssaires, soit interdites.</dd> + <dt><a id="message" name="message"><code>message</code></a></dt> + <dd><code>string</code>. Le contenu de la notification</dd> + <dt><a id="title" name="title"><code>title</code></a></dt> + <dd><code>string</code>. Le titre de la notification</dd> + <dt><a id="iconUrl" name="iconUrl"><code>iconUrl</code></a>{{optional_inline}}</dt> + <dd><code>string</code>. Une URL correspondant vers une icône à afficher dans la notification. Ça peut être une URL de donnée, une URL blob, une URL http ou https, ou une <a href="/fr/Add-ons/WebExtensions/Chrome_incompatibilities#Relative_URLs">l'URL relative</a> d'un fichier de l'extension.</dd> + <dt><a id="contextMessage" name="contextMessage"><code>contextMessage</code></a>{{optional_inline}}</dt> + <dd><code>string</code>. Du texte supplémentaire à afficher.</dd> + <dt><a id="contextMessage" name="contextMessage"><code>priority</code></a>{{optional_inline}}</dt> + <dd><code>number</code>. La priorité de cette notification. Ça peut être 0, 1, or 2. La valeur par défaut est 0.</dd> + <dt><a id="eventTime" name="eventTime"><code>eventTime</code></a>{{optional_inline}}</dt> + <dd><code>number</code>. Un timestamp en millisecondes pour cette notification <a href="https://fr.wikipedia.org/wiki/Temps_Unix">depuis le timestamp 0</a>.</dd> + <dt><a id="buttons" name="buttons"><code>buttons</code></a>{{optional_inline}}</dt> + <dd><code>array</code> de <code>button</code>. Un tableau pouvant contenir jusqu'à deux boutons à afficher dans la notification. Vous pouvez réagir aux clics sur ces boutons grâce à {{WebExtAPIRef("notifications.onButtonClicked")}}. Chaque bouton est un objet avec ces propriétés :</dd> + <dd> + <dl class="reference-values"> + <dt><code>title</code></dt> + <dd><code>string</code>. Le texte du bouton.</dd> + <dt><code>iconUrl</code>{{optional_inline}}</dt> + <dd><code>string</code>. Une URL pointant vers l'icône de ce bouton.</dd> + </dl> + </dd> + <dt><a id="imageUrl" name="imageUrl"><code>imageUrl</code></a></dt> + <dd> + <p><code>string</code>. Une URL pointant vers une image à utiliser dans la notification. Ça peut être une URL de donnée, une URL blob, une URL http ou https, ou une <a href="/fr/Add-ons/WebExtensions/Chrome_incompatibilities#Relative_URLs">l'URL relative</a> d'un fichier de l'extension.</p> + + <p><em>Cette propriété est utilisable seuleument si le <code>type</code> de la notification est <code>'image'</code>. Dans ce cas, cette propriété sera obligatoire si l'objet <code>NotificationOptions</code> est utilisé avec {{WebExtAPIRef("notifications.create()")}}, mais optionel avec </em><em>{{WebExtAPIRef("notifications.update()")}}.</em></p> + </dd> + <dt><a id="items" name="items"><code>items</code></a></dt> + <dd><code>array</code> of <code>item</code>. Un tableau d'éléments à inclure dans la notification. Selon les paramètres de notification du système d'exploitation, certains éléments que vous souhaitez afficher pourraient ne pas l'être. Chaque élément est un objet avec les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>title</code></dt> + <dd><code>string</code>. Le titre de cet élément.</dd> + <dt><code>message</code></dt> + <dd><code>string</code>. Le message à afficher pour cet élément.</dd> + </dl> + <em>Cette propriété est utilisable seuleument si le <code>type</code> de la notification est <code>'list'</code>. Dans ce cas, cette propriété sera obligatoire si l'objet <code>NotificationOptions</code> est utilisé avec {{WebExtAPIRef("notifications.create()")}}, mais optionel avec </em><em>{{WebExtAPIRef("notifications.update()")}}.</em></dd> + <dt><a id="progress" name="progress"><code>progress</code></a></dt> + <dd><code>integer</code>. Une valeur entre 0 et 100, qui représente l'avancée actuelle d'un indicateur de progression.</dd> + <dd><em>Cette propriété est utilisable seuleument si le <code>type</code> de la notification est <code>'progress'</code>. Dans ce cas, cette propriété sera obligatoire si l'objet <code>NotificationOptions</code> est utilisé avec {{WebExtAPIRef("notifications.create()")}}, mais optionel avec </em><em>{{WebExtAPIRef("notifications.update()")}}.</em></dd> +</dl> + +<p>Notez que les propriétés <code>appIconMaskUrl</code> et <code>isClickable</code> ne sont pas supportées.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.notifications.NotificationOptions")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API chromium <a href="https://developer.chrome.com/extensions/notifications"><code>chrome.notifications</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/notifications/onbuttonclicked/index.html b/files/fr/mozilla/add-ons/webextensions/api/notifications/onbuttonclicked/index.html new file mode 100644 index 0000000000..47118cd224 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/notifications/onbuttonclicked/index.html @@ -0,0 +1,69 @@ +--- +title: notifications.onButtonClicked +slug: Mozilla/Add-ons/WebExtensions/API/notifications/onButtonClicked +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Notifications + - Reference + - WebExtensions + - onButtonClicked +translation_of: Mozilla/Add-ons/WebExtensions/API/notifications/onButtonClicked +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque l'utilisateur clique sur l'un des boutons de la notification.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.notifications.onButtonClicked.addListener(listener) +browser.notifications.onButtonClicked.removeListener(listener) +browser.notifications.onButtonClicked.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument de <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>notificationId</code></dt> + <dd><code>string</code>. ID de la notification sur laquelle le bouton a été cliqué.</dd> + <dt><code>buttonIndex</code></dt> + <dd><code>integer</code>. L'index <a href="https://en.wikipedia.org/wiki/Zero-based_numbering">zero-based</a> du bouton sur lequel vous avez cliqué.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.notifications.onButtonClicked")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/notifications"><code>chrome.notifications</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/notifications/onclicked/index.html b/files/fr/mozilla/add-ons/webextensions/api/notifications/onclicked/index.html new file mode 100644 index 0000000000..2fe5668913 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/notifications/onclicked/index.html @@ -0,0 +1,75 @@ +--- +title: notifications.onClicked +slug: Mozilla/Add-ons/WebExtensions/API/notifications/onClicked +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Notifications + - Reference + - WebExtensions + - onClicked +translation_of: Mozilla/Add-ons/WebExtensions/API/notifications/onClicked +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque l'utilisateur clique sur une notification, mais pas sur l'un des boutons de la notification (pour cela, voir {{WebExtAPIRef("notifications.onButtonClicked")}}).</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.notifications.onClicked.addListener(listener) +browser.notifications.onClicked.removeListener(listener) +browser.notifications.onClicked.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="syntaxe_addListener">syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>notificationId</code></dt> + <dd><code>string</code>. ID de la notification sur laquelle l'utilisateur a cliqué.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.notifications.onClicked")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Dans cet exemple simple, nous ajoutons un écouteur à l'événement {{WebExtAPIRef("notifications.onClicked")}} pour écouter les notifications système en cours de clic. Lorsque cela se produit, nous enregistrons un message approprié à la console.</p> + +<pre class="brush: js">browser.notifications.onClicked.addListener(function(notificationId) { + console.log('Notification ' + notificationId + ' was clicked by the user'); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/notifications"><code>chrome.notifications</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/notifications/onclosed/index.html b/files/fr/mozilla/add-ons/webextensions/api/notifications/onclosed/index.html new file mode 100644 index 0000000000..d337f9d1bf --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/notifications/onclosed/index.html @@ -0,0 +1,77 @@ +--- +title: notifications.onClosed +slug: Mozilla/Add-ons/WebExtensions/API/notifications/onClosed +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Notifications + - Reference + - WebExtensions + - onClosed +translation_of: Mozilla/Add-ons/WebExtensions/API/notifications/onClosed +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'une notification est fermée, soit par le système, soit par l'utilisateur.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.notifications.onClosed.addListener(listener) +browser.notifications.onClosed.removeListener(listener) +browser.notifications.onClosed.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> st l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> st enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>notificationId</code></dt> + <dd><code>string</code>. ID de la notification fermée.</dd> + <dt><code>byUser</code></dt> + <dd><code>boolean</code>. <code>true</code> si la notification a été fermée par l'utilisateur, ou <code>false</code>si elle a été fermée par le système. Cet argument n'est pas supporté dans Firefox.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.notifications.onClosed")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Dans cet exemple simple, nous ajoutons un écouteur à l'événement {{WebExtAPIRef("notifications.onClosed")}} pour écouter les notifications système fermées. Lorsque cela se produit, nous enregistrons un message approprié à la console.</p> + +<pre class="brush: js">browser.notifications.onClosed.addListener(function(notificationId) { + console.log('Notification ' + notificationId + ' has closed.'); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/notifications"><code>chrome.notifications</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/notifications/onshown/index.html b/files/fr/mozilla/add-ons/webextensions/api/notifications/onshown/index.html new file mode 100644 index 0000000000..06f31fdd88 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/notifications/onshown/index.html @@ -0,0 +1,77 @@ +--- +title: notifications.onShown +slug: Mozilla/Add-ons/WebExtensions/API/notifications/onShown +tags: + - API + - Add-ons + - Event + - Extensions + - Reference + - WebExtensions + - events + - onShown +translation_of: Mozilla/Add-ons/WebExtensions/API/notifications/onShown +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé immédiatement après l'affichage d'une notification.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.notifications.onShown.addListener(listener) +browser.notifications.onShown.removeListener(listener) +browser.notifications.onShown.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code>s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="syntaxe_addListener">syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>notificationId</code></dt> + <dd><code>string</code>. ID de la notification qui a été affichée.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.notifications.onShown")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ajoutez un écouteur à l'événement {{WebExtAPIRef("notifications.onShown")}} et consignez ses détails :</p> + +<pre class="brush: js">function logShown(itemId) { + console.log(`shown: ${itemId}`); + browser.notifications.getAll().then((all) => { + console.log(all[itemId]); + }) +} + +browser.notifications.onShown.addListener(logShown);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/notifications"><code>chrome.notifications</code></a>.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/notifications/templatetype/index.html b/files/fr/mozilla/add-ons/webextensions/api/notifications/templatetype/index.html new file mode 100644 index 0000000000..ff80ce05bf --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/notifications/templatetype/index.html @@ -0,0 +1,69 @@ +--- +title: notifications.TemplateType +slug: Mozilla/Add-ons/WebExtensions/API/notifications/TemplateType +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Notifications + - Reference + - TemplateType + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/notifications/TemplateType +--- +<div>{{AddonSidebar()}}</div> + +<p>Ceci est une chaîne et représente le type de notification à créer. Il existe quatre types de notification : "basic", "image", "list", "progress".</p> + +<p>Ceci est passé dans {{WebExtAPIRef("notifications.create()")}} et {{WebExtAPIRef("notifications.update()")}} comme propriété de <code>type</code> {{WebExtAPIRef("notifications.NotificationOptions", "NotificationOptions")}}.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<ul> + <li><code>"basic"</code>: la notification comprend : + + <ul> + <li>un titre (<code><a href="/fr/Add-ons/WebExtensions/API/notifications/NotificationOptions#title">NotificationOptions.title</a></code>)</li> + <li>un message (<code><a href="/fr/Add-ons/WebExtensions/API/notifications/NotificationOptions#message">NotificationOptions.message</a></code>)</li> + <li>une icône (<code><a href="/fr/Add-ons/WebExtensions/API/notifications/NotificationOptions#iconUrl">NotificationOptions.iconUrl</a></code>){{optional_inline}}</li> + <li>un message supplémentaire (<code><a href="/fr/Add-ons/WebExtensions/API/notifications/NotificationOptions#contextMessage">NotificationOptions.contextMessage</a></code>){{optional_inline}}</li> + <li>jusqu'à deux boutons (<code><a href="/fr/Add-ons/WebExtensions/API/notifications/NotificationOptions#buttons">NotificationOptions.buttons</a></code>){{optional_inline}}</li> + </ul> + </li> + <li><code>"image"</code>: tout dans <code>"basic"</code> et aussi : + <ul> + <li>Une image (<code><a href="/fr/Add-ons/WebExtensions/API/notifications/NotificationOptions#imageUrl">NotificationOptions.imageUrl</a></code>)</li> + </ul> + </li> + <li><code>"list"</code>: tout dans <code>"basic"</code> et aussi : + <ul> + <li>Une liste d'éléments (<code><a href="/fr/Add-ons/WebExtensions/API/notifications/NotificationOptions#items">NotificationOptions.items</a></code>)</li> + </ul> + </li> + <li><code>"progress"</code>: tout en <code>"basic"</code> et aussi : + <ul> + <li>Un indicator de progression (<code><a href="/fr/Add-ons/WebExtensions/API/notifications/NotificationOptions#progress">NotificationOptions.progress</a></code>)</li> + </ul> + </li> +</ul> + +<p>Actuellement Firefox ne supporte que "basic" ici.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.notifications.TemplateType")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/notifications"><code>chrome.notifications</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/notifications/update/index.html b/files/fr/mozilla/add-ons/webextensions/api/notifications/update/index.html new file mode 100644 index 0000000000..e4a0faf023 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/notifications/update/index.html @@ -0,0 +1,110 @@ +--- +title: notifications.update() +slug: Mozilla/Add-ons/WebExtensions/API/notifications/update +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Notifications + - Reference + - Update + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/notifications/update +--- +<div>{{AddonSidebar()}}</div> + +<p>Met à jour une notification, compte tenu de son identifiant</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var updating = browser.notifications.update( + id, // string + options // NotificationOptions +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>id</code></dt> + <dd><code>string</code>. L'ID de la notification à mettre à jour. C'est la même chose que l'ID transmis dans le callback {{WebExtAPIRef('notifications.create()')}}.</dd> + <dt><code>options</code></dt> + <dd>{{WebExtAPIRef('notifications.NotificationOptions')}}. Définit le nouveau contenu et le nouveau comportement de la notification.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un booléen : <code>true</code> si la notification a été mise à jour, ou <code>false</code> si ce n'est pas le cas (par exemple, parce que la notification référencée par <code>id</code> n'existe pas).</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.notifications.update")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple utilise <code>update()</code> pour mettre à jour une notification de progression. Cliquez sur l'action du navigateur pour afficher la notification et lancer un {{WebExtAPIRef("alarms", "alarm")}}, que nous utilisons pour mettre à jour l'indicateur de progression de la notification.</p> + +<p>Notez que vous aurez besoin de la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "alarms" pour créer des alarmes (ainsi que de la permission "notifications" pour créer des notifications). Notez également que Firefox ne prend pas en charge l'attribut de <code>progress</code>.</p> + +<pre class="brush: js">var cakeNotification = "cake-notification"; + +/* + +CAKE_INTERVAL is set to 0.3 seconds in this example. +Such a short period is chosen to make the extension's behavior +more obvious, but this is not recommended in real life. +Note that in Chrome, alarms cannot be set for less than +a minute. + +*/ +var CAKE_PREP_INTERVAL = 0.005; + +var progress = 0; + +browser.alarms.onAlarm.addListener(function(alarm) { + progress = progress + 10; + if (progress > 100) { + browser.notifications.clear(cakeNotification); + browser.alarms.clear("cake-progress"); + } else { + browser.notifications.update(cakeNotification, { + "progress": progress + }); + } +}); + +browser.browserAction.onClicked.addListener(function () { + browser.notifications.getAll((all) => { + if (all.length > 0) { + browser.notifications.clear(cakeNotification); + return; + } + progress = 0; + browser.notifications.create(cakeNotification, { + "type": "progress", + "iconUrl": browser.extension.getURL("icons/cake-48.png"), + "title": "Your cake is being prepared...", + "message": "Something something cake", + "progress": progress + }); + browser.alarms.create( + "cake-progress", + {periodInMinutes: CAKE_PREP_INTERVAL} + ); + }); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/notifications"><code>chrome.notifications</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/omnibox/index.html b/files/fr/mozilla/add-ons/webextensions/api/omnibox/index.html new file mode 100644 index 0000000000..c30a1f3db4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/omnibox/index.html @@ -0,0 +1,70 @@ +--- +title: omnibox +slug: Mozilla/Add-ons/WebExtensions/API/omnibox +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - omnibox +translation_of: Mozilla/Add-ons/WebExtensions/API/omnibox +--- +<div>{{AddonSidebar}}</div> + +<p>Permet aux extensions d'implémenter un comportement personnalisé lorsque l'utilisateur tape dans la barre d'adresse du navigateur.</p> + +<p>Lorsque l'utilisateur se concentre sur la barre d'adresse du navigateur et commence à taper, le navigateur affiche une liste déroulante contenant des pages suggérées, en fonction de ce qu'ils ont tapé. Cela permet à l'utilisateur d'accéder rapidement, par exemple, aux pages de son historique ou de ses favoris.</p> + +<p>L'API omnibox fournit à l'extension un moyen de personnaliser les suggestions affichées dans la liste déroulante, lorsque l'utilisateur saisit un mot clé défini par l'extension. Cela fonctionne comme suit:...</p> + +<ol> + <li>Tout d'abord, l'extension doit inclure une clé "<a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/omnibox">omnibox</a>" dans le fichier <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> qui définit un mot-clé.</li> + <li>Lorsque l'utilisateur met la barre d'adresse en surbrillance et tape le mot-clé, suivi d'un espace, l'extension recevra un événement {{WebExtAPIRef("omnibox.onInputStarted")}}.</li> + <li>Facultativement, l'extension peut appeler {{WebExtAPIRef("omnibox.setDefaultSuggestion()")}} pour définir la première suggestion qui sera affichée dans la liste déroulante de la barre d'adresse.</li> + <li>Comme l'utilisateur continue à taper des caractères après cela, l'extension recevra {{WebExtAPIRef("omnibox.onInputChanged")}} événements. L'écouteur d'événement recevra la valeur actuelle que l'utilisateur a saisie et pourra remplir la liste déroulante de la barre d'adresse avec des suggestions. Si l'extension définit une suggestion par défaut en utilisant {{WebExtAPIRef("omnibox.setDefaultSuggestion()")}}, elle apparaît en premier dans la liste déroulante.</li> + <li>Si l'utilisateur accepte une suggestion, l'extension recevra un événement {{WebExtAPIRef("omnibox.onInputEntered")}}. L'écouteur d'événement recevra la suggestion acceptée.</li> + <li>Si l'utilisateur supprime la liste déroulante, l'extension recevra un événement {{WebExtAPIRef("omnibox.onInputCancelled")}}.</li> +</ol> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("omnibox.OnInputEnteredDisposition")}}</dt> + <dd>Décrit la méthode recommandée pour gérer la suggestion sélectionnée: ouvrir dans l'onglet actuel, ouvrir dans un nouvel onglet de premier plan ou ouvrir dans un nouvel onglet d'arrière-plan.</dd> + <dt>{{WebExtAPIRef("omnibox.SuggestResult")}}</dt> + <dd>Objet représentant une suggestion à ajouter à la liste déroulante de la barre.</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("omnibox.setDefaultSuggestion()")}}</dt> + <dd>Définit la première suggestion qui apparaît dans la liste déroulante lorsque l'utilisateur entre le mot clé pour votre extension, suivi d'un espace.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("omnibox.onInputStarted")}}</dt> + <dd>Lancé lorsque l'utilisateur met la barre d'adresse en surbrillance et tape le mot clé omnibox de votre extension, suivi d'un espace.</dd> + <dt>{{WebExtAPIRef("omnibox.onInputChanged")}}</dt> + <dd>Déclenché chaque fois que l'utilisateur change d'entrée, après avoir focalisé la barre d'adresse et tapé le mot clé omnibox de votre extension, suivi d'un espace.</dd> + <dt>{{WebExtAPIRef("omnibox.onInputEntered")}}</dt> + <dd>Lancé lorsque l'utilisateur accepte l'une des suggestions de votre extension.</dd> + <dt>{{WebExtAPIRef("omnibox.onInputCancelled")}}</dt> + <dd>Lancé lorsque l'utilisateur supprime la liste déroulante de la barre d'adresse, après avoir défini la barre d'adresse et tapé le mot clé omnibox de votre extension.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.omnibox")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/omnibox"><code>chrome.omnibox</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputcancelled/index.html b/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputcancelled/index.html new file mode 100644 index 0000000000..b1bcf27f8a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputcancelled/index.html @@ -0,0 +1,60 @@ +--- +title: omnibox.onInputCancelled +slug: Mozilla/Add-ons/WebExtensions/API/omnibox/onInputCancelled +tags: + - API + - Add-ons + - Event + - Extensions + - Reference + - WebExtensions + - omnibox + - onInputCancelled +translation_of: Mozilla/Add-ons/WebExtensions/API/omnibox/onInputCancelled +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque l'utilisateur a annulé son interaction avec votre poste (par exemple, en cliquant en dehors de la barre d'adresse).</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.omnibox.onInputCancelled.addListener(listener) +browser.omnibox.onInputCancelled.removeListener(listener) +browser.omnibox.onInputCancelled.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<p>La fonction d'écouteur n'a pas de paramètres.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.omnibox.onInputCancelled")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">browser.omnibox.onInputCancelled.addListener(() => { + console.log("The user cancelled the session."); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/omnibox"><code>chrome.omnibox</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputchanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputchanged/index.html new file mode 100644 index 0000000000..93741b08ae --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputchanged/index.html @@ -0,0 +1,153 @@ +--- +title: omnibox.onInputChanged +slug: Mozilla/Add-ons/WebExtensions/API/omnibox/onInputChanged +tags: + - API + - Add-ons + - Event + - Extensions + - Reference + - WebExtensions + - omnibox + - onInputChanged +translation_of: Mozilla/Add-ons/WebExtensions/API/omnibox/onInputChanged +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé chaque fois que l'utilisateur modifie sa saisie, après avoir commencé à interagir avec votre extension en saisissant son mot-clé dans la barre d'adresse, puis en appuyant sur la touche espace.</p> + +<p>C'est l'événement que vous utiliserez pour remplir la liste déroulante de la barre d'adresse avec des suggestions. L'écouteur d'événement est transmis :</p> + +<ul> + <li>l'entrée actuelle de l'utilisateur (n'incluant pas le mot-clé lui-même ou l'espace après)</li> + <li>une fonction de rappel que l'écouteur peut appeler avec un tableau d'objets {{WebExtAPIRef("omnibox.SuggestResult")}}, un pour chaque suggestion. Seules les six premières suggestions seront affichées..</li> +</ul> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.omnibox.onInputChanged.addListener(listener) +browser.omnibox.onInputChanged.removeListener(listener) +browser.omnibox.onInputChanged.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code>s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="syntaxe_addListener">syntaxe addListener</h2> + +<p>The listener function will be passed two parameters: a string <code>text</code>, and a callback function <code>suggest</code>.</p> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>text</code></dt> + <dd> + <p><code>String</code>. L'entrée actuelle de l'utilisateur dans la barre d'adresse, n'incluant pas le mot-clé de l'extension lui-même ou l'espace après le mot-clé. Utilisez-le pour décider quelles suggestions afficher dans la liste déroulante.</p> + </dd> + <dt><code>suggest</code></dt> + <dd> + <p><code>Function</code>. Une fonction de rappel que l'écouteur d'événement peut appeler pour fournir des suggestions pour la liste déroulante de la barre d'adresse. La fonction de rappel s'attend à recevoir un tableau d'objets {{WebExtAPIRef("omnibox.SuggestResult")}} un pour chaque suggestion. Seules les six premières suggestions seront affichées.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.omnibox.onInputStarted")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple interprète l'entrée de l'utilisateur en tant que nom de propriété CSS et remplit la liste déroulante avec un objet {{WebExtAPIRef("omnibox.SuggestResult")}} pour chaque propriété CSS correspondant à l'entrée. La <code>description SuggestResult</code> est le nom complet de la propriété et le <code>contenu</code> est la page MDN de cette propriété.</p> + +<p>L'exemple écoute également {{WebExtAPIRef("omnibox.onInputEntered")}}, et ouvre la page MDN correspondant à la sélection, conformément à l'argument {{WebExtAPIRef("omnibox.OnInputEnteredDisposition")}}.</p> + +<pre class="brush: js">browser.omnibox.setDefaultSuggestion({ + description: "Type the name of a CSS property" +}); + +/* +Very short list of a few CSS properties. +*/ +const props = [ + "animation", + "background", + "border", + "box-shadow", + "color", + "display", + "flex", + "flex", + "float", + "font", + "grid", + "margin", + "opacity", + "overflow", + "padding", + "position", + "transform", + "transition" +]; + +const baseURL = "https://developer.mozilla.org/en-US/docs/Web/CSS/"; + +/* +Return an array of SuggestResult objects, +one for each CSS property that matches the user's input. +*/ +function getMatchingProperties(input) { + var result = []; + for (prop of props) { + if (prop.indexOf(input) === 0) { + console.log(prop); + let suggestion = { + content: baseURL + prop, + description: prop + } + result.push(suggestion); + } else { + if (result.length != 0) { + return result; + } + } + } + return result; +} + +browser.omnibox.onInputChanged.addListener((input, suggest) => { + suggest(getMatchingProperties(input)); +}); + +browser.omnibox.onInputEntered.addListener((url, disposition) => { + switch (disposition) { + case "currentTab": + browser.tabs.update({url}); + break; + case "newForegroundTab": + browser.tabs.create({url}); + break; + case "newBackgroundTab": + browser.tabs.create({url, active: false}); + break; + } +}); + +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/omnibox"><code>chrome.omnibox</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputentered/index.html b/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputentered/index.html new file mode 100644 index 0000000000..6a880534ec --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputentered/index.html @@ -0,0 +1,153 @@ +--- +title: omnibox.onInputEntered +slug: Mozilla/Add-ons/WebExtensions/API/omnibox/onInputEntered +tags: + - API + - Add-ons + - Event + - Extensions + - Reference + - WebExtensions + - omnibox + - onInputEntered +translation_of: Mozilla/Add-ons/WebExtensions/API/omnibox/onInputEntered +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque l'utilisateur a sélectionné l'une des suggestions que votre extension a ajoutées à la liste déroulante de la barre d'adresse.</p> + +<p>Utilisez cet événement pour gérer la sélection de l'utilisateur, généralement en ouvrant la page correspondante. L'écouteur d'événement est transmis w:</p> + +<ul> + <li>la sélection de l'utilisateur</li> + <li>Un {{WebExtAPIRef("omnibox.OnInputEnteredDisposition")}}: utilisez cette option pour déterminer si vous souhaitez ouvrir la nouvelle page dans l'onglet actuel, dans un nouvel onglet de premier plan ou dans un nouvel onglet d'arrière-plan.</li> +</ul> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.omnibox.onInputEntered.addListener(listener) +browser.omnibox.onInputEntered.removeListener(listener) +browser.omnibox.onInputEntered.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<p>La fonction d'écouteur recevra deux paramètres: une chaine de <code>text</code>, et un {{WebExtAPIRef("omnibox.OnInputEnteredDisposition")}}.</p> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>text</code></dt> + <dd> + <p><code>String</code>. C'est la valeur de la propriété <code>content</code> de l'objet {{WebExtAPIRef("omnibox.SuggestResult")}} que l'utilisateur a sélectionné.</p> + </dd> + <dt><code>disposition</code></dt> + <dd> + <p>{{WebExtAPIRef("omnibox.OnInputEnteredDisposition", "OnInputEnteredDisposition")}}. Une {{WebExtAPIRef("omnibox.OnInputEnteredDisposition")}} énumération, indiquant si l'extension doit ouvrir la page dans l'onglet en cours, dans un nouvel onglet de premier plan ou dans un nouvel onglet d'arrière-plan.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.omnibox.onInputEntered")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple interprète l'entrée de l'utilisateur en tant que nom de propriété CSS et remplit la liste déroulante avec un objet {{WebExtAPIRef("omnibox.SuggestResult")}} pour chaque propriété CSS correspondant à l'entrée. La <code>description SuggestResult</code> est le nom complet de la propriété et le <code>contenu</code> est la page MDN de cette propriété.</p> + +<p>L'exemple écoute également {{WebExtAPIRef("omnibox.onInputEntered")}}, et ouvre la page MDN correspondant à la sélection, conformément à l'argument {{WebExtAPIRef("omnibox.OnInputEnteredDisposition")}}.</p> + +<pre class="brush: js">browser.omnibox.setDefaultSuggestion({ + description: "Type the name of a CSS property" +}); + +/* +Very short list of a few CSS properties. +*/ +const props = [ + "animation", + "background", + "border", + "box-shadow", + "color", + "display", + "flex", + "flex", + "float", + "font", + "grid", + "margin", + "opacity", + "overflow", + "padding", + "position", + "transform", + "transition" +]; + +const baseURL = "https://developer.mozilla.org/en-US/docs/Web/CSS/"; + +/* +Return an array of SuggestResult objects, +one for each CSS property that matches the user's input. +*/ +function getMatchingProperties(input) { + var result = []; + for (prop of props) { + if (prop.indexOf(input) === 0) { + console.log(prop); + let suggestion = { + content: baseURL + prop, + description: prop + } + result.push(suggestion); + } else { + if (result.length != 0) { + return result; + } + } + } + return result; +} + +browser.omnibox.onInputChanged.addListener((input, suggest) => { + suggest(getMatchingProperties(input)); +}); + +browser.omnibox.onInputEntered.addListener((url, disposition) => { + switch (disposition) { + case "currentTab": + browser.tabs.update({url}); + break; + case "newForegroundTab": + browser.tabs.create({url}); + break; + case "newBackgroundTab": + browser.tabs.create({url, active: false}); + break; + } +}); + +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/omnibox"><code>chrome.omnibox</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputentereddisposition/index.html b/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputentereddisposition/index.html new file mode 100644 index 0000000000..913cb5b875 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputentereddisposition/index.html @@ -0,0 +1,45 @@ +--- +title: omnibox.OnInputEnteredDisposition +slug: Mozilla/Add-ons/WebExtensions/API/omnibox/OnInputEnteredDisposition +tags: + - API + - Add-ons + - Extensions + - OnInputEnteredDisposition + - Reference + - Type + - WebExtensions + - omnibox +translation_of: Mozilla/Add-ons/WebExtensions/API/omnibox/OnInputEnteredDisposition +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <strong><code>omnibox.OnInputEnteredDisposition</code></strong> décrit comment l'extension doit gérer une sélection d'utilisateur à partir des suggestions dans la liste déroulante de la barre d'adresse.</p> + +<p>Il est passé dans l'écouteur {{WebExtAPIRef("omnibox.onInputEntered")}} avec la sélection elle-même.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Ils peuvent prendre l'une des valeurs suivantes :</p> + +<dl class="reference-values"> + <dt>"currentTab"</dt> + <dd>Ouvrez la sélection dans l'onglet actuel.</dd> + <dt>"newForegroundTab"</dt> + <dd>Ouvrez la sélection dans un nouvel onglet et placez ce nouvel onglet au premier plan.</dd> + <dt>"newBackgroundTab"</dt> + <dd>Ouvrez la sélection dans un nouvel onglet d'arrière-plan, en conservant l'onglet en cours au premier plan.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.omnibox.OnInputEnteredDisposition")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/omnibox"><code>chrome.omnibox</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputstarted/index.html b/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputstarted/index.html new file mode 100644 index 0000000000..ad29ee7cbd --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/omnibox/oninputstarted/index.html @@ -0,0 +1,70 @@ +--- +title: omnibox.onInputStarted +slug: Mozilla/Add-ons/WebExtensions/API/omnibox/onInputStarted +tags: + - API + - Add-ons + - Event + - Extensions + - Reference + - WebExtensions + - omnibox + - onInputStarted +translation_of: Mozilla/Add-ons/WebExtensions/API/omnibox/onInputStarted +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque l'utilisateur commence à interagir avec votre extension en entrant son mot-clé dans la barre d'adresse, puis en appuyant sur la touche espace.</p> + +<p>Cela sera envoyé avant tout événement {{WebExtAPIRef("omnibox.onInputChanged")}} events.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.omnibox.onInputStarted.addListener(listener) +browser.omnibox.onInputStarted.removeListener(listener) +browser.omnibox.onInputStarted.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction sera passée sans arguments.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.omnibox.onInputStarted")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">browser.omnibox.onInputStarted.addListener(() => { + console.log("User has started interacting with me.") +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/omnibox"><code>chrome.omnibox</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/omnibox/setdefaultsuggestion/index.html b/files/fr/mozilla/add-ons/webextensions/api/omnibox/setdefaultsuggestion/index.html new file mode 100644 index 0000000000..00d1b30d38 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/omnibox/setdefaultsuggestion/index.html @@ -0,0 +1,58 @@ +--- +title: omnibox.setDefaultSuggestion() +slug: Mozilla/Add-ons/WebExtensions/API/omnibox/setDefaultSuggestion +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - omnibox + - setDefaultSuggestion +translation_of: Mozilla/Add-ons/WebExtensions/API/omnibox/setDefaultSuggestion +--- +<div>{{AddonSidebar()}}</div> + +<p>Définissez la suggestion par défaut à afficher dans la liste déroulante de la barre d'adresse lorsque l'utilisateur commence à interagir avec votre extension.</p> + +<p>Une fois que l'utilisateur a entré votre mot clé et a commencé à interagir avec votre extension, la suggestion par défaut apparaît toujours en premier dans la liste déroulante. Contrairement aux suggestions que vous fournissez dans {{WebExtAPIRef("omnibox.onInputChanged")}}, cet élément ne peut pas être sélectionné. Utilisez-le pour fournir à l'utilisateur des conseils sur ce qu'il doit taper et sur ce qu'il peut s'attendre à voir quand il le fait.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.omnibox.setDefaultSuggestion( + suggestion // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>suggestion</code></dt> + <dd><code>object</code>. Un objet contenant une <code>description</code> de propriété de chaîne unique, qui sera affichée en tant que premier élément dans la liste déroulante lorsque l'utilisateur commence à interagir avec votre extension.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>None.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.omnibox.setDefaultSuggestion")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">browser.omnibox.setDefaultSuggestion({ + description: "Type the name of a CSS property" +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/omnibox"><code>chrome.omnibox</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/omnibox/suggestresult/index.html b/files/fr/mozilla/add-ons/webextensions/api/omnibox/suggestresult/index.html new file mode 100644 index 0000000000..16df731861 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/omnibox/suggestresult/index.html @@ -0,0 +1,43 @@ +--- +title: omnibox.SuggestResult +slug: Mozilla/Add-ons/WebExtensions/API/omnibox/SuggestResult +tags: + - API + - Add-ons + - Extensions + - Reference + - SuggestResult + - Type + - WebExtensions + - omnibox +translation_of: Mozilla/Add-ons/WebExtensions/API/omnibox/SuggestResult +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <strong><code>omnibox.SuggestResult</code></strong> définit une suggestion unique que l'extension peut ajouter à la liste déroulante de la barre d'adresse.</p> + +<p>L'écouteur d'événement {{WebExtAPIRef("omnibox.onInputChanged")}} de l'extension reçoit un rappel. Pour remplir la liste déroulante de la barre d'adresse en réponse à l'entrée de l'utilisateur, l'extension peut transmettre un tableau d'objets <code>omnibox.SuggestResult</code> dans ce rappel.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils ont les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>content</code></dt> + <dd>C'est la valeur qui apparaîtra dans la barre d'adresse elle-même lorsque l'utilisateur mettra cette suggestion en évidence dans la liste déroulante. C'est également la chaîne envoyée à l'écouteur d'événement {{WebExtAPIRef("omnibox.onInputEntered")}} si l'utilisateur sélectionne cette suggestion. Si la chaîne est la même que celle que l'utilisateur a déjà tapée, cette entrée n'apparaîtra pas dans la liste déroulante.</dd> + <dt><code>description</code></dt> + <dd>C'est la chaîne qui est affichée dans la liste déroulante de la barre d'adresse.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.omnibox.SuggestResult")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/omnibox"><code>chrome.omnibox</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pageaction/getpopup/index.html b/files/fr/mozilla/add-ons/webextensions/api/pageaction/getpopup/index.html new file mode 100644 index 0000000000..42c45eb0cc --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pageaction/getpopup/index.html @@ -0,0 +1,114 @@ +--- +title: pageAction.getPopup() +slug: Mozilla/Add-ons/WebExtensions/API/pageAction/getPopup +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getPopup + - pageAction +translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction/getPopup +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient l'URL d'un document HTML en tant que popup pour cette action de page.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingPopup = browser.pageAction.getPopup( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet dont vous souhaitez obtenir la fenêtre contextuelle.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera accompli avec une chaîne contenant l'URL du popup.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.pageAction.getPopup")}}</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Ajoutez un élément de menu contextuel qui enregistre l'URL contextuelle de l'onglet en cours. Notez que vous aurez besoin de la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>contextMenus</code> dans votre <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest</a> pour créer des éléments de menu contextuel.</p> + +<pre class="brush: js">function gotPopup(popupURL) { + console.log(popupURL); +} + +browser.contextMenus.create({ + id: "get-popup", + title: "Get popup URL" +}); + +browser.contextMenus.onClicked.addListener(function(info, tab) { + if (info.menuItemId == "get-popup") { + var gettingPopup = browser.pageAction.getPopup({tabId: tab.id}); + gettingPopup.then(gotPopup); + } +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/pageAction"><code>chrome.pageAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/page_action.json"><code>page_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pageaction/gettitle/index.html b/files/fr/mozilla/add-ons/webextensions/api/pageaction/gettitle/index.html new file mode 100644 index 0000000000..007e76dc17 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pageaction/gettitle/index.html @@ -0,0 +1,109 @@ +--- +title: pageAction.getTitle() +slug: Mozilla/Add-ons/WebExtensions/API/pageAction/getTitle +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getTitle + - pageAction +translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction/getTitle +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient le titre de la page action.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingTitle = browser.pageAction.getTitle( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet contenant l'action page dont vous voulez obtenir le titre.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera accomplie avec une chaîne contenant le titre de l'action de la page.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.pageAction.getTitle")}}</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple enregistre le titre de l'action de la page lorsque l'utilisateur clique sur son icône :</p> + +<pre class="brush: js">function gotTitle(title) { + console.log(`Title ${title}`); +} + +browser.pageAction.onClicked.addListener((tab) => { + var gettingTitle = browser.pageAction.getTitle({ + tabId: tab.id + }); + gettingTitle.then(gotTitle); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/pageAction"><code>chrome.pageAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/page_action.json"><code>page_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pageaction/hide/index.html b/files/fr/mozilla/add-ons/webextensions/api/pageaction/hide/index.html new file mode 100644 index 0000000000..b04cf16fe5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pageaction/hide/index.html @@ -0,0 +1,88 @@ +--- +title: pageAction.hide() +slug: Mozilla/Add-ons/WebExtensions/API/pageAction/hide +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - hide + - pageAction +translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction/hide +--- +<div>{{AddonSidebar()}}</div> + +<p>Masque l'action de page pour un onglet donné.</p> + +<p><code>hide()</code> remplace la correspondance de motifs, de sorte que l'action page ne sera pas affichée dans l'onglet spécifié même si son URL est associée à <a href="https://developer.mozilla.org/Add-ons/WebExtensions/manifest.json/page_action"><code>show_matches</code></a>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.pageAction.hide( + tabId // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet pour lequel vous souhaitez masquer l'action de la page.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.pageAction.hide")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Masquez l'action de la page pour l'onglet en cours lorsque l'utilisateur clique dessus :</p> + +<pre class="brush: js">browser.pageAction.onClicked.addListener((tab) => { + browser.pageAction.hide(tab.id); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/pageAction"><code>chrome.pageAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/page_action.json"><code>page_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pageaction/imagedatatype/index.html b/files/fr/mozilla/add-ons/webextensions/api/pageaction/imagedatatype/index.html new file mode 100644 index 0000000000..896791b3f4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pageaction/imagedatatype/index.html @@ -0,0 +1,68 @@ +--- +title: pageAction.ImageDataType +slug: Mozilla/Add-ons/WebExtensions/API/pageAction/ImageDataType +tags: + - API + - Add-ons + - Extensions + - ImageDataType + - Non-standard + - Reference + - Type + - WebExtensions + - pageAction +translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction/ImageDataType +--- +<div>{{AddonSidebar()}}</div> + +<p>Données en pixel pour une image.</p> + +<h2 id="Type">Type</h2> + +<p>Un objet <code><a href="/fr/docs/Web/API/ImageData">ImageData</a></code> , par exemple à partir d'un élément {{htmlelement("canvas")}}.</p> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.pageAction.ImageDataType")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/pageAction"><code>chrome.pageAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/page_action.json"><code>page_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pageaction/index.html b/files/fr/mozilla/add-ons/webextensions/api/pageaction/index.html new file mode 100644 index 0000000000..aebe33a6cd --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pageaction/index.html @@ -0,0 +1,112 @@ +--- +title: pageAction +slug: Mozilla/Add-ons/WebExtensions/API/pageAction +tags: + - API + - Add-ons + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions + - pageAction +translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction +--- +<div>{{AddonSidebar}}</div> + +<p>Une <a href="/fr/Add-ons/WebExtensions/Page_actions">action de page</a> est une icône cliquable dans la barre d'adresse du navigateur.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/12960/page-action.png" style="display: block; height: 262px; margin-left: auto; margin-right: auto; width: 850px;"></p> + +<p>Vous pouvez écouter les clics sur l'icône, ou spécifié une <a href="/fr/Add-ons/WebExtensions/Popups">fenêtre contextuelle </a>qui s'ouvre lorsque l'icone est cliquée.</p> + +<p>Si vous spécifiez une fenêtre contextuelle, vous pouvez définir son contenu et son comportement en utilisant HTML, CSS et JavaScript, tout comme une page Web normale. Le JavaScript s'exécutant dans la fenêtre contextuelle accède à toutes les mêmes API WebExtension que vos scripts d'arrière-plan.</p> + +<p>Vous pouvez définir la plupart des propriétés d'une action de page de manière déclarative à l'aide de la <a href="/fr/Add-ons/WebExtensions/manifest.json/page_action">clef page_action</a> dans votre <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a>, mais également les redéfinir par programmation en utilisant cette API.</p> + +<p>Les actions de page sont pour des actions qui ne sont pertinentes que pour des pages particulières (comme "favoris dans l'onglet courrant"). S'ils sont pertinents pour le navigateur dans son ensemble (par exemple, "Afficher tous les favoris"), utilisez plutôt une action du navigateur.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("pageAction.ImageDataType")}}</dt> + <dd>Données en pixel pour une image.</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("pageAction.show()")}}</dt> + <dd>Affiche l'action de la page pour un onglet donné.</dd> + <dt>{{WebExtAPIRef("pageAction.hide()")}}</dt> + <dd>Caches l'action de la page pour un onglet donné.</dd> + <dt>{{WebExtAPIRef("pageAction.isShown()")}}</dt> + <dd>Vérifie si l'action de la page est affichée ou non.</dd> + <dt>{{WebExtAPIRef("pageAction.setTitle()")}}</dt> + <dd>Définit le titre de l'action de la page. Ceci est affiché dans une info-bulle sur l'action de la page.</dd> + <dt>{{WebExtAPIRef("pageAction.getTitle()")}}</dt> + <dd>Obtient le titre de l'action de la page</dd> + <dt>{{WebExtAPIRef("pageAction.setIcon()")}}</dt> + <dd>Définit l'icône de l'action de la page.</dd> + <dt>{{WebExtAPIRef("pageAction.setPopup()")}}</dt> + <dd>Définit l'URL de la fenêtre contextuelle de l'action de la page.</dd> + <dt>{{WebExtAPIRef("pageAction.getPopup()")}}</dt> + <dd>Obtient l'URL de la fenêtre d'action de la page.</dd> + <dt>{{WebExtAPIRef("pageAction.openPopup()")}}</dt> + <dd>Ouvre la fenêtre contextuelle de l'action de la page.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("pageAction.onClicked")}}</dt> + <dd>Activé lorsqu'une icône d'action de page est cliquée. Cet événement ne se déclenchera pas si l'action de la page comporte une fenêtre contextuelle.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.pageAction")}}</p> + + + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/pageAction"><code>chrome.pageAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/page_action.json"><code>page_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pageaction/isshown/index.html b/files/fr/mozilla/add-ons/webextensions/api/pageaction/isshown/index.html new file mode 100644 index 0000000000..4bcfa232d5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pageaction/isshown/index.html @@ -0,0 +1,77 @@ +--- +title: pageAction.isShown() +slug: Mozilla/Add-ons/WebExtensions/API/pageAction/isShown +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - isShown + - pageAction +translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction/isShown +--- +<div>{{AddonSidebar()}}</div> + +<p>Renvoie <code>true</code> si l'action de la page est affichée pour l'onglet donné..</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">let gettingIsShown = browser.pageAction.isShown( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Un objet contenant le <code>tabId</code> à vérifier.</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet à vérifier.</dd> + </dl> + </dd> +</dl> + +<dl> + <dd> + <dl class="reference-values"> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec <code>true</code> si l'action de page de l'extension est affichée pour l'onglet donné, et <code>false</code> dans le cas contraire.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.pageAction.isShown")}}</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Vérifiez l'état de l'onglet actuellement actif :</p> + +<pre class="brush: js">async function shownInActiveTab() { + let tabs = await browser.tabs.query({ + currentWindow:true, + active: true + }); + let shown = await browser.pageAction.isShown({ + tabId: tabs[0].id + }); + console.log(shown); +}</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pageaction/onclicked/index.html b/files/fr/mozilla/add-ons/webextensions/api/pageaction/onclicked/index.html new file mode 100644 index 0000000000..ada626da23 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pageaction/onclicked/index.html @@ -0,0 +1,114 @@ +--- +title: pageAction.onClicked +slug: Mozilla/Add-ons/WebExtensions/API/pageAction/onClicked +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onCliecked + - pageAction +translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction/onClicked +--- +<div>{{AddonSidebar}}</div> + +<p>Lancé quand l'icône de la page action est cliquée. Cet événement ne se déclenchera pas si l'action de la page comporte une fenêtre contextuelle.</p> + +<p>Pour définir une action de clic droit, utilisez l'API {{WebExtAPIRef('contextMenus')}} avec l'élément "page_action" {{WebExtAPIRef('contextMenus/ContextType', 'context type', '', 'nocode')}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.pageAction.onClicked.addListener(listener) +browser.pageAction.onClicked.removeListener(listener) +browser.pageAction.onClicked.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez l'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un <code>listener</code> est enregistré pour cet événement. Retourne <code>true</code> s'il écoute, <code>false</code> sinon.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Une fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>tab</code></dt> + <dd>Un objet {{WebExtAPIRef('tabs.Tab')}} représentant l'onglet dont l'action de la page a été cliquée.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.pageAction.onClicked")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Lorsque l'utilisateur clique sur l'action de la page, masquez-là et naviguez dans l'onglet actif pour "<a href="http://chilloutandwatchsomecatgifs.com/">http://chilloutandwatchsomecatgifs.com/</a>" :</p> + +<pre class="brush: js">var CATGIFS = "http://chilloutandwatchsomecatgifs.com/"; + +browser.pageAction.onClicked.addListener((tab) => { + browser.pageAction.hide(tab.id); + browser.tabs.update({url: CATGIFS}); +}); + +browser.pageAction.onClicked.addListener(function () { +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/pageAction"><code>chrome.pageAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/page_action.json"><code>page_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pageaction/openpopup/index.html b/files/fr/mozilla/add-ons/webextensions/api/pageaction/openpopup/index.html new file mode 100644 index 0000000000..7133ca40bd --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pageaction/openpopup/index.html @@ -0,0 +1,58 @@ +--- +title: pageAction.openPopup() +slug: Mozilla/Add-ons/WebExtensions/API/pageAction/openPopup +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - close + - sidebarAction +translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction/openPopup +--- +<div>{{AddonSidebar()}}</div> + +<div>Ouvrez le menu contextuel de l'action de la page.</div> + +<div></div> + +<div> +<p>Vous pouvez uniquement appeler cette fonction à partir du gestionnaire pour une <a href="/fr/Add-ons/WebExtensions/User_actions">action utilisateur</a>.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.pageAction.openPopup() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retourné">Valeur retourné</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue sans arguments.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.pageAction.openPopup", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ouvrez la fenêtre contextuelle lorsque l'utilisateur sélectionne un élément de menu contextuel :</p> + +<pre class="brush: js">browser.menus.create({ + id: "open-popup", + title: "open popup", + contexts: ["all"] +}); + +browser.menus.onClicked.addListener(() => { + browser.pageAction.openPopup(); +});</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pageaction/seticon/index.html b/files/fr/mozilla/add-ons/webextensions/api/pageaction/seticon/index.html new file mode 100644 index 0000000000..223ded5321 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pageaction/seticon/index.html @@ -0,0 +1,130 @@ +--- +title: pageAction.setIcon() +slug: Mozilla/Add-ons/WebExtensions/API/pageAction/setIcon +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - pageAction + - setIcon +translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction/setIcon +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit l'icône de l'action de la page</p> + +<p>Vous pouvez spécifié un seule icône comme chemin d'accès à un fichier image ou un objet {{WebExtAPIRef('pageAction.ImageDataType')}}.</p> + +<p>Vous pouvez spécifier plusieurs icônes de différentes tailles en fournissant un dictionnaire contenant plusieurs chemins ou objets <code>ImageData</code>. Cela signifie que l'icône ne doit pas être mise à l'échelle pour un périphérique avec une densité de pixels différente.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var settingIcon = browser.pageAction.setIcon( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Un objet contenant les propriétés <code>imageData</code> ou <code>path</code> , et éventuellement une propriété <code>tabId</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>imageData</code>{{optional_inline}}</dt> + <dd> + <p><code>{{WebExtAPIRef('pageAction.ImageDataType')}}</code> ou <code><code>object</code></code>. C'est un objet <code>ImageData</code> unique ou un dictionnaire d'objets.</p> + + <p>Utilisation un dictionnaire d'objets pour spécifier de multiple objets <code>ImageData</code> dans différentes tailles, de sorte que l'icône ne doit pas être mise à l'échelle pour un périphérique avec une densité de pixel différente. Si <code>imageData</code> est un dictionnaire, la valeur de chaque propriété est un objet <code>ImageData</code> , et le nom est sa taille, comme ceci :</p> + + <pre class="brush: json line-numbers language-json"><code class="language-json"><span class="punctuation token">{</span> + <span class="key token">16:</span> <span class="string token">image16</span><span class="punctuation token">,</span> + <span class="key token">32:</span> image32 +<span class="punctuation token">}</span></code></pre> + + <p>Le navigateur choisira l'image à utiliser en fonction de la densité de pixels de l'écran. Voir <a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action#Choisir_la_tailles_des_icônes">Choisir les tailles d'icônes</a> pour plus d'informations à ce sujet.</p> + </dd> + <dt><code>path</code>{{optional_inline}}</dt> + <dd> + <p><code><code>string</code></code> ou <code><code>object</code></code>. C'est soit un chemin relatif vers un fichier icône ou objet dictionnaire. </p> + + <p>Utilisez un dictionnaire d'objets pour spécifier plusieurs fichiers d'icônes de différentes tailles, de sorte que l'icône ne doit pas être mise à l'échelle pour un périphérique avec une densité de pixels différente. Si <code>path</code> est un dictionnaire, la valeur de chaque propriété est un chemin relatif, et son nom est sa taille, comme ceci :</p> + + <pre class="brush: json line-numbers language-json"><code class="language-json"><span class="punctuation token">{</span> + <span class="key token">16:</span> "path/to/image16.jpg<span class="punctuation token">",</span> + <span class="key token">32:</span> "path/to/image32.jpg<span class="punctuation token">"</span> +<span class="punctuation token">}</span></code></pre> + + <p>Le navigateur choisira l'image à utiliser en fonction de la densité de pixels de l'écran. Voir <a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action#Choisir_la_tailles_des_icônes">Choisir les tailles d'icônes</a> pour plus d'informations à ce sujet.</p> + </dd> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet dont vous voulez définir l'icône.</dd> + </dl> + + <h3 id="Valeur_retournée">Valeur retournée</h3> + + <p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera accompli sans arguments une fois l'icône définie.</p> + </dd> + <dd> + <h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + <p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + {{Compat("webextensions.api.pageAction.setIcon")}} + + <h2 id="Exemples">Exemples</h2> + + <p>Définissez l'icône de l'action de la page lorsque l'utilisateur clique dessus :</p> + + <pre class="brush: js">browser.pageAction.onClicked.addListener((tab) => { + browser.pageAction.setIcon({ + tabId: tab.id, path: "icons/icon-48.png" + }); +});</pre> + + <p>{{WebExtExamples}}</p> + + <div class="note"><strong>Remerciements :</strong> + + <p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/pageAction"><code>chrome.pageAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/page_action.json"><code>page_action.json</code></a> dans le code de Chromium code.</p> + + <p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> + </div> + + <div class="hidden"> + <pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> + </div> + </dd> +</dl> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pageaction/setpopup/index.html b/files/fr/mozilla/add-ons/webextensions/api/pageaction/setpopup/index.html new file mode 100644 index 0000000000..61024b43b6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pageaction/setpopup/index.html @@ -0,0 +1,107 @@ +--- +title: pageAction.setPopup() +slug: Mozilla/Add-ons/WebExtensions/API/pageAction/setPopup +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - pageAction + - setPopup +translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction/setPopup +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit le document HTML à ouvrir en tant que fenêtre contextuelle lorsque l'utilisateur clique sur l'icône de l'action de la page.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.pageAction.setPopup( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet pour lequel vous souhaitez définir la fenêtre contextuelle.</dd> + <dt><code>popup</code></dt> + <dd><code>string</code>. URL vers le fichier HTML à afficher dans un popup. Si elle est définie sur une chaîne vide (''), aucune fenêtre contextuelle n'est affichée..</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.pageAction.setPopup")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ecoutez les événements {{WebExtAPIRef("tabs.onUpdated")}} et basculez le popup si le statut de chargement change :</p> + +<pre class="brush: js">browser.tabs.onUpdated.addListener((tabId, changeInfo, tabInfo) => { + if (changeInfo.status) { + browser.pageAction.show(tabId); + if (changeInfo.status == "loading") { + browser.pageAction.setPopup({ + tabId, + popup: "/popup/loading.html" + }); + } else { + browser.pageAction.setPopup({ + tabId, + popup: "/popup/complete.html" + }); + } + } +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/pageAction"><code>chrome.pageAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/page_action.json"><code>page_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pageaction/settitle/index.html b/files/fr/mozilla/add-ons/webextensions/api/pageaction/settitle/index.html new file mode 100644 index 0000000000..1f5d49bf49 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pageaction/settitle/index.html @@ -0,0 +1,103 @@ +--- +title: pageAction.setTitle() +slug: Mozilla/Add-ons/WebExtensions/API/pageAction/setTitle +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - pageAction + - setTitle +translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction/setTitle +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit le titre de la page action. Le titre est affiché dans une info-bulle lorsque l'utilisateur survole l'action de la page</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.pageAction.setTitle( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet dont vous voulez définir le titre.</dd> + <dt><code>title</code></dt> + <dd><code>string</code>. Le texte de l'info-bulle.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.pageAction.setTitle")}}</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Chaque fois qu'un onglet est mis à jour, affichez l'action de la page pour cet onglet et définissez son titre pour afficher l'ID de l'onglet :</p> + +<pre class="brush: js">browser.tabs.onUpdated.addListener((tabId, changeInfo, tabInfo) => { + browser.pageAction.show(tabId); + browser.pageAction.setTitle({ + tabId: tabId, + title: "Tab ID: " + tabId + }); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/pageAction"><code>chrome.pageAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/page_action.json"><code>page_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pageaction/show/index.html b/files/fr/mozilla/add-ons/webextensions/api/pageaction/show/index.html new file mode 100644 index 0000000000..c0074f595c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pageaction/show/index.html @@ -0,0 +1,107 @@ +--- +title: pageAction.show() +slug: Mozilla/Add-ons/WebExtensions/API/pageAction/show +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - pageAction + - show +translation_of: Mozilla/Add-ons/WebExtensions/API/pageAction/show +--- +<div>{{AddonSidebar()}}</div> + +<p>Affiche l'action de la page pour un onglet donné. L'action de la page est affichée chaque fois que l'onglet donné est l'onglet actif.</p> + +<p><code>show()</code> remplace la correspondance de motifs, de sorte que l'action page sera affichée dans l'onglet spécifié même si <a href="https://developer.mozilla.org/Add-ons/WebExtensions/manifest.json/page_action"><code>show_matches</code></a> e correspond pas à l'URL ou si <a href="https://developer.mozilla.org/Add-ons/WebExtensions/manifest.json/page_action"><code>hide_matches</code></a> ne correspond pas.</p> + +<p>Notez que l'appel à <code>show()</code> n'a aucun effet sur un onglet sans contenu chargé.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.pageAction.show( + tabId // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet pour lequel vous souhaitez afficher l'action de la page.</dd> + <dt> + <h3 id="Valeur_renvoyée">Valeur renvoyée</h3> + + <p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec <code>undefined</code>.</p> + </dt> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.pageAction.show")}}</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Cette exemple montre l'action de la page pour l'onglet actif lorsque l'utilisateur sélectionne un élément de menu contextuel. Notez que vous aurez besoin de la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>contextMenus</code> dans votre <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest</a> pour créer des éléments de menu contextuel.</p> + +<pre class="brush: js">browser.contextMenus.create({ + id: "show", + title: "Show page action" +}); + +browser.contextMenus.onClicked.addListener(function(info, tab) { + if (info.menuItemId == "show") { + browser.pageAction.show(tab.id); + } +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/pageAction"><code>chrome.pageAction</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/page_action.json"><code>page_action.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/permissions/contains/index.html b/files/fr/mozilla/add-ons/webextensions/api/permissions/contains/index.html new file mode 100644 index 0000000000..dc1a48f63a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/permissions/contains/index.html @@ -0,0 +1,95 @@ +--- +title: permissions.contains() +slug: Mozilla/Add-ons/WebExtensions/API/permissions/contains +tags: + - API + - Add-ons + - Contains + - Method + - Permissions + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/permissions/contains +--- +<div>{{AddonSidebar()}}</div> + +<p>Vérifiez si l'extension a les permissions listées dans l'objet {{WebExtAPIRef("permissions.Permissions")}}.</p> + +<p>L'argument <code>Permissions</code> peut contenir une propriété origine, qui est un tableau de <a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions hôtes</a>, ou une propriété <code>permissions</code> , qui est un tableau de <a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permissions API</a>, ou les deux.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promesse</a></code>. La promesse est remplie avec true seulement si toute l'extension possède actuellement toutes les permissions données. Pour les permissions d'hôtes, si le modèle de permissions if the extension's permissions <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">pattern-match</a> the permissions listed in <code>origins</code>, then they are considered to match.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getContains = browser.permissions.contains( + permissions // Permissions object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>permissions</code></dt> + <dd>Un objet {{WebExtAPIRef("permissions.Permissions")}} .</dd> +</dl> + +<h3 id="Valeur_renvoyée">Valeur renvoyée</h3> + +<p>Une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promesse</a></code> qui sera remplie avec <code>true</code> si l'extension possède déjà toutes les permissions listées dans l'argument des <code>permissions</code> , ou <code>false</code> dans le cas contraire.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.permissions.contains")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">// Extension permissions are: +// "webRequest", "tabs", "*://*.mozilla.org/*" + +var testPermissions1 = { + origins: ["*://mozilla.org/"], + permissions: ["tabs"] +}; + +browser.permissions.contains(testPermissions1).then((result) => { + console.log(result); // true +}); + +var testPermissions2 = { + origins: ["*://mozilla.org/"], + permissions: ["tabs", "alarms"] +}; + +browser.permissions.contains(testPermissions2).then((result) => { + console.log(result); // false, "alarms" doesn't match +}); + +var testPermissions3 = { + origins: ["https://developer.mozilla.org/"], + permissions: ["tabs", "webRequest"] +}; + +browser.permissions.contains(testPermissions3).then((result) => { + console.log(result); // true: "https://developer.mozilla.org/" +}); // matches: "*://*.mozilla.org/*" + +var testPermissions4 = { + origins: ["https://example.org/"] +}; + +browser.permissions.contains(testPermissions4).then((result) => { + console.log(result); // false, "https://example.org/" +}); // does not match + +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/permissions"><code>chrome.permissions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/permissions/getall/index.html b/files/fr/mozilla/add-ons/webextensions/api/permissions/getall/index.html new file mode 100644 index 0000000000..05e516dc19 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/permissions/getall/index.html @@ -0,0 +1,56 @@ +--- +title: permissions.getAll() +slug: Mozilla/Add-ons/WebExtensions/API/permissions/getAll +tags: + - API + - Add-ons + - Method + - Permissions + - Reference + - WebExtensions + - getAll +translation_of: Mozilla/Add-ons/WebExtensions/API/permissions/getAll +--- +<div>{{AddonSidebar()}}</div> + +<p>Récupère un objet {{WebExtAPIRef("permissions.Permissions")}} contenant toutes les permissions actuellement acccordées à l'extension.</p> + +<p>Il s'agit d'une fonction asynchrone qui retourne une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingAll = browser.permissions.getAll() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_renvoyée">Valeur renvoyée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef("permissions.Permissions")}} contenant toutes les permissions actuellement accordées à l'extensions. Cela inclut toutes les permissions que l'extension à répertoriées dans la clé de <code><a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> , et toutes les permissions répertoriées dans <code><a href="/fr/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a></code> que l'extension a été accordée en appelant {{WebExtAPIRef("permissions.request()")}}.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.permissions.getAll")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">// Extension permissions are: +// "webRequest", "tabs", "*://*.mozilla.org/*" + +browser.permissions.getAll().then((result) => { + console.log(result.permissions); // [ "webRequest", "tabs" ] + console.log(result.origins) // [ "*://*.mozilla.org/*" ] +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/permissions"><code>chrome.permissions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/permissions/index.html b/files/fr/mozilla/add-ons/webextensions/api/permissions/index.html new file mode 100644 index 0000000000..b061700bf4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/permissions/index.html @@ -0,0 +1,84 @@ +--- +title: permissions +slug: Mozilla/Add-ons/WebExtensions/API/permissions +tags: + - API + - Add-ons + - Extensions + - Permissions + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/permissions +--- +<div>{{AddonSidebar}}</div> + +<div>Permet aux extensions de demander des permissions supplémentaires lors de l'exécution, après leur installation.</div> + +<div> </div> + +<p>Les extensions ont besoin de permissions pour accéder aux nombreuses API WebExtension les plus puissantes. Ils peuvent demander des permissions lors de l'installation en incluant les permissions dont ils ont besoin dans la clé du manifesst.json des <code><a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code>. Les principaux avantages de demander des permissions au moment de l'installation sont les suivants:</p> + +<ul> + <li>L'utilisateur est seulement demandé une fois, donc il est moins perturbateur pour eux et une décision plus simple</li> + <li>L'extension peut compter sur l'accès aux API dont elle a besoin, car si elle est en cours d'exécution, les permissions ont été accordées.</li> +</ul> + +<p>Il n'y a pas encore d'interface graphique simple permettant aux utilisateurs d'afficher les permissions des modules complémentaires WebExtensions installés. Les utilisateurs doivent utiliser about:debugging, puis allez dans la section des modules complémentaires, puis utilisez le lien "Manifest Url" pour le module complémentaire. Cela montrera le json brut, qui inclut un bloc "permissions" qui montre les permissions utilisées par l'addon.</p> + +<p>Avec l'API de permissions, une extension peut demander des permissions supplémentaires lors de l'exécution. Ces permissions doivent être listées dans la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a></code> du manifest.json. Notez que certaines permissions ne sont pas autorisées dans <code>optional_permissions</code>. Les principaux avantages de ceci sont :</p> + +<ul> + <li>L'extension peut s'exécuter avec un plus petit nombre de permissions, sauf lorsqu'elle en a réellement besoin</li> + <li>L'extension peut gérer le refus de permission de manière gracieuse au lieu de présenter à l'utilisateur un choix global "tout ou rien" au moment de l'installation. Vous pouvez toujours obtenir beaucoup de cette carte d'extension sans lui donner accès à votre emplacement, par exemple.</li> + <li> + <p>L'extension peut avoir besoin des <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions hôtes</a>, mais ne sait pas à l'installation exactement quelles permissions d'hôte qu'il a besoin. Par exemple, la liste des hôtes peut être un paramètre utilisateur. Dans ce scénario, demander une gamme plus spécifique d'hôtes au moment de l'exécution peut être une alternative à demander "<all_urls>" au moment de l'installation.</p> + </li> +</ul> + +<div>Pour utiliser l'API de permissions, déterminez les permissions que votre extension peut demander lors de l'exécution, et indiquez-les dans <code><a href="/fr/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a></code>. Après cela, vous pouvez demander toutes les permissions incluses dans <code>optional_permissions</code>. Les demandes peuvent uniquement être effectuées dans le gestionnaire pour une action de l'utilisateur (par exemple, un gestionnaire de clics).</div> + +<div> </div> + +<div>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 <a href="/Add-ons/WebExtensions/demander_les_bonnes_permissions#Demander_les_permissions_%C3%A0_%C3%A9x%C3%A9cuter">Demande de permissions à exécuter</a></div> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("permissions.Permissions")}}</dt> + <dd>Représente un ensemble de permissions.</dd> +</dl> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("permissions.contains()")}}</dt> + <dd>Découvrez si l'extensions a le jeu de permissions donné.</dd> + <dt>{{WebExtAPIRef("permissions.getAll()")}}</dt> + <dd>Obtenez toutes les permissions que cette extension a actuellement.</dd> + <dt>{{WebExtAPIRef("permissions.remove()")}}</dt> + <dd>Renoncer à un ensemble de permissions.</dd> + <dt>{{WebExtAPIRef("permissions.request()")}}</dt> + <dd>Demander un ensemble de permissions.</dd> +</dl> + +<h2 id="Event_handlers">Event handlers</h2> + +<dl> + <dt>{{WebExtAPIRef("permissions.onAdded")}}</dt> + <dd>Activé lorsqu'une nouvelle permission est accordée.</dd> + <dt>{{WebExtAPIRef("permissions.onRemoved")}}</dt> + <dd>Déclenché lorsque une permission est supprimée.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.permissions")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/permissions"><code>chrome.permissions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/permissions/onadded/index.html b/files/fr/mozilla/add-ons/webextensions/api/permissions/onadded/index.html new file mode 100644 index 0000000000..d746cb9660 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/permissions/onadded/index.html @@ -0,0 +1,75 @@ +--- +title: permissions.onAdded +slug: Mozilla/Add-ons/WebExtensions/API/permissions/onAdded +tags: + - API + - Add-ons + - Evènement + - Permissions + - Reference + - WebExtensions + - onAdded +translation_of: Mozilla/Add-ons/WebExtensions/API/permissions/onAdded +--- +<div>{{AddonSidebar()}}</div> + +<p>Activé lorsque l'extension a accordé de nouvelles permissions.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.permissions.onAdded.addListener(listener) +browser.permissions.onAdded.removeListener(listener) +browser.permissions.onAdded.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute une écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifier si le <code>listener</code> est enregistré pour cet événement. Retourne <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produira. La fonction passera les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>permissions</code></dt> + <dd>Objet {{WebExtAPIRef("permissions.Permissions")}} contenant les permissions qui ont été accordées.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<div>{{Compat("webextensions.api.permissions.onAdded")}}</div> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function handleAdded(permissions) { + console.log(`New API permissions: ${permissions.permissions}`); + console.log(`New host permissions: ${permissions.origins}`); +} + +browser.permissions.onAdded.addListener(handleAdded); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/permissions"><code>chrome.permissions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/permissions/onremoved/index.html b/files/fr/mozilla/add-ons/webextensions/api/permissions/onremoved/index.html new file mode 100644 index 0000000000..9990c0c077 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/permissions/onremoved/index.html @@ -0,0 +1,75 @@ +--- +title: permissions.onRemoved +slug: Mozilla/Add-ons/WebExtensions/API/permissions/onRemoved +tags: + - API + - Add-ons + - Event + - Permissions + - Reference + - WebExtensions + - onRemoved +translation_of: Mozilla/Add-ons/WebExtensions/API/permissions/onRemoved +--- +<div>{{AddonSidebar()}}</div> + +<p>Activé lorsque certaines permissions sont supprimés de l'extension.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.permissions.onRemoved.addListener(listener) +browser.permissions.onRemoved.removeListener(listener) +browser.permissions.onRemoved.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur a supprimée.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré dans l'événement. Retourne <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui ne sera appelée lorsque cet événement se produira. La fonction sera passée avec les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>permissions</code></dt> + <dd>L'objet {{WebExtAPIRef("permissions.Permissions")}} contenant les permissions qui ont été supprimées.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.permissions.onRemoved")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function handleRemoved(permissions) { + console.log(`Removed API permissions: ${permissions.permissions}`); + console.log(`Removed host permissions: ${permissions.origins}`); +} + +browser.permissions.onRemoved.addListener(handleRemoved); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/permissions"><code>chrome.permissions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/permissions/permissions/index.html b/files/fr/mozilla/add-ons/webextensions/api/permissions/permissions/index.html new file mode 100644 index 0000000000..3b88f991c8 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/permissions/permissions/index.html @@ -0,0 +1,41 @@ +--- +title: Permissions +slug: Mozilla/Add-ons/WebExtensions/API/permissions/Permissions +tags: + - API + - Add-ons + - Permissions + - Reference + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/permissions/Permissions +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet <code>Permissions</code> représente une collection de permissions.</p> + +<h2 id="Type">Type</h2> + +<p>Un {{jsxref("object")}} avec les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>origins</code>{{optional_inline}}</dt> + <dd>Un tableau de <a href="/fr/Add-ons/WebExtensions/Match_patterns">modèles de correspondance</a>, représentant les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions de l'hôte</a>.</dd> + <dt><code>permissions</code>{{optional_inline}}</dt> + <dd>Un tableau de permissions nommées, y compris les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permissions d'API </a> et les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Clipboard_access">permissions du presse-papiers</a>.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.permissions.Permissions")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/permissions"><code>chrome.permissions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/permissions/remove/index.html b/files/fr/mozilla/add-ons/webextensions/api/permissions/remove/index.html new file mode 100644 index 0000000000..2a1296e0c2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/permissions/remove/index.html @@ -0,0 +1,70 @@ +--- +title: permissions.remove() +slug: Mozilla/Add-ons/WebExtensions/API/permissions/remove +tags: + - API + - Add-ons + - Method + - Permissions + - Reference + - WebExtensions + - remove +translation_of: Mozilla/Add-ons/WebExtensions/API/permissions/remove +--- +<div>{{AddonSidebar()}}</div> + +<p>Demander d'abandonner les permissions listées dans l'objet {{WebExtAPIRef("permissions.Permissions")}}.</p> + +<p>L'argument <code>Permissions</code> peut contenir soit une propriété <code>origins</code> ,qui est un tableau de <a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions d'hôte</a> , ou une propriété <code>permissions</code>, qui est un tableau de <a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permissions d'API</a>, ou les deux. Les permissions doivent provenir de l'ensemble des permissions définies dans la clé <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a></code> du manifest.json.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promesse</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.permissions.remove( + permissions // Permissions object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>permissions</code></dt> + <dd>Un objet {{WebExtAPIRef("permissions.Permissions")}}.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promesse</a></code> qui sera remplie avec <code>true</code> si les permissions répertoriées dans l'argument <code>permissions</code> ont été supprimées, ou <code>false</code> dans le cas contraire.</p> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.permissions.remove")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code ajoute un gestionnaire de clic qui supprime une permission donnée.</p> + +<pre class="brush: js">const permissionToRemove = { + permissions: ["history"] +} + +function remove() { + console.log("removing"); + browser.permissions.remove(permissionToRemove).then(result => { + console.log(result); + }); +} + +document.querySelector("#remove").addEventListener("click", remove);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/permissions"><code>chrome.permissions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/permissions/request/index.html b/files/fr/mozilla/add-ons/webextensions/api/permissions/request/index.html new file mode 100644 index 0000000000..71e7e947f3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/permissions/request/index.html @@ -0,0 +1,90 @@ +--- +title: permissions.request() +slug: Mozilla/Add-ons/WebExtensions/API/permissions/request +tags: + - API + - Add-ons + - Method + - Permissions + - Reference + - WebExtensions + - request +translation_of: Mozilla/Add-ons/WebExtensions/API/permissions/request +--- +<div>{{AddonSidebar()}}</div> + +<p>Demandez l'ensemble des permissions répertoriées dans l'objet {{WebExtAPIRef("permissions.Permissions")}}.</p> + +<p>L'argument <code>Permissions</code> peut contenir soit une propriété <code>origins</code> , qui est un tableau de <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions d'hôte</a>, soit une propriété <code>permissions</code> , qui est un tableau de <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permissions d'API</a>, ou les deux. Les permissions doivent provenir de l'ensemble des permissions définies dans la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a></code> du manifest.json. La propriété <code>origins</code> qui correspondent à un sous-ensemble des hôtes correspondant à une permission facultative : par exemple, si optional_permissions inclut "*://mozilla.org/", alors <code>permissions.origins</code> peut inclure "https://developer.mozilla.org/".</p> + +<p>La demande ne peut être faite qu'à l'intérieur du gestionnaire pour une <a href="/fr/Add-ons/WebExtensions/User_actions">action utilisateur</a>.</p> + +<p>Selon les circonstances, le navigateur traitera probablement la demande en demandant à l'utilisateur s'il doit accorder les permissions demandées. Une seule requête est faite pour toutes les permissions demandées: donc toutes les permissions sont accordées ou aucune d'entre elles ne l'est.</p> + +<p>Toutes les autorisations accordées sont conservées par l'extension, même en cas de mise à niveau et de désactivation / activation du cycle.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var requesting = browser.permissions.request( + permissions // Permissions object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>permissions</code></dt> + <dd>Un objet {{WebExtAPIRef("permissions.Permissions")}}</dd> +</dl> + +<h3 id="Return_value">Return value</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec <code>true</code> si l'extension a reçu toutes les permissions répertoriées dans l'argument des <code>permissions</code> , ou <code>false</code> dans le cas contraire.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.permissions.request")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code ajoute un gestionnaire de clics qui demande diverses permissions, puis enregistre le résultat de la demande et les permissions de l'extension une fois la requête terminée.</p> + +<pre class="brush: js">const permissionsToRequest = { + permissions: ["bookmarks", "history"], + origins: ["https://developer.mozilla.org/"] +} + +function requestPermissions() { + + function onResponse(response) { + if (response) { + console.log("Permission was granted"); + } else { + console.log("Permission was refused"); + } + return browser.permissions.getAll(); + } + + browser.permissions.request(permissionsToRequest) + .then(onResponse) + .then((currentPermissions) => { + console.log(`Current permissions:`, currentPermissions); + }); +} + +document.querySelector("#request").addEventListener("click", requestPermissions);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Actuellement un <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1411873">bug avec la demande d'origines</a> et la <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1382953">demande des permissions sur la page about:addons</a>.</p> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/permissions"><code>chrome.permissions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pkcs11/getmoduleslots/index.html b/files/fr/mozilla/add-ons/webextensions/api/pkcs11/getmoduleslots/index.html new file mode 100644 index 0000000000..b09cb8feec --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pkcs11/getmoduleslots/index.html @@ -0,0 +1,94 @@ +--- +title: pkcs11.getModuleSlots() +slug: Mozilla/Add-ons/WebExtensions/API/pkcs11/getModuleSlots +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - getModuleSlots + - pkcs11 +translation_of: Mozilla/Add-ons/WebExtensions/API/pkcs11/getModuleSlots +--- +<div>{{AddonSidebar()}}</div> + +<p>Enumérer les emplacements d'un module. Cette fonction renvoie un tableau contenant une entrée pour chaque emplacement. Chaque entrée contient le nom de l'emplacement et, si l'emplacement contient un jeton, des informations sur le jeton.</p> + +<p>Vous ne pouvez appeler cela que pour un module installé dans Firefox</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getting = browser.pkcs11.getModuleSlots( + name // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>name</code></dt> + <dd><code>string</code>. Nom du module. Cela doit correspondre à la propriété <code>name</code> dans le <a href="/fr/Add-ons/WebExtensions/Native_manifests#PKCS_11_manifests">manifest PKCS #11</a> pour le module.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un tableau d'objets, un pour chaque emplacement auquel le module donne accès. Chaque objet a deux propriétés :</p> + +<ul> + <li><code>name</code>: le nom de l'emplacement</li> + <li><code>token</code>: si un jeton est présent dans cet emplacement, un objet <code>Token</code>. Si aucun le jeton n'est présent dans l'emplacement, la propriété est <code>null</code>.</li> +</ul> + +<p><code>Token</code> Les objets ont les propriétés suivantes :</p> + +<dl> + <dt><code>name</code></dt> + <dd><code>string</code>. Nom du jeton.</dd> + <dt><code>manufacturer</code></dt> + <dd><code>string</code>. Nom du jeton fabriqué.</dd> + <dt><code>HWVersion</code></dt> + <dd><code>string</code>. Version matérielle, en tant que numéro de version PKCS #11 (deux entiers 32-bit séparés par un point, comme "1.0".</dd> + <dt><code>FWVersion</code></dt> + <dd><code>string</code>. Version du micrologiciel, en tant que numéro de version PKCS #11 (deux 32-bit séparés par un point, comme "1.0".</dd> + <dt><code>serial</code></dt> + <dd><code>string</code>. Numéro de série, dont le format est défini par la spécification de jeton.</dd> + <dt><code>isLoggedIn</code></dt> + <dd><code>boolean</code>: <code>true</code> si le jeton est déjà connecté, <code>false</code> sinon.</dd> +</dl> + +<p>Si le module n'a pas pu être trouvé ou qu'une autre erreur se produit, la promise sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.pkcs11.getModuleSlots")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Installe un module, puis dresse la liste de ses emplacements et liste des jetons qu'ils contiennent :</p> + +<pre class="brush: js">function onInstalled() { + return browser.pkcs11.getModuleSlots("my_module"); +} + +function onGotSlots(slots) { + for (slot of slots) { + console.log(`Slot: ${slot.name}`); + if (slot.token) { + console.log(`Contains token: ${slot.token.name}`); + } else { + console.log('Is empty'); + } + } +} + +browser.pkcs11.installModule("my_module") +.then(onInstalled) +.then(onGotSlots);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pkcs11/index.html b/files/fr/mozilla/add-ons/webextensions/api/pkcs11/index.html new file mode 100644 index 0000000000..84386b0441 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pkcs11/index.html @@ -0,0 +1,90 @@ +--- +title: Approvisionnement PKCS +slug: Mozilla/Add-ons/WebExtensions/API/pkcs11 +tags: + - API + - Add-ons + - Extensions + - Reference + - WebExtensions + - pkcs11 +translation_of: Mozilla/Add-ons/WebExtensions/API/pkcs11 +--- +<div>{{AddonSidebar}}</div> + +<p>L'API <code>pkcs11</code> permet à une extension d'énumérer les modules de sécurité <a href="https://en.wikipedia.org/wiki/PKCS_11">PKCS #11</a>, et de rendre accessibles au navigateur en tant que sources clés et de certificats.</p> + +<p>Pour utiliser cette API, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "pkcs11".</p> + +<h2 id="Utilisation_de_la_boîte_de_dialogue_Préférences_Firefox_pour_installer_les_modules_PKCS_11">Utilisation de la boîte de dialogue Préférences Firefox pour installer les modules PKCS #11</h2> + +<p>Effectuez les étapes suivantes :</p> + +<ol> + <li> + <p>Sauvegardez le module PKCS #11 dans un emplacement permanent sur votre ordinateur local</p> + </li> + <li> + <p>Sélectonnez <strong>Outils > Options</strong> ou sélectionnez le <strong>menu Firefox</strong> puis <strong>Options</strong></p> + </li> + <li> + <p>Une fois la page Options ouverte, sélectionnez <strong>Vie privée & Sécurité</strong></p> + </li> + <li> + <p>Faites défiler vers le bas de la page et sous <strong>Certificats</strong> ou tapez sur <strong>Dispositifs de sécurité...<br> + <img alt="" src="https://mdn.mozillademos.org/files/16399/device_manager.png" style="border: 1px solid black; display: block; height: 320px; margin: 0px auto; width: 600px;"></strong></p> + </li> + <li> + <p>Cliquez ou appuyez sur le bouton <strong>Charger</strong><br> + <img alt="" src="https://mdn.mozillademos.org/files/16400/load_device_driver.png" style="display: block; margin: 0 auto;"></p> + </li> + <li> + <p>Entrez un nom pour le module de sécurité, tel que "<em>Ma Base de données Client</em>"</p> + + <div class="blockIndicator warning"> + <p>Faites attention à l'utilisation de caractères internationaux car il y a actuellement un bogue dans Firefox où les caractères internationaux peuvent causer des problèmes.</p> + </div> + </li> + <li> + <p>Choisir <strong>Parcourir...</strong> pour trouver l'emplacement du module PKCS #11 sur votre ordinateur local, puis cliquez ou appuyez sur <strong>OK</strong> pour confirmer.</p> + </li> +</ol> + +<ol> +</ol> + +<h2 id="Provisionnement_des_modules_PKCS_11">Provisionnement des modules PKCS #11</h2> + +<div class="blockIndicator note"> +<p><strong>Note:</strong> A partir de Firefox 58, les extensions peuvent utiliser l'API <a href="/fr/Add-ons/WebExtensions/API/pkcs11">pkcs11</a> pour énumérer les modules PKCS #11 et les rendre accessibles au navigateur comme sources de clés et certificats.</p> +</div> + +<p>Il y a 2 pré-requis pour pouvoir utiliser cette API:</p> + +<ul> + <li>un ou plusieurs modules PKCS # 11 doivent être installés sur l'ordinateur de l'utilisateur</li> + <li>pour chaque module PKCS # 11 installé, il doit y avoir un fichier <a href="/fr/Add-ons/WebExtensions/manifests_native">manifest natif</a> qui permet au navigateur de localiser le module.</li> +</ul> + +<p>Très probablement, l'utilisateur ou l'administrateur du périphérique installerait le module <code>PKCS #11</code>, et son installateur installerait le fichier de manifeste natif en même temps.</p> + +<p>Cependant, le module et le manifeste ne peuvent pas être installés dans le cadre du processus d'installation de l'extension.</p> + +<p>Pour plus de détails sur le contenu et l'emplacement du fichier de manifeste, voir <a href="/fr/Add-ons/WebExtensions/Native_manifests">Manifest natifs</a>.</p> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("pkcs11.getModuleSlots()")}}</dt> + <dd>Pour chaque emplacement dans un module, obtenez son nom et s'il contient un jeton.</dd> + <dt>{{WebExtAPIRef("pkcs11.installModule()")}}</dt> + <dd>Installe le module PKCS # 11 nommé</dd> + <dt>{{WebExtAPIRef("pkcs11.isModuleInstalled()")}}</dt> + <dd>Vérifie si le module PKCS # 11 nommé est installé.</dd> + <dt>{{WebExtAPIRef("pkcs11.uninstallModule()")}}</dt> + <dd>Désinstalle le module PKCS # 11 nommé.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.pkcs11", 1, 1)}} {{WebExtExamples("h2")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pkcs11/installmodule/index.html b/files/fr/mozilla/add-ons/webextensions/api/pkcs11/installmodule/index.html new file mode 100644 index 0000000000..c9b87eb44d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pkcs11/installmodule/index.html @@ -0,0 +1,73 @@ +--- +title: pkcs11.installModule() +slug: Mozilla/Add-ons/WebExtensions/API/pkcs11/installModule +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - installModule + - pkcs11 +translation_of: Mozilla/Add-ons/WebExtensions/API/pkcs11/installModule +--- +<div>{{AddonSidebar()}}</div> + +<p>Installe le module PKCS # 11 nommé, le rendant disponible pour Firefox</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var installing = browser.pkcs11.installModule( + name, // string + flags // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>name</code></dt> + <dd><code>string</code>. Nom du module à installer. Cela doit correspondre à la propriété <code>name</code> property dans le <a href="/fr/Add-ons/WebExtensions/Native_manifests#PKCS_11_manifests">manifest PKCS #11</a> pour le module.</dd> + <dt><code>flags</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Drapeaux à transmettre au module.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera accompli sans arguments une fois le module installé.</p> + +<p>Si le module n'a pas pu être trouvé ou qu'une autre erreur se produit, la promise sera rejetée avec un message d'erreur.</p> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.pkcs11.installModule", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Installe un module, puis dresse la liste de ses emplacements et liste les jetons qu'ils contiennent :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onInstalled</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">return</span> browser<span class="punctuation token">.</span>pkcs11<span class="punctuation token">.</span><span class="function token">getModuleSlots</span><span class="punctuation token">(</span><span class="string token">"my_module"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">onGotSlots</span><span class="punctuation token">(</span>slots<span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">for</span> <span class="punctuation token">(</span>slot <span class="keyword token">of</span> slots<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="template-string token"><span class="string token">`Slot: </span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span>slot<span class="punctuation token">.</span>name<span class="interpolation-punctuation punctuation token">}</span></span><span class="string token">`</span></span><span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="keyword token">if</span> <span class="punctuation token">(</span>slot<span class="punctuation token">.</span>token<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="template-string token"><span class="string token">`Contains token: </span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span>slot<span class="punctuation token">.</span>token<span class="punctuation token">.</span>name<span class="interpolation-punctuation punctuation token">}</span></span><span class="string token">`</span></span><span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">'Is empty'</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span> + <span class="punctuation token">}</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>pkcs11<span class="punctuation token">.</span><span class="function token">installModule</span><span class="punctuation token">(</span><span class="string token">"my_module"</span><span class="punctuation token">)</span> +<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>onInstalled<span class="punctuation token">)</span> +<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>onGotSlots<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pkcs11/ismoduleinstalled/index.html b/files/fr/mozilla/add-ons/webextensions/api/pkcs11/ismoduleinstalled/index.html new file mode 100644 index 0000000000..b58f51da37 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pkcs11/ismoduleinstalled/index.html @@ -0,0 +1,57 @@ +--- +title: pkcs11.isModuleInstalled() +slug: Mozilla/Add-ons/WebExtensions/API/pkcs11/isModuleInstalled +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - isModuleInstalled + - pkcs11 +translation_of: Mozilla/Add-ons/WebExtensions/API/pkcs11/isModuleInstalled +--- +<div>{{AddonSidebar()}}</div> + +<p>Vérifie si le module PKCS #11 nommé est actuellement installé dans Firefox.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var checking = browser.pkcs11.isModuleInstalled( + name // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>name</code></dt> + <dd><code>string</code>. Nom du module à vérifier.</dd> +</dl> + +<h3 id="valeur_retournée">valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec <code>true</code> si le module est installé, <code>false</code> sinon.</p> + +<p>Si une erreur se produit dans le module, la promise sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.pkcs11.isModuleInstalled", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Vérifie sir le module nommée "pkcs11_module" est installé :</p> + +<pre class="brush: js">function logIsInstalled(isInstalled) { + console.log(`Module is installed: ${isInstalled}`); +} + +browser.pkcs11.isModuleInstalled("pkcs11_module").then(logIsInstalled);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/pkcs11/uninstallmodule/index.html b/files/fr/mozilla/add-ons/webextensions/api/pkcs11/uninstallmodule/index.html new file mode 100644 index 0000000000..a63cda122f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/pkcs11/uninstallmodule/index.html @@ -0,0 +1,53 @@ +--- +title: pkcs11.uninstallModule() +slug: Mozilla/Add-ons/WebExtensions/API/pkcs11/uninstallModule +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - pkcs11 + - uninstallModule +translation_of: Mozilla/Add-ons/WebExtensions/API/pkcs11/uninstallModule +--- +<div>{{AddonSidebar()}}</div> + +<p>Désinstalle le module PKCS #11 nommé de Firefox.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var uninstalling = browser.pkcs11.uninstallModule( + name // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>name</code></dt> + <dd><code>string</code>. Nom du module à désinstaller. Cela doit correspondre à la propriété <code>name</code> dans le <a href="/fr/Add-ons/WebExtensions/Native_manifests#PKCS_11_manifests">manifest PKCS #11</a> pour le module.</dd> +</dl> + +<h3 id="Return_value">Return value</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera accompli sans arguments une fois le module désinstallée.</p> + +<p>Si le module n'a pas pu être trouvé ou qu'une autre erreur se produit, la promise sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.pkcs11.uninstallModule", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Désinstalle le module nommé "pkcs11_module" :</p> + +<pre class="brush: js">browser.pkcs11.uninstallModule("pkcs11_module");</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/privacy/index.html b/files/fr/mozilla/add-ons/webextensions/api/privacy/index.html new file mode 100644 index 0000000000..f5b20c6494 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/privacy/index.html @@ -0,0 +1,70 @@ +--- +title: privacy +slug: Mozilla/Add-ons/WebExtensions/API/privacy +tags: + - API + - Add-ons + - Extensions + - Privacy + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/privacy +--- +<div>{{AddonSidebar}}</div> + +<p>Accédez et modifiez les différents paramètres du navigateur liés à la vie privée.</p> + +<p>Pour utiliser l'API de confidentialité, vous devez avoir <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">l'autorisation de l'API</a> "privacy".</p> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt>{{WebExtAPIRef("privacy.network")}}</dt> + <dd>Accès et modification des paramètres de confidentialité relatifs au réseau.</dd> + <dt>{{WebExtAPIRef("privacy.services")}}</dt> + <dd>Accès et modification des paramètres de confidentialité relatifs aux services fournis par le navigateur ou les tiers.</dd> + <dt>{{WebExtAPIRef("privacy.websites")}}</dt> + <dd>Accès et modification des paramètres de confidentialité relatifs aux comportements des sites Web.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.privacy", 10, 1)}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/privacy"><code>chrome.privacy</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/privacy/network/index.html b/files/fr/mozilla/add-ons/webextensions/api/privacy/network/index.html new file mode 100644 index 0000000000..dcafa68717 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/privacy/network/index.html @@ -0,0 +1,116 @@ +--- +title: privacy.network +slug: Mozilla/Add-ons/WebExtensions/API/privacy/network +tags: + - API + - Add-ons + - Extensions + - Network + - Pricavy + - Property + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/privacy/network +--- +<div>{{AddonSidebar}} +<p>La propriété {{WebExtAPIRef("privacy.network")}} contient des paramètres de configuration du réseau liés à la vie privée. Chaque propriété est un objet {{WebExtAPIRef("types.BrowserSetting")}}.</p> + +<p>Les valeurs par défaut de ces propriétés peuvent varier selon les navigateurs.</p> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt><code>networkPredictionEnabled</code></dt> + <dd>Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur contenue est un booléen. Si il est défini à <code>true</code>, le navigateur tente d'accélérer la navigation Web avec la pré-résolution des entrées DNS, le pré-chargement des sites (en utilisant, par exemple, <code><link rel='prefetch' ...></code>), et en ouvrant de manière préemptive les connexions TCP et SSL aux serveurs.</dd> + <dt><code>peerConnectionEnabled</code></dt> + <dd>Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur contenue est un booléen. Si il est défini à <code>false</code>, l'interface<code><a href="/fr/docs/Web/API/RTCPeerConnection">RTCPeerConnection</a></code> est désactivée. Notez que <code><a href="/fr/docs/Web/API/MediaDevices/getUserMedia">getUserMedia()</a></code> n'est pas affectée par ce paramètre.</dd> + <dt><code>webRTCIPHandlingPolicy</code></dt> + <dd>Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur contenue est une chaîne de caractères. Ce paramètre permet aux utilisateurs de spécifier les compromissions de performance / confidentialité des médias qui affectent la façon dont le trafic WebRTC sera acheminé et la quantité d'informations d'adresse locale exposées. Il peut prendre l'une des valeurs suivantes :<br> + <code>"default"<br> + "default_public_and_private_interfaces"<br> + "default_public_interface_only"<br> + "disable_non_proxied_udp"</code></dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.privacy.network")}}</p> + +<div class="hidden note"> +<p>The "Chrome incompatibilities" section is included from <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities"> https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a> using the <a href="/en-US/docs/Template:WebExtChromeCompat">WebExtChromeCompat</a> macro.</p> + +<p>If you need to update this content, edit <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities">https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a>, then shift-refresh this page to see your changes.</p> +</div> + +<h2 id="Exemples">Exemples</h2> + +<p>Définissez la propriété <code>webRTCIPHandlingPolicy</code> :</p> + +<pre class="brush: js">function onSet(result) { + if (result) { + console.log("success"); + } else { + console.log("failure"); + } +} + +browser.browserAction.onClicked.addListener(() => { + + var getting = browser.privacy.network.webRTCIPHandlingPolicy.get({}); + getting.then((got) => { + console.log(got.value); + if ((got.levelOfControl === "controlled_by_this_extension") || + (got.levelOfControl === "controllable_by_this_extension")) { + var setting = browser.privacy.network.webRTCIPHandlingPolicy.set({ + value: "default_public_interface_only" + }); + setting.then(onSet); + } else { + console.log("Not able to set webRTCIPHandlingPolicy"); + } + }); + +}); + +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/privacy"><code>chrome.privacy</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/privacy.json"><code>privacy.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/privacy/services/index.html b/files/fr/mozilla/add-ons/webextensions/api/privacy/services/index.html new file mode 100644 index 0000000000..b99a4f94bd --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/privacy/services/index.html @@ -0,0 +1,60 @@ +--- +title: privacy.services +slug: Mozilla/Add-ons/WebExtensions/API/privacy/services +tags: + - API + - Add-ons + - Extensions + - Privacy + - Property + - Reference + - Services +translation_of: Mozilla/Add-ons/WebExtensions/API/privacy/services +--- +<div>{{AddonSidebar}} +<p>La propriété {{WebExtAPIRef("privacy.services")}} contient des paramètres liés à la vie privée contrôlant les services offerts par le navigateur ou par des tiers. Chaque propriété est un objet {{WebExtAPIRef("types.BrowserSetting")}}.</p> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt><code>passwordSavingEnabled</code></dt> + <dd>Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur contenue est un booléen. Si il est défini à <code>true</code>, le gestionnaire de mot de passe du navigateur proposera de stocker des mots de passe lorsque l'utilisateur les entrera. La valeur par défaut est : <code>true</code>.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.privacy.services", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Désactivation, si possible, du gestionnaire de mot de passe.</p> + +<pre class="brush: js">function onSet(result) { + if (result) { + console.log("success"); + } else { + console.log("failure"); + } +} + + var getting = browser.privacy.services.passwordSavingEnabled.get({}); + getting.then((got) => { + console.log(got.value); + if ((got.levelOfControl === "controlled_by_this_extension") || + (got.levelOfControl === "controllable_by_this_extension")) { + var setting = browser.privacy.services.passwordSavingEnabled.set({ + value: false + }); + setting.then(onSet); + } else { + console.log("Not able to set passwordSavingEnabled"); + } + });</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/privacy"><code>chrome.privacy</code></a>.</p> +</div> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/privacy/websites/index.html b/files/fr/mozilla/add-ons/webextensions/api/privacy/websites/index.html new file mode 100644 index 0000000000..da0950945a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/privacy/websites/index.html @@ -0,0 +1,160 @@ +--- +title: privacy.websites +slug: Mozilla/Add-ons/WebExtensions/API/privacy/websites +tags: + - API + - Add-ons + - Extensions + - Privacy + - Property + - Reference + - WebExtensions + - websites +translation_of: Mozilla/Add-ons/WebExtensions/API/privacy/websites +--- +<div>{{AddonSidebar}} +<p>La propriété {{WebExtAPIRef("privacy.websites")}} contient les paramètres liés à la vie privée qui contrôlent la façon dont le navigateur interargit avec les sites web. Chaque propriété est un objet {{WebExtAPIRef("types.BrowserSetting")}}.</p> + +<p>Les valeurs par défaut de ces propriétés ont tendance à varier selon les navigateurs.</p> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt><code>cookieConfig</code></dt> + <dd> + <p>Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur sous-jacente est un objet.</p> + + <p>L'objet a deux propriétés :</p> + + <ul> + <li><code>behavior</code>: une chaîne qui peut prendre l'une des valeurs suivantes: + + <ul> + <li>"allow_all": accepte tous les cookies</li> + <li>"reject_all": rejeter tous les cookies</li> + <li>"reject_third_party": rejeter tous les cookies tiers</li> + <li>"allow_visited" : accepte un cookie tiers uniquement si le domaine de premier niveau du cookie contient déjà au moins un cookie.</li> + <li>"reject_trackers": rejeter les cookies de suivi</li> + </ul> + </li> + <li><code>nonPersistentCookies</code>: un booléen. Si la valeur est true, tous les cookies seront traités comme des cookies de session.</li> + </ul> + </dd> + <dt><code>firstPartyIsolate</code></dt> + <dd> + <p>Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur sous-jacente est un booléen.</p> + + <p>SI <code>true</code>, la préférence <code>firstPartyIsolate</code> permet au navigateur d'associer toutes les données (y compris les cookies, les données HSTS, les images mises en cache, etc.) pour tous les domaines tiers avec le domaine dans la barre d'adresse. Cela empêche les suiveurs tiers d'utiliser directement les informations stockées pour identifier l'utilisateur sur différents sites Web, mais peut interrompre les sites Web dans lesquels l'utilisateur se connecte avec un compte tiers (tel qu'un compte Facebook ou Google).</p> + + <p>Par défaut à <code>false</code>.</p> + </dd> + <dt><code>hyperlinkAuditingEnabled</code></dt> + <dd>Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur sous-jacente est un booléen. Si <code>true</code>, le navigateur envoie des pings d'audit lorsqu'un site web utilise l'attribut <code>ping</code> pour les demander.</dd> + <dt><code>protectedContentEnabled</code></dt> + <dd>Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur sous-jacente est un booléen. Disponible uniquement sur Windows. Si<code>true</code>, le navigateur fournit un ID unique aux plugins afin d'exécuter le contenu protégé.</dd> + <dt><code>referrersEnabled</code></dt> + <dd>Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur sous-jacente est un booléen. Si activé, le navigateur envoie les en-têtes de <a href="/en-US/docs/Web/HTTP/Headers/Referer">référence</a> avec vos demandes.</dd> + <dt><code>resistFingerprinting</code></dt> + <dd> + <p>Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur sous-jacente est un booléen.</p> + + <p>Les empreintes digitales des navigateurs sont la pratique par laquelle les sites Web utilisent les API Web pour collecter des données d'état ou de configuration associées au navigateur ou à l'appareil sur lequel il s'exécute. En faisant cela, ils peuvent construire une empreinte numérique qu'ils peuvent utiliser pour identifier et suivre un utilisateur particulier.</p> + + <p>Si <code>true</code>, la préférence <code>resistFingerprinting</code> signale au navigateur des informations usurpées génériques pour les données couramment utilisées pour les empreintes digitales. Ces données incluent le nombre de cœurs de processeur, la précision des temporisateurs JavaScript et le fuseau horaire local. Il désactive également les fonctionnalités utilisées pour la prise d'empreintes digitales, telles que la prise en charge de GamePad et les API WebSpeech et Navigator.</p> + + <p>Par défaut à <code>false</code>.</p> + </dd> + <dt><code>thirdPartyCookiesAllowed</code></dt> + <dd>Un objet {{WebExtAPIRef("types.BrowserSetting")}} dont la valeur sous-jacente est un booléen. Si <code>false</code>, le navigateur bloque les <a href="/en-US/docs/Web/HTTP/Cookies#Third-party_cookies">cookies tiers</a>.</dd> + <dt><code>trackingProtectionMode</code></dt> + <dd> + <p>La "protection de suivi" est une fonctionnalité de navigateur qui bloque les requêtes faites sur des domaines qui sont connus pour s'engager dans le suivi multi-sites des utilisateurs. Les sites qui suivent les utilisateurs sont généralement des sites publicitaires et analytiques tiers. Ce paramètre est un objet {{WebExtAPIRef("types.BrowserSetting")}} qui détermine si le navigateur doit activer la protection de suivi. Sa valeur sous-jacente est une chaîne qui peut prendre l'une des trois valeurs :</p> + + <ul> + <li><code>"always"</code>: La protection de suivi est activée.</li> + <li><code>"never"</code>: La protection de suivi est désactivée.</li> + <li><code>"private_browsing"</code>: La protection de suivi est activée uniquement dans les fenêtres de navigation privée.</li> + </ul> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.privacy.websites")}}</p> + +<div class="hidden note"> +<p>The "Chrome incompatibilities" section is included from <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities"> https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a> using the <a href="/en-US/docs/Template:WebExtChromeCompat">WebExtChromeCompat</a> macro.</p> + +<p>If you need to update this content, edit <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities">https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a>, then shift-refresh this page to see your changes.</p> +</div> + +<h2 id="Exemples">Exemples</h2> + +<p>Définissez la propriété <code>hyperlinkAuditingEnabled</code> .</p> + +<pre class="brush: js">function onSet(result) { + if (result) { + console.log("success"); + } else { + console.log("failure"); + } +} + +browser.browserAction.onClicked.addListener(() => { + + var getting = browser.privacy.websites.hyperlinkAuditingEnabled.get({}); + getting.then((got) => { + console.log(got.value); + if ((got.levelOfControl === "controlled_by_this_extension") || + (got.levelOfControl === "controllable_by_this_extension")) { + var setting = browser.privacy.websites.hyperlinkAuditingEnabled.set({ + value: true + }); + setting.then(onSet); + } else { + console.log("Not able to set hyperlinkAuditingEnabled"); + } + }); + +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/privacy"><code>chrome.privacy</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/privacy.json"><code>privacy.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/proxy/index.html b/files/fr/mozilla/add-ons/webextensions/api/proxy/index.html new file mode 100644 index 0000000000..83cebd6fdf --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/proxy/index.html @@ -0,0 +1,68 @@ +--- +title: proxy +slug: Mozilla/Add-ons/WebExtensions/API/proxy +tags: + - API + - Add-ons + - Proxy + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/proxy +--- +<div>{{AddonSidebar}}</div> + +<div class="blockIndicator warning"> +<p><strong>Avertissement</strong><br> + Vous ne devez pas utiliser la fonction {{WebExtAPIRef("proxy.register()")}} ou la fonction {{WebExtAPIRef("proxy.unregister()")}} pour enregistrer et supprimer le fichier <a href="/en-US/Add-ons/WebExtensions/API/proxy/register#PAC_file_specification">Proxy Auto-Configuration (PAC)</a>. Cette API était dépréciée dans Firefox 68 et sera supprimée de Firefox 71.</p> +</div> + +<p>Utilisez l'API proxy pour les requêtes Web proxy. Vous pouvez utiliser l'écouteur d'événement {{WebExtAPIRef("proxy.onRequest")}}} pour intercepter les requêtes web, et retourner un objet qui décrit si et comment les proxyer.</p> + +<p>L'avantage de l'approche <code>proxy.onRequest</code> est que le code qui implémente votre stratégie de proxy s'exécute dans le script d'arrière-plan de votre extension pour accéder aux API WebExtension disponibles pour votre extension (y compris, par exemple, l'accès au <code><a href="/fr/Add-ons/WebExtensions/API/storage">stockage</a></code> et au réseau de votre extension APIs comme <code><a href="/fr/Add-ons/WebExtensions/API/dns">dns</a></code>).</p> + +<p>En dehors de cette API, les extensions peuvent également utiliser la propriété <code><a href="/fr/Add-ons/WebExtensions/API/browserSettings/proxyConfig">browserSettings.proxyConfig</a></code> pour configurer les paramètres proxy globaux.</p> + +<p>Google Chrome fournit <a href="https://developer.chrome.com/extensions/proxy">une API d'extension également appelée "proxy"</a> qui est fonctionnellement similaire à cette API, dans la mesure où les extensions peuvent l'utiliser pour implémenter une politique de proxy. Cependant, la conception de l'API Chrome est complètement différente de cette API. Étant donné que cette API est incompatible avec l'API de <code>proxy</code> Chrome, cette API est uniquement disponible via l'espace de noms du <code>navigateur</code>.</p> + +<p>Pour utiliser cette API, vous devez disposer de la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "proxy". De plus, lorsque vous voulez intercepter des requêtes, vous avez également besoin de la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission de l'hôte</a> pour les URL des requêtes interceptées</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("proxy.ProxyInfo")}}</dt> + <dd>Décrit un proxy.</dd> + <dt>{{WebExtAPIRef("proxy.RequestDetails")}}</dt> + <dd> + <p>Contient des informations sur une requête Web que le navigateur est sur le point de faire.</p> + </dd> +</dl> + +<h2 id="Properties">Properties</h2> + +<dl> + <dt>{{WebExtAPIRef("proxy.settings")}}</dt> + <dd>Obtenir et définir les paramètres de proxy.</dd> +</dl> + +<h2 id="Functions">Functions</h2> + +<dl> + <dt>{{WebExtAPIRef("proxy.register()")}}</dt> + <dd>Enregistre le script proxy donné.</dd> + <dt>{{WebExtAPIRef("proxy.unregister()")}}</dt> + <dd>Annule l'inscription du script proxy.</dd> +</dl> + +<h2 id="Events">Events</h2> + +<dl> + <dt>{{WebExtAPIRef("proxy.onError")}}</dt> + <dd>Lancé lorsque le système rencontre une erreur lors de l'exécution du script PAC ou de l'écouteur <code>onRequest</code>.</dd> + <dt>{{WebExtAPIRef("proxy.onRequest")}}</dt> + <dd>Déclenché lorsqu'une requête Web est sur le point d'être effectuée, ce qui donne à l'extension l'opportunité de l'utiliser comme proxy.</dd> +</dl> + +<p>{{WebExtExamples("h2")}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.proxy")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/proxy/onproxyerror/index.html b/files/fr/mozilla/add-ons/webextensions/api/proxy/onproxyerror/index.html new file mode 100644 index 0000000000..fb5e7df4e5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/proxy/onproxyerror/index.html @@ -0,0 +1,60 @@ +--- +title: proxy.onProxyError +slug: Mozilla/Add-ons/WebExtensions/API/proxy/onProxyError +tags: + - API + - Add-ons + - Event + - Proxy + - Reference + - WebExtensions + - onProxyError +translation_of: Mozilla/Add-ons/WebExtensions/API/proxy/onError +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé en cas d'erreur lors de l'évaluation du fichier PAC ou l'écouteur <code>onRequest</code>.</p> + +<p>L'erreur peut être déclenchée en lançant ou renvoyant une valeur invalide dans le gestionnaire d'événements proxy.onRequest.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.proxy.onError.addListener(listener) +browser.proxy.onError.removeListener(listener) +browser.proxy.onError.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si l'<code>écouteur</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>newState</code></dt> + <dd><code>Object</code>. Un objet <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Error">Error</a> représentant l'erreur.</dd> + </dl> + </dd> +</dl> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.proxy.onError")}}</p> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/proxy/onrequest/index.html b/files/fr/mozilla/add-ons/webextensions/api/proxy/onrequest/index.html new file mode 100644 index 0000000000..5510f36a7c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/proxy/onrequest/index.html @@ -0,0 +1,107 @@ +--- +title: proxy.onRequest +slug: Mozilla/Add-ons/WebExtensions/API/proxy/onRequest +tags: + - API + - Add-ons + - Event + - Extensions + - Proxy + - Reference + - WebExtensions + - onRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/proxy/onRequest +--- +<div>{{AddonSidebar()}}</div> + +<p>Déclenché lorsqu'une requête Web est sur le point d'être effectuée, pour donner à l'extension la possibilité de l'utiliser comme proxy.</p> + +<p>Cet événement est étroitement modélisé sur les événements définis dans l'API <code><a href="/fr/Add-ons/WebExtensions/API/webRequest">webRequest</a></code> Comme ces événements, sa fonction <code>addListener()</code> prend trois arguments :</p> + +<ul> + <li>l'écouteur qui sera appelé lorsque l'événement est déclenché.</li> + <li>Un objet <code><a href="/fr/Add-ons/WebExtensions/API/webRequest/RequestFilter">RequestFilter</a></code> contrôlant quelles requêtes provoquent le déclenchement de l'événement.</li> + <li>un tableau de chaînes pour contrôler d'autres aspects du comportement de l'événement.</li> +</ul> + +<p>L'événement est déclenché avant l'un des événements <code>webRequest</code> pour la même demande.</p> + +<p>Lorsque l'événement est déclenché, l'écouteur est appelé avec un objet contenant des informations sur la requête. L'écouteur renvoie un objet {{WebExtAPIRef("proxy.ProxyInfo")}} représentant un proxy à utiliser (ou un tableau de tels objets, permettant au navigateur de basculer si un proxy est inaccessible).</p> + +<p>Pour utiliser <code>proxy.onRequest</code>, une extension doit avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission API</a> "proxy" , ainsi que la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission d'hôte</a> pour les URL des requêtes qu'elle intercepte - ela signifie essentiellement que les modèles de correspondance de l'argument <code>filter</code> doivent être un sous-ensemble de l'extension autorisations de l'hôte.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.proxy.onRequest.addListener( + listener, // function + filter, // object + extraInfoSpec // optional array of strings +) +browser.proxy.onRequest.removeListener(listener) +browser.proxy.onRequest.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener, filter, extraInfoSpec)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>listener</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction passera un seul argument, qui est un objet {{WebExtAPIRef("proxy.RequestDetails")}} contenant les détails de la requête.</p> + + <p>L'écouteur peut renvoyer l'un des éléments suivants:</p> + + <ul> + <li>un objet {{WebExtAPIRef("proxy.ProxyInfo")}}</li> + <li>un tableau d'objets <code>proxy.ProxyInfo</code></li> + <li>Une <code>Promise</code> qui se résout en un objet <code>ProxyInfo</code></li> + <li>Une <code>Promise</code> qui résout en un tableau d'objets <code>ProxyInfo</code>.</li> + </ul> + + <p>Si l'écouteur renvoie un tableau, ou une Promesse qui se résout en un tableau, alors tous les objets<code>ProxyInfo</code> après le premier représentent les basculements: si le proxy à la position N dans le tableau n'est pas accessible quand son <code>ProxyInfo.failoverTimeout</code> alors le navigateur essayez le proxy à la position N+1.</p> + + <p>S'il y a une erreur spécifiant les objets <code>proxy.ProxyInfo</code> objects, alors {{WebExtAPIRef("proxy.onError")}} sera appelé.</p> + </dd> + <dt><code>filter</code></dt> + <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un ensemble de filtres qui limite les événements qui seront envoyés à cet écouteur.</dd> + <dt><code>extraInfoSpec</code> {{optional_inline}}</dt> + <dd><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous pouvez passer une seule valeur<span class="im">, <code>"requestHeaders"</code>, </span>pour inclure les en-têtes de demande dans l'objet de<span class="im"> <code>details</code> </span>transmis à l'écouteur<span class="im">.</span></dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.proxy.onRequest", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code intercepte les requêtes à <code><all_urls></code>, et les envoie par procuration si elles ne sont pas destinées à un cadre de premier niveau.</p> + +<pre class="brush: js">function shouldProxyRequest(requestInfo) { + return requestInfo.parentFrameId != -1; +} + +function handleProxyRequest(requestInfo) { + if (shouldProxyRequest(requestInfo)) { + console.log(`Proxying: ${requestInfo.url}`); + return {type: "http", host: "127.0.0.1", port: 65535}; + } + return {type: "direct"}; +} + +browser.proxy.onRequest.addListener(handleProxyRequest, {urls: ["<all_urls>"]});</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/proxy/proxyinfo/index.html b/files/fr/mozilla/add-ons/webextensions/api/proxy/proxyinfo/index.html new file mode 100644 index 0000000000..f0b693855a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/proxy/proxyinfo/index.html @@ -0,0 +1,63 @@ +--- +title: proxy.ProxyInfo +slug: Mozilla/Add-ons/WebExtensions/API/proxy/ProxyInfo +tags: + - Add-ons + - Extensions + - Proxy + - ProxyInfo + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/proxy/ProxyInfo +--- +<div>{{AddonSidebar()}}</div> + +<p>Contient des informations sur un proxy. Cet objet, ou un tableau de ces objets, est renvoyé par le programme d'écoute à {{WebExtAPIRef("proxy.onRequest")}}. Il indique au navigateur si la requête doit être mandatée et, dans l'affirmative, quel proxy utiliser.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>type</code></dt> + <dd> + <p><code>string</code>. Cela indique s'il faut utiliser un proxy et, dans l'affirmative, quel type de proxy utiliser. Il peut prendre l'une des valeurs suivantes :</p> + + <ul> + <li><code>"direct"</code>: ne pas utiliser la requête par procuration. Si cette valeur est donnée, toutes les autres propriétés de cet objet sont ignorées.</li> + <li><code>"http"</code>: HTTP proxy (ou SSL CONNECT pour HTTPS)</li> + <li><code>"https"</code>: HTTP proxying via TLS connection au proxy</li> + <li><code>"socks"</code>: proxy SOCKS v5</li> + <li><code>"socks4"</code>: proxy SOCKS v4</li> + </ul> + </dd> + <dt><code>host</code></dt> + <dd><code>string</code>. Le nom d'hôte du serveur proxy. Obligatoire sauf si le <code>type</code> est <code>"direct"</code>.</dd> + <dt><code>port</code></dt> + <dd><code>string</code>. e numéro de port du serveur proxy. Obligatoire sauf si le <code>type</code> est <code>"direct"</code>.</dd> + <dt><code>username</code></dt> + <dd><code>string</code>. Nom d'utilisateur pour le service proxy. Ceci est utilisable avec "socks". Pour les autorisations de proxy HTTP, utilisez <a href="/fr/Add-ons/WebExtensions/API/webRequest/onAuthRequired" title="Fired when the server sends a 401 or 407 status code: that is, when the server is asking the client to provide authentication credentials such as a username and password."><code>webRequest.onAuthRequired</code></a>.</dd> + <dt><code>password</code></dt> + <dd><code>string</code>. Mot de passe pour le service proxy. Ceci est utilisable avec "socks". FPour les autorisations de proxy HTTP, utilisez <a href="/fr/Add-ons/WebExtensions/API/webRequest/onAuthRequired" title="Fired when the server sends a 401 or 407 status code: that is, when the server is asking the client to provide authentication credentials such as a username and password."><code>webRequest.onAuthRequired</code></a>.</dd> + <dt><code>proxyDNS</code></dt> + <dd><code>boolean</code>. Si vrai, le serveur proxy est utilisé pour résoudre certaines requêtes DNS (uniquement utilisable avec <code>"socks4"</code> et <code>"socks"</code>). Par défaut à <code>false</code>.</dd> + <dt><code>failoverTimeout</code></dt> + <dd><code>number</code>: Délais de basculement en secondes. Si la connexion ne parvient pas à connecter le serveur proxy après ce nombre de secondes, le serveur proxy suivant dans le tableau renvoyé par l'écouteur <code>proxy.onRequest</code> sera utilisé.</dd> +</dl> + +<dl> + <dt><code>proxyAuthorizationHeader</code></dt> + <dd><code>string.</code> Cette chaîne, si elle est définie sur non-vide, est passée directement en valeur à l'en-tête de requête {{httpheader("Proxy-Authorization")}} envoyé aux proxies HTTP dans le cadre des requêtes HTTP ordinaires et des requêtes CONNECT. Simplement dit, ceci peut être utilisé pour s'authentifier directement sur les proxies HTTP nécessitant une authentification (non contestable).<br> + <br> + Par exemple, si vous voulez envoyer "nom d'utilisateur" et "mot de passe" pour l'authentification "basique", vous pouvez définir la propriété <code>proxyAuthorizationHeader</code> à <code>Basic dXNlcm5hbWU6cGFzc3dvcmQ=</code></dd> + <dt><code>connectionIsolationKey </code> {{optional_inline}}</dt> + <dd><code>string.</code> Une clé optionnelle utilisée pour l'isolation supplémentaire de cette connexion proxy.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.proxy.ProxyInfo")}}</p> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/proxy/register/index.html b/files/fr/mozilla/add-ons/webextensions/api/proxy/register/index.html new file mode 100644 index 0000000000..1d64b5a5e3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/proxy/register/index.html @@ -0,0 +1,161 @@ +--- +title: proxy.register() +slug: Mozilla/Add-ons/WebExtensions/API/proxy/register +tags: + - API + - Add-ons + - Function + - Méthode + - Proxy + - Reference + - WebExtensions + - register + - registerProxyScript +translation_of: Mozilla/Add-ons/WebExtensions/API/proxy/register +--- +<p>{{AddonSidebar()}} {{deprecated_header}}</p> + +<p>Cette méthode était obsolète dans Firefox 68 et sera supprimée de Firefox 71. Dans Firefox 68 ou une version ultérieure, l'appel de cette méthode enregistre un message d'erreur sur la console :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/16799/proxy_register_warning.png" style="border: 1px solid black; display: block; height: 65px; margin: 0px auto; width: 800px;"></p> + +<p>Enregistre un <a href="/fr/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_%28PAC%29_file">fichier PAC (Proxy Auto-Configuration)</a>. Le fichier est exécuté immédiatement, et sa fonction <code>FindProxyForURL()</code> sera appelée pour toutes les demandes HTTP, HTTPS ou FTP.</p> + +<p>Si les fichiers PAC sont enregistrés par plusieurs extensions, les demandes seront initialement transmises à celle qui a été enregistrée en premier.</p> + +<ul> + <li>Si la fonction <code>FindProxyForURL()</code> dans le premier PAC renvoie "DIRECT" pour une demande, alors la demande sera transmise inchangée à la fonction <code>FindProxyForURL()</code> dans le prochain PAC.</li> + <li>Si la fonction <code>FindProxyForURL()</code> dans le premier PAC transfère la requête en renvoyant "PROXY" ou une autre valeur proxy, l'URL du proxy sera transmise à la fonction <code>FindProxyForURL()</code> dans le prochain PAC.</li> +</ul> + +<p>Chaque extension ne peut enregistrer qu'un seul fichier PAC : si vous appelez <code>register()</code> deux fois, le second fichier PACremplacera le premier.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Communiquez_avec_les_fichiers_PAC">Communiquez avec les fichiers PAC</h2> + +<p>Vous pouvez échanger des messages entre le fichier PAC et la page d'arrière-plan de votre extension (ou toute autre page privilégiée, comme les pages contextuelles) en utilisant <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage">runtime.sendMessage()</a></code> et <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage">runtime.onMessage</a></code>.</p> + +<p>Pour envoyer un message au fichier PAC, vous devez définir l'option <code>toProxyScript</code> :</p> + +<pre class="brush: js">// background.js + +// Log any messages from the proxy. +browser.runtime.onMessage.addListener((message, sender) => { + if (sender.url === browser.extension.getURL(proxyScriptURL)) { + console.log(message); + } +}); + +let messageToProxy = { + enabled: true, + foo: "A string", + bar: 1234 +}; + +browser.runtime.sendMessage(messageToProxy, {toProxyScript: true});</pre> + +<pre class="brush: js">// pac.js + +browser.runtime.onMessage.addListener((message) => { + if (message.enabled) { + browser.runtime.sendMessage("I'm enabled!"); + } +});</pre> + +<h2 id="Spécification_de_fichier_PAC">Spécification de fichier PAC</h2> + +<p>La syntaxe de base du fichier PAC est décrite dans la <a href="/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file">documentation PAC</a>, mais l'implémentation utilisée par l'API proxy diffère de la conception PAC standard de différentes manières, décrites dans cette section.</p> + +<h3 id="Valeur_retournée_FindProxyForURL">Valeur retournée FindProxyForURL()</h3> + +<p>La norme <code>FindProxyForURL()</code> <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_%28PAC%29_file#Return_value_format">renvoie une chaîne</a>. Dans Firefox 55 et 56, le fichier PAC utilisé avec l'API proxy renvoie également une chaîne. Dans Firefox 55 <em>seulement</em>, vous devez passer un argument à la valeur de retour "DIRECT", même s'il n'a pas besoin d'argument.</p> + +<p>À partir de Firefox 57, <code>FindProxyForURL()</code> peut toujours renvoyer une chaîne, mais peut également (et de préférence) renvoyer un tableau d'objets {{WebExtAPIRef("proxy.ProxyInfo")}}.</p> + +<p>Si le tableau contient plus d'un objet, alors tous les objets <code>ProxyInfo</code> après le premier représentent les basculements : si le proxy à la position N dans le tableau n'est pas accessible quand son <code>ProxyInfo.failoverTimeout</code> expire, alors le navigateur essaiera le proxy à la position N + 1.</p> + +<p>Par exemple :</p> + +<pre class="brush: js" id="ct-0">const proxySpecification = [ + { + type: "socks", + host: "foo.com", + port: 1080, + proxyDNS: true, + failoverTimeout: 5 + }, + { + type: "socks", + host: "bar.com", + port: 1060, + } +];</pre> + +<p>Le premier proxy dans le tableau sera essayé en premier. S'il ne répond pas dans <code>failoverTimeout</code> secondes, le prochain sera essayé, jusqu'à ce que la fin du tableau est atteint.</p> + +<h3 id="Environnement_du_fichier_PAC">Environnement du fichier PAC</h3> + +<p>Les fonctions globales d'assistance généralement disponibles pour les fichiers PAC (<code><a href="/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file#isPlainHostName()_2">isPlainHostName()</a></code>, <code><a href="/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file#dnsDomainIs()">dnsDomainIs()</a></code>, etc) ne sont pas disponibles.</p> + +<p>Le code qui s'exécute dans le fichier PAC n'a pas accès à :</p> + +<ul> + <li>outes les fonctions DOM (par exemple, <a href="/en-US/docs/Web/API/Window">window</a> ou l'une de ses propriétés)</li> + <li>les API WebExtension sauf <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage">runtime.sendMessage()</a></code> et <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage">runtime.onMessage</a></code></li> + <li>l' <a href="/en-US/docs/Web/API/Console">API console</a> - pour consigner les messages d'un PAC, envoyez un message au script d'arrière-plan :</li> +</ul> + +<pre class="brush: js">// pac.js + +// send the log message to the background script +browser.runtime.sendMessage(`Proxy-blocker: blocked ${url}`);</pre> + +<pre class="brush: js">// background-script.js + +function handleMessage(message, sender) { + // only handle messages from the proxy script + if (sender.url != browser.extension.getURL(proxyScriptURL)) { + return; + } + console.log(message); +} + +browser.runtime.onMessage.addListener(handleMessage);</pre> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var registering = browser.proxy.register( + url // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>url</code></dt> + <dd><code>String</code>. URL pointant vers le fichier PAC à charger. Les fichiers PAC doivent être groupés avec l'extension, et l'<code>url</code> doit être relative au fichier <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a> de l'extension.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans argument lorsque le fichier PAC a été enregistré ou rejetée en cas d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">const proxyScriptURL = "proxy/proxy-script.js"; + +browser.proxy.register(proxyScriptURL);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.proxy.register")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/proxy/requestdetails/index.html b/files/fr/mozilla/add-ons/webextensions/api/proxy/requestdetails/index.html new file mode 100644 index 0000000000..6d2cc7d34b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/proxy/requestdetails/index.html @@ -0,0 +1,60 @@ +--- +title: proxy.RequestDetails +slug: Mozilla/Add-ons/WebExtensions/API/proxy/RequestDetails +tags: + - Add-ons + - Extensions + - Proxy + - RequestDetails + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/proxy/RequestDetails +--- +<div>{{AddonSidebar()}}</div> + +<p>Contient des informations sur une requête Web que le navigateur est sur le point de faire. Une instance de cet objet est passée dans l'écouteur {{WebExtAPIRef("proxy.onRequest")}}.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>cookieStoreId</code></dt> + <dd><code>string</code>. L'ID de magasin de cookies du contexte actuel.</dd> + <dt><code>documentUrl</code></dt> + <dd><code>string</code>. URL de la page dans laquelle la ressource demandée sera chargée.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'une (sous-)frame est chargé (<code>type</code> est <code>main_frame</code> ou <code>sub_frame</code>), <code>frameId</code> indique l'ID de cette trame, pas l'ID de la trame externe. Les ID de cadre sont uniques dans un onglet.</dd> + <dt><code>fromCache</code></dt> + <dd><code>boolean</code>. Indique si cette réponse sera récupérée du cache disque.</dd> + <dt><code>incognito</code></dt> + <dd><code>boolean</code> <code>true</code> pour les demandes de navigation privées</dd> + <dt><code>ip</code></dt> + <dd>L'adresse IP du serveur à laquelle la demande sera envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale.</dd> + <dt><code>method</code></dt> + <dd><code>string</code>. Méthode HTTP standard: par exemple, "GET" ou "POST".</dd> + <dt><code>originUrl</code></dt> + <dd><code>string</code>. URL de la ressource qui a déclenché cette demande. Notez que ceci peut ne pas être le même que l'URL de la page dans laquelle la ressource demandée sera chargée. Par exemple, si un document déclenche un chargement dans une fenêtre différente l'<a href="/fr/docs/Web/HTML/Element/a#attr-target">attribut cible d'un lien</a>, ou d'un document CSS inclut une image utilisant la <a href="/fr/docs/Web/CSS/url#The_url()_functional_notation"><code>notation fonctionnelle url()</code></a>, alors ce sera l'URL du document original ou du document CSS, respectivement.</dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. ID de l'image qui contient l'image qui a envoyé la demande. Défini sur -1 si aucun cadre parent n'existe.</dd> + <dt><code>requestId</code></dt> + <dd><code>string</code>. L'ID de la demande Les ID de demande sont uniques dans une session de navigateur, vous pouvez donc les utiliser pour associer différents événements associés à la même demande.</dd> + <dt><code>requestHeaders</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de requête HTTP qui vont être envoyés avec cette requête. Notez que ceci n'est inclus que si l'option <code>"requestHeaders"</code> a été passée dans <code>addListener()</code>.</dd> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet dans lequel la requête a lieu. Défini sur -1 si la requête n'est pas liée à un onglet.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a class="external external-icon" href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>type</code></dt> + <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandé : par exemple, "image", "script", "stylesheet".</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. Cible de la demande.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.proxy.RequestDetails")}}</p> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/proxy/unregister/index.html b/files/fr/mozilla/add-ons/webextensions/api/proxy/unregister/index.html new file mode 100644 index 0000000000..6086fe0c6f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/proxy/unregister/index.html @@ -0,0 +1,55 @@ +--- +title: proxy.unregister() +slug: Mozilla/Add-ons/WebExtensions/API/proxy/unregister +tags: + - API + - Add-ons + - Extensions + - Méthode + - Proxy + - Reference + - WebExtensions + - unregister +translation_of: Mozilla/Add-ons/WebExtensions/API/proxy/unregister +--- +<div>{{AddonSidebar()}}</div> + +<div>{{deprecated_header}}</div> + +<p>Cette méthode était obsolète dans Firefox 68 et sera supprimée de Firefox 71. Dans Firefox 68 ou une version ultérieure, l'appel de cette méthode enregistre un message d'erreur sur la console:</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/16800/proxy_unregister_warning.png" style="border: 1px solid black; display: block; height: 86px; margin: 0 auto; width: 800px;"></p> + +<p>Annule l'inscription d'un <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_%28PAC%29_file">fichier Proxy Auto-Configuration (PAC)</a>. Cela a été enregistré par un appel précédent à {{WebExtAPIRef("proxy.register()")}}.</p> + +<p>C'est une fonction asynchrome qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var unregistering = browser.proxy.unregister() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments lorsque le fichier PAC a été désinscrit.</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">browser.proxy.unregister();</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.proxy.unregister")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/connect/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/connect/index.html new file mode 100644 index 0000000000..d92f50c9cd --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/connect/index.html @@ -0,0 +1,161 @@ +--- +title: runtime.connect() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/connect +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - connect + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/connect +--- +<div>{{AddonSidebar()}}</div> + +<div></div> + +<p>Créer une connexion pour plusieurs cas d'utilisation pout votre extension.</p> + +<p>Vous pouvez utiliser cette facilité dans les situations suivantes:</p> + +<ul> + <li>Dans un script de contenu, pour établir une connexion avec le script d'arrière plan (ou tout script priviligié, comme les scripts de popup ou scripts de page d'option)</li> + <li>Dans un script d'arrière plan (ou script priviligié équivalent), pour établir une connexion avec une extension différente.</li> +</ul> + +<p>Attention, vous ne pouvez pas utiliser cette fonctionnalité pour connecter une extension à son script de contenu. Pour réaliser cette opération, il vaut mieux utiliser {{WebExtAPIRef('tabs.connect()')}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var port = browser.runtime.connect( + extensionId, // optional string + connectInfo // optional object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>extensionId</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'ID de l'extension à laquelle se connecter. Si la cible à défini un ID dans la clé <a href="/fr/Add-ons/WebExtensions/manifest.json/applications">applications</a> du fichier manifest.json, alors <code>extensionId</code> doit avoir cette valeur. Autrement, il doit avoir l'ID qui a été généré pour la cible.</dd> + <dt><code>connectInfo</code>{{optional_inline}}</dt> + <dd><code>object</code>. Détails de la connexion:</dd> + <dd> + <dl class="reference-values"> + <dt><code>name</code>{{optional_inline}}</dt> + <dd><code>string</code>. Sera passé dans {{WebExtAPIRef("runtime.onConnect")}} pour les processus qui écoutent un évènement de type connexion.</dd> + <dt><code>includeTlsChannelId</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. indique si l'ID du canal TLS sera transmis à {{WebExtAPIRef("runtime.onConnectExternal")}} pour le processus qui écoutent l'événement de connexion.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>{{WebExtAPIRef('runtime.Port')}}. Port à travers lequel les messages peuvent être envoyés et reçus. L'événement <code>onDisconnect</code> du port est déclenché si l'extension n'existe pas.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.connect")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Le script de contenu :</p> + +<ul> + <li>se connecte au script d'arrière-plan et stocke le port dans une variable appelée <code>myPort</code>.</li> + <li>Ecoute les messages sur <code>myPort</code> et les enregistre</li> + <li>Envoie des messages au script d'arrière pla, en utilisant <code>myPort</code>, lorsque l'utilisateur clique sur le document.</li> +</ul> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="comment token">// content-script.js</span> + +<span class="keyword token">var</span> myPort <span class="operator token">=</span> browser<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span><span class="function token">connect</span><span class="punctuation token">(</span><span class="punctuation token">{</span>name<span class="punctuation token">:</span><span class="string token">"port-from-cs"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +myPort<span class="punctuation token">.</span><span class="function token">postMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span>greeting<span class="punctuation token">:</span> <span class="string token">"hello from content script"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + +myPort<span class="punctuation token">.</span>onMessage<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span>m<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"In content script, received message from background script: "</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>m<span class="punctuation token">.</span>greeting<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + +document<span class="punctuation token">.</span>body<span class="punctuation token">.</span><span class="function token">addEventListener</span><span class="punctuation token">(</span><span class="string token">"click"</span><span class="punctuation token">,</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + myPort<span class="punctuation token">.</span><span class="function token">postMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span>greeting<span class="punctuation token">:</span> <span class="string token">"they clicked the page!"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>Les scripts d'arrière plan correspondant :</p> + +<ul> + <li>Ecoute les tentatives de connexion du script de contenu.</li> + <li>Quand il reçoit une tentative de connexion : + <ul> + <li>Stocke le port dans une variable nommé <code>portFromCS</code>.</li> + <li>envoie un message au script de contenu en utiliant le port.</li> + <li>Commence à écouter les messages reçus sur le port, et les enregistre.</li> + </ul> + </li> + <li>Envoie des messages au script de contenu, à l'aide de <code>portFromCS</code>, lorsque l'utilisateur clique sur l'action du navigateur de l'extension.</li> +</ul> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="comment token">// background-script.js</span> + +<span class="keyword token">var</span> portFromCS<span class="punctuation token">;</span> + +<span class="keyword token">function</span> <span class="function token">connected</span><span class="punctuation token">(</span>p<span class="punctuation token">)</span> <span class="punctuation token">{</span> + portFromCS <span class="operator token">=</span> p<span class="punctuation token">;</span> + portFromCS<span class="punctuation token">.</span><span class="function token">postMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span>greeting<span class="punctuation token">:</span> <span class="string token">"hi there content script!"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + portFromCS<span class="punctuation token">.</span>onMessage<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span>m<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"In background script, received message from content script"</span><span class="punctuation token">)</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>m<span class="punctuation token">.</span>greeting<span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span>onConnect<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>connected<span class="punctuation token">)</span><span class="punctuation token">;</span> + +browser<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + portFromCS<span class="punctuation token">.</span><span class="function token">postMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span>greeting<span class="punctuation token">:</span> <span class="string token">"they clicked the button!"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/connectnative/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/connectnative/index.html new file mode 100644 index 0000000000..1371a06683 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/connectnative/index.html @@ -0,0 +1,122 @@ +--- +title: runtime.connectNative() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/connectNative +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - connectNative + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/connectNative +--- +<div>{{AddonSidebar()}}</div> + +<div>Connecte l'extension à une appplication native sur l'ordinateur de l'utilisateur.</div> + +<div></div> + +<div>Cela prend le nom d'une application native en tant que paramètre. Il démarre l'application native et retourne un objet {{WebExtAPIRef("runtime.Port")}} à l'appelant.</div> + +<div></div> + +<div>L'appelant peut utiliser le <code>Port</code> pour échanger des messages avec l'application native utilisant <code>Port.postMessage()</code> et <code>port.onMessage</code>.</div> + +<div></div> + +<div>L'application native s'exécute jusqu'à ce qu'elle se termine, ou l'appelant appelle <code>Port.disconnect()</code>, ou la page qui a créé le <code>Port</code> est détruite. Une fois le <code>Port</code> est déconnecté, le navigateur mettra quelques secondes à se terminer pour quitter le processus, puis le désactiver s'il ne s'est pas arrêté.</div> + +<div></div> + +<p>Pour plus d'informations, voir <a href="/fr/Add-ons/WebExtensions/Native_messaging">messagerie native</a>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var port = browser.runtime.connectNative( + application // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>application</code></dt> + <dd><code>string</code>. Le nom de l'application native à laquelle se connecter. Cela doit correspondre à la propriété "name" dans le <a href="/fr/Add-ons/WebExtensions/Native_messaging#App_manifest">fichier manifest de l'application native</a>.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Un objet {{WebExtAPIRef('runtime.Port')}}. Le port que l'appelant peut utiliser pour échanger des messages avec l'application native.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.connectNative")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple se connecte à l'appplication native "ping_pong" et commence à en écouter les messages. Il envoie également un message à l'application native lorsque l'utilisateur clique sur l'icône d'une action du navigateur :</p> + +<pre class="brush: js">/* +On startup, connect to the "ping_pong" app. +*/ +var port = <code class="language-js">browser</code>.runtime.connectNative("ping_pong"); + +/* +Listen for messages from the app. +*/ +port.onMessage.addListener((response) => { + console.log("Received: " + response); +}); + +/* +On a click on the browser action, send the app a message. +*/ +<code class="language-js">browser</code>.browserAction.onClicked.addListener(() => { + console.log("Sending: ping"); + port.postMessage("ping"); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/getbackgroundpage/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/getbackgroundpage/index.html new file mode 100644 index 0000000000..229d43adc7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/getbackgroundpage/index.html @@ -0,0 +1,112 @@ +--- +title: runtime.getBackgroundPage() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/getBackgroundPage +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getBackgroundPage + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/getBackgroundPage +--- +<div>{{AddonSidebar()}}</div> + +<p>Récupère l'objet <code><a href="/fr/docs/Web/API/Window">Window</a></code> pour la page d'arrière-plan qui s'exécute dans l'extension en cours.</p> + +<p>Cela consiste un moyen pratique pour d'autres scripts d'extension privilégiés d'accéder directement à la portée du script d'arrière plan. Cela leur permet d'accéder aux variables ou aux fonctions d'appel définies dans cette portée. Le "script privilégié" inclut ici les scripts s'exécutant dans les <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Options_pages">pages d'options</a>, ou les scripts s'exécutant dans les fenêtres d'<a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Browser_actions_2">action du navigateur</a> ou d'<a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Page_actions">action page</a>, mais n'inclut pas les <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Content_scripts">scripts de contenu</a>.</p> + +<p>Notez que les variables déclarées à l'aide de <code><a href="/fr/docs/Web/JavaScript/Reference/Instructions/const">const</a></code> ou <code><a href="/fr/docs/Web/JavaScript/Reference/Instructions/let">let</a></code> n'apparaissaient pas dans l'objet window retourné par cette fonction.</p> + +<p><strong>Notez également que cette méthode ne peut pas être utilisée dans une fenêtre privée dans Firefox</strong>—Elle renvoie toujours <code>null</code>. Pour plus d'informations voir le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1329304">bug lié à bugzilla</a>.</p> + +<p>Si la page d'arrière plan est une page événement, le système s'assuera qu'il est chargé avant de résoudre la promise.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingPage = browser.runtime.getBackgroundPage() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec l'objet <a href="/fr/docs/User%3Amaybe/webidl_mdn/Window">Window</a> pour la page d'arrière plan, s'il y en a une. Si l'extension n'inclut pas de page d'arrière-plan, la promise est rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.getBackgroundPage")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supposons un <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">script d'arrière-plan</a> définisse une fonction <code>foo()</code>:</p> + +<pre class="brush: js">// background.js + +function foo() { + console.log("I'm defined in background.js"); +}</pre> + +<p>Un script exécuté dans un <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Browser_actions_2">popup</a> peut appeler cette fonction directement comme ceci :</p> + +<pre class="brush: js">// popup.js + +function onGot(page) { + page.foo(); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var getting = browser.runtime.getBackgroundPage(); +getting.then(onGot, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/getbrowserinfo/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/getbrowserinfo/index.html new file mode 100644 index 0000000000..f54d20f368 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/getbrowserinfo/index.html @@ -0,0 +1,63 @@ +--- +title: runtime.getBrowserInfo() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/getBrowserInfo +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - getBrowserInfo + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/getBrowserInfo +--- +<div>{{AddonSidebar}}</div> + +<p>Renvoie les informations sur le navigateur dans lequel l'extension est installée.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une {{JSxRef("Promise")}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingInfo = browser.runtime.getBrowserInfo() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="valeur_retournée">valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet qui a les propriétés suivantes :</p> + +<ul> + <li><strong><code>name</code></strong>: Valeur de chaîne représentant le nom du navigateur, par exemple "Firefox".</li> + <li><strong><code>vendor</code></strong>: Valeur de chaîne représentant le fournisseur du navigateur, par exemple "Mozilla".</li> + <li><strong><code>version</code></strong>: Chaîne représentant la version du navigateur, par exemple "51.0" or "51.0a2".</li> + <li><strong><code>buildID</code></strong>: Chaine représentant la version spécifique du navigateur, par exemple "20161018004015".</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.runtime.getBrowserInfo")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenir et enregistrer le nom du navigateur :</p> + +<pre class="brush: js">function gotBrowserInfo(info) { + console.log(info.name); +} + +var gettingInfo = browser.runtime.getBrowserInfo(); +gettingInfo.then(gotBrowserInfo);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/getmanifest/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/getmanifest/index.html new file mode 100644 index 0000000000..39f49a1749 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/getmanifest/index.html @@ -0,0 +1,86 @@ +--- +title: runtime.getManifest() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/getManifest +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getManifest + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/getManifest +--- +<div>{{AddonSidebar()}}</div> + +<div>Obtenez le fichier <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> complet, sérialisé à un objet JSON.</div> + +<div></div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.runtime.getManifest() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Un <code>object</code> JSON représentant le manifest.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.getManifest")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Récupère le manifest et consignez la propriété "name" :</p> + +<pre class="brush: js">var manifest = browser.runtime.getManifest(); +console.log(manifest.name);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/getpackagedirectoryentry/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/getpackagedirectoryentry/index.html new file mode 100644 index 0000000000..68a338db30 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/getpackagedirectoryentry/index.html @@ -0,0 +1,88 @@ +--- +title: runtime.getPackageDirectoryEntry() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/getPackageDirectoryEntry +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - getPackageDirectoryEntry + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/getPackageDirectoryEntry +--- +<div>{{AddonSidebar()}}</div> + +<p>Renvoie un objet <code>DirectoryEntry</code> représentant le répertoire du package.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingEntry = browser.runtime.getPackageDirectoryEntry() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet <code>DirectoryEntry</code> représentant le répertoire du package.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.getPackageDirectoryEntry")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function gotDirectoryEntry(directoryEntry) { + console.log(directoryEntry); +} + +var gettingEntry = browser.runtime.getPackageDirectoryEntry(); +gettingEntry.then(gotDirectoryEntry);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/getplatforminfo/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/getplatforminfo/index.html new file mode 100644 index 0000000000..1d78399d3e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/getplatforminfo/index.html @@ -0,0 +1,90 @@ +--- +title: runtime.getPlatformInfo() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/getPlatformInfo +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getPlatformInfo + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/getPlatformInfo +--- +<div>{{AddonSidebar()}}</div> + +<p>Renvoies des informations sur la plate-forme actuelle. Ceci ne peut être appelé que dans le contexte du script d'arrière-plan.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getting = browser.runtime.getPlatformInfo() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_rentournée">Valeur rentournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec une valeur {{WebExtAPIRef('runtime.PlatformInfo')}} représentant la plate-forme actuelle.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.runtime.getPlatformInfo")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenez et consignez le système d'exploitation de la plateforme :</p> + +<pre class="brush: js">function gotPlatformInfo(info) { + console.log(info.os); +} + +var gettingInfo = browser.runtime.getPlatformInfo(); +gettingInfo.then(gotPlatformInfo);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/geturl/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/geturl/index.html new file mode 100644 index 0000000000..83f9546f21 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/geturl/index.html @@ -0,0 +1,97 @@ +--- +title: runtime.getURL() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/getURL +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - getURL + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/getURL +--- +<div>{{AddonSidebar()}}</div> + +<div>Etant donné un chemin relatif de <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a> à une ressource empaquetée avec l'extension, renvoyez une URL complète.</div> + +<div></div> + +<div>Cette fonction ne vérifie pas que la ressource existe réellement à cette URL.</div> + +<div></div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.runtime.getURL( + path // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>path</code></dt> + <dd><code>string</code>. Un chemin relatif de <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a> à une ressource empaquetée avec l'extension.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p><code>string</code>. L'URL complète de la ressource.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.getURL")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Etant donné un fichier empaqueté avec l'extension "beasts/frog.html", obtenez l'URL complète comme ceci :</p> + +<pre class="brush: js">var fullURL = browser.runtime.getURL("beasts/frog.html"); +console.log(fullURL); +// Returns something like: +// moz-extension://2c127fa4-62c7-7e4f-90e5-472b45eecfdc/beasts/frog.html</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/id/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/id/index.html new file mode 100644 index 0000000000..8bac893224 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/id/index.html @@ -0,0 +1,70 @@ +--- +title: runtime.id +slug: Mozilla/Add-ons/WebExtensions/API/runtime/id +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Property + - Reference + - WebExtensions + - runtime + - §ID +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/id +--- +<div>{{AddonSidebar()}}</div> + +<p>L'ID de l'extension</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var myAddonId = browser.runtime.id;</pre> + +<h3 id="Value">Value</h3> + +<p>Une <code>chaîne</code> représentant l'ID du module complémentaire. Si l'extension a spécifié un ID dans la clé manifest.json de ses <a href="/fr/Add-ons/WebExtensions/manifest.json/applications">applications</a>, <code>runtime.id</code> contiendra la valeur. SInon <code>runtime.id</code> contiendra l'ID généré pour l'extension.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.id")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/index.html new file mode 100644 index 0000000000..fb23d7cc7a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/index.html @@ -0,0 +1,171 @@ +--- +title: runtime +slug: Mozilla/Add-ons/WebExtensions/API/runtime +tags: + - API + - Add-ons + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime +--- +<div>{{AddonSidebar}}</div> + +<p><span class="seoSummary">Ce module fournit des informations sur votre extension et l'environnement dans lequel elle fonctionne.</span></p> + +<p>Il fournit également des API de messagerie vous permettant de:</p> + +<ul> + <li>Communiquer entre les différentes parties de votre extension.</li> + <li>Communiquer avec d'autres extensions.</li> + <li>Communiquer avec les applications natives.</li> +</ul> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("runtime.Port")}}</dt> + <dd>Représente une extrémité d'une connexion entre deux contextes spécifiques, qui peut être utilisée pour échanger des messages.</dd> + <dt>{{WebExtAPIRef("runtime.MessageSender")}}</dt> + <dd> + <p>Contient des informations sur l'expéditeur d'un message ou d'une demande de connexion.</p> + </dd> + <dt>{{WebExtAPIRef("runtime.PlatformOs")}}</dt> + <dd>Identifie le système d'exploitation du navigateur.</dd> + <dt>{{WebExtAPIRef("runtime.PlatformArch")}}</dt> + <dd>Identifie l'architecture du processeur du navigateur.</dd> + <dt>{{WebExtAPIRef("runtime.PlatformInfo")}}</dt> + <dd>Contient des informations sur la plate-forme utilisée par le navigateur.</dd> + <dt>{{WebExtAPIRef("runtime.RequestUpdateCheckStatus")}}</dt> + <dd>Résultat d'un appel à {{WebExtAPIRef("runtime.requestUpdateCheck()")}}.</dd> + <dt>{{WebExtAPIRef("runtime.OnInstalledReason")}}</dt> + <dd>La raison pour laquelle l'événement {{WebExtAPIRef("runtime.onInstalled")}} est en cours d'envoi.</dd> + <dt>{{WebExtAPIRef("runtime.OnRestartRequiredReason")}}</dt> + <dd>La raison pour laquelle l'événement {{WebExtAPIRef("runtime.onRestartRequired")}} est en cours d'expédition.</dd> +</dl> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt>{{WebExtAPIRef("runtime.lastError")}}</dt> + <dd>Cette valeur est définie lorsqu'une fonction asynchrone a une condition d'erreur qu'elle doit signaler à son appelant</dd> + <dt>{{WebExtAPIRef("runtime.id")}}</dt> + <dd>L'ID de l'extension</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("runtime.getBackgroundPage()")}}</dt> + <dd>Récupère l'objet <a href="/fr/docs/Web/API/Window">Window</a> pour la page d'arrière-plan qui s'exécute dans l'extension en cours.</dd> + <dt>{{WebExtAPIRef("runtime.openOptionsPage()")}}</dt> + <dd> + <p>Ouvre une <a href="/fr/Add-ons/WebExtensions/user_interface/Options_pages">page d'options</a> de votre extension.</p> + </dd> + <dt>{{WebExtAPIRef("runtime.getManifest()")}}</dt> + <dd>Obtient le fichier <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a> complet, sérialisé en tant qu'objet.</dd> + <dt>{{WebExtAPIRef("runtime.getURL()")}}</dt> + <dd>Etant donné un chemin relatif de <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a> à une ressource empaquetée avec l'extension, renvoie une URL entièrement qualifiée.</dd> + <dt>{{WebExtAPIRef("runtime.setUninstallURL()")}}</dt> + <dd>Définit une URL à visiter lorsque l'extension est désinstallée.</dd> + <dt>{{WebExtAPIRef("runtime.reload()")}}</dt> + <dd>Recharge l'extension.</dd> + <dt>{{WebExtAPIRef("runtime.requestUpdateCheck()")}}</dt> + <dd>Vérifie les mises à jour de cette extension.</dd> + <dt>{{WebExtAPIRef("runtime.connect()")}}</dt> + <dd>Établit une connexion d'un script de contenu au processus d'extension principal ou d'une extension à une extension différente.</dd> + <dt>{{WebExtAPIRef("runtime.connectNative()")}}</dt> + <dd> + <div>Connecte l'extension à une application native sur l'ordinateur de l'utilisateur.</div> + </dd> + <dt>{{WebExtAPIRef("runtime.sendMessage()")}}</dt> + <dd>Envoie un seul message aux écouteurs d'événement dans votre extension ou une extension différente. Similaire à {{WebExtAPIRef('runtime.connect')}} mais n'envoie qu'un seul message, avec une réponse facultative.</dd> + <dt>{{WebExtAPIRef("runtime.sendNativeMessage()")}}</dt> + <dd>Envoie un seul message d'une extension à une application native.</dd> + <dt>{{WebExtAPIRef("runtime.getPlatformInfo()")}}</dt> + <dd>Renvoie des informations sur la plate-forme actuelle.</dd> + <dt>{{WebExtAPIRef("runtime.getBrowserInfo()")}}</dt> + <dd>Renvoie des informations sur le navigateur dans lequel cette extension est installée.</dd> + <dt>{{WebExtAPIRef("runtime.getPackageDirectoryEntry()")}}</dt> + <dd>Renvoie un DirectoryEntry pour le répertoire du package.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("runtime.onStartup")}}</dt> + <dd>Lancé lorsqu'un premier profil a cette extension installée. Cet événement n'est pas déclenché lorsqu'un profil de navigation privée est démarré.</dd> + <dt>{{WebExtAPIRef("runtime.onInstalled")}}</dt> + <dd>Lancé lorsque l'extension est installée pour la première fois, lorsque l'extension est mise à jour vers une nouvelle version et lorsque le navigateur est mis à jour vers une nouvelle version.</dd> + <dt>{{WebExtAPIRef("runtime.onSuspend")}}</dt> + <dd>Envoyé sur la page de l'événement juste avant le déchargement de l'extension. Cela donne à l'extension l'opportunité de faire un peu de nettoyage.</dd> + <dt>{{WebExtAPIRef("runtime.onSuspendCanceled")}}</dt> + <dd>Envoyé après {{WebExtAPIRef("runtime.onSuspend")}} pour indiquer que l'extension ne sera pas déchargée après tout.</dd> + <dt>{{WebExtAPIRef("runtime.onUpdateAvailable")}}</dt> + <dd>Lancé lorsqu'une mise à jour est disponible, mais n'est pas installé immédiatement car l'extension est en cours d'exécution.</dd> + <dt>{{WebExtAPIRef("runtime.onBrowserUpdateAvailable")}} {{deprecated_inline}}</dt> + <dd>Lancé lorsqu'une mise à jour pour le navigateur est disponible, mais n'est pas installée immédiatement car un redémarrage du navigateur est requis.</dd> + <dt>{{WebExtAPIRef("runtime.onConnect")}}</dt> + <dd>Lancé lorsqu'une connexion est établie avec un processus d'extension ou un script de contenu.</dd> + <dt>{{WebExtAPIRef("runtime.onConnectExternal")}}</dt> + <dd>Lancé lorsqu'une connexion est établie avec une autre extension.</dd> + <dt>{{WebExtAPIRef("runtime.onMessage")}}</dt> + <dd>Lancé lorsqu'un message est envoyé par un processus d'extension ou un script de contenu.</dd> + <dt>{{WebExtAPIRef("runtime.onMessageExternal")}}</dt> + <dd>Lancé lorsqu'un message est envoyé depuis un autre poste. Ne peut pas être utilisé dans un script de contenu.</dd> + <dt>{{WebExtAPIRef("runtime.onRestartRequired")}}</dt> + <dd>Lancé lorsque le périphérique doit être redémarré.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<div> + + +<p>{{Compat("webextensions.api.runtime")}}</p> + +<div>{{WebExtExamples("h2")}}</div> + +<div></div> +</div> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/lasterror/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/lasterror/index.html new file mode 100644 index 0000000000..0fa4362444 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/lasterror/index.html @@ -0,0 +1,124 @@ +--- +title: runtime.lastError +slug: Mozilla/Add-ons/WebExtensions/API/runtime/lastError +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Property + - Reference + - WebExtensions + - lastError + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/lastError +--- +<div>{{AddonSidebar()}}</div> + +<div>Cette valeur est utilisée pour signaler un message d'erreur provenant d'une API asynchrone, lorsque l'API asynchrone reçoit un rappel. Cela est utile pour les extensions qui utilisent la valeur basée sur le rappel des API WebExtension.</div> + +<div></div> + +<div>Vpous n'avez pas besoin de vérifier cette propriété si vous utilisez la version basée sur la promesse des API : à la place, passez un gestionnaire d'erreurs à la promesse :</div> + +<div></div> + +<pre class="brush: js">var gettingCookies = browser.cookies.getAll(); +gettingCookies.then(onGot, onError);</pre> + +<p>La propriété <code>runtime.lastError</code> est définie lorsqu'une fonction asynchrone a une condition d'erreur qu'elle doit signaler à son appelant.</p> + +<div>Si vous applez une fonction asynchrone qui veut définir <code>lastError</code>, vous devez vérifier l'erreur lorsque vous gérez le résultat de la fonction. Si <code>lastError</code> a été défini et que vous ne cochez pas dans la fonction de rappel, une erreur sera générée.</div> + +<div></div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var myError = browser.runtime.lastError; // null or Error object</pre> + +<h3 id="Valeur">Valeur</h3> + +<p>Un objet <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Error">Error</a> représentant une erreur. La propriété <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Error/message"><code>message</code></a> est un <code>string</code> avec une description lisible par l'utilisateur de l'erreur. Si <code>lastError</code> n'a pas été défini, la valeur est <code>null</code>.</p> + +<h2 id="Examples">Examples</h2> + +<p>Définir un cookie, utiliser pour enregistrer le nouveau cookie ou signaler une erreur :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">logCookie</span><span class="punctuation token">(</span>c<span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">if</span> <span class="punctuation token">(</span>browser<span class="punctuation token">.runtime.</span>lastError<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>browser<span class="punctuation token">.runtime.</span>lastError<span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>c<span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>cookies<span class="punctuation token">.</span><span class="keyword token">set</span><span class="punctuation token">(</span> + <span class="punctuation token">{</span>url<span class="punctuation token">:</span> <span class="string token">"https://developer.mozilla.org/"</span><span class="punctuation token">}</span><span class="punctuation token">,</span> + logCookie +<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>La même chose, mais en utilisant une promesse de gérer le résultat de <code>setCookie()</code>:</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">logCookie</span><span class="punctuation token">(</span>c<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>c<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">function</span> <span class="function token">logError</span><span class="punctuation token">(</span>e<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>e<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +<span class="keyword token">var</span> setCookie <span class="operator token">=</span> browser<span class="punctuation token">.</span>cookies<span class="punctuation token">.</span><span class="keyword token">set</span><span class="punctuation token">(</span> + <span class="punctuation token">{</span>url<span class="punctuation token">:</span> <span class="string token">"https://developer.mozilla.org/"</span><span class="punctuation token">}</span> +<span class="punctuation token">)</span><span class="punctuation token">; +</span> +setCookie<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>logCookie<span class="punctuation token">,</span> logError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<div class="note"> +<p>Note: <code>runtime.lastError</code> est un alias pour {{WebExtAPIRef("extension.lastError")}}: Ils sont ensemble, et la vérification de l'un fonctionnera.</p> +</div> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.runtime.lastError")}}</span></p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/messagesender/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/messagesender/index.html new file mode 100644 index 0000000000..d73a519c45 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/messagesender/index.html @@ -0,0 +1,86 @@ +--- +title: runtime.MessageSender +slug: Mozilla/Add-ons/WebExtensions/API/runtime/MessageSender +tags: + - API + - Add-ons + - Extensions + - MessageSender + - Non-standard + - Reference + - Type + - WebExtensions + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/MessageSender +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet contenant des informations sur l'expéditeur d'un message ou d'une demande de connexion ; ceci est passé à l'écouteur {{WebExtAPIRef("runtime.onMessage()")}}.</p> + +<p>C'est aussi une propriété de {{WebExtAPIRef("runtime.Port")}}, mais seulement dans l'instance de <code>Port</code> passée dans les écouteurs {{WebExtAPIRef("runtime.onConnect()")}} ou {{WebExtAPIRef("runtime.onConnectExternal()")}}.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>tab</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('tabs.Tab')}}. Le {{WebExtAPIRef('tabs.Tab')}} qui a ouvert la connexion. Cette propriété ne sera présente que lorsque la connexion a été ouverte à partir d'un onglet (y compris les scripts de contenu).</dd> + <dt><code>frameId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Le cadre qui a ouvert la connexion. Zéro pour les cadres de haut niveau, positif pour les cadres enfants. Cela ne sera défini que lorsque l'<code>onglet</code> est défini.</dd> + <dt><code>id</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'ID de l'extension qui a envoyé le message, si le message a été envoyé par une extension. Si l'expéditeur définit explicitement un ID à l'aide de la clé des <a href="/fr/Add-ons/WebExtensions/manifest.json/applications">applications</a> dans manifest.json, then <code>id</code> aura cette valeur. Sinon, il aura l'ID qui a été généré pour l'expéditeur.</dd> + <dd>Notez que dans Firefox, avant la version 54, cette valeur était l'ID interne de l'extension (c'est-à-dire l'<a href="https://en.wikipedia.org/wiki/Universally_unique_identifier">UUID</a> qui apparaît dans l'URL de l'extension).</dd> + <dt><code>url</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'URL de la page ou du cadre hébergeant le script qui a envoyé le message.</dd> + <dd>Si l'expéditeur est un script s'exécutant dans une page d'extension (telle qu'une <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">page d'arrière-plan</a>, une <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Options_pages">page d'options</a>, ou une <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Browser_actions_2">action de navigateur</a> ou une <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Page_actions">action contextuelle</a>), l'URL sera au format <code>"moz-extension://<extension-internal-id>/path/to/page.html"</code>. Si l'expéditeur est un script d'arrière-plan et que vous n'avez pas inclus une page d'arrière-plan, ce sera <code>"moz-extension://<extension-internal-id>/_generated_background_page.html"</code>.</dd> + <dd>Si l'expéditeur est un script s'exécutant sur une page Web (y compris les scripts de contenu et les scripts de page normaux), alors l'<code>url</code> sera l'URL de la page web. Si le script s'exécute dans un iframe, <code>url</code> sera l'URL de l'iframe.</dd> + <dt><code>tlsChannelId</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'ID de canal TLS de la page ou du cadre qui a ouvert la connexion, si demandé par l'extension, et si disponible.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.runtime.MessageSender")}}</span></p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/onbrowserupdateavailable/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/onbrowserupdateavailable/index.html new file mode 100644 index 0000000000..357b3c9dec --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/onbrowserupdateavailable/index.html @@ -0,0 +1,103 @@ +--- +title: runtime.onBrowserUpdateAvailable +slug: Mozilla/Add-ons/WebExtensions/API/runtime/onBrowserUpdateAvailable +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onBrowserUpdateAvailable + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onBrowserUpdateAvailable +--- +<p>{{AddonSidebar}}{{Deprecated_header}}</p> + +<p>Lancé lorsqu'une mise à jour pour le navigateur est disponible, mais qu'elle n'est pas installée immédiatement car un redémarrage du navigateur est requi.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.runtime.onBrowserUpdateAvailable.addListener(listener) +browser.runtime.onBrowserUpdateAvailable.removeListener(listener) +browser.runtime.onBrowserUpdateAvailable.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrestez d'écouter un événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un <code>écouteur</code> est enregistré pour cet événement. Retourne <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>function</code></dt> + <dd> + <p>Une fonction de rappel qui sera appelée lorsque cet événement se produira.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.onBrowserUpdateAvailable")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ecoutez cet événement :</p> + +<pre class="brush: js">function handleBrowserUpdateAvailable() { + // handle event +} + +browser.runtime.onBrowserUpdateAvailable.addListener(handleBrowserUpdateAvailable);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/onconnect/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/onconnect/index.html new file mode 100644 index 0000000000..31463f85c7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/onconnect/index.html @@ -0,0 +1,155 @@ +--- +title: runtime.onConnect +slug: Mozilla/Add-ons/WebExtensions/API/runtime/onConnect +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onconnect + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onConnect +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé quand une connexion est établie avec un processus d'extension ou un script de contenu.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.runtime.onConnect.addListener(listener) +browser.runtime.onConnect.removeListener(listener) +browser.runtime.onConnect.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument de l'<code>écouteur</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un <code>écouteur</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>fonction</code></dt> + <dd> + <p>Une fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction recevra les arguments suivants:</p> + + <dl class="reference-values"> + <dt><code>port</code></dt> + <dd>Un objet {{WebExtAPIRef('runtime.Port')}} connectant le script courant à l'autre contexte auquel il se connecte.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.onConnect")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce script de contenu :</p> + +<ul> + <li>Se connecte au script d'arrière-plan et stocke le <code>Port</code> dans une variable <code>myPort</code></li> + <li>Ecoute les messages sur <code>myPort</code>, et les enregistre</li> + <li>Envoie des messages au script d'arrière-plan, en utilisant <code>myPort</code>, lorsque l'utilisateur clique sur le document</li> +</ul> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="comment token">// content-script.js</span> + +<span class="keyword token">var</span> myPort <span class="operator token">=</span> browser<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span><span class="function token">connect</span><span class="punctuation token">(</span><span class="punctuation token">{</span>name<span class="punctuation token">:</span><span class="string token">"port-from-cs"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +myPort<span class="punctuation token">.</span><span class="function token">postMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span>greeting<span class="punctuation token">:</span> <span class="string token">"hello from content script"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + +myPort<span class="punctuation token">.</span>onMessage<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span>m<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"In content script, received message from background script: "</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>m<span class="punctuation token">.</span>greeting<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + +document<span class="punctuation token">.</span>body<span class="punctuation token">.</span><span class="function token">addEventListener</span><span class="punctuation token">(</span><span class="string token">"click"</span><span class="punctuation token">,</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + myPort<span class="punctuation token">.</span><span class="function token">postMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span>greeting<span class="punctuation token">:</span> <span class="string token">"they clicked the page!"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>Le script d'arrière-plan correspondant :</p> + +<ul> + <li>Ecoute les tentatives de connexion de script de contenu</li> + <li>Quand il reçoit une tentative de connexion : + <ul> + <li>Stocke le port dans une variable nommée <code>portFromCS</code></li> + <li>Envoie un message au script de contenu en utilisant le port</li> + <li>Commence à écouter les messages reçus sur le port et les enregistre</li> + </ul> + </li> + <li>Envoie des messages au script de contenu, en utilisant <code>portFromCS</code>, quand l'utilisateur clique sur l'action du navigateur de l'extension</li> +</ul> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="comment token">// background-script.js</span> + +<span class="keyword token">var</span> portFromCS<span class="punctuation token">;</span> + +<span class="keyword token">function</span> <span class="function token">connected</span><span class="punctuation token">(</span>p<span class="punctuation token">)</span> <span class="punctuation token">{</span> + portFromCS <span class="operator token">=</span> p<span class="punctuation token">;</span> + portFromCS<span class="punctuation token">.</span><span class="function token">postMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span>greeting<span class="punctuation token">:</span> <span class="string token">"hi there content script!"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + portFromCS<span class="punctuation token">.</span>onMessage<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span>m<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"In background script, received message from content script"</span><span class="punctuation token">)</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>m<span class="punctuation token">.</span>greeting<span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span>onConnect<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>connected<span class="punctuation token">)</span><span class="punctuation token">;</span> + +browser<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + portFromCS<span class="punctuation token">.</span><span class="function token">postMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span>greeting<span class="punctuation token">:</span> <span class="string token">"they clicked the button!"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/onconnectexternal/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/onconnectexternal/index.html new file mode 100644 index 0000000000..fe6cee3398 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/onconnectexternal/index.html @@ -0,0 +1,140 @@ +--- +title: runtime.onConnectExternal +slug: Mozilla/Add-ons/WebExtensions/API/runtime/onConnectExternal +tags: + - API + - Add-ons + - Evènement + - Extensions + - Non-standard + - Reference + - WebExtensions + - onConnectExternal + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onConnectExternal +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'une extension reçoit une demande de connexion d'une extension différente.</p> + +<p>Pour envoyer un message qui sera reçu par le programme d'écoute <code>onConnectExternal</code>, utilisez {{WebExtAPIRef("runtime.connect()")}}, en transmettant l'ID du destinataire dans le paramètre <code>extensionId</code>.</p> + +<p>L'écouteur reçoit un objet {{WebExtAPIRef('runtime.Port')}} qu'il peut ensuite utiliser pour envoyer et recevoir des messages. L'objet <code>Port</code> contient également une propriété<code>sender</code>, qui est un objet {{WebExtAPIRef("runtime.MessageSender")}}, et que le destinataire peut utiliser pour vérifier l'ID de l'expéditeur.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.runtime.onConnectExternal.addListener(listener) +browser.runtime.onConnectExternal.removeListener(listener) +browser.runtime.onConnectExternal.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un <code>listener</code> est enregistré pour cet événement. Retourne <code>true</code> s'il écoute, <code>false</code> sinon.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>fonction</code></dt> + <dd> + <p>Une fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>port</code></dt> + <dd>Un objet {{WebExtAPIRef('runtime.Port')}} connectant le script en cours à l'autre extension à laquelle il se connecte.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.onConnectExternal")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Dans cet exemple, l'extension Hansel se connecte à l'extension Gretel :</p> + +<pre class="brush: js">console.log("connecting to Gretel"); +var myPort = browser.runtime.connect( + "gretel@mozilla.org" +); + +myPort.onMessage.addListener((message) => { + console.log(`From Gretel: ${message.content}`); +}); + +browser.browserAction.onClicked.addListener(() => { + myPort.postMessage({content: "Hello from Hansel"}); +});</pre> + +<p>Gretel écoute la connexion et vérifie que l'expéditeur est vraiment Hansel:</p> + +<pre class="brush: js">var portFromHansel; + +browser.runtime.onConnectExternal.addListener((port) => { + console.log(port); + if (port.sender.id === "hansel@mozilla.org") { + console.log("connection attempt from Hansel"); + portFromHansel = port; + portFromHansel.onMessage.addListener((message) => { + console.log(`From Hansel: ${message.content}`); + }); + } +}); + +browser.browserAction.onClicked.addListener(() => { + portFromHansel.postMessage({content: "Message from Gretel"}); +}); + +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/oninstalled/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/oninstalled/index.html new file mode 100644 index 0000000000..d1ef171ab7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/oninstalled/index.html @@ -0,0 +1,125 @@ +--- +title: runtime.onInstalled +slug: Mozilla/Add-ons/WebExtensions/API/runtime/onInstalled +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onInstalled + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onInstalled +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque l'extension est installée pour la première fois, lorsque l'extension est mise à jour vers une nouvelle version et lorsque le navigateur est mis à jour vers une nouvelle version.</p> + +<p>Notez que <code>runtime.onInstalled</code> n'est pas la même chose {{WebExtAPIRef("management.onInstalled")}}. L'événement <code>runtime.onInstalled</code> est déclenché uniquement pour votre extension. L'événement <code>browser.management.onInstalled</code> est déclenché pour toutes les extensions.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.runtime.onInstalled.addListener(listener) +browser.runtime.onInstalled.removeListener(listener) +browser.runtime.onInstalled.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajouterun écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écoutercet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un <code>écouteur</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, <code>false</code> sinon.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>function</code></dt> + <dd> + <p>La fonction de rappel appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd>Un objet avec les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>id</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'ID de l'extension de module partagé importé mise à jour. Ceci n'est présent que si la valeur de <code>raison</code> est <code>shared_module_update</code>.</dd> + <dt><code>previousVersion</code>{{optional_inline}}</dt> + <dd><code>string</code>. La version précédente de l'extension vient d'être mise à jour. Ceci n'est pas présent si la valeur de <code>raison</code> est <code>mise à jour</code>.</dd> + <dt><code>reason</code></dt> + <dd>Une valeur {{WebExtAPIRef('runtime.OnInstalledReason')}}, indiquant la raison pour laquelle cet événement est distribué.</dd> + <dt><code>temporary</code></dt> + <dd><code>boolean</code>. Vrai si le module complémentaire a été installé temporairement. Par exemple, en utilisant la page "about:debugging" dans Firefox ou en utilisant <a href="/fr/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext run</a>. Sinon faux.</dd> + </dl> + </dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.onInstalled", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Lorsque l'extensin est installé, connectez-vous à la raison de l'installon et ouvrez <a class="external external-icon" href="https://www.reddit.com/r/CatGifs/">https://www.reddit.com/r/CatGifs/</a>:</p> + +<pre class="brush: js">function handleInstalled(details) { + console.log(details.reason); + browser.tabs.create({ + url: "http://chilloutandwatchsomecatgifs.com/" + }); +} + +browser.runtime.onInstalled.addListener(handleInstalled);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/oninstalledreason/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/oninstalledreason/index.html new file mode 100644 index 0000000000..433f9e8292 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/oninstalledreason/index.html @@ -0,0 +1,79 @@ +--- +title: runtime.OnInstalledReason +slug: Mozilla/Add-ons/WebExtensions/API/runtime/OnInstalledReason +tags: + - API + - Add-ons + - Extensions + - Non-standard + - OnInstalledReason + - Reference + - Type + - WebExtensions + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/OnInstalledReason +--- +<div>{{AddonSidebar()}}</div> + +<p>Les valeurs pour laquelle l'événement {{WebExtAPIRef("runtime.onInstalled")}} est en cours d'envoi.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<dl> + <dt><code>"install"</code></dt> + <dd>L'extension a été installée.</dd> + <dt><code>"update"</code></dt> + <dd>L'extension a été mise à jour vers une nouvelle version.</dd> + <dt><code>"browser_update"</code></dt> + <dd>Le navigateur a été mise à jour vers une nouvelle version.</dd> + <dt><code>"shared_module_update"</code></dt> + <dd>Une autre extension, qui contient un module utilisé par cette extension, a été mise à jour.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.OnInstalledReason")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/onmessage/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/onmessage/index.html new file mode 100644 index 0000000000..c1267fff27 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/onmessage/index.html @@ -0,0 +1,327 @@ +--- +title: runtime.onMessage +slug: Mozilla/Add-ons/WebExtensions/API/runtime/onMessage +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onmessage + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onMessage +--- +<nav>{{AddonSidebar()}}</nav> + +<p>Utilisez cet événement pour écouter les messages d’une autre partie de votre extension. Par exemple, utilisez-le :</p> + +<p>Voici quelques exemples de cas d'utilisation :</p> + +<ul> + <li><strong>dans un <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Content_scripts">script de contenu</a></strong>, pour écouter les messages d’un <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">script d’arrière-plan</a> ;</li> + <li><strong>dans un script d’arrière-plan</strong>, pour écouter les messages d’un script de contenu ;</li> + <li><strong>dans une <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Options_pages">page d’options</a> ou un script de <a href="/fr/Add-ons/WebExtensions/User_interface_components#Popups">popup</a></strong>, pour écouter les messages d’un script d’arrière-plan ;</li> + <li><strong>dans un script d’arrière plan</strong>, pour écouter les messages d’une page d’options ou d’un script de popup.</li> +</ul> + +<p>Pour envoyer un message reçu par l'écouteur <code>onMessage</code>, utilisez {{WebExtAPIRef("runtime.sendMessage()")}} ou (pour envoyer un message à un script de contenu) {{WebExtAPIRef("tabs.sendMessage()")}}.</p> + +<div class="blockIndicator note"> +<p>Évitez de créer plusieurs écouteurs <code>onMessage</code> pour le même type de message, car l'ordre dans lequel plusieurs auditeurs vont tirer n'est pas garanti.</p> + +<p>Lorsque vous voulez garantir la livraison d'un message à un point final spécifique, utilisez l'<a href="fr/docs/Mozilla/Add-ons/WebExtensions/Content_scripts##Les_messages_en_flux_continu">approche basée sur la connexion pour échanger des messages</a>.</p> +</div> + +<p>Avec le message lui-même, l’écouteur reçoit en paramètres :</p> + +<ul> + <li>Un objet <code>sender</code> donnant les détails sur l’expéditeur du message ;</li> + <li>Une fonction <code>sendResponse</code> qui peut être utilisé pour renvoyer une réponse à l'expéditeur.</li> +</ul> + +<p>Vous pouvez envoyer une réponse synchrone au message en appelant la fonction <code>sendResponse</code> dans votre écouteur. <a href="/fr/Add-ons/WebExtensions/API/runtime/onMessage#Sending_a_synchronous_response">Voir un exemple</a>.</p> + +<p>Pour envoyer un réponse asynchrone, il existe deux options :</p> + +<ul> + <li>Renvoyer <code>true</code> à partir de l’écouteur d’événement. Cela permet de conserver la fonction <code>sendResponse</code> après le retour de l’écouteur, ce qui vous permet de l’appeler plus tard. <a href="/fr/Add-ons/WebExtensions/API/runtime/onMessage#Sending_an_asynchronous_response_using_sendResponse">Voir un exemple</a>.</li> + <li>Renvoyer une <code>Promise</code> depuis l’écouteur d’événement, et la résoudre lorsque vous avez la réponse (ou la rejeter en cas d’erreur). <a href="/fr/Add-ons/WebExtensions/API/runtime/onMessage#Sending_an_asynchronous_response_using_a_Promise">Voir un exemple</a>.</li> +</ul> + +<div class="warning"> +<p>Retourner une <code>Promise</code> est maintenant le moyen préféré car <code>sendResponse</code> <a class="external" href="https://github.com/mozilla/webextension-polyfill/issues/16#issuecomment-296693219">sera retirée de la spécification W3C</a>.</p> + +<p>La bibliothèque populaire <a class="external" href="https://github.com/mozilla/webextension-polyfill">webextension-polyfill</a> a déjà supprimé cette fonction de son implémentation.</p> +</div> + +<div class="blockIndicator note"> +<p>Vous pouvez également utiliser une <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">approche basée sur la connexion pour échanger des messages</a>.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox">browser.runtime.onMessage.addListener(listener) +browser.runtime.onMessage.removeListener(listener) +browser.runtime.onMessage.hasListener(listener)</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Cesse d’écouter cet événement. L’argument <code>listener</code> est l’écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un <code>listener</code> est enregistré pour cet événement. Retourne <code>true</code> s’il écoute, <code>false</code> sinon.</dd> +</dl> + +<h2 id="Syntaxe_de_addListener">Syntaxe de addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><em><code>listener</code></em></dt> + <dd> + <p>Une fonction d’écoute qui sera appelée lorsque cet événement se produira. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><em><code>message</code></em></dt> + <dd><code>object</code>. Le message lui-même. C’est un objet JSON-ifiable.</dd> + </dl> + + <dl class="reference-values"> + <dt><em><code>sender</code></em></dt> + <dd>Un objet {{WebExtAPIRef("runtime.MessageSender")}} représentant l’expéditeur du message.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>s<em>endResponse</em></code></dt> + <dd> + <p>Une fonction à appeler, au plus une fois, pour envoyer une réponse au <code><var>message</var></code>. La fonction prend un seul argument, qui peut être n'importe quel objet JSON-ifiable. Cet argument est renvoyé à l'expéditeur du message.</p> + + <p>Si vous avez plus d'un écouteur <code>onMessage()</code> dans le même document, alors un seul peut envoyer une réponse.</p> + + <p>Pour envoyer une réponse de manière synchrone, appelez <code>sendResponse()</code> avant le retour de la fonction d'écoute.</p> + + <p>Pour envoyer une réponse de manière asynchrone</p> + + <ul> + <li>soit garder une référence à l'argument <code>sendResponse()</code> et retourner <code>true</code> depuis la fonction listenener. Vous pourrez alors appeler <code>sendResponse()</code> après le retour de la fonction d'écoute.</li> + <li>ou retournez une {{jsxref("Promise")}} à partir de la fonction d'écoute et résolvez la promise lorsque la réponse est prête. C'est un moyen privilégié</li> + </ul> + </dd> + </dl> + + <p>La fonction <code><var>listener</var></code> peut renvoyer un booléen ou une {{jsxref("Promise")}}.</p> + + <div class="blockIndicator note"> + <p><strong>Important:</strong> N'appelez pas <code>addListener()</code> en utilisant une fonction <code>async</code> :</p> + + <pre class="brush: js example-bad">// don't do this +browser.runtime.onMessage.addListener( + async (data, sender) => { + if (data.type === 'handle_me') { return 'done'; } + } +); +</pre> + + <p>L'auditeur consommera ainsi chaque message qu'il reçoit, ce qui empêchera effectivement tous les autres auditeurs de recevoir et de traiter des messages.</p> + + <p>Si vous souhaitez adopter une approche asynchrone, utilisez plutôt une Promise, comme ceci :</p> + + <pre class="brush: js example-good">browser.runtime.onMessage.addListener( + (data, sender) => { + if (data.type === 'handle_me') { + return Promise.resolve('done'); + } + } +); +</pre> + </div> + </dd> +</dl> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p class="hidden">La table de compatibilité sur cette page est générée à partir de données structurées. Si vous souhaitez contribuer aux données, veuillez consulter <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> et nous envoyer une <em>pull request.</em></p> + +<p>{{Compat("webextensions.api.runtime.onMessage()")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<h3 id="Exemple_simple">Exemple simple</h3> + +<p>Ce script de contenu écoute les événements clic dans la page web. Si le clic a eu lieu sur un lien, il envoie un message à la page d’arrière-plan avec l’URL cible :</p> + +<pre class="brush: js">// content-script.js + +window.addEventListener("click", notifyExtension); + +function notifyExtension(e) { + if (e.target.tagName != "A") { + return; + } + browser.runtime.sendMessage({"url": e.target.href}); +}</pre> + +<p>Le script d’arrière-plan écoute ces messages et affiche une notification à l’aide de l’API <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/notifications">notifications</a></code>.</p> + +<pre class="brush: js">// background-script.js + +browser.runtime.onMessage.addListener(notify); + +function notify(message) { + browser.notifications.create({ + "type": "basic", + "iconUrl": browser.extension.getURL("link.png"), + "title": "Vous avez cliqué sur un lien !", + "message": message.url + }); +}</pre> + +<h3 id="Envoyer_une_réponse_synchrone">Envoyer une réponse synchrone</h3> + +<p>Le script de contenu suivant envoie un message au script d’arrière plan lorsque l’utilisateur ou l’utilisatrice clique sur la page. Il enregistre également toute réponse envoyé par le script d’arrière-plan :</p> + +<pre class="brush: js">// content-script.js + +function handleResponse(message) { + console.log(`le script d’arrière-plan a répondu : ${message.response}`); +} + +function handleError(error) { + console.log(`Erreur : ${error}`); +} + +function sendMessage(e) { + var sending = browser.runtime.sendMessage({content: "message du script de contenu"}); + sending.then(handleResponse, handleError); +} + +window.addEventListener("click", sendMessage);</pre> + +<p>Voici une version du script d’arrière-plan correspondant, qui envoie une réponse de manière synchrone depuis l’intérieur de l’écouteur :</p> + +<pre class="brush: js">// background-script.js + +function handleMessage(request, sender, sendResponse) { + console.log(`le script de contenu a envoyé un message : ${request.content}`); + sendResponse({response: "réponse du script d’arrière-plan"}); +} + +browser.runtime.onMessage.addListener(handleMessage);</pre> + +<p>Et voici une autre version, qui utilise {{jsxref("Promise.resolve()")}} :</p> + +<pre class="brush: js">// background-script.js + +function handleMessage(request, sender, sendResponse) { + console.log(`le script de contenu a envoyé un message : ${request.content}`); + return Promise.resolve({response: "réponse du script d’arrière-plan"}); +} + +browser.runtime.onMessage.addListener(handleMessage);</pre> + +<h3 id="Envoi_d’une_réponse_asynchrone_à_l’aide_de_sendResponse">Envoi d’une réponse asynchrone à l’aide de sendResponse</h3> + +<p>Voici un autre version du script d’arrière-plan de l’exemple précédent. Il envoie une réponse de manière asynchrone, après le retour de l’écouteur. Remarquez le <code>return true;</code> dans l’écouteur : cela indique au navigateur que vous avez l’intention d’utiliser l’argument <code>sendResponse</code> après le retour de l’écouteur.</p> + +<pre class="brush: js">// background-script.js + +function handleMessage(request, sender, sendResponse) { + console.log(`le script de contenu a envoyé un message : ${request.content}`); + setTimeout(() => { + sendResponse({response: "réponse asynchrone du script d’arrière-plan"}); + }, 1000); + return true; +} + +browser.runtime.onMessage.addListener(handleMessage);</pre> + +<h3 id="Envoi_d’une_réponse_asynchrone_à_l’aide_d’une_promesse">Envoi d’une réponse asynchrone à l’aide d’une promesse</h3> + +<p>Ce script de contenu reçoit le premier lien <code><a></code> dans la page, et envoie un message demandant si l’emplacement du lien fait partie des marque-pages. Il attend comme réponse un {{jsxref("Boolean", "booléen")}} : <code>true</code> si l’emplacement est dans les marque-pages, <code>false</code> sinon.</p> + +<pre class="brush: js">// content-script.js + +const firstLink = document.querySelector("a"); + +function handleResponse(isBookmarked) { + if (isBookmarked) { + firstLink.classList.add("bookmarked"); + } +} + +browser.runtime.sendMessage({ + url: firstLink.href +}).then(handleResponse);</pre> + +<p>Voici le script d’arrière plan. Il utilise <code>{{WebExtAPIRef("bookmarks.search()")}}</code> pour voir si le lien est dans les marque-pages, ce qui renvoie une {{jsxref("Promise", "promesse")}} :</p> + +<pre class="brush: js">// background-script.js + +function isBookmarked(message, sender, response) { + return browser.bookmarks.search({ + url: message.url + }).then(function(results) { + return results.length > 0; + }); +} + +browser.runtime.onMessage.addListener(isBookmarked);</pre> + +<p>Si le gestionnaire asynchrone ne renvoie pas de promise, vous pouvez explicitement construire une promise. Cet exemple plutôt artificiel envoie une réponse après un délai d’une seconde, en utilisant <code><a href="/fr/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout">Window.setTimeout()</a></code> :</p> + +<pre class="brush: js">// background-script.js + +function handleMessage(request, sender, sendResponse) { + return new Promise(resolve => { + setTimeout(() => { + resolve({response: "réponse asynchrone du script d’arrière-plan"}); + }, 1000); + }); +} + +browser.runtime.onMessage.addListener(handleMessage);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements </strong> + +<p>Cette API est basée sur l’API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/onmessageexternal/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/onmessageexternal/index.html new file mode 100644 index 0000000000..f9f67a0264 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/onmessageexternal/index.html @@ -0,0 +1,157 @@ +--- +title: runtime.onMessageExternal +slug: Mozilla/Add-ons/WebExtensions/API/runtime/onMessageExternal +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onMessageExternal + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onMessageExternal +--- +<div>{{AddonSidebar()}}</div> + +<div> +<div>Utilisez cet événement pour écouter les messages d'une autre extension.</div> + +<div></div> + +<p>Pour envoyer un message qui sera reçu par le module d'écoute <code>onMessageExternal</code>, utilisez {{WebExtAPIRef("runtime.sendMessage()")}}, en transmettant l'ID du destinataire dans le paramètre <code>extensionId</code>.</p> + +<p>Avec le message lui-même, l'écouteur est transmis :</p> + +<ul> + <li>un objet <code>sender</code> donnant des détails sur l'expéditeur du message</li> + <li>une fonction <code>sendResponse</code> qu'elle peut utiliser pour renvoyer une réponse à l'expéditeur.</li> +</ul> +</div> + +<p>Cette API ne peut pas être utilisée dans un script de contenu.</p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox brush:js">browser.runtime.onMessageExternal.addListener() +browser.runtime.onMessageExternal.removeListener(listener) +browser.runtime.onMessageExternal.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions:</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, <code>false</code> sinon.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>function</code></dt> + <dd> + <p>Une fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>message</code></dt> + <dd><code>object</code>. Le message lui-même. C'est un objet JSON-ifiable.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>sender</code></dt> + <dd>Un objet {{WebExtAPIRef('runtime.MessageSender')}} représentant l'expéditeur du message.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>sendResponse</code></dt> + <dd> + <p>Une fonction à appeler, au plus une fois, pour envoyer une réponse au message. La fonction prend un seul argument, qui peut être n'importe quel objet JSON-ifiable. Cet argument est renvoyé à l'expéditeur du message.</p> + + <p>Si vous avez plus d'un écouteur <code>onMessageExternal</code> dans le même document, un seul peut envoyer une réponse.</p> + + <p>To send a response synchronously, call <code>sendResponse</code> before the listener function returns. To send a response asynchronously:</p> + + <ul> + <li>Soit garder une référence à l'argumen <code>sendResponse</code> et retourne <code>true</code> à partir de la fonction d'écouteur. Vous pourrez ensuite appeler <code>sendResponse</code> après le retour de la fonction d'écouteur..</li> + <li>ou retourne une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> de la fonction d'écouteur et résoudre la promesse lorsque la réponse est prête.</li> + </ul> + </dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.onMessageExternal")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Dans cet exemple, l'extension "blue@mozilla.org" envoie un message à l'extension "red@mozilla.org":</p> + +<pre class="brush: js">// sender: browser.runtime.id == "blue@mozilla.org" + +// Send a message to the extension whose ID is "red@mozilla.org" +browser.runtime.sendMessage( + "red@mozilla.org", + "my message" + );</pre> + +<pre class="brush: js">// recipient: browser.runtime.id == "red@mozilla.org" + +function handleMessage(message, sender) { + // check that the message is from "blue@mozilla.org" + if (sender.id === "blue@mozilla.org") { + // process message + } +} + +browser.runtime.onMessageExternal.addListener(handleMessage);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/onrestartrequired/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/onrestartrequired/index.html new file mode 100644 index 0000000000..0183947b85 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/onrestartrequired/index.html @@ -0,0 +1,100 @@ +--- +title: runtime.onRestartRequired +slug: Mozilla/Add-ons/WebExtensions/API/runtime/onRestartRequired +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onRestartRequired + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onRestartRequired +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'une application ou le périphérique sur lequel elle s'exécute doit être redémarré. L'application devrait fermer toutes ses fenêtres dans les meilleurs délais pour permettre le redémarrage. Si l'application ne fait rien, un redémarrage sera appliqué après une période de grâce de 24 heures. Actuellement, cet événement est uniquement déclenché pour les applications de kiosque Chrome OS.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.runtime.onRestartRequired.addListener(listener) +browser.runtime.onRestartRequired.removeListener(listener) +browser.runtime.onRestartRequired.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajouter un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, <code>false</code> sinon.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>fonction </code></dt> + <dd> + <p>Une fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>raison</code></dt> + <dd>Une valeur {{WebExtAPIRef('runtime.OnRestartRequiredReason')}} — La raison pour laquelle l'événemtn est envoyé.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.onRestartRequired")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/onrestartrequiredreason/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/onrestartrequiredreason/index.html new file mode 100644 index 0000000000..4ab9253023 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/onrestartrequiredreason/index.html @@ -0,0 +1,74 @@ +--- +title: runtime.OnRestartRequiredReason +slug: Mozilla/Add-ons/WebExtensions/API/runtime/OnRestartRequiredReason +tags: + - API + - Add-ons + - Extensions + - Non-standard + - OnRestartsRequiredReason + - Reference + - Type + - WebExtensions + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/OnRestartRequiredReason +--- +<div>{{AddonSidebar()}}</div> + +<p>La raison pour laquelle l'événement {{WebExtAPIRef("runtime.onRestartRequired", "onRestartRequired")}} est en cours d'exécution.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<ul> + <li><code>"app_update"</code>: L'application en cours de mise à jour vers une version plus récente.</li> + <li><code>"os_update"</code>: Le navigateur / Système d'exploitation est mise à jour vers une nouvelle verion plus récente.</li> + <li><code>"periodic"</code>: Le système a fonctionné pendant plus logntemps que la durée de disponibilité autorisée dans la stratégie d'entreprise.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.OnRestartRequiredReason")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/onstartup/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/onstartup/index.html new file mode 100644 index 0000000000..49d50da632 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/onstartup/index.html @@ -0,0 +1,105 @@ +--- +title: runtime.onStartup +slug: Mozilla/Add-ons/WebExtensions/API/runtime/onStartup +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onStartup + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onStartup +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'un premier profil a cette extension installée. Cet événement n'est pas déclenché lorsqu'une navigation privée / profil privé est démarré, même si cette extension fonctionne en mode de navigation privée 'split'.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.runtime.onStartup.addListener(listener) +browser.runtime.onStartup.removeListener(listener) +browser.runtime.onStartup.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à écouteur.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un <code>écouteur</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Une fonction qui sera appelée lorsque cet événemetn se produit.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.onStartup")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ouvre <a href="http://chilloutandwatchsomecatgifs.com/">http://chilloutandwatchsomecatgifs.com/</a> quand le navigateur démarre :</p> + +<pre class="brush: js">function handleStartup() { + browser.tabs.create({ + url: "http://chilloutandwatchsomecatgifs.com/" + }); +} + +browser.runtime.onStartup.addListener(handleStartup);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/onsuspend/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/onsuspend/index.html new file mode 100644 index 0000000000..ef4f5a5353 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/onsuspend/index.html @@ -0,0 +1,108 @@ +--- +title: runtime.onSuspend +slug: Mozilla/Add-ons/WebExtensions/API/runtime/onSuspend +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onSuspend + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onSuspend +--- +<div>{{AddonSidebar()}}</div> + +<p>Envoyé sur la page de l'événement juste avant son déchargement. Cela donne à l'extension l'opportunité de faire un peu de nettoyage. Notez que, comme la page est en cours de déchargement, les opérations asynchrones démarrées lors de la gestion de cet événement ne sont pas garanties.</p> + +<div class="note"> +<p><strong>Note</strong>: Si quelque chose empêche le déchargement de la page d'événement, l'événement {{WebExtAPIRef("runtime.onSuspendCanceled")}} sera envoyé et la page ne sera pas déchargée.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.runtime.onSuspend.addListener(listener) +browser.runtime.onSuspend.removeListener(listener) +browser.runtime.onSuspend.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un <code>écouteur</code> est enregistré pour cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction dui sera appelée lorsque cet événement se produit</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.onSuspend")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ecoutez les événements suspendus :</p> + +<pre class="brush: js">function handleSuspend() { + console.log("Suspending event page"); + // handle cleanup +} + +browser.runtime.onSuspend.addListener(handleSuspend);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/onsuspendcanceled/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/onsuspendcanceled/index.html new file mode 100644 index 0000000000..cf01913334 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/onsuspendcanceled/index.html @@ -0,0 +1,103 @@ +--- +title: runtime.onSuspendCanceled +slug: Mozilla/Add-ons/WebExtensions/API/runtime/onSuspendCanceled +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onSuspendCanceled + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onSuspendCanceled +--- +<div>{{AddonSidebar()}}</div> + +<p>Envoyé après {{WebExtAPIRef("runtime.onSuspend")}} pour indiquer que l'application ne sera pas déchargée après tout.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.runtime.onSuspendCanceled.addListener(listener) +browser.runtime.onSuspendCanceled.removeListener(listener) +browser.runtime.onSuspendCanceled.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajouter un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est un écouteur à suppriimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un <code>écouteur</code> est enregistré pour cet événement. Retourne <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.runtime.onSuspendCanceled")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ecoutez les événements <code>SuspendCanceled</code> :</p> + +<pre class="brush: js">function handleSuspendCanceled() { + console.log("Suspend canceled"); +} + +browser.runtime.onSuspendCanceled.addListener(handleSuspendCanceled);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/onupdateavailable/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/onupdateavailable/index.html new file mode 100644 index 0000000000..d1795b9b05 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/onupdateavailable/index.html @@ -0,0 +1,116 @@ +--- +title: runtime.onUpdateAvailable +slug: Mozilla/Add-ons/WebExtensions/API/runtime/onUpdateAvailable +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onUpdateAvailable + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/onUpdateAvailable +--- +<div>{{AddonSidebar()}}</div> + +<p>Déclenché quand une mise à jour de l'extension est disponible. Cet événement permet à une extension de retarder une mise à jour : par exemple, car elle est au milieu d'une opération qui ne doit pas être interrompue.</p> + +<p>Si l'extension n'écoute pas cet événement lorsqu'une mise à jour est disponible, l'extension est rechargée immédiatement et la mise à jour est appliquée. Si l'extension est à l'écoute, la mise à jour sera appliquée la prochaine fois que l'extension sera rechargée. Cela arrive si :</p> + +<ul> + <li>Le navigateur est redémarré</li> + <li>L'extension est désactivée et réactivée</li> + <li>L'extension se recharge explicitement en appelant {{WebExtAPIRef('runtime.reload()')}}.</li> +</ul> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.runtime.onUpdateAvailable.addListener() +browser.runtime.onUpdateAvailable.removeListener(listener) +browser.runtime.onUpdateAvailable.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajouter un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument<code>listener</code> est un écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie que l'<code>écouteur</code> est enregistré pour cet événement. Retourne <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée quand cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><code>object</code>. Contient une seule propriété, une chaîne nommée <code>version</code>, qui représente le numéro de version de la mise à jour.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.onUpdateAvailable")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ecoutez les événements <code>UpdateAvailable</code>:</p> + +<pre class="brush: js">function handleUpdateAvailable(details) { + console.log(details.version); +} + +browser.runtime.onUpdateAvailable.addListener(handleUpdateAvailable);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/openoptionspage/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/openoptionspage/index.html new file mode 100644 index 0000000000..ab58180798 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/openoptionspage/index.html @@ -0,0 +1,86 @@ +--- +title: runtime.openOptionsPage() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/openOptionsPage +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/openOptionsPage +--- +<div>{{AddonSidebar()}}</div> + +<div>Si votre extension a défini une <a href="/fr/Add-ons/WebExtensions/user_interface/Options_pages">page d'options</a>, cette méthode l'ouvre.</div> + +<div></div> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var openingPage = browser.runtime.openOptionsPage() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="valeur_retournée">valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans argument lorsque la page d'options a été créée avec succés, ou rejetée avec un message d'erreur si l'opération a échoué.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.openOptionsPage")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ouvrez une page d'options lorsque l'utilisateur clique sur l'icône d'une action du navigateur :</p> + +<pre class="brush: js">function onOpened() { + console.log(`Options page opened`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var opening = browser.runtime.openOptionsPage(); +opening.then(onOpened, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/platformarch/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/platformarch/index.html new file mode 100644 index 0000000000..84d8172bb4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/platformarch/index.html @@ -0,0 +1,77 @@ +--- +title: runtime.PlatformArch +slug: Mozilla/Add-ons/WebExtensions/API/runtime/PlatformArch +tags: + - API + - Add-ons + - Extensions + - Non-standard + - PlatformArch + - Reference + - Type + - WebExtensions + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/PlatformArch +--- +<div>{{AddonSidebar()}}</div> + +<p>L'architecture du processeur de la machine.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possible sont :</p> + +<dl> + <dt><code>"arm"</code></dt> + <dd>La plateforme est basée sur l'architecture des bras.</dd> + <dt><code>"x86-32"</code></dt> + <dd>La plateforme est basé sur l'architecture x86 32-bits.</dd> + <dt><code>"x86-64"</code></dt> + <dd>La plateforme est basé sur l'architecture x86 64-bits.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.PlatformArch")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/platforminfo/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/platforminfo/index.html new file mode 100644 index 0000000000..30ff35a1ce --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/platforminfo/index.html @@ -0,0 +1,77 @@ +--- +title: runtime.PlatformInfo +slug: Mozilla/Add-ons/WebExtensions/API/runtime/PlatformInfo +tags: + - API + - Add-ons + - Extensions + - Non-standard + - PlatformInfo + - Reference + - Type + - WebExtensions + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/PlatformInfo +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet contenant des informations sur la plate-forme actuelle.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets qui contiennent les propriétés suivantes:</p> + +<dl class="reference-values"> + <dt><code>os</code></dt> + <dd>{{WebExtAPIRef('runtime.PlatformOs')}}. Le système d'exploitation de la plateforme.</dd> + <dt><code>arch</code></dt> + <dd>{{WebExtAPIRef('runtime.PlatformArch')}}. L'architecture du processeur de la plateforme.</dd> + <dt><code>nacl_arch</code></dt> + <dd>{{WebExtAPIRef('runtime.PlatformNaclArch')}}. L'architecture du client natif Cela peut être différent de <code>arch</code> sur certaines plates-formes.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.runtime.PlatformInfo")}}</span></p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/platformnaclarch/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/platformnaclarch/index.html new file mode 100644 index 0000000000..9880430b69 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/platformnaclarch/index.html @@ -0,0 +1,68 @@ +--- +title: runtime.PlatformNaclArch +slug: Mozilla/Add-ons/WebExtensions/API/runtime/PlatformNaclArch +tags: + - API + - Add-ons + - Extensions + - Non-standard + - PlatformNaclArch + - Reference + - Type + - WebExtensions + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/PlatformNaclArch +--- +<p>{{AddonSidebar()}}</p> + +<p>L'architecture du client natif. Cela peut-etre différent de arch sur certaines plate-formes.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de type sont des chaînes. Les valeurs possible sont : <code>"arm"</code>, <code>"x86-32"</code>, <code>"x86-64"</code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.runtime.PlatformNaclArch")}}</span></p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/platformos/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/platformos/index.html new file mode 100644 index 0000000000..64911f28b3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/platformos/index.html @@ -0,0 +1,83 @@ +--- +title: runtime.PlatformOs +slug: Mozilla/Add-ons/WebExtensions/API/runtime/PlatformOs +tags: + - API + - Add-ons + - Extensions + - Non-standard + - PlatformOs + - Reference + - Type + - WebExtensions + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/PlatformOs +--- +<div>{{AddonSidebar()}}</div> + +<p>Le système d'exploitation sur lequel le navigateur fonctionne.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont:</p> + +<dl> + <dt><code>"mac"</code></dt> + <dd>Le système d'exploitation est sous Mac OS X.</dd> + <dt><code>"win"</code></dt> + <dd>Le système d'exploitation est sous Windows.</dd> + <dt><code>"android"</code></dt> + <dd>Le système d'exploitation est sous Android.</dd> + <dt><code>"cros"</code></dt> + <dd>Le système d'exploitation est sous Chrome OS.</dd> + <dt><code>"linux"</code></dt> + <dd>Le système d'exploitation est sous Linux.</dd> + <dt><code>"openbsd"</code></dt> + <dd>Le système d'exploitation est sous Open/FreeBSD.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.PlatformOs")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/port/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/port/index.html new file mode 100644 index 0000000000..eb8e904ad7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/port/index.html @@ -0,0 +1,248 @@ +--- +title: runtime.Port +slug: Mozilla/Add-ons/WebExtensions/API/runtime/Port +tags: + - API + - Add-ons + - Extensionns + - Non-standard + - Reference + - Type + - WebExtensions + - port + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/Port +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet <code>Port</code> represente une extrémité d'une connexion entre deux contextes spécifiques, qui peut-être utilisée pour échanger des messages.</p> + +<p>Un côté initie la connexion à l'aide d'une API <code>connect()</code>. Cela retourne un objet <code>Port</code>. L'autre camp écoute les tentatives de connexion à l'aide d'un écouteur <code>onConnect</code>. Ceci est passé un objet <code>Port</code> correspondant.</p> + +<p>Une fois que les deux côtés ont des objets <code>Port,</code> ils peuvent échanger des messages JSON en utilisant <code>Port.postMessage()</code> et <code>Port.onMessage</code>. Quand ils sont terminés, chaque extrémité peut se déconnecter en utilisant <code>Port.disconnect()</code>, ce qui générera un événement <code>Port.onDisconnect</code> à l'autre extrémité, permettant à l'autre extrémité de faire le nettoyage requis.</p> + +<p>Vous pouvez utiliser ce modèle pour communiquer entre:</p> + +<ul> + <li>différentes parties de votre extension (par exemple, entre les <a href="/fr/Add-ons/WebExtensions/Content_scripts">scripts de contenus</a> et les <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">scripts d'arrière-plan</a>)</li> + <li>entre votre extension et une <a href="/fr/Add-ons/WebExtensions/Native_messaging">application native s'exéutant sur l'ordinateur de l'utilisateur</a>.</li> + <li>entre votre extension et une extension différente</li> +</ul> + +<p>Vous devez utiliser différentes API de connexion pour différents types de connexions, comme indiqué dans le tableau ci-dessous.</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">type de connection</th> + <th scope="col">Lancer une tentative de connexion</th> + <th scope="col">Gérer la tentative de connexion</th> + </tr> + </thead> + <tbody> + <tr> + <td>Script d'arrière-plan au script de contenu</td> + <td>{{WebExtAPIRef("tabs.connect()")}}</td> + <td>{{WebExtAPIRef("runtime.onConnect")}}</td> + </tr> + <tr> + <td>Script de contenu au script d'arrière-plan</td> + <td>{{WebExtAPIRef("runtime.connect()")}}</td> + <td>{{WebExtAPIRef("runtime.onConnect")}}</td> + </tr> + <tr> + <td>Extension à l'application native</td> + <td>{{WebExtAPIRef("runtime.connectNative()")}}</td> + <td>N'est pas applicable (voir <a href="/fr/Add-ons/WebExtensions/Native_messaging">Native messaging</a>).</td> + </tr> + <tr> + <td>Extension à l'extension</td> + <td>{{WebExtAPIRef("runtime.connect()")}}</td> + <td>{{WebExtAPIRef("runtime.onConnectExternal")}}</td> + </tr> + </tbody> +</table> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>name</code></dt> + <dd><code>string</code>. Le nom du port, défini dans {{WebExtAPIRef("runtime.connect()")}} ou {{WebExtAPIRef("tabs.connect()")}} appel qui l'a créé. Si ce port est connecté à une application native, son nom est le nom de l'application native.</dd> + <dt><code>disconnect</code></dt> + <dd><code>function</code>. Déconnecte un port. Chaque extrémité peut appeler cela quand ils ont fini avec le port. Cela provoquera le déclenchement de <code>onDisconnect</code> à l'autre extrémité. Ceci est utile si l'autre extrémité maintient un état relatif à ce port, qui peut être nettoyé lors de la déconnexion. Si ce port est connecté à une application native, cette fonction ferme l'application native.</dd> + <dt><code>error</code></dt> + <dd><code>object</code>. Si le port a été déconnecté en raison d'une erreur, il sera défini sur un objet avec un <code>message</code>, de propriété de chaîne, vous donnant plus d'informations sur l'erreur. Voir <code>onDisconnect</code>.</dd> + <dt><code>onDisconnect</code></dt> + <dd> + <p><code>object</code>. Cela contient les fonctions <code>addListener()</code> et <code>removeListener()</code> communes à tous les événements pour les extensions créées à l'aide des API. WebExtension. Les fonctions de l'écouteur seront appelées lorsque l'autre extrémité aura appelé <code>Port.disconnect()</code>. Cet événement ne sera déclenché qu'une fois pour chaque port. La fonction d'écouteur recevra l'objet <code>Port</code>. Si le port a été déconnecté en raison d'une erreur, l'argument <code>Port</code> contiendra une propriété <code>error</code> donnant plus d'informations sur l'erreur :</p> + + <pre class="brush: js">port.onDisconnect.addListener((p) => { + if (p.error) { + console.log(`Disconnected due to an error: ${p.error.message}`); + } +});</pre> + + <p>Notez que dans Google Chrome <code>port.error</code> n'est pas supporté: utilisez plutôt {{WebExtAPIRef("runtime.lastError")}} pour obtenir le message d'erreur.</p> + </dd> + <dt><code>onMessage</code></dt> + <dd><code>object</code>. Cela contient les fonctions <code>addListener()</code> et <code>removeListener()</code> communes à tous les événements pour les extensions créées à l'aide des API WebExtension. Les fonctions de l'écouteur seront appelées lorsque l'autre extrémité aura envoyé un message à ce port. L'écouteur recevra l'objet JSON envoyé par l'autre extrémité.</dd> + <dt><code>postMessage</code></dt> + <dd><code>function</code>. Envoyer un message à l'autre extrémité. Cela prend un argument, qui est un objet JSON représentant le message à envoyer. Il sera fourni à tout script écoutant l'événement <code>onMessage</code> du port, ou à l'application native si ce port est connecté à une application native.</dd> + <dt><code>sender</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('runtime.MessageSender')}}. Contient des informations sur l'expéditeur du message. ette propriété ne sera présente que sur les ports transmis aux écouteurs <code>onConnect</code>/<code>onConnectExternal</code>.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.Port")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<h3 id="Connecting_from_content_scripts">Connecting from content scripts</h3> + +<p>This content script:</p> + +<ul> + <li>connects to the background script and stores the <code>Port</code> in a variable called <code>myPort</code>.</li> + <li>listens for messages on <code>myPort</code> and logs them.</li> + <li>sends messages to the background script, using <code>myPort</code>, when the user clicks the document.</li> +</ul> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="comment token">// content-script.js</span> + +<span class="keyword token">var</span> myPort <span class="operator token">=</span> browser<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span><span class="function token">connect</span><span class="punctuation token">(</span><span class="punctuation token">{</span>name<span class="punctuation token">:</span><span class="string token">"port-from-cs"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +myPort<span class="punctuation token">.</span><span class="function token">postMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span>greeting<span class="punctuation token">:</span> <span class="string token">"hello from content script"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + +myPort<span class="punctuation token">.</span>onMessage<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span>m<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"In content script, received message from background script: "</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>m<span class="punctuation token">.</span>greeting<span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + +document<span class="punctuation token">.</span>body<span class="punctuation token">.</span><span class="function token">addEventListener</span><span class="punctuation token">(</span><span class="string token">"click"</span><span class="punctuation token">,</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + myPort<span class="punctuation token">.</span><span class="function token">postMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span>greeting<span class="punctuation token">:</span> <span class="string token">"they clicked the page!"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>The corresponding background script:</p> + +<ul> + <li>listens for connection attempts from the content script.</li> + <li>when it receives a connection attempt: + <ul> + <li>stores the port in a variable named <code>portFromCS</code>.</li> + <li>sends the content script a message using the port.</li> + <li>starts listening to messages received on the port, and logs them.</li> + </ul> + </li> + <li>sends messages to the content script, using <code>portFromCS</code>, when the user clicks the extension's browser action.</li> +</ul> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="comment token">// background-script.js</span> + +<span class="keyword token">var</span> portFromCS<span class="punctuation token">;</span> + +<span class="keyword token">function</span> <span class="function token">connected</span><span class="punctuation token">(</span>p<span class="punctuation token">)</span> <span class="punctuation token">{</span> + portFromCS <span class="operator token">=</span> p<span class="punctuation token">;</span> + portFromCS<span class="punctuation token">.</span><span class="function token">postMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span>greeting<span class="punctuation token">:</span> <span class="string token">"hi there content script!"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + portFromCS<span class="punctuation token">.</span>onMessage<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span>m<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"In background script, received message from content script"</span><span class="punctuation token">)</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>m<span class="punctuation token">.</span>greeting<span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span>onConnect<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>connected<span class="punctuation token">)</span><span class="punctuation token">;</span> + +browser<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="keyword token">function</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span> + portFromCS<span class="punctuation token">.</span><span class="function token">postMessage</span><span class="punctuation token">(</span><span class="punctuation token">{</span>greeting<span class="punctuation token">:</span> <span class="string token">"they clicked the button!"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<h4 id="Script_à_contenu_multiple">Script à contenu multiple</h4> + +<p>Si plusieurs scripts de contenu communiquent en même temps, vous voudrez peut-être stocker chaque connexion dans un tableau.</p> + +<ul> +</ul> + +<pre class="brush: js">// background-script.js + +var ports = [] + +function connected(p) { + ports[p.sender.tab.id] = p + //... +} + +browser.runtime.onConnect.addListener(connected) + +browser.browserAction.onClicked.addListener(function() { + ports.forEach(p => { + p.postMessage({greeting: "they clicked the button!"}) + }) +});</pre> + +<h3 id="Connecting_to_native_applications">Connecting to native applications</h3> + +<p>This example connects to the native application "ping_pong" and starts listening for messages from it. It also sends the native application a message when the user clicks a browser action icon:</p> + +<pre class="brush: js">/* +On startup, connect to the "ping_pong" app. +*/ +var port = browser.runtime.connectNative("ping_pong"); + +/* +Listen for messages from the app. +*/ +port.onMessage.addListener((response) => { + console.log("Received: " + response); +}); + +/* +On a click on the browser action, send the app a message. +*/ +browser.browserAction.onClicked.addListener(() => { + console.log("Sending: ping"); + port.postMessage("ping"); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/reload/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/reload/index.html new file mode 100644 index 0000000000..05b9a48524 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/reload/index.html @@ -0,0 +1,83 @@ +--- +title: runtime.reload() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/reload +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - reload + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/reload +--- +<div>{{AddonSidebar()}}</div> + +<p>Recharge une extension.</p> + +<p>S'il y a des mises à jour en attente pour l'extension, qu'elles ont été différées en écoutant {{WebExtAPIRef("runtime.onUpdateAvailable")}}, elles seront appliquées en reload.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.runtime.reload() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.reload")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Rechargez l'extension lorsque l'utilisateur clique sur l'icône d'une action du navigateur :</p> + +<pre class="brush: js">browser.browserAction.onClicked.addListener((tab) => { + browser.runtime.reload(); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/requestupdatecheck/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/requestupdatecheck/index.html new file mode 100644 index 0000000000..1adb3de2bc --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/requestupdatecheck/index.html @@ -0,0 +1,110 @@ +--- +title: runtime.requestUpdateCheck() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/requestUpdateCheck +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - requestUpdateCheck + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/requestUpdateCheck +--- +<div>{{AddonSidebar()}}</div> + +<p>Vérifie de voir si un mise à jour de l'extension est disponible.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var requestingCheck = browser.runtime.requestUpdateCheck() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec deux arguments :</p> + +<dl class="reference-values"> + <dt><code>status</code></dt> + <dd>Une valeur {{WebExtAPIRef('runtime.RequestUpdateCheckStatus')}} — Le résultat de la vérification de mise à jour.</dd> + <dt><code>details</code>{{optional_inline}}</dt> + <dd><code>object</code>. Si le <code>status</code> est <code>update_available</code>, cela contient plus d'informations sur la mise à jour. C'est un objet contenant une simple propriété :</dd> + <dd> + <dl> + <dt><code>version</code></dt> + <dd><code>string</code>. La version de la mise à jour.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.runtime.requestUpdateCheck")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<p>Demander une mise à jour, etenregistrer la nouvelle version si elle est disponible :</p> + +<pre class="brush: js">function onRequested(status, details) { + console.log(status); + if (status === "update_available") { + console.log(details.version); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var requestingCheck = browser.runtime.requestUpdateCheck(onRequested); +requestingCheck.then(onRequested, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/requestupdatecheckstatus/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/requestupdatecheckstatus/index.html new file mode 100644 index 0000000000..15268f7523 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/requestupdatecheckstatus/index.html @@ -0,0 +1,77 @@ +--- +title: runtime.RequestUpdateCheckStatus +slug: Mozilla/Add-ons/WebExtensions/API/runtime/RequestUpdateCheckStatus +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - RequestUpdateCheckStatus + - Type + - WebExtensions + - runtime +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/RequestUpdateCheckStatus +--- +<div>{{AddonSidebar()}}</div> + +<p>Résultat d'un appel à {{WebExtAPIRef("runtime.requestUpdateCheck()")}}.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<dl> + <dt><code>"throttled"</code></dt> + <dd>La mise à jour est limitée.</dd> + <dt><code>"no_update"</code></dt> + <dd>Aucune mise à jour n'est disponible.</dd> + <dt><code>"update_available"</code></dt> + <dd>Une mise à jour de l'extension est disponible.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.RequestUpdateCheckStatus")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/sendmessage/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/sendmessage/index.html new file mode 100644 index 0000000000..1768aaed86 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/sendmessage/index.html @@ -0,0 +1,167 @@ +--- +title: runtime.sendMessage() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - runtime + - sendMessage +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage +--- +<div>{{AddonSidebar()}}</div> + +<p>Envoie un simple message aux écouteurs d'événement dans votre extension ou une extension différente.</p> + +<p>Si vous envoyez à votre extension, omettez l'argument <code>extensionId</code>. L'événement {{WebExtAPIRef('runtime.onMessage')}} sera déclenché dans chaque page de votre extension, à l'exception du cadre appelé <code>runtime.sendMessage</code>.</p> + +<p>Si vous envoyez une extension différente, ajouter l'argument <code>extensionId</code> à l'ID de l'autre extension. {{WebExtAPIRef('runtime.onMessageExternal')}} sera déclenché dans l'autre extension.</p> + +<p>Les extensions ne peuvent pas envoyer de messages aux scripts de contenu en utilisant cette méthode. Pour envoyer des messages aux scripts de contenu, utilisez {{WebExtAPIRef('tabs.sendMessage')}}.</p> + +<ul> +</ul> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<div class="blockIndicator note"> +<p>Vous pouvez également utiliser une <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#Communication_avec_les_scripts_darrière-plan">approche basée sur la connexion pour échanger des messages</a>.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var sending = browser.runtime.sendMessage( + extensionId, // optional string + message, // any + options // optional object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>extensionId</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'ID de l'extension à envoyer le message. Incluez ceci pour envoyer le message à une extension différente..Si le destinataire prévu a défini un ID explicitement en utilisant la clé d' <a href="/fr/Add-ons/WebExtensions/manifest.json/applications">applications</a> dans manifest.json, <code>extensionId</code> doit avoir une valeur. Sinon, il devrait avoir l'ID qui a été généré pour le destinataire prévu.</dd> + <dd>Si <code>extensionId</code> est omis, le message sera envoyé à votre propre extension.</dd> + <dt><code>message</code></dt> + <dd><code>any</code>. Un objet qui peut être structuré clone sérialisé.</dd> + <dt><code>options</code>{{optional_inline}}</dt> + <dd><code>object</code>. + <dl class="reference-values"> + <dt><code>includeTlsChannelId</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Indique si l'ID de canal TLS sera transmis à {{WebExtAPIRef('runtime.onMessageExternal')}} pour les processus qui écoutent l'événement de connexion.</dd> + <dt><code>toProxyScript{{optional_inline}}</code></dt> + <dd><code>boolean</code>. Doit être True si le message est destiné à un fichier PAC chargé à l'aide de l'API {{WebExtAPIRef("proxy")}}.</dd> + </dl> + </dd> +</dl> + +<p>En fonction des arguments qui lui sont donnés, cette API est parfois ambiguë. Les règles suivantes sont utilisées :</p> + +<ul> + <li><strong>Si un argument est donné</strong>, c'est le message à envoyer, et le message sera envoyé en interne.</li> + <li><strong>Si deux arguments sont donnés :</strong> + <ul> + <li>Les arguments sont interprétés comme (message, options) et le message est envoyé en interne si le second argument est l'un des suivants : + <ol> + <li>Un objet d'options valide (c'est-à-dire un objet qui ne contient que les propriétés des options supportés par le navigateur)</li> + <li>null</li> + <li>indéfini</li> + </ol> + </li> + <li>Sinon, les arguments sont interprétés comme <code>(extensionId, message)</code>. Le message sera envoyé à l'extension identifiée par <code>extensionId</code>.</li> + </ul> + </li> + <li><strong>Si trois arguments sont donnés</strong>, les arguments sont interprétés comme <code>(extensionId, message, options)</code>. Le message sera envoyé à l'extension identifiée par <code>extensionId</code>.</li> +</ul> + +<p>Notez qu'avant Firefox 55, le règles étaient différentes dans le cas des 2 arguments. Sous les anciennes règles, si le premier argument était une chaîne, il était traité comme <code>extensionId</code>, avec le message comme deuxième argument. Cel signifiait que si vous appelez <code>sendMessage()</code> avec des arguments comme <code>("my-message", {})</code>, il enverrait un message vide à l'extension identifiée par "my-message". Sous les nouvelles règles, avec ces arguments, vous enverriez le message "my-message" en interne, avec un objet options vide.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si le destinataire a envoyé une réponse, celle-ci sera remplie avec la réponse en tant qu'objet JSON. Sinon, il sera rempli sans arguments. si une erreur survient lors de la connexion à l'extension, la promessage sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navitageur">Compatibilité du navitageur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.runtime.sendMessage")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<p>Voici un script de contenu qui envoie un message au script d'arrière-plan lorsque l'utilisateur clique sur la fenêtre de contenu. La charge utile du message est <code>{greeting: "Greeting from the content script"}</code>, et l'expéditeur s'attend également à recevoir une réponse, qui est gérée dans la fonction <code>handleResponse</code> :</p> + +<pre class="brush: js">// content-script.js + +function handleResponse(message) { + console.log(`Message from the background script: ${message.response}`); +} + +function handleError(error) { + console.log(`Error: ${error}`); +} + +function notifyBackgroundPage(e) { + var sending = browser.runtime.sendMessage({ + greeting: "Greeting from the content script" + }); + sending.then(handleResponse, handleError); +} + +window.addEventListener("click", notifyBackgroundPage);</pre> + +<p>Le script d'arrière-plan correspondant ressemble à ceci :</p> + +<pre class="brush: js">// background-script.js + +function handleMessage(request, sender, sendResponse) { + console.log("Message from the content script: " + + request.greeting); + sendResponse({response: "Response from background script"}); +} + +browser.runtime.onMessage.addListener(handleMessage);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/sendnativemessage/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/sendnativemessage/index.html new file mode 100644 index 0000000000..af714bdb80 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/sendnativemessage/index.html @@ -0,0 +1,114 @@ +--- +title: runtime.sendNativeMessage() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/sendNativeMessage +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - runtime + - sendNativeMessage +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/sendNativeMessage +--- +<div>{{AddonSidebar()}}</div> + +<p>Envoie un seul message d'une extension à une application native.</p> + +<p>Cela prend deux paramètres obligatoires : le nom de l'application native et un objet JSON qui est le message à envoyer. Le navigateur lancera l'application native et délivrera le message.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. The first message sent by the native application is treated as a response to the <code>sendNativeMessage()</code> call, and the promise will be fulfilled with this message as a parameter. Note that you can't use {{WebExtAPIRef("runtime.onMessage")}} to get responses from the application: you must use the callback function instead.</p> + +<p>Une nouvelle instance de l'application est lancée pour appel à <code>runtime.sendNativeMessage()</code>. Le navigateur terminera l'application native après avoir reçu une réponse. Pour mettre fin à une application native, le navigateur ferme le canal, donne au processus quelques secondes pour quitter normalement, puis le tue s'il ne s'est pas arrêté.</p> + +<p>Pour plus d'informations, voir <a href="/fr/Add-ons/WebExtensions/Native_messaging">Native messaging</a>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var sending = browser.runtime.sendNativeMessage( + application, // string + message // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>application</code></dt> + <dd><code>string</code>. Le nom de l'application native. Cela doit correspondre à la propriété "name" dans le <a href="/fr/Add-ons/WebExtensions/Native_messaging#App_manifest">fichier manifest de l'application native</a>.</dd> + <dt><code>message</code></dt> + <dd><code>object</code>. Un objet JSON qui sera envoyé à l'application native.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si l'expéditeur a envoyé une réponse, celle-ci sera remplie avec la réponse en tant qu'objet JSON. Sinon, il sera rempli sans arguments. Si une erreur survient lors de la connexion à l'application native, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.runtime.sendNativeMessage")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<p>Voici un script d'arrière-plan qui envoie un message "ping" à l'application "ping_pong" et enregistre la réponse, chaque fois que l'utilisateur clique sur l'action du navigateur :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">onResponse</span><span class="punctuation token">(</span>response<span class="punctuation token">)</span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">`Received ${</span>response}<span class="punctuation token">`)</span><span class="punctuation token">;</span> +<span class="punctuation token">} + +</span></code>function onError(error) { + console.log(`Error: ${error}`); +}<code class="language-js"> + +<span class="comment token">/* +On a click on the browser action, send the app a message. +*/</span> +browser<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="operator token">=</span><span class="operator token">></span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"Sending: ping"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + var sending = browser<span class="punctuation token">.</span>runtime<span class="punctuation token">.</span><span class="function token">sendNativeMessage</span><span class="punctuation token">(</span><span class="string token">"ping_pong"</span><span class="punctuation token">,</span> <span class="string token">"ping"</span><span class="punctuation token">)</span><span class="punctuation token">; + sending.then(onResponse, onError);</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/runtime/setuninstallurl/index.html b/files/fr/mozilla/add-ons/webextensions/api/runtime/setuninstallurl/index.html new file mode 100644 index 0000000000..9d74339487 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/runtime/setuninstallurl/index.html @@ -0,0 +1,97 @@ +--- +title: runtime.setUninstallURL() +slug: Mozilla/Add-ons/WebExtensions/API/runtime/setUninstallURL +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - runtime + - setUninstallURL +translation_of: Mozilla/Add-ons/WebExtensions/API/runtime/setUninstallURL +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit l'URL à visiter lorsque l'extension est déinstallée. Cela peut être utilisé pour nettoyer les données côté serveur, effectuer des analyses ou implémenter des enquêtes. L'URL peut contenir au maximum 255 caractères.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var settingUrl = browser.runtime.setUninstallURL( + url // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL à ouvrir après la désinstallation de l'extension. Cette URL doit avoir un schéma <code>http</code> ou <code>https</code>. Définissez-le sur une chaîne vide pour ne pas ouvrir un nouvel onglet lors de la désinstallation.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans argument lorsque l'URL a été définie ou rejetée avec un message d'erreur si l'opération a échoué.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.runtime.setUninstallURL")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function onSetURL() { + console.log("set uninstall URL"); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var settingUrl = browser.runtime.setUninstallURL("https://example.org"); +settingUrl.then(onSetURL, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/runtime#event-onConnect"><code>chrome.runtime</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/runtime.json"><code>runtime.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/search/get/index.html b/files/fr/mozilla/add-ons/webextensions/api/search/get/index.html new file mode 100644 index 0000000000..68ed33d84e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/search/get/index.html @@ -0,0 +1,71 @@ +--- +title: search.get() +slug: Mozilla/Add-ons/WebExtensions/API/search/get +tags: + - API + - Add-ons + - Extensions + - Reference + - Search + - WebExtensions + - get +translation_of: Mozilla/Add-ons/WebExtensions/API/search/get +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient un tableau de tous les moteurs de recherche installés.</p> + +<p>Chaque moteur de recherche renvoyé est identifié par un nom, que vous pouvez passer dans {{WebExtAPIRef("search.search()")}}} pour utiliser ce moteur particulier pour effectuer une recherche.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingEngines = browser.search.get() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un <a href="Web/JavaScript/Reference/Global_Objects/array">tableau</a> d'objets de moteur de recherche. Chaque objet de moteur de recherche peut contenir les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>name</code></dt> + <dd><code>string</code>. Le nom du moteur de recherche.</dd> + <dt><code>isDefault</code></dt> + <dd> + <p><code>boolean</code>. <code>true</code> si le moteur de recherche est le moteur par défaut. Un seul moteur de recherche peut être le moteur par défaut à un moment donné.</p> + </dd> + <dt><code>alias</code>{{optional_inline}}</dt> + <dd> + <p><code>string</code>. Si un moteur de recherche a un alias, l'utilisateur peut effectuer une recherche avec un moteur de recherche particulier en entrant l'alias dans la barre d'adresse avant le terme de recherche. Par exemple, si le moteur Wikipedia a un alias "wk", l'utilisateur peut rechercher des pandas dans Wikipedia en entrant "wk pandas" dans la barre d'adresse. L'alias est parfois aussi appelé "mot-clé".</p> + </dd> + <dt><code>favIconUrl</code>{{optional_inline}}</dt> + <dd> + <p><code>string</code>. L'icône du moteur de recherche, comme une donnée : URL.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.search.search", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenir tous les moteurs de recherche installés :</p> + +<pre class="brush: js">function retrieved(results) { + console.log(`There were: ${results.length} search engines retrieved.`); + for (let searchEngine of results) { + console.log(JSON.stringify(searchEngine.name)); + } +} + +browser.search.get().then(retrieved);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/search/index.html b/files/fr/mozilla/add-ons/webextensions/api/search/index.html new file mode 100644 index 0000000000..a23471bbb0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/search/index.html @@ -0,0 +1,32 @@ +--- +title: search +slug: Mozilla/Add-ons/WebExtensions/API/search +tags: + - API + - Add-ons + - Extensions + - Reference + - Search + - Search Engines + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/search +--- +<div>{{AddonSidebar}}</div> + +<p>Récupère les moteurs de recherche et lance une recherche avec un moteur de recherche spécifique</p> + +<p>Pour utiliser cette API, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "search".</p> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("search.get()")}}</dt> + <dd>Récupérer tous les moteurs de recherche</dd> + <dt>{{WebExtAPIRef("search.search()")}}</dt> + <dd>Recherche à l'aide du moteur de recherche spécifié.</dd> + <dt> + <h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + </dt> +</dl> + +<p>{{Compat("webextensions.api.search", 1, 1)}} {{WebExtExamples("h2")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/search/search/index.html b/files/fr/mozilla/add-ons/webextensions/api/search/search/index.html new file mode 100644 index 0000000000..92b11dec23 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/search/search/index.html @@ -0,0 +1,102 @@ +--- +title: search.search() +slug: Mozilla/Add-ons/WebExtensions/API/search/search +tags: + - API + - Add-ons + - Extensions + - Recherche + - Reference + - Search + - SearchEngines + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/search/search +--- +<div>{{AddonSidebar()}}</div> + +<p>Effectuer une recherche en utilisant le moteur de recherche spécifié, ou le moteur de recherche par défaut si aucun moteur de recherche n'est spécifié.</p> + +<p>Les résultats seront affichés dans un nouvel onglet, ou si l'argument tabId est donné, dans l'onglet identifié par ceci.</p> + +<p>Pour utiliser cette fonction dans votre extension, vous devez demander la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission manifest</a> "search".</p> + +<p>Pour obtenir les moteurs de recherche installés, utilisez {{WebExtAPIRef("search.get()")}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.search.search( + searchProperties // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl class="reference-values"> + <dt><code>searchProperties</code></dt> + <dd> + <p><code>object</code>. Un objet avec les propriétés suivantes :</p> + + <dl class="reference-values"> + <dt><code>query</code></dt> + <dd><code>string</code>. La requête de recherche.</dd> + <dt><code>engine</code>{{optional_inline}}</dt> + <dd> + <p><code>string</code>. Le nom du moteur de recherche. Si le nom du moteur de recherche que vous spécifiez n'existe pas, la fonction lance une erreur. Si cette propriété est omise, le moteur de recherche par défaut sera utilisé.</p> + </dd> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd> + <p><code>integer</code>. Un identificateur facultatif pour l'onglet dans lequel vous voulez exécuter la recherche. Si cette propriété est omise, les résultats de la recherche seront affichés dans un nouvel onglet.</p> + </dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Aucune</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.search.search", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Recherche à l'aide du moteur de recherche par défaut. Les résultats seront affichés dans un nouvel onglet :</p> + +<pre class="brush: js no-line-numbers">function search() { + browser.search.search({ + query: "styracosaurus" + }); +} + +browser.browserAction.onClicked.addListener(search); +</pre> + +<p>Recherche à l'aide de Wikipedia. Les résultats seront affichés dans un nouvel onglet :</p> + +<pre class="brush: js no-line-numbers">function search() { + browser.search.search({ + query: "styracosaurus", + engine: "Wikipedia (en)" + }); +} + +browser.browserAction.onClicked.addListener(search); +</pre> + +<p>Recherche à l'aide de Wikipedia. Les résultats seront affichés dans un nouvel onglet</p> + +<pre class="brush: js no-line-numbers">function search(tab) { + browser.search.search({ + query: "styracosaurus", + engine: "Wikipedia (en)", + tabId: tab.id + }); +} + +browser.browserAction.onClicked.addListener(search); +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/filter/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/filter/index.html new file mode 100644 index 0000000000..f8ef71d3c7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/filter/index.html @@ -0,0 +1,75 @@ +--- +title: sessions.Filter +slug: Mozilla/Add-ons/WebExtensions/API/sessions/Filter +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - filter + - sessions +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/Filter +--- +<div>{{AddonSidebar()}}</div> + +<p>L'objet <code>Filter</code> permet de restreindre le nombre d'objets {{WebExtAPIRef("sessions.Session", "Session")}} retournés par un appel à {{WebExtAPIRef("sessions.getRecentlyClosed()")}}.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les proriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>maxResults</code>{{optional_inline}}</dt> + <dd><code>number</code>. Le nombre maximal de résultats à retourner.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.sessions.Filter")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/sessions"><code>chrome.sessions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/forgetclosedtab/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/forgetclosedtab/index.html new file mode 100644 index 0000000000..3f7e2f6a52 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/forgetclosedtab/index.html @@ -0,0 +1,80 @@ +--- +title: sessions.forgetClosedTab() +slug: Mozilla/Add-ons/WebExtensions/API/sessions/forgetClosedTab +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - forgetClosedTab + - sessions +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/forgetClosedTab +--- +<div>{{AddonSidebar()}}</div> + +<div>Supprime un onglet fermé de la liste des onglets récemment fermés du navigateur.</div> + +<div></div> + +<div>Notez que les sites visités par cet onglet ne sont pas supprimés de l'historique du navigateur. Utilisez les API {{WebExtAPIRef("browsingData")}} oo {{WebExtAPIRef("history")}} pour supprimer l'historique.</div> + +<div></div> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var forgettingTab = browser.sessions.forgetClosedTab( + windowId, // integer + sessionId // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code></dt> + <dd><code>Integer</code>. L'ID de la fenêtre qui héberge l'onglet que vous voulez oublier.</dd> + <dt><code>sessionId</code></dt> + <dd><code>String</code>. L'identifiant de la session que vous voulez oublier.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Cela sera accompli sans arguments lorsque la session a été supprimée.</p> + +<p>Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sessions.forgetClosedTab")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code oublie la dernière session fermée, qu'il s'agisse d'un onglet ou d'une fenêtre :</p> + +<pre class="brush: js">function forgetMostRecent(sessionInfos) { + if (!sessionInfos.length) { + console.log("No sessions found") + return; + } + let sessionInfo = sessionInfos[0]; + if (sessionInfo.tab) { + browser.sessions.forgetClosedTab(sessionInfo.tab.windowId, sessionInfo.tab.sessionId); + } else { + browser.sessions.forgetClosedWindow(sessionInfo.window.sessionId); + } +} + +function onError(error) { + console.log(error); +} + +browser.sessions.getRecentlyClosed({maxResults: 1}) +.then(forgetMostRecent, onError);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/forgetclosedwindow/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/forgetclosedwindow/index.html new file mode 100644 index 0000000000..89f5cd57ce --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/forgetclosedwindow/index.html @@ -0,0 +1,77 @@ +--- +title: sessions.forgetClosedWindow() +slug: Mozilla/Add-ons/WebExtensions/API/sessions/forgetClosedWindow +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - forgetClosedWindows + - sessions +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/forgetClosedWindow +--- +<div>{{AddonSidebar()}}</div> + +<div>Supprime une fenêtre fermée de la liste des fenêtres récemment fermées du navigateur.</div> + +<div></div> + +<div>Notez que les sites visités par cette fenêtre ne sont pas supprimés de l'historique du navigateur. Utilisez les API {{WebExtAPIRef("browsingData")}} ou {{WebExtAPIRef("history")}} pour supprimer l'historique.</div> + +<div></div> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var forgettingWindow = browser.sessions.forgetClosedWindow( + sessionId // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>sessionId</code></dt> + <dd><code>String</code>. L'identifiant de la session que vous voulez oublier.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Cela sera accompli sans arguments lorsque la session a été supprimée.</p> + +<p>Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sessions.forgetClosedWindow")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code oublie la dernière session fermée, qu'il s'agisse d'un onglet ou d'une fenêtre :</p> + +<pre class="brush: js">function forgetMostRecent(sessionInfos) { + if (!sessionInfos.length) { + console.log("No sessions found") + return; + } + let sessionInfo = sessionInfos[0]; + if (sessionInfo.tab) { + browser.sessions.forgetClosedTab(sessionInfo.tab.windowId, sessionInfo.tab.sessionId); + } else { + browser.sessions.forgetClosedWindow(sessionInfo.window.sessionId); + } +} + +function onError(error) { + console.log(error); +} + +browser.sessions.getRecentlyClosed({maxResults: 1}) +.then(forgetMostRecent, onError);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/getrecentlyclosed/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/getrecentlyclosed/index.html new file mode 100644 index 0000000000..230f1741d0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/getrecentlyclosed/index.html @@ -0,0 +1,115 @@ +--- +title: sessions.getRecentlyClosed() +slug: Mozilla/Add-ons/WebExtensions/API/sessions/getRecentlyClosed +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getRecentlyClosed + - sessions +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/getRecentlyClosed +--- +<div>{{AddonSidebar()}}</div> + +<p>Renvoie un ensemble d'objets {{WebExtAPIRef("sessions.Session", "Session")}}, représentant des fenêtres et des onglets qui ont été fermés dans la session du navigation actuelle (c'est à dire l'heure écoulée depuis le démarrage du navigateur).</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingSessions = browser.sessions.getRecentlyClosed( + filter // optional object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>filter</code>{{optional_inline}}</dt> + <dd><code>object</code>. Un objet {{WebExtAPIRef("sessions.Filter")}} qui limite l'ensemble des sessions renvoyées.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Cela sera rempli avec un ensemble d'objets {{WebExtAPIRef("sessions.Session", "Session")}}, un pour chacun des derniers onglets fermés ou des fenêtres dans la session de navigation actuelle, jusqu'à {{WebExtAPIRef("sessions.MAX_SESSION_RESULTS")}} ou le nombre inclus dans l'argument du filtre, le plus petit qui soit. Le tableau est donné à l'inverse de l'ordre dans lequel les onglets ou fenêtres ont été fermés, de sorte que le plus récemment fermé sera à l'index 0.</p> + +<p>Si une erreur survient, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.sessions.getRecentlyClosed")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<p>Le code restaure la session la plus récemment fermée, qu'il s'agisse d'un onglet ou d'une fenêtre :</p> + +<pre class="brush: js">function restoreMostRecent(sessionInfos) { + if (!sessionInfos.length) { + console.log("No sessions found") + return; + } + let sessionInfo = sessionInfos[0]; + if (sessionInfo.tab) { + browser.sessions.restore(sessionInfo.tab.sessionId); + } else { + browser.sessions.restore(sessionInfo.window.sessionId); + } +} + +function onError(error) { + console.log(error); +} + +browser.browserAction.onClicked.addListener(function() { + var gettingSessions = browser.sessions.getRecentlyClosed({ + maxResults: 1 + }); + gettingSessions.then(restoreMostRecent, onError); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/sessions"><code>chrome.sessions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/gettabvalue/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/gettabvalue/index.html new file mode 100644 index 0000000000..041f4887ec --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/gettabvalue/index.html @@ -0,0 +1,66 @@ +--- +title: sessions.getTabValue() +slug: Mozilla/Add-ons/WebExtensions/API/sessions/getTabValue +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - getTabValue + - sessions +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/getTabValue +--- +<div>{{AddonSidebar()}}</div> + +<p>Récupère une valeur précédemment stockée par un appel à {{WebExtAPIRef("sessions.setTabValue")}}.</p> + +<p>Vous pouvez récupérer une valeur d'un onglet même au cours d'un cycle de fermeture / restauration: si vous définissez une valeur, l'utilisateur ferme l'onglet, puis restaure l'onglet à l'aide de la fonction "restaurer l'onglet" du navigateur (par exemple, en appuyant sur Control+Shift+T), then you will be able to retrieve the value from the restored tab. vous pourrez alors récupérer la valeur de l'onglet restauré. Notez cependant qu'un onglet restauré n'obtient pas le même ID que l'original, donc l'ID que vous passez dans <code>getTabValue()</code> sera différent de l'ID que vous avez passé dans <code>setTabValue()</code>, même s'ils font tous deux référence au même onglet.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var retrieving = browser.sessions.getTabValue( + tabId, // integer + key // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet dont vous essayez de récupérer les données.</dd> + <dt><code>key</code></dt> + <dd><code>string</code>. Clé identifiant la valeur particulière à récupérer. Cela doit correspondre à la clé précédemment donnée dans {{WebExtAPIRef("sessions.setTabValue")}}.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera résolue avec la valeur si elle existe, ou <code>undefined</code>. Si elle n'existe pas. Si l'appel a échoué (par exemple, parce que l'ID de l'onglet n'a pas pu être trouvé), la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sessions.getTabValue", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Consignez la valeur de "my-key" pour tous les nouveaux onglets créés (cela inclura tous les onglets qui ont été restaurés) :</p> + +<pre class="brush: js">function onGetResolved(r) { + console.log(`success: ${r}`); +} + +function onGetRejected(e) { + console.log(`error: ${e}`); +} + +browser.tabs.onCreated.addListener((tab) => { + browser.sessions.getTabValue(tab.id, "my-key").then(onGetResolved, onGetRejected); +});</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/getwindowvalue/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/getwindowvalue/index.html new file mode 100644 index 0000000000..ffdb95065d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/getwindowvalue/index.html @@ -0,0 +1,66 @@ +--- +title: sessions.getWindowValue() +slug: Mozilla/Add-ons/WebExtensions/API/sessions/getWindowValue +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - getWindowValue + - sessions +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/getWindowValue +--- +<div>{{AddonSidebar()}}</div> + +<p>Récupère une valeur précédemment stockée par un appel à {{WebExtAPIRef("sessions.setWindowValue")}}.</p> + +<p>Vous pouvez récupérer une valeur d'une fenêtre même sur un cycle de fermeture / restauration : si vous définissez une valeur, l'utilisateur ferme la fenêtre, puis restaure la fenêtre à l'aide de la fonction "restaurer la fenêtre" du navigateur (par exemple, en appuyant sur Control+Shift+N),vous pourrez récupérer la valeur de la fenêtre restaurée. otez cependant qu'une fenêtre restaurée n'obtient pas le même ID que l'original, donc l'ID que vous passez dans <code>getWindowValue()</code> sera différent de l'ID que vous avez passé dans <code>setWindowValue()</code>, même s'ils se réfèrent tous les deux à la même fenêtre.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var retrieving = browser.sessions.getWindowValue( + windowId, // integer + key // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. ID de la fenêtre dont vous essayez de récupérer les données.</dd> + <dt><code>key</code></dt> + <dd><code>string</code>. Clé identifiant la valeur particulière à récupérer. Cela doit correspondre à la clé précédemment donnée dans {{WebExtAPIRef("sessions.setWindowValue")}}.</dd> +</dl> + +<h3 id="Valeure_retournée">Valeure retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera résolue avec la valeur si elle existe, ou <code>undefined</code> si elle n'existe pas. Si l'appel a échoué (par exemple, parce que l'ID de la fenêtre n'a pas pu être trouvé), la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sessions.getWindowValue", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Consignez la valeur de "my-key" pour toutes les fenêtres nouvellement créées (cela inclura toutes les fenêtres qui ont été restaurées) :</p> + +<pre class="brush: js">function onGetResolved(r) { + console.log(`success: ${r}`); +} + +function onGetRejected(e) { + console.log(`error: ${e}`); +} + +browser.windows.onCreated.addListener((window) => { + browser.sessions.getWindowValue(window.id, "my-key").then(onGetResolved, onGetRejected); +});</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/index.html new file mode 100644 index 0000000000..3a8078560e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/index.html @@ -0,0 +1,137 @@ +--- +title: sessions +slug: Mozilla/Add-ons/WebExtensions/API/sessions +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - WebExtensions + - sessions +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions +--- +<div>{{AddonSidebar}}</div> + +<p>Utilisez l'API de sessions pour lister et restaurer, les onglets et les fenêtres qui ont été fermés pendant que le navigateur fonctionne.</p> + +<p>La fonction {{WebExtAPIRef("sessions.getRecentlyClosed()")}} renvoie un tableau de {{WebExtAPIRef("tabs.Tab")}} et les objets {{WebExtAPIRef("windows.Window")}}, représente les onglets et les fenêtres qui ont été fermées depuis le fonctionnement du navigateur, jusqu'au maximum défini dans {{WebExtAPIRef("sessions.MAX_SESSION_RESULTS")}}.</p> + +<p>Vous pouvez ensuite restaurer une fenêtre ou un onglet en utilisant la fonction {{WebExtAPIRef("sessions.restore()")}}. il restaure également l'historique de navigation de l'onglet, de sorte que les boutons arrière / avant fonctionnent.</p> + +<p>Cette API fournit également un groupe de fonctions permettant à une extension de stocker un état supplémentaire associé à un onglet ou une fenêtre. Ensuite, si l'onglet ou la fenêtre est fermé et restauré ultérieurement, l'extension peut récupérer l'état. Par exemple, une extension de groupe d'onglets peut l'utiliser pour se souvenir du groupe dans lequel se trouve un onglet, afin de le restaurer dans le bon groupe si l'utilisateur restaure l'onglet.</p> + +<p>Pour utiliser l'API des sessions, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission API</a> de "sessions".</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("sessions.Filter")}}</dt> + <dd>Permet de restreindre le nombre de {{WebExtAPIRef("sessions.Session", "Session")}} objets retournés par un appel à {{WebExtAPIRef("sessions.getRecentlyClosed()")}}.</dd> + <dt>{{WebExtAPIRef("sessions.Session")}}</dt> + <dd> + <p>Représente un onglet ou une fenêtre que l'utilisateur a fermé dans la session de navigation actuelle.</p> + </dd> +</dl> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt>{{WebExtAPIRef("sessions.MAX_SESSION_RESULTS")}}</dt> + <dd>Le nombre maximum de sessions qui seront retournées par un appel à <a href="/fr/Add-ons/WebExtensions/API/sessions/getRecentlyClosed" title="Returns an array Session objects, representing windows and tabs that were closed in the current browsing session (that is: the time since the browser was started)."><code>sessions.getRecentlyClosed()</code></a>.</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("sessions.forgetClosedTab()")}}</dt> + <dd>Supprime un onglet fermé de la liste des onglets récemment fermés du navigateur.</dd> + <dt>{{WebExtAPIRef("sessions.forgetClosedWindow()")}}</dt> + <dd>Supprime une fenêtre fermée de la liste des fenêtres récemment fermées du navigateur.</dd> + <dt>{{WebExtAPIRef("sessions.getRecentlyClosed()")}}</dt> + <dd>Renvoie un tableau d'objets {{WebExtAPIRef("sessions.Session", "Session")}}, représentant des fenêtres et des onglets qui ont été fermés dans la session de navigation actuelle (c'est-à-dire l'heure écoulée depuis le démarrage du navigateur).</dd> + <dt>{{WebExtAPIRef("sessions.restore()")}}</dt> + <dd> + <p>Restaure un onglet ou une fenêtre fermée.</p> + </dd> + <dt>{{WebExtAPIRef("sessions.setTabValue()")}}</dt> + <dd> + <p>Stocke une paire clé/valeur associée à un onglet donné.</p> + </dd> + <dt>{{WebExtAPIRef("sessions.getTabValue()")}}</dt> + <dd> + <p>Récupérer une valeur précédemment enregistrée pour un onglet donné, compte tenu de sa clé.</p> + </dd> + <dt>{{WebExtAPIRef("sessions.removeTabValue()")}}</dt> + <dd> + <p>Supprimer une paire clé/valeur d'un onglet donné.</p> + </dd> + <dt>{{WebExtAPIRef("sessions.setWindowValue()")}}</dt> + <dd> + <p>Stocke une paire clé/valeur associée à une fenêtre donnée.</p> + </dd> + <dt>{{WebExtAPIRef("sessions.getWindowValue()")}}</dt> + <dd> + <p>Récupérer une valeur précédemment enregistrée pour une fenêtre donnée, compte tenu de sa clé.</p> + </dd> + <dt>{{WebExtAPIRef("sessions.removeWindowValue()")}}</dt> + <dd> + <p>Supprime une paire clé/valeur d'une fenêtre données.</p> + </dd> + <dd> + + </dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("sessions.onChanged")}}</dt> + <dd> + <p>Mise en place lorsqu'un onglet ou une fenêtre est fermée.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p><span class="diff_add">{{Compat("webextensions.api.sessions")}}</span></p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/sessions"><code>chrome.sessions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/max_session_results/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/max_session_results/index.html new file mode 100644 index 0000000000..41b2191f71 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/max_session_results/index.html @@ -0,0 +1,62 @@ +--- +title: sessions.MAX_SESSION_RESULTS +slug: Mozilla/Add-ons/WebExtensions/API/sessions/MAX_SESSION_RESULTS +tags: + - API + - Add-ons + - Extensions + - MAX_SESSION_RESULTS + - Non-standard + - Propriété + - Reference + - WebExtensions + - sessions +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/MAX_SESSION_RESULTS +--- +<div>{{AddonSidebar()}}</div> + +<p>Le nombre maximum de sessions qui seront retournées par un appel à {{WebExtAPIRef("sessions.getRecentlyClosed()")}}. Il est en lecture seule pour le code des WebExtensions, et défini à 25.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sessions.MAX_SESSION_RESULTS")}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/sessions"><code>chrome.sessions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/onchanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/onchanged/index.html new file mode 100644 index 0000000000..478acefe3c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/onchanged/index.html @@ -0,0 +1,123 @@ +--- +title: sessions.onChanged +slug: Mozilla/Add-ons/WebExtensions/API/sessions/onChanged +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onChanged + - sessions +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/onChanged +--- +<div>{{AddonSidebar()}}</div> + +<p>Mise en place lorsque une liste d'onglets fermes ou de fenêtre changes.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.sessions.onChanged.addListener(listener) +browser.sessions.onChanged.removeListener(listener) +browser.sessions.onChanged.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un auditeur à un événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument de l'auditeur est un auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si l'auditeur est enregistré pour cet événement. Renvoie Vrai s'il écoute. Sinon Faux.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lors de l'événement. Il ne passe aucun paramètre.</p> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.sessions.onChanged")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cette extension écoute <code>onChanged</code>, puis restaure immédiatement la dernière session fermée, ce qui rend impossible de fermer les fenêtres ou les onglets :</p> + +<pre class="brush: js">function restoreSession(sessionInfos) { + if (!sessionInfos.length) { + console.log("No sessions found") + return; + } + let sessionInfo = sessionInfos[0]; + if (sessionInfo.tab) { + browser.sessions.restore(sessionInfo.tab.sessionId); + } else { + browser.sessions.restore(sessionInfo.window.sessionId); + } +} + +function onError(error) { + console.log(error); +} + +function restoreMostRecent() { + var gettingSessions = browser.sessions.getRecentlyClosed({ + maxResults: 1 + }); + gettingSessions.then(restoreSession, onError); +} + +browser.sessions.onChanged.addListener(restoreMostRecent);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/sessions"><code>chrome.sessions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/removetabvalue/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/removetabvalue/index.html new file mode 100644 index 0000000000..c622b4147e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/removetabvalue/index.html @@ -0,0 +1,84 @@ +--- +title: sessions.removeTabValue() +slug: Mozilla/Add-ons/WebExtensions/API/sessions/removeTabValue +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - removeTabValue + - sessions +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/removeTabValue +--- +<div>{{AddonSidebar()}}</div> + +<p>Supprime une valeur précédemment stockée par un appel à {{WebExtAPIRef("sessions.setTabValue")}}.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.sessions.removeTabValue( + tabId, // integer + key // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet dont vous essayez de supprimer les données.</dd> + <dt><code>key</code></dt> + <dd><code>string</code>. Clé identifiant la valeur particulière à supprimer. Cela doit correspondre à la clé précédemment donnée dans {{WebExtAPIRef("sessions.setTabValue")}}.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui ne sera résolue aucun argument si l'élément a été supprimé avec succès. Si l'appel a échoué (par exemple, parce que l'ID de l'onglet n'a pas pu être trouvé), la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sessions.removeTabValue", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code ajoute deux éléments de menu contextuel: l'un stocke une valeur associée à l'onglet en cours, l'autre le supprime :</p> + +<pre class="brush: js">async function setOnActiveTab() { + let tabArray = await browser.tabs.query({currentWindow: true, active: true}); + let tabId = tabArray[0].id; + await browser.sessions.setTabValue(tabId, "my-key", "my-value"); +} + +async function removeFromActiveTab() { + let tabArray = await browser.tabs.query({currentWindow: true, active: true}); + let tabId = tabArray[0].id; + await browser.sessions.removeTabValue(tabId, "my-key"); +} + +browser.menus.create({ + id: "add-my-item", + title: "add item", + contexts: ["all"] +}); + +browser.menus.create({ + id: "remove-my-item", + title: "remove item", + contexts: ["all"] +}); + +browser.menus.onClicked.addListener((info) => { + if (info.menuItemId === "add-my-item") { + setOnActiveTab(); + } else { + removeFromActiveTab(); + } +});</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/removewindowvalue/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/removewindowvalue/index.html new file mode 100644 index 0000000000..1193a845cb --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/removewindowvalue/index.html @@ -0,0 +1,82 @@ +--- +title: sessions.removeWindowValue() +slug: Mozilla/Add-ons/WebExtensions/API/sessions/removeWindowValue +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - removeWindowsValue + - sessions +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/removeWindowValue +--- +<div>{{AddonSidebar()}}</div> + +<p>Supprime une valeur précédemment stockée par un appel à {{WebExtAPIRef("sessions.setWindowValue")}}.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.sessions.removeWindowValue( + windowId, // integer + key // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. ID de la fenêtre dont vous essayez de supprimer les données.</dd> + <dt><code>key</code></dt> + <dd><code>string</code>. lé identifiant la valeur particulière à supprimer. Cela doit correspondre à la clé précédemment donnée dans {{WebExtAPIRef("sessions.setWindowValue")}}.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui ne sera résolue aucun argument si l'élément a été supprimé avec succès. Si l'appel a échoué (par exemple, parce que l'ID de la fenêtre n'a pas pu être trouvé), la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sessions.removeWindowValue", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code ajoute deux éléments de menu contextuel: l'un stocke une valeur associée à la fenêtre courante, l'autre la supprime :</p> + +<pre class="brush: js">async function setOnActiveWindow() { + let currentWindow = await browser.windows.getLastFocused(); + await browser.sessions.setWindowValue(currentWindow.id, "my-key", "my-value"); +} + +async function removeFromActiveWindow() { + let currentWindow = await browser.windows.getLastFocused(); + await browser.sessions.removeWindowValue(currentWindow.id, "my-key"); +} + +browser.menus.create({ + id: "add-my-item", + title: "add item", + contexts: ["all"] +}); + +browser.menus.create({ + id: "remove-my-item", + title: "remove item", + contexts: ["all"] +}); + +browser.menus.onClicked.addListener((info) => { + if (info.menuItemId === "add-my-item") { + setOnActiveWindow(); + } else { + removeFromActiveWindow(); + } +});</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/restore/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/restore/index.html new file mode 100644 index 0000000000..cbf15148ad --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/restore/index.html @@ -0,0 +1,112 @@ +--- +title: sessions.restore() +slug: Mozilla/Add-ons/WebExtensions/API/sessions/restore +tags: + - API + - Add-ons + - Extensions + - Methode(2) + - Non-standard + - WebExtensions + - restaure + - sessions +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/restore +--- +<div>{{AddonSidebar()}}</div> + +<p>Restaure un onglet ou une fenêtre fermée. La restauration ne réouvre pas seulement l'onglet ou la fenêtre : elle rétablit également l'historique de navigation de l'onglet afin que les boutons arrière/avant fonctionnent. La restauration d'une fenêtre restaurera tous les onglets que la fenêtre contenait lors de sa fermeture.</p> + +<p>Il s'agit d'une fonction asynchrone que retourne une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var restoringSession = browser.sessions.restore( + sessionId // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>sessionId</code></dt> + <dd><code>string</code>. Une chaîne contenant l'ID de session pour la fenêtre ou l'onglet à restaurer. Cela se trouve dans la propriété <code>sessionId</code> de l'objet {{WebExtAPIRef("tabs.Tab", "Tab")}} ou {{WebExtAPIRef("windows.Window", "Window")}} dans {{WebExtAPIRef("sessions.Session", "Session")}} retourné de {{WebExtAPIRef("sessions.getRecentlyClosed()")}}.</dd> +</dl> + +<h3 id="Valeur_renvoyée">Valeur renvoyée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Cela sera rempli avec un objet {{WebExtAPIRef("sessions.Session", "Session")}} représentant la session qui a été restaurée.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.sessions.restore")}}</span></p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cela restaure la session fermée la plus récente, qu'il s'agisse d'une fenêtre ou d'un onglet :</p> + +<pre class="brush: js">function restoreMostRecent(sessionInfos) { + if (!sessionInfos.length) { + console.log("No sessions found") + return; + } + let sessionInfo = sessionInfos[0]; + if (sessionInfo.tab) { + browser.sessions.restore(sessionInfo.tab.sessionId); + } else { + browser.sessions.restore(sessionInfo.window.sessionId); + } +} + +function onError(error) { + console.log(error); +} + +browser.browserAction.onClicked.addListener(function() { + var gettingSessions = browser.sessions.getRecentlyClosed({ + maxResults: 1 + }); + gettingSessions.then(restoreMostRecent, onError); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/sessions"><code>chrome.sessions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/session/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/session/index.html new file mode 100644 index 0000000000..ab7d1fa13d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/session/index.html @@ -0,0 +1,86 @@ +--- +title: sessions.Session +slug: Mozilla/Add-ons/WebExtensions/API/sessions/Session +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Session + - Type + - WebExtensions + - sessions +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/Session +--- +<div>{{AddonSidebar()}}</div> + +<p>L'objet de <code>Session</code> représente un onglet ou une fenêtre que l'utilisateur a fermé dans la session de navigation actuelle.</p> + +<p>Les sessions sont représentées comme des objets {{WebExtAPIRef("tabs.Tab", "Tab")}} si l'onglet a été fermé mais sa fenêtre n'a pas été fermée : par exemple, parce que l'utilisateur a cliqué sur le bouton "fermer l'onglet", et cet onglet n'était pas le seul onglet de sa fenêtre.</p> + +<p>Les sessions sont représentées par des objets {{WebExtAPIRef("windows.Window", "Window")}} si la fenêtre est fermée : parce que l'utilisateur a cliqué sur le bouton "Fermer la fenêtre", ou a fermé le seul onglet ouvert dans une fenêtre.</p> + +<p>Notez que les différents navigateurs peuvent avoir une idée différente quand une session est un onglet et quand il s'agit d'une fenêtre. Par exemple :</p> + +<ul> + <li>Dans Chrome une session est enregistrée comme une fenêtre si l'utilisateur ferme une fenêtre contenant plus d'un onglet. Si l'utilisateur a fermé une fenêtre contenant un seul onglet, ceci est enregistré sous forme d'onglet.</li> + <li>Dans Firefox, une session est enregistrée comme une fenêtre si l'utilisateur ferme une fenêtre (ou un onglet qui était le dernier onglet de la fenêtre), et un onglet si l'utilisateur ferme un onglet qui n'était pas le dernier onglet de sa fenêtre.</li> +</ul> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>lastModified</code></dt> + <dd><code>number</code>. L'heure où l'onglet ou la fenêtre a été fermé, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>tab</code>{{optional_inline}}</dt> + <dd><code>object</code>. Si l'objet représente un onglet fermé, cette propriété est présente et sera un objet {{WebExtAPIRef("tabs.Tab")}}. Cela contiendra <code>url</code>, <code>titre</code>, et <code>favIconUrl</code> uniquement si l'extension possède la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "tabs".</dd> + <dt><code>window</code>{{optional_inline}}</dt> + <dd><code>object</code>. Si l'objet représente une fenêtre fermée, cette propriété est présente et sera un objet {{WebExtAPIRef("windows.Window")}}.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.sessions.Session")}}</span></p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/sessions"><code>chrome.sessions</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/settabvalue/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/settabvalue/index.html new file mode 100644 index 0000000000..9f02e440d9 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/settabvalue/index.html @@ -0,0 +1,71 @@ +--- +title: sessions.setTabValue() +slug: Mozilla/Add-ons/WebExtensions/API/sessions/setTabValue +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - sessions + - setTabValue +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/setTabValue +--- +<div>{{AddonSidebar()}}</div> + +<p>Stocke une paire clé / valeur à associer à un onglet donné. Vous pouvez ensuite récupérer cette valeur en utilisant {{WebExtAPIRef("sessions.getTabValue")}}.</p> + +<p>Notez que ces données ne seront visibles que par l'extension qui l'a définie, et non par les autres extensions.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var storing = browser.sessions.setTabValue( + tabId, // integer + key, // string + value // string or object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet avec lequel vous souhaitez associer les données.</dd> + <dt><code>key</code></dt> + <dd><code>string</code>. Clé que vous pouvez utiliser ultérieurement pour récupérer cette valeur de données particulière.</dd> + <dt><code>value</code></dt> + <dd><code>string</code> ou <code>object</code>. S'il s'agit d'un objet, il est <a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify">stringified</a>, donc les méthodes d'objet, par exemple, seront omises. Si une fonction est donnée ici, elle sera stockée sous la forme <code>null</code>.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera résolue sans argument si l'appel a réussi. Si l'appel a échoué (par exemple, parce que l'ID de l'onglet n'a pas pu être trouvé), la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sessions.setTabValue", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Définissez une valeur sur l'onglet actif lorsque l'utilisateur sélectionne un élément de menu. Notez que vous aurez besoin de la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "menus" pour exécuter cet exemple :</p> + +<pre class="brush: js">async function setOnActiveTab() { + let tabArray = await browser.tabs.query({currentWindow: true, active: true}); + let tabId = tabArray[0].id; + await browser.sessions.setTabValue(tabId, "my-key", "my-value"); +} + +browser.menus.create({ + id: "my-item", + title: "my item", + contexts: ["all"] +}); + +browser.menus.onClicked.addListener(setOnActiveTab);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sessions/setwindowvalue/index.html b/files/fr/mozilla/add-ons/webextensions/api/sessions/setwindowvalue/index.html new file mode 100644 index 0000000000..6437d9d973 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sessions/setwindowvalue/index.html @@ -0,0 +1,70 @@ +--- +title: sessions.setWindowValue() +slug: Mozilla/Add-ons/WebExtensions/API/sessions/setWindowValue +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - sessions + - setWindowsValue +translation_of: Mozilla/Add-ons/WebExtensions/API/sessions/setWindowValue +--- +<div>{{AddonSidebar()}}</div> + +<p>Stocke une paire clé / valeur à associer à une fenêtre donnée. Vous pouvez ensuite récupérer cette valeur en utilisant {{WebExtAPIRef("sessions.getWindowValue")}}.</p> + +<p>Notez que ces données ne seront visibles que par l'extension qui l'a définie, et non par les autres extensions..</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var storing = browser.sessions.setWindowValue( + windowId, // integer + key, // string + value // string or object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. ID de la fenêtre avec laquelle vous souhaitez associer les données.</dd> + <dt><code>key</code></dt> + <dd><code>string</code>. Clé que vous pouvez utiliser ultérieurement pour récupérer cette valeur de données particulière.</dd> + <dt><code>value</code></dt> + <dd><code>string</code> ou <code>object</code>. S'il s'agit d'un objet, il est <a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify">stringified</a>, donc les méthodes d'objet, par exemple, seront omises. Si une fonction est donnée ici, elle sera stockée sous la valeur <code>null</code>.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera résolue sans argument si l'appel a réussi. Si l'appel a échoué (par exemple, parce que l'ID de la fenêtre n'a pas pu être trouvé), la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sessions.setWindowValue", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Définissez une valeur sur la fenêtre active lorsque l'utilisateur sélectionne un élément de menu. Notez que vous aurez besoin de la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "menus" pour exécuter cet exemple :</p> + +<pre class="brush: js">async function setOnActiveWindow() { + let currentWindow = await browser.windows.getLastFocused(); + await browser.sessions.setWindowValue(currentWindow.id, "my-key", "my-value"); +} + +browser.menus.create({ + id: "my-item", + title: "my item", + contexts: ["all"] +}); + +browser.menus.onClicked.addListener(setOnActiveWindow);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/close/index.html b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/close/index.html new file mode 100644 index 0000000000..be3cf05fc2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/close/index.html @@ -0,0 +1,56 @@ +--- +title: sidebarAction.close() +slug: Mozilla/Add-ons/WebExtensions/API/sidebarAction/close +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - close + - sidebarAction +translation_of: Mozilla/Add-ons/WebExtensions/API/sidebarAction/close +--- +<div>{{AddonSidebar()}}</div> + +<p>Ferme la barre latérale dans la fenêtre active, s'il s'agit de la barre latérale de l'extension.</p> + +<p>Vous pouvez uniquement appeler cette fonction à l'intérieur du gestionnaire pour une <a href="/fr/Add-ons/WebExtensions/User_actions">action utilisateur</a>.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.sidebarAction.close() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue sans arguments.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sidebarAction.close", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Fermez la barre latérale lorsque l'utilisateur sélectionne un élément de menu contextuel :</p> + +<pre class="brush: js">browser.menus.create({ + id: "close-sidebar", + title: "close sidebar", + contexts: ["all"] +}); + +browser.menus.onClicked.addListener(() => { + browser.sidebarAction.close(); +});</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/getpanel/index.html b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/getpanel/index.html new file mode 100644 index 0000000000..f94637e46c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/getpanel/index.html @@ -0,0 +1,109 @@ +--- +title: sidebarAction.getPanel() +slug: Mozilla/Add-ons/WebExtensions/API/sidebarAction/getPanel +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - getPanel + - sidebarAction +translation_of: Mozilla/Add-ons/WebExtensions/API/sidebarAction/getPanel +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient une URL vers le document HTML qui définit le contenu de la barre latérale.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingPanel = browser.sidebarAction.getPanel( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Un objet avec les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Obtenir le panneau pour la barre latérale spécifique à l'onglet donné.</dd> + <dt><code>windowId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. Obtenir le panneau pour la barre latérale spécifique à la fenêtre donnée.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous deux fournis, la fonction échoue et la promesse qu'elle renvoie est rejetée.</li> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous les deux omis, le panneau global est renvoyé.</li> +</ul> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec une chaîne contenant l'URL du document du panel. Ce sera une URL entièrement qualifiée, telle que :</p> + +<pre><code>moz-extension://d1d8a2eb-fe60-f646-af30-a866c5b39942/sidebar.html</code></pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sidebarAction.getPanel",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenez l'URL du panneau :</p> + +<pre class="brush: js">function onGot(sidebarUrl) { + console.log(sidebarUrl); +} + +var gettingPanel = browser.sidebarAction.getPanel({}); +gettingPanel.then(onGot); </pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Opera <a href="https://dev.opera.com/extensions/sidebar-action-api/"><code>chrome.sidebarAction</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/gettitle/index.html b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/gettitle/index.html new file mode 100644 index 0000000000..a746b234b4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/gettitle/index.html @@ -0,0 +1,116 @@ +--- +title: sidebarAction.getTitle() +slug: Mozilla/Add-ons/WebExtensions/API/sidebarAction/getTitle +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - getTitle + - sidebarAction +translation_of: Mozilla/Add-ons/WebExtensions/API/sidebarAction/getTitle +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient le titre de la barre latérale.</p> + +<p>Tout comme vous pouvez définir le titre par tabulation à l'aide de {{WebExtAPIRef("sidebarAction.setTitle()")}},vous pouvez ainsi récupérer un titre spécifique à un onglet en lui transmettant l'ID de l'onglet.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingTitle = browser.sidebarAction.getTitle( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Un objet avec les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Obtenir le titre de la barre latérale spécifique à l'onglet donné.</dd> + <dt><code>windowId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. Obtenir le titre de la barre latérale spécifique à la fenêtre donnée.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous deux fournis, la fonction échoue et la promesse qu'elle renvoie est rejetée.</li> + <li>SI <code>windowId</code> et <code>tabId</code> sont tous les deux omis, le titre global est renvoyé.</li> +</ul> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec une chaîne contenant le titre de la barre latérale.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sidebarAction.getTitle",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code bascule le titre entre "this" et "that" chaque fois que l'utilisateur clique sur l'action du navigateur</p> + +<pre class="brush: js">function toggleTitle(title) { + if (title == "this") { + browser.sidebarAction.setTitle({title: "that"}); + } else { + browser.sidebarAction.setTitle({title: "this"}); + } +} + +browser.browserAction.onClicked.addListener(() => { + var gettingTitle = browser.sidebarAction.getTitle({}); + gettingTitle.then(toggleTitle); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Opera <a href="https://dev.opera.com/extensions/sidebar-action-api/"><code>chrome.sidebarAction</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/imagedatatype/index.html b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/imagedatatype/index.html new file mode 100644 index 0000000000..55907a285b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/imagedatatype/index.html @@ -0,0 +1,67 @@ +--- +title: sidebarAction.ImageDataType +slug: Mozilla/Add-ons/WebExtensions/API/sidebarAction/ImageDataType +tags: + - API + - Add-ons + - Extensions + - ImageDataType + - Reference + - Type + - WebExtensions + - sidebarAction +translation_of: Mozilla/Add-ons/WebExtensions/API/sidebarAction/ImageDataType +--- +<div>{{AddonSidebar()}}</div> + +<p>Données de pixel pour une image. Doit être un objet <code><a href="/en-US/docs/Web/API/ImageData">ImageData</a></code> (par exemple, à partir d'un élément {{htmlelement("canvas")}}).</p> + +<h2 id="Type">Type</h2> + +<p>Un objet <code><a href="/en-US/docs/Web/API/ImageData">ImageData</a></code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p><span class="diff_add">{{Compat("webextensions.api.sidebarAction.ImageDataType")}}</span></p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Opera <a href="https://dev.opera.com/extensions/sidebar-action-api/"><code>chrome.sidebarAction</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/index.html b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/index.html new file mode 100644 index 0000000000..e5f77c06ba --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/index.html @@ -0,0 +1,101 @@ +--- +title: sidebarAction +slug: Mozilla/Add-ons/WebExtensions/API/sidebarAction +tags: + - API + - Extensions + - Non-standard + - Reference + - Sidebar + - WebExtensions + - sidebarAction +translation_of: Mozilla/Add-ons/WebExtensions/API/sidebarAction +--- +<div>{{AddonSidebar}}</div> + +<p>Obtient et définit les propriétés de la barre latérale d'une extension.</p> + +<p>Une <a href="/fr/Add-ons/WebExtensions/Sidebars">barre latérale</a> est un volet qui s'affiche à gauche ou à droite de la fenêtre du navigateur, à côté de la page Web. Le navigateur fournit une interface utilisateur qui permet à l'utilisateur de voir les barres latérales actuellement disponibles et de sélectionner une barre latérale à afficher. En utilisant la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></code> manifest.json, une extension peut définir sa propre barre latérale.<br> + En utilisant l'API <code>sidebarAction</code> décrite ici, une extension peut obtenir et définir les propriétés de la barre latérale.</p> + +<p>L'API <code>sidebarAction</code> est étroitement modélisée sur l'API {{WebExtAPIRef("browserAction")}}.</p> + +<p>L'API sidebarAction est basée sur l'<a href="https://dev.opera.com/extensions/sidebar-action-api/">API sidebarAction</a> d'Opéra. Toutefois, notez que les éléments suivants ne sont pas encore pris en charge : <code>setBadgeText()</code>, <code>getBadgeText()</code>, <code>setBadgeBackgroundColor()</code>, <code>getBadgeBackgroundColor()</code>, <code>onFocus</code>, <code>onBlur</code>.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("sidebarAction.ImageDataType")}}</dt> + <dd>Données de pixel pour une image. Doit être un objet <code><a href="/fr/docs/Web/API/ImageData">ImageData</a></code> (par exemple, à partir d'un élément {{htmlelement("canvas")}}).</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("sidebarAction.close()")}}</dt> + <dd>Ferme la barre latérale</dd> + <dt>{{WebExtAPIRef("sidebarAction.getPanel()")}}</dt> + <dd>Obtient le panneau de la barre latérale.</dd> + <dt>{{WebExtAPIRef("sidebarAction.getTitle()")}}</dt> + <dd>Obtient le titre de la barre latérale.</dd> + <dt>{{WebExtAPIRef("sidebarAction.isOpen()")}}</dt> + <dd>Vérifie si la barre latérale est ouverte ou non.</dd> + <dt>{{WebExtAPIRef("sidebarAction.open()")}}</dt> + <dd>Ouvre la barre latérale.</dd> + <dt>{{WebExtAPIRef("sidebarAction.setIcon()")}}</dt> + <dd>Définit l'icône de la barre latérale.</dd> + <dt>{{WebExtAPIRef("sidebarAction.setPanel()")}}</dt> + <dd>Définit le panneau de la barre latérale.</dd> + <dt>{{WebExtAPIRef("sidebarAction.setTitle()")}}</dt> + <dd>Définit le titre de la barre latérale. Ceci sera affiché dans n'importe quelle interface utilisateur fournie par le navigateur pour lister les barres latérales, comme un menu.</dd> + <dt>{{WebExtAPIRef("sidebarAction.toggle()")}}</dt> + <dd>Permet de basculer la visibilité de la barre latérale.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.sidebarAction")}}</p> + +<h2 id="Exemple_extensions">Exemple extensions</h2> + +<ul> + <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/annotate-page">annotate-page</a></li> +</ul> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Opera <a href="https://dev.opera.com/extensions/sidebar-action-api/"><code>chrome.sidebarAction</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/isopen/index.html b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/isopen/index.html new file mode 100644 index 0000000000..afaf4eab6d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/isopen/index.html @@ -0,0 +1,86 @@ +--- +title: sidebarAction.isOpen() +slug: Mozilla/Add-ons/WebExtensions/API/sidebarAction/isOpen +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - isOpen + - slidebarAction +translation_of: Mozilla/Add-ons/WebExtensions/API/sidebarAction/isOpen +--- +<div>{{AddonSidebar()}}</div> + +<p>Renvoie <code>true</code> si la barre latérale de l'extension est ouverte dans une fenêtre donnée.</p> + +<p>Cette fonction accepte un <code>windowId</code> en paramètre :</p> + +<ul> + <li>Si vous fournissez <code>windowId</code>, la fonction vérifie la fenêtre du navigateur.</li> + <li>Si vous omettez <code>windowId</code>, la fonction vérifie la fenêtre du navigateur la plus haute.</li> +</ul> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">let gettingIsOpen = browser.sidebarAction.isOpen( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Un objet contenant éventuellement le <code>windowId</code> à vérifier.</dd> + <dd> + <dl class="reference-values"> + <dt><code>windowId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. ID d'une fenêtre de navigateur à vérifier. Si omis par défaut, il s'agit de {{WebExtAPIRef("windows.WINDOW_ID_CURRENT")}}, qui fait référence à la fenêtre du navigateur la plus haute.</dd> + </dl> + </dd> +</dl> + +<dl> + <dd> + <dl class="reference-values"> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec <code>true</code> si la barre latérale de l'extension est ouverte dans la fenêtre donnée, ou <code>false</code> dans le cas contraire.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sidebarAction.isOpen",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Vérifiez la fenêtre la plus haute :</p> + +<pre class="brush: js">browser.sidebarAction.isOpen({}).then(result => { + console.log(result); +});</pre> + +<p> Vérifiez toutes les fenêtres ouvertes :</p> + +<pre class="brush: js">async function checkWindow(windowId) { + let result = await browser.sidebarAction.isOpen({windowId}); + console.log(`window: ${windowId} status: ${result}`); +} + +browser.windows.getAll().then(all => { + for (let {id} of all) { + checkWindow(id); + } +});</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/open/index.html b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/open/index.html new file mode 100644 index 0000000000..8bb1ee9484 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/open/index.html @@ -0,0 +1,59 @@ +--- +title: sidebarAction.open() +slug: Mozilla/Add-ons/WebExtensions/API/sidebarAction/open +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - open + - sidebarAction +translation_of: Mozilla/Add-ons/WebExtensions/API/sidebarAction/open +--- +<div>{{AddonSidebar()}}</div> + +<div>Ouvrez la barre latérale dans la fenêtre active.</div> + +<div></div> + +<div> +<p>Vous pouvez uniquement appeler cette fonction à l'intérieur du gestionnaire pour une <a href="/fr/Add-ons/WebExtensions/User_actions">action utilisateur</a>.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.sidebarAction.open() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue sans arguments..</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sidebarAction.open", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ouvrez la barre latérale lorsque l'utilisateur sélectionne un élément de menu contextuel :</p> + +<pre class="brush: js">browser.menus.create({ + id: "open-sidebar", + title: "open sidebar", + contexts: ["all"] +}); + +browser.menus.onClicked.addListener(() => { + browser.sidebarAction.open(); +});</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/seticon/index.html b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/seticon/index.html new file mode 100644 index 0000000000..1b0f7e3352 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/seticon/index.html @@ -0,0 +1,137 @@ +--- +title: sidebarAction.setIcon() +slug: Mozilla/Add-ons/WebExtensions/API/sidebarAction/setIcon +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - setIcon + - sidebarAction +translation_of: Mozilla/Add-ons/WebExtensions/API/sidebarAction/setIcon +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit l'icône de la barre latérale.</p> + +<p>Vous pouvez spécifier une icône unique comme chemin d'accès à un fichier image ou un objet {{WebExtAPIRef('sidebarAction.ImageDataType')}}.</p> + +<p>Vous pouvez spécifier plusieurs icônes de différentes tailles en fournissant un dictionnaire contenant plusieurs chemins ou objets <code>ImageData</code>. Cela signifie que l'icône ne doit pas être mise à l'échelle pour un périphérique avec une densité de pixels différente.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Types_d'icônes">Types d'icônes</h2> + +<p>Votre extension doit spécifier une icône pour la barre latérale dans la clé de manifest <a href="/fr/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a>. C'est ce qu'on appelle <em>"manifest icon"</em>.</p> + +<p>Si vous ne spécifiez pas d'icône dans la clé sidebar_action, vous obtenez l'icône par défaut du navigateur. C'est ce qu'on appelle <em>"default icon"</em>.</p> + +<p>Si vous définissez une nouvelle icône en utilisant <code>setIcon()</code>, et incluez l'option <code>tabId</code> , l'icône est définie uniquement pour l'onglet donné. C'est ce qu'on appelle <em>"tab-specific icon"</em>.</p> + +<p>Si vous définissez une nouvelle icône en utilisant <code>setIcon()</code>, et incluez l'option <code>windowId</code>, alors l'icône n'est définie que pour la fenêtre donnée. Cette icône est appelée <em>"icône spécifique à la fenêtre"</em>, et apparaîtra dans tous les onglets de cette fenêtre qui n'ont pas de jeu d'icônes spécifiques aux onglets.</p> + +<p>Si vous définissez une nouvelle icône en utilisant <code>setIcon()</code>, et omettez l'option <code>tabId</code> and <code>windowId</code>, cela définit <em>"icône globale"</em>. L'icône globale apparaîtra alors dans tous les onglets qui n'ont pas de jeu d'icônes spécifiques aux onglets et dont la fenêtre n'a pas d'icône spécifique à la fenêtre.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var settingIcon = browser.sidebarAction.setIcon( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Un Objet contenant des propriétés <code>imageData</code> ou <code>path</code>, et éventuellement une propriété <code>tabId</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>imageData</code>{{optional_inline}}</dt> + <dd> + <p><code>{{WebExtAPIRef('sidebarAction.ImageDataType')}}</code> ou <code><code>object</code></code>. C'est un objet <code>ImageData</code> unique ou un objet dictionnaire.</p> + + <p>Utilisez un objet dictionnaire pour spécifier plusieurs objets <code>ImageData</code> dans différentes tailles, de sorte que l'icône ne doit pas être mise à l'échelle pour un périphérique avec une densité de pixels différente. Si <code>imageData</code> est un dictionnaire, la valeur de chaque propriété est un objet <code>ImageData</code>, et son nom est sa taille, comme ceci :</p> + + <pre class="brush: json line-numbers language-json"><code class="language-json"><span class="punctuation token">{</span> + <span class="key token">16:</span> <span class="string token">image16</span><span class="punctuation token">,</span> + <span class="key token">32:</span> image32 +<span class="punctuation token">}</span></code></pre> + + <p>Le navigateur choisira l'image à utiliser en fonction de la densité de pixels de l'écran. Voir <a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action#Choosing_icon_sizes">Choisir les tailles d'icônes</a> pour plus d'informations à ce sujet.</p> + </dd> + <dt><code>path</code>{{optional_inline}}</dt> + <dd> + <p><code><code>string</code></code> ou <code><code>object</code></code>. C'est soit un chemin relatif vers un fichier d'icône, soit un objet dictionnaire. </p> + + <p>Utilisez un objet de dictionnaire pour spécifier plusieurs fichiers d'icônes de différentes tailles, de sorte que l'icône ne doit pas être mise à l'échelle pour un périphérique avec une densité de pixels différente. Si <code>path</code> est un dictionnaire, la valeur de chaque propriété est un chemin relatif, et son nom est sa taille, comme ceci :</p> + + <pre class="brush: json line-numbers language-json"><code class="language-json"><span class="punctuation token">{</span> + <span class="key token">16:</span> "path/to/image16.jpg<span class="punctuation token">",</span> + <span class="key token">32:</span> "path/to/image32.jpg<span class="punctuation token">"</span> +<span class="punctuation token">}</span></code></pre> + + <p>Le navigateur choisira l'image à utiliser en fonction de la densité de pixels de l'écran. Voir <a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action#Choosing_icon_sizes">Choosir les tailles d'icônes</a> pour plus d'informations à ce sujet.</p> + + <p>si <code>path</code> est une chaîne vide, le navigateur utilisera l'icône par défaut.</p> + + <p>si <code>path</code> n'est pas vide mais ne pointe pas vers un fichier d'icône, l'icône est masquée.</p> + + <p>si <code>path</code> est <code>null</code>, et <code>tabId</code>a été spécifié, et que l'onglet spécifié possède un jeu d'icônes spécifique à l'onglet: l'icône spécifique à l'onglet est réinitialisée à l'icône globale (si une icône globale est définie) ou à l'icône manifeste.</p> + + <p>si <code>path</code> est <code>null</code>, et <code>tabId</code> a été omis, et qu'il y avait un jeu d'icônes global, il sera réinitialisé à l'icône de manifest.</p> + </dd> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définit l'icône uniquement pour l'onglet donné.</dd> + <dt><code>windowId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. Définit l'icône uniquement pour la fenêtre donnée.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si <code>windowId</code>et <code>tabId</code> sont tous deux spécifiés, la fonction échoue et l'icône n'est pas définie.</li> + <li>SI <code>windowId</code> et <code>tabId</code> sont tous deux omis, l'icône est définie globalement.</li> +</ul> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans argument une fois l'icône définie.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sidebarAction.setIcon",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Le code ci-dessous bascule l'icône de la barre latérale de l'onglet actif lorsque l'utilisateur clique sur une action du navigateur :</p> + +<pre class="brush: js">var on = false; + +function toggle(tab) { + if (on) { + browser.sidebarAction.setIcon({ + path: "off.svg", + tabId: tab.id + }); + on = false; + } else { + browser.sidebarAction.setIcon({ + path: "on.svg", + tabId: tab.id + }); + on = true; + } +} + +browser.browserAction.onClicked.addListener(toggle);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Opera <a href="https://dev.opera.com/extensions/sidebar-action-api/"><code>chrome.sidebarAction</code></a>.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.html b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.html new file mode 100644 index 0000000000..329a0c3aa5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/setpanel/index.html @@ -0,0 +1,138 @@ +--- +title: sidebarAction.setPanel() +slug: Mozilla/Add-ons/WebExtensions/API/sidebarAction/setPanel +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - setPanel + - sidebarAction +translation_of: Mozilla/Add-ons/WebExtensions/API/sidebarAction/setPanel +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit le panneau de la barre latérale: c'est-à-dire le document HTML qui définit le contenu de cette barre latérale.</p> + +<h2 id="Types_de_panneau">Types de panneau</h2> + +<p>Les barres latérales ont toujours un <em>"panneau manifest"</em>, qui est le panneau défini dans la clé de manifest <code><a href="/fr/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></code>.</p> + +<p>Si vous définissez un nouveau panneau à l'aide de <code>setPanel()</code>, et incluez l'option <code>tabId</code> le panneau est défini uniquement pour l'onglet donné. Ce panneau est appelé <em>"tab-specific panel"</em>.</p> + +<p>Si vous définissez un nouveau panneau en utilisant <code>setPanel()</code>, et incluez l'option <code>windowId</code>, alors le panneau n'est défini que pour la fenêtre donnée. Ce panneau est appelé <em>"panneau spécifique à la fenêtre"</em>, et apparaîtra dans tous les onglets de cette fenêtre qui n'ont pas d'ensemble de panneaux spécifiques aux onglets.</p> + +<p>Si vous définissez un nouveau panneau en utilisant <code>setPanel()</code>, et omettez les options <code>tabId</code> et <code>windowId</code>, alors ceci définit le <em>"panneau global"</em>. Le panneau global apparaîtra alors dans tous les onglets qui n'ont pas d'ensemble de panneaux spécifiques aux onglets et dont la fenêtre n'a pas de panneau spécifique à une fenêtre.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.sidebarAction.setPanel( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Un objet avec les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>panel</code></dt> + <dd><code>string</code> ou <code>null</code>. Le panneau à charger dans la barre latérale, spécifié comme une URL pointant vers un document HTML, ou <code>null</code>, ou une chaîne vide.</dd> + <dd>Ceci peut pointer vers un fichier empaqueté dans l'extension (for exemple, créé à l'aide de {{WebExtAPIRef("runtime.getURL")}}), ou un document distant (par exemple <code>https://example.org/</code>). Il doit s'agir d'une URL valide.</dd> + <dd>Si <code>panel</code> est <code>null</code> ou <code>""</code>,alors un panneau précédemment défini sera supprimé, de sorte que :</dd> + <dd> + <ul> + <li>Si <code>tabId</code> est spécifié, et que l'onglet a un jeu de panneaux spécifiques aux onglets, alors l'onglet héritera du panneau à partir de la fenêtre à laquelle il appartient.</li> + <li>Si <code>windowId</code> est spécifié, et que la fenêtre a un jeu de panneaux spécifiques à la fenêtre, alors la fenêtre héritera du panneau global.</li> + <li>Sinon, le panneau global sera réinitialisé au panneau manifest.</li> + </ul> + </dd> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définit le panneau uniquement pour l'onglet donné.</dd> + <dt><code>windowId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. Définit le panneau uniquement pour la fenêtre donnée.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous les deux spécifiés, la fonction échoue et le panneau n'est pas défini.</li> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous les deux omis, le panneau global est défini.</li> +</ul> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code bascule le document de la barre latérale lorsque l'utilisateur clique sur une action du navigateur :</p> + +<pre class="brush: js">var thisPanel = browser.runtime.getURL("/this.html"); +var thatPanel = browser.runtime.getURL("/that.html"); + +function toggle(panel) { + if (panel === thisPanel) { + browser.sidebarAction.setPanel({panel: thatPanel}); + } else { + browser.sidebarAction.setPanel({panel: thisPanel}); + } +} + +browser.browserAction.onClicked.addListener(() => { + browser.sidebarAction.getPanel({}).then(toggle); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<ul> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sidebarAction.setPanel",2)}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Opera <a href="https://dev.opera.com/extensions/sidebar-action-api/"><code>chrome.sidebarAction</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/settitle/index.html b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/settitle/index.html new file mode 100644 index 0000000000..7f6bf473c2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/settitle/index.html @@ -0,0 +1,125 @@ +--- +title: sidebarAction.setTitle() +slug: Mozilla/Add-ons/WebExtensions/API/sidebarAction/setTitle +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - setTitle + - sidebarAction +translation_of: Mozilla/Add-ons/WebExtensions/API/sidebarAction/setTitle +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit le titre de la barre latérale. Le titre est affiché n'importe où dans les barres latérales du navigateur. Par exemple, Firefox l'affichera dans le menu "Affichage > Barre latérale". Il est également affiché en haut de la barre latérale lorsque la barre latérale est ouverte.</p> + +<h2 id="Types_de_titres">Types de titres</h2> + +<p>Votre extension doit spécifier un titre pour la barre latérale dans la clé de manifest <a href="/fr/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a>. C'est ce qu'on appelle le <em>"titre du manifest"</em>. Si vous ne spécifiez pas le titre du manifest, il sera par défaut le nom de l'extension</p> + +<p>Si vous définissez un nouveau titre à l'aide de <code>setTitle()</code>, et incluez l'option <code>tabId</code> le titre est défini uniquement pour l'onglet donné. Ce titre est appelé <em>"titre spécifique à l'onglet"</em>.</p> + + + +<p>Si vous définissez un nouveau titre à l'aide de <code>setTitle()</code>, et incluez l'option <code>windowId</code>, alors le titre est défini uniquement pour la fenêtre donnée. Ce titre est appelé <em>"titre spécifique à la fenêtre"</em>, et apparaîtra dans tous les onglets de cette fenêtre qui n'ont pas de titre spécifique à un onglet.</p> + +<p>Si vous définissez un nouveau titre à l'aide de <code>setTitle()</code>, et omettre les options <code>tabId</code> et <code>windowId</code>, alors ceci définit le <em>"titre global"</em>. Le titre global apparaîtra alors dans tous les onglets qui n'ont pas de titre spécifique à un onglet et dont la fenêtre n'a pas de titre spécifique à une fenêtre.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.sidebarAction.setTitle( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Un objet avec les propriétés suivantes .</dd> + <dd> + <dl class="reference-values"> + <dt><code>title</code></dt> + <dd><code>string</code> ou <code>null</code>. Le nouveau titre de la barre latérale.</dd> + <dd> + <p>si le <code>titre</code> est une chaîne vide, le titre utilisé sera le nom de l'extension, mais {{WebExtAPIRef("sidebarAction.getTitle")}} fournira toujours la chaîne vide.</p> + + <p>Si le <code>titre</code> est <code>null</code>, alors un titre précédemment défini sera supprimé, de sorte que :</p> + + <ul> + <li>Si <code>tabId</code> est spécifié, et que l'onglet a un jeu de titres spécifiques aux onglets, alors l'onglet héritera du titre de la fenêtre à laquelle il appartient.</li> + <li>Si <code>windowId</code> est spécifié et que la fenêtre a un titre spécifique à la fenêtre, alors la fenêtre héritera du titre global.</li> + <li>Sinon, le titre global sera réinitialisé au titre du manifest.</li> + </ul> + </dd> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définit le titre uniquement pour l'onglet donné.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Définit le titre uniquement pour la fenêtre donnée.</dd> + </dl> + </dd> +</dl> + +<ul> + <li>Si <code>windowId</code> et <code>tabId</code> sont tous deux fournis, la fonction échoue et le titre n'est pas défini.</li> + <li>SI <code>windowId</code> et <code>tabId</code> sont tous les deux omis, le titre global est définit.</li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sidebarAction.setTitle",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code modifie le titre de la barre latérale lorsque l'utilisateur clique sur une action du navigateur, mais uniquement pour l'onglet en cours :</p> + +<pre class="brush: js">var title = "A different title"; + +function setTitleForTab(tab) { + browser.sidebarAction.setTitle({title, tabId: tab.id}); +} + +browser.browserAction.onClicked.addListener(setTitleForTab);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Opera <a href="https://dev.opera.com/extensions/sidebar-action-api/"><code>chrome.sidebarAction</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/toggle/index.html b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/toggle/index.html new file mode 100644 index 0000000000..84294f1c99 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/sidebaraction/toggle/index.html @@ -0,0 +1,56 @@ +--- +title: sidebarAction.toggle() +slug: Mozilla/Add-ons/WebExtensions/API/sidebarAction/toggle +tags: + - API + - Add-ons + - Extensions + - Méthode + - Reference + - WebExtensions + - sidebarAction + - toogle +translation_of: Mozilla/Add-ons/WebExtensions/API/sidebarAction/toggle +--- +<div>{{AddonSidebar()}}</div> + +<p>Permet de basculer la visibilité de la barre latérale dans la fenêtre active, si la barre latérale appartient à l'extension.</p> + +<p>Vous ne pouvez appeler cette fonction que depuis l'intérieur du gestionnaire pour une <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/User_actions">action utilisateur</a>.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.sidebarAction.toggle() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucune.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue sans discussion.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.sidebarAction.toggle", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Bascule la barre latérale lorsque l'utilisateur sélectionne un élément dans le menu contextuel :</p> + +<pre class="brush: js">browser.menus.create({ + id: "toggle-sidebar", + title: "Toggle sidebar", + contexts: ["all"] +}); + +browser.menus.onClicked.addListener(() => { + browser.sidebarAction.toggle(); +});</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/storage/index.html b/files/fr/mozilla/add-ons/webextensions/api/storage/index.html new file mode 100644 index 0000000000..119d7756b0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/storage/index.html @@ -0,0 +1,107 @@ +--- +title: storage +slug: Mozilla/Add-ons/WebExtensions/API/storage +tags: + - API + - Add-ons + - Extensions + - Interface + - Non-standard + - Reference + - Storage + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/storage +--- +<div>{{AddonSidebar}}</div> + +<p>Permet aux extensions de stocker et de récupérer des données et d'écouter les modifications apportées aux éléments stockés.</p> + +<p>Le mécanisme de stockage est basé sur l'<a href="/fr/docs/Web/API/Web_Storage_API">API Web Storage</a>, à quelques différences près. Elles incluent entre autres :</p> + +<ul> + <li>Le mécanisme est asynchrone.</li> + <li>La portée des valeurs s'étend à l'extension, pas à un domaine en particulier (c-à-d que les mêmes paires clef/valeur sont disponibles pour tous les scripts d'arrière-plan et de contenu).</li> + <li>Les valeurs stockées peuvent être de tout type compatible avec JSON et pas uniquement <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/String">String</a></code>. Ce qui inclut entre autres <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a></code> et <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Object">Object</a></code>, mais seulement si leur contenu peut être représenté en JSON, ce qui exclut les nœuds DOM. Il n'est pas nécessaire de convertir vos valeurs en JSON Strings avant de les stocker, mais elles sont représentées en JSON en interne, d'où l'impératif de compatibilité.</li> + <li>Plusieurs paires clef/valeur peuvent être récupérées par un même appel à l'API.</li> +</ul> + +<p>Pour utiliser cette API vous devez inclure la <a href="https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> « storage » dans votre fichier <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a>.</p> + +<p>Chaque extension a sa propre zone de stockage, qui peut être divisée entre plusieurs types de stockage.</p> + +<p>Bien que cette API soit semblable à {{domxref("Window.localStorage")}} il est conseillé de ne pas utiliser <code>Window.localStorage</code> dans le code de l'extension pour stocker ses données. Firefox effacera les données stockées via l'API localStorage par les extensions dans plusieurs scénarios où les utilisateurs effacent leur historique de navigation ou des données pour des raisons de confidentialité, alors que les données sauvées en utilisant l'API <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/storage/local">storage.local</a></code> seront correctement conservées dans ces scénarios.</p> + +<div class="note">La zone de stockage n'est pas chiffrée et ne doit pas être utilisée pour stocker des informations confidentielles sur les utilisateurs.</div> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("storage.StorageArea")}}</dt> + <dd>Un objet représentant la zone de stockage.</dd> + <dt>{{WebExtAPIRef("storage.StorageChange")}}</dt> + <dd>Un objet représentant une modification d'une zone de stockage.</dd> +</dl> + +<h2 id="Propriétés">Propriétés</h2> + +<p><code>storage</code> a trois propriétés, qui représentent les différents types de zones de stockage disponibles.</p> + +<dl> + <dt>{{WebExtAPIRef("storage.sync")}}</dt> + <dd>Représente la zone de stockage <code>sync</code>. Les items dans <code>sync</code> sont synchronisés par le navigateur, et disponibles pour toutes les instances de ce navigateur auxquelles l'utilisateur est connecté, pour tous les appareils.</dd> + <dt>{{WebExtAPIRef("storage.local")}}</dt> + <dd>Représente la zone de stockage <code>local</code>. Les items dans <code>local</code> sont limités à l'appareil sur lequel l'extension a été installée.</dd> + <dt>{{WebExtAPIRef("storage.managed")}}</dt> + <dd>Représente la zone de stockage <code>managed</code>. Les items dans <code>managed</code> sont en écriture pour l'administrateur du domaine et en lecture seule pour l'extension. Tenter de modifier cet espace de nom renvoie une erreur.</dd> +</dl> + +<h2 id="Événements">Événements</h2> + +<dl> + <dt>{{WebExtAPIRef("storage.onChanged")}}</dt> + <dd>Activé quand un ou plusieurs items d'une zone de stockage sont modifiés.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.storage")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/storage/local/index.html b/files/fr/mozilla/add-ons/webextensions/api/storage/local/index.html new file mode 100644 index 0000000000..d9addc36eb --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/storage/local/index.html @@ -0,0 +1,94 @@ +--- +title: storage.local +slug: Mozilla/Add-ons/WebExtensions/API/storage/local +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Property + - Reference + - Storage + - WebExtensions + - local +translation_of: Mozilla/Add-ons/WebExtensions/API/storage/local +--- +<div>{{AddonSidebar()}}</div> + +<p>Représente la zone de stockage <code>local</code>. Les éléments stockés <code>localement</code> sont locaux sur la machine sur laquelle l'extension a été installée.</p> + +<p>Le navigateur peut limiter la quantité de données qu'une extension peut stocker dans la zone de stockage locale :</p> + +<ul> + <li>Chrome limite l'extension à 5 Mo de données à l'aide de cette API à moins qu'elle ne dispose de <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Unlimited_storage">permission "unlimitedStorage"</a>.</li> + <li>Firefox vous permet de demander la permission "unlimitedStorage" à partir de la version 56. Il ne limite pas encore la quantité de données que votre extension peut stocker, mais commencera à le faire dans une future version : c'est donc une bonne idée de demander la permission "unlimitedStorage" maintenant, si vous avez l'intention de stocker une grande quantité de données.</li> +</ul> + +<p>Lorsque l'extension est désinstallée, son stockage local associé est effacé.</p> + +<p>Toujours dans Firefox, vous pouvez empêcher le navigateur d'effacer le stockage local lors de la désinstallation en visitant "about:config" et en définissant les deux préférences de navigateur suivantes sur <code>true</code>: "keepUuidOnUninstall" et "keepStorageOnUninstall". Cette fonctionnalité est fournie pour aider les développeurs à tester leurs extensions. Les extensions elles-mêmes ne sont pas en mesure de modifier ces préférences.</p> + +<p>Bien que cette API soit similaire à {{domxref("Window.localStorage")}} il est recommandé de ne pas utiliser <code>Window.localStorage</code> dans le code d'extension. Firefox effacera les données stockées par les extensions à l'aide de l'API localStorage dans divers scénarios où les utilisateurs effacent leur historique de navigation et leurs données pour des raisons de confidentialité, tandis que les données enregistrées avec l'API storage.local seront correctement conservées dans ces scénarios.</p> + +<h2 id="Méthodes">Méthodes</h2> + +<p>L'objet <code>local</code> local implémente les méthodes définies sur le type {{WebExtAPIRef("storage.StorageArea")}} :</p> + +<dl> + <dt>{{WebExtAPIRef("storage.StorageArea.get()")}}</dt> + <dd>Récupère un ou plusieurs éléments de la zone de stockage.</dd> + <dt>{{WebExtAPIRef("storage.StorageArea.getBytesInUse()")}}</dt> + <dd>Obtient la quantité d'espace de stockage (en octets) utilisée pour stocker un ou plusieurs éléments dans la zone de stockage.</dd> + <dt>{{WebExtAPIRef("storage.StorageArea.set()")}}</dt> + <dd>Stocke un ou plusieurs éléments dans la zone de stockage. Si l'élément existe déjà, sa valeur sera mise à jour. Lorsque vous définissez une valeur, l'événement {{WebExtAPIRef("storage.onChanged")}} se déclenche.</dd> + <dt>{{WebExtAPIRef("storage.StorageArea.remove()")}}</dt> + <dd>Supprime un ou plusieurs éléments de la zone de stockage..</dd> + <dt>{{WebExtAPIRef("storage.StorageArea.clear()")}}</dt> + <dd>Supprime tous les éléments de la zone de stockage.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.storage.local")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/storage/managed/index.html b/files/fr/mozilla/add-ons/webextensions/api/storage/managed/index.html new file mode 100644 index 0000000000..367206b319 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/storage/managed/index.html @@ -0,0 +1,136 @@ +--- +title: storage.managed +slug: Mozilla/Add-ons/WebExtensions/API/storage/managed +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Property + - Reference + - Storage + - WebExtensions + - managed +translation_of: Mozilla/Add-ons/WebExtensions/API/storage/managed +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet {{WebExtAPIRef("storage.StorageArea")}} qui représente la zone de stockage gérée. Les éléments de stockage <code>géré</code> sont définis par l'administrateur du domaine ou d'autres applications natives installées sur l'ordinateur de l'utilisateur et sont en lecture seule pour l'extension. Essayer de modifier cette zone de stockage entraîne une erreur.</p> + +<h2 id="Provisionnement_du_stockage_géré">Provisionnement du stockage géré</h2> + +<p>La procédure de provisionnement du stockage géré est différente selon les navigateurs. Firefox a sa propre méthode mais (à partir de Firefox 67) peut aussi utiliser la fonction Storage.managed de Chrome qui supporte un fichier <code>.json</code>. ((Voir Stockage Chrome géré ci-dessous.)</p> + +<h3 id="manifestes_natives">manifestes natives</h3> + +<p>Pour Firefox, vous devez créer un fichier manifest JSON dans un format spécifique, dans un emplacement spécifique. Pour plus de détails sur la syntaxe et l'emplacement du manifeste, voir <a href="/fr/Add-ons/WebExtensions/Native_manifests">manifests natifs</a>.</p> + +<p>Voici un exemple de manifest :</p> + +<pre class="brush: json">{ + "name": "favourite-color-examples@mozilla.org", + "description": "ignored", + "type": "storage", + "data": + { + "color": "management thinks it should be blue!" + } +}</pre> + +<p>Compte tenu de ce manifeste, l'extension "favourite-color-examples@mozilla.org" pourrait accéder aux données en utilisant un code comme celui-ci :</p> + +<pre class="brush: js">var storageItem = browser.storage.managed.get('color'); +storageItem.then((res) => { + console.log(`Managed colur is: ${res.color}`); +});</pre> + +<h3 id="Gestion_de_stockage_dans_Chrome">Gestion de stockage dans Chrome</h3> + +<p>Firefox et Chrome supportent tous deux l'utilisation d'un manifeste pour les zones de stockage.</p> + +<p>La zone de stockage gérée est configurée à l'aide d'un schéma JSON, qui est strictement validé par Chrome et Firefox 67 ou supérieur. Stockez le schéma dans un fichier.json et pointez-le depuis la propriété "managed_schema" de la clé de manifeste "storage" de l'extension web. Le fichier json déclare les stratégies d'entreprise supportées par l'extension.</p> + +<p>Les stratégies définissent les options qui ont été configurées par un administrateur système au lieu de l'utilisateur. La gestion du stockage permet de préconfigurer une extension pour tous les utilisateurs d'une organisation.</p> + +<p>C'est à l'extension d'appliquer les stratégies configurées par l'administrateur. L'extension peut lire les stratégies à l'aide de l'API storage.managed.</p> + +<h4 id="manifest.json">manifest.json</h4> + +<pre class="brush: js">{ + "name": "chrome-storage-managed-examples@mozilla.org", +<span class="str"> "storage"</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> + </span><span class="str">"managed_schema"</span><span class="pun">:</span><span class="pln"> </span><span class="str">"schema.json"</span><span class="pln"> + </span><span class="pun">},</span> +} +</pre> + +<p>Le fichier json ressemblerait à ceci :</p> + +<pre class="brush: json">{ + "type": "object", + // "properties" maps an optional key of this object to its schema. At the + // top-level object, these keys are the policy names supported. + "properties": { + // "title" and "description" are optional and are used to show a + // user-friendly name and documentation to the administrator. + "bookmarks": { + "id": "DevTeamBookmarks", + "title": "Dev Team bookmarks.", + "description": "A set of bookmarks particularly useful to the dev team.", + "type": "array", + "items": { + "type": "object", + "properties": { + "title": { "type": "string" }, + "url": { "type": "string" }, + "children": { "$ref": "ListOfBookmarks" } + } + } + } +}</pre> + +<p>Pour plus d'informations, voir l'article de Chrome pour les zones de stockage <a href="https://developer.chrome.com/extensions/manifest/storage">Manifeste pour les zones de stockage</a>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.storage.managed")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> dans le code de Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/storage/onchanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/storage/onchanged/index.html new file mode 100644 index 0000000000..e7215b138c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/storage/onchanged/index.html @@ -0,0 +1,127 @@ +--- +title: storage.onChanged +slug: Mozilla/Add-ons/WebExtensions/API/storage/onChanged +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - Storage + - WebExtensions + - onChanged +translation_of: Mozilla/Add-ons/WebExtensions/API/storage/onChanged +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'un ou plusieurs éléments changent.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.storage.onChanged.addListener(callback) +browser.storage.onChanged.removeListener(listener) +browser.storage.onChanged.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions:</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code>s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>changes</code></dt> + <dd><code>object</code>. Objet décrivant le changement. Cela contient une propriété pour chaque clé qui a changé. Le nom de la propriété est le nom de la clé qui a changé, et sa valeur est un objet {{WebExtAPIRef('storage.StorageChange')}} décrivant la modification apportée à cet élément.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>areaName</code></dt> + <dd><code>string</code>. Le nom de la zone de stockage (<code>"sync"</code>, <code>"local"</code> or <code>"managed"</code>) auquel les modifications ont été apportées.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.storage.onChanged")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">/* +Log the storage area that changed, +then for each item changed, +log its old value and its new value. +*/ +function logStorageChange(changes, area) { + console.log("Change in storage area: " + area); + + var changedItems = Object.keys(changes); + + for (var item of changedItems) { + console.log(item + " has changed:"); + console.log("Old value: "); + console.log(changes[item].oldValue); + console.log("New value: "); + console.log(changes[item].newValue); + } +} + +browser.storage.onChanged.addListener(logStorageChange); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/clear/index.html b/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/clear/index.html new file mode 100644 index 0000000000..14fe3c2617 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/clear/index.html @@ -0,0 +1,62 @@ +--- +title: StorageArea.clear() +slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/clear +tags: + - API + - Add-ons + - Extensios + - Méthode + - Non-standard + - Reference + - Storage + - StorageArea + - WebExtensions + - remove +translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/clear +--- +<div>{{AddonSidebar()}}</div> + +<p>Supprime tous les éléments de la zone de stockage.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var clearing = browser.storage.<storageType>.clear() +</pre> + +<p><code><storageType> </code>sera l'un des types de stockage accessibles en écriture — {{WebExtAPIRef("storage.sync")}} or {{WebExtAPIRef("storage.local")}}.</p> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments si l'opération a réussi. Si l'opération a échoué, la promesse sera rejetée avec un message d'erreur..</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.storage.StorageArea.clear")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function onCleared() { + console.log("OK"); +} + +function onError(e) { + console.log(e); +} + +var clearStorage = browser.storage.local.clear(); +clearStorage.then(onCleared, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/get/index.html b/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/get/index.html new file mode 100644 index 0000000000..e2836d3b10 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/get/index.html @@ -0,0 +1,135 @@ +--- +title: StorageArea.get() +slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/get +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - Storage + - StorageArea + - WebExtensions + - get +translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/get +--- +<div>{{AddonSidebar()}}</div> + +<p>Récupère un ou plusieurs éléments de la zone de stockage.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox">let gettingItem = browser.storage.<storageType>.get( + keys // null, string, object or array of strings +) +</pre> + +<p><code><storageType></code> sera l'un des types de stockage accessibles en écriture — {{WebExtAPIRef("storage.sync", "sync")}}, {{WebExtAPIRef("storage.local", "local")}}, ou {{WebExtAPIRef("storage.managed", "managed")}}.</p> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>keys</code></dt> + <dd>Une clé (chaîne) ou des clés (un tableau de chaînes ou un objet spécifiant des valeurs par défaut) pour identifier le ou les articles à extraire du stockage. Si vous passez une chaîne vide, un objet ou un tableau ici, un objet vide sera récupéré. Si vous passez <code>null</code>, ou une valeur indéfinie, le contenu entier du stockage sera récupéré.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet de <code>resultat</code> contenant tous les objets dans les <code>clefs</code> trouvées dans la zone de stockage. Si l'opération a échoué, la promesse sera rejetée avec un message d'erreur. Si le stockage géré n'est pas défini, les données <code>non définies</code> seront retournées.</p> + +<div class="warning"> +<p>Lorsqu'elle est utilisée dans un script de contenu dans les versions de Firefox antérieures à 52, la promesse retournée par <code>browser.storage.local.get()</code> est remplie avec un tableau contenant un objet. L'objet dans le tableau contient les <code>clefs</code> trouvées dans la zone de stockage, comme décrit ci-dessus. La promesse est correctement remplie avec un objet lorsqu'il est utilisé dans le contexte d'arrière-plan<br> + (scripts d'arrière-plan, popups, pages d'options, etc.). Lorsque cette API est utilisée en tant que <code>chrome.storage.local.get()</code>, elle transmet correctement un objet à la fonction de rappel.</p> +</div> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.storage.StorageArea.get")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supposons que le stockage contienne deux éléments :</p> + +<pre class="brush: js">// storage contains two items, +// "kitten" and "monster" +browser.storage.local.set({ + kitten: {name:"Mog", eats:"mice"}, + monster: {name:"Kraken", eats:"people"} +});</pre> + +<p>Définissez les gestionnaires de réussite et d'échec pour la promesse:</p> + +<pre class="brush: js">function onGot(item) { + console.log(item); +} + +function onError(error) { + console.log(`Error: ${error}`); +}</pre> + +<p>Sans arguments <code>clefs</code>, tout récupérez :</p> + +<pre class="brush: js">let gettingItem = browser.storage.local.get(); +gettingItem.then(onGot, onError); + +// -> Object { kitten: Object, monster: Object }</pre> + +<p>Avec un argument de clefs vide, ne retourne rien:</p> + +<pre class="brush: js">// with an empty array, retrieve nothing +let gettingItem = browser.storage.local.get([]); +gettingItem.then(onGot, onError); + +// -> Object { }</pre> + +<p>Avec le nom d'un objet, récupérez la correspondance :</p> + +<pre class="brush: js">let gettingItem = browser.storage.local.get("kitten"); +gettingItem.then(onGot, onError); + +// -> Object { kitten: Object }</pre> + +<p>Avec un tableau de noms d'objets, récupérez toutes les correspondances :</p> + +<pre class="brush: js">let gettingItem = browser.storage.local.get(["kitten", "monster", "grapefruit"]); +gettingItem.then(onGot, onError); + +// -> Object { kitten: Object, monster: Object } </pre> + +<p>Avec un objet avec des noms d'objets en tant que clefs et la valeur par défaut en tant que valeur :</p> + +<pre class="brush: js">let gettingItem = browser.storage.local.get({ + kitten: "no kitten", + monster: "no monster", + grapefruit: { + name: "Grape Fruit", + eats: "Water" + } +}); + +// -> Object { kitten: Object, monster: Object, grapefruit: Object } +</pre> + +<p>{{WebExtExamples}}</p> + +<h3 id="Chrome_exemples">Chrome exemples</h3> + +<pre class="brush: js">chrome.storage.local.get("kitten", function(items){ + console.log(items.kitten); // -> {name:"Mog", eats:"mice"} +});</pre> + +<p class="brush: js">Ou avec une fonction de flèche</p> + +<pre class="brush: js">chrome.storage.local.get("kitten", items=>{ + console.log(items.kitten); // -> {name:"Mog", eats:"mice"} +});</pre> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/getbytesinuse/index.html b/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/getbytesinuse/index.html new file mode 100644 index 0000000000..ee363be0e7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/getbytesinuse/index.html @@ -0,0 +1,54 @@ +--- +title: StorageArea.getBytesInUse() +slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/getBytesInUse +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - Storage + - StorageArea + - WebExtensions + - getBytesInUse +translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/getBytesInUse +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient la quantité d'espace de stockage, en octets, utilisé un ou plusieurs éléments stockés dans la zone de stockage.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingSpace = browser.storage.<storageType>.getBytesInUse( + keys // null, string, or array of strings +) +</pre> + +<p><code><storageType></code> sera l'un des types de stockage accessibles en écriture — {{WebExtAPIRef("storage.sync")}} ou {{WebExtAPIRef("storage.local")}}.</p> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>keys</code></dt> + <dd>Une clef (chaîne) ou des cléfs (un tableau de chaînes) pour identifier le ou les éléments dont vous voulez récupérer l'espace de stockage. Si un tableau vide est passé, 0 sera renvoyé. Si vous passez à <code>null</code> ou <code>indéfini</code> ici, la fonction retournera l'espace utilisé par l'ensemble de la zone de stockage.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un entier, <code>bytesUsed</code>, représentant l'espace de stockage utilisé par les objets spécifiés dans les <code>clefs</code>. Si l'opération a échoué, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.storage.StorageArea.getBytesInUse")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/index.html b/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/index.html new file mode 100644 index 0000000000..c22ea99dc3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/index.html @@ -0,0 +1,83 @@ +--- +title: storage.StorageArea +slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Storage + - StorageArea + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea +--- +<div>{{AddonSidebar()}}</div> + +<p>StorageArea est un objet représentant une zone de stockage.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets.</p> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("storage.StorageArea.get()")}}</dt> + <dd>Récupère un ou plusieurs éléments de la zone de stockage..</dd> + <dt>{{WebExtAPIRef("storage.StorageArea.getBytesInUse()")}}</dt> + <dd>Obtient la quantité d'espace de stockage (en octets) utilisée pour stocker un ou plusieurs éléments dans la zone de stockage.</dd> + <dt>{{WebExtAPIRef("storage.StorageArea.set()")}}</dt> + <dd>Stocke un ou plusieurs éléments dans la zone de stockage. Si un élément existe déjà, sa valeur sera mise à jour.</dd> + <dt>{{WebExtAPIRef("storage.StorageArea.remove()")}}</dt> + <dd>Supprime un ou plusieurs éléments de la zone de stockage.</dd> + <dt>{{WebExtAPIRef("storage.StorageArea.clear()")}}</dt> + <dd>Supprime tous les éléments de la zone de stockage.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.storage.StorageArea")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/remove/index.html b/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/remove/index.html new file mode 100644 index 0000000000..c51a77e08a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/remove/index.html @@ -0,0 +1,70 @@ +--- +title: StorageArea.remove() +slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/remove +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - Storage + - StorageArea + - WebExtensions + - remove +translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/remove +--- +<div>{{AddonSidebar()}}</div> + +<p>Supprime un ou plusieurs éléments de la zone de stockage.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">let removingItem = browser.storage.<storageType>.remove( + keys // string, or array of strings +) +</pre> + +<p><code><storageType></code> sera l'un des types de stockage accessibles en écriture — {{WebExtAPIRef("storage.sync")}} ou {{WebExtAPIRef("storage.local")}}.</p> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>keys</code></dt> + <dd>Une chaîne ou un tableau de chaînes représentant la ou les clés de l'élément à supprimer.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments si l'opération a réussi. Si l'opération a échoué, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.storage.StorageArea.remove")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supprimer un seul élément:</p> + +<pre class="brush: js">function onRemoved() { + console.log("OK"); +} + +function onError(e) { + console.log(e); +} + +let removeKitten = browser.storage.sync.remove("kitten"); +removeKitten.then(onRemoved, onError); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/set/index.html b/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/set/index.html new file mode 100644 index 0000000000..b1d8c12e59 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/storage/storagearea/set/index.html @@ -0,0 +1,101 @@ +--- +title: StorageArea.set() +slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/set +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - Storage + - StorageArea + - WebExtensions + - set +translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageArea/set +--- +<div>{{AddonSidebar()}}</div> + +<p>Stocke un ou plusieurs éléments dans la zone de stockage ou met à jour les éléments existants..</p> + +<p>Lorsque vous stockez ou mettez à jour une valeur à l'aide de cette API, l'événement {{WebExtAPIRef("storage.onChanged")}} se déclenche.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">let settingItem = browser.storage.<storageType>.set( + keys // object +) +</pre> + +<p><code><storageType></code> sera l'un des types de stockage accessibles en écriture — {{WebExtAPIRef("storage.sync")}} ou {{WebExtAPIRef("storage.local")}}.</p> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>keys</code></dt> + <dd> + <p>Un objet contenant une ou plusieurs paires clé / valeur à stocker dans le stockage. Si un élément existe déjà, sa valeur sera mise à jour.</p> + + <p>Les valeurs peuvent être des <a href="/fr/docs/Glossary/Primitive">types primitifs</a> tels que des nombres, des booléens et des chaînes) ou des types de <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Array">tableau</a></code>.</p> + + <p>Il n'est généralement pas possible de stocker d'autres types, tels que <code>Function</code>, <code>Date</code>, <code>RegExp</code>, <code>Set</code>, <code>Map</code>, <code>ArrayBuffer</code> et etc. Certains de ces types non pris en charge seront restaurés en tant qu'objet vide, et d'autres entraîneront <code>set()</code> à lancer une erreur. Le comportement exact ici est spécifique au navigateur.</p> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments si l'opération a réussi. Si l'opération a échoué, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.storage.StorageArea.set")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function setItem() { + console.log("OK"); +} + +function gotKitten(item) { + console.log(`${item.kitten.name} has ${item.kitten.eyeCount} eyes`); +} + +function gotMonster(item) { + console.log(`${item.monster.name} has ${item.monster.eyeCount} eyes`); +} + +function onError(error) { + console.log(error) +} + +// define 2 objects +var monster = { + name: "Kraken", + tentacles: true, + eyeCount: 10 +} + +var kitten = { + name: "Moggy", + tentacles: false, + eyeCount: 2 +} + +// store the objects +browser.storage.local.set({kitten, monster}) + .then(setItem, onError); + +browser.storage.local.get("kitten") + .then(gotKitten, onError); +browser.storage.local.get("monster") + .then(gotMonster, onError); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> dans le code de Chromium.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/storage/storagechange/index.html b/files/fr/mozilla/add-ons/webextensions/api/storage/storagechange/index.html new file mode 100644 index 0000000000..4542f8dd76 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/storage/storagechange/index.html @@ -0,0 +1,75 @@ +--- +title: storage.StorageChange +slug: Mozilla/Add-ons/WebExtensions/API/storage/StorageChange +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Storage + - StorageChange + - Type + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/storage/StorageChange +--- +<div>{{AddonSidebar()}}</div> + +<div><code>StorageChange</code> est un objet représentant une modification d'une zone de stockage.</div> + +<h2 id="Type">Type</h2> + +<p>Les objets <code>StorageChange</code> contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>oldValue</code>{{optional_inline}}</dt> + <dd>L'ancienne valeur de l'article, s'il y avait une ancienne valeur. Cela peut être n'importe quel type de données.</dd> + <dt><code>newValue</code>{{optional_inline}}</dt> + <dd>La nouvelle valeur de l'article, s'il y a une nouvelle valeur. Cela peut être n'importe quel type de données.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.storage.StorageChange")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/storage/sync/index.html b/files/fr/mozilla/add-ons/webextensions/api/storage/sync/index.html new file mode 100644 index 0000000000..641781ea93 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/storage/sync/index.html @@ -0,0 +1,88 @@ +--- +title: storage.sync +slug: Mozilla/Add-ons/WebExtensions/API/storage/sync +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Property + - Reference + - Storage + - Sync + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/storage/sync +--- +<div>{{AddonSidebar()}}</div> + +<p>Représente la zone de stockage de <code>synchronisation</code>. Les éléments stockés dans la <code>synchronisation</code> sont synchronisés par le navigateur et disponibles sur toutes les instances de ce navigateur auxquelles l'utilisateur est connecté (par exemple via la synchronisation Firefox ou un compte Google), sur différents appareils.</p> + +<p>Pour Firefox, un utilisateur doit avoir coché <code>Modules complémentaires</code> dans les options « Réglages de Sync » dans « about:preferences ».</p> + +<p>Notez que l'implémentation de <code>storage.sync</code> dans Firefox repose sur l'ID Add-on. Si vous utilisez <code>storage.sync</code>, vous devez définir un ID pour votre extension à l'aide de la clé manifest.json <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings"><code></code></a><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings">browser_specific_settings</a></code>.</p> + +<p>Le principal cas d'utilisation de cette API est de stocker les préférences concernant votre extension et de permettre à l'utilisateur de les synchroniser dans différents profils. Vous pouvez stocker jusqu'à 100 ko de données à l'aide de cette API. Si vous essayez de stocker plus que cela, l'appel échouera avec un message d'erreur. L'API est fournie sans garantie de disponibilité ou de performance.</p> + +<h2 id="Méthodes">Méthodes</h2> + +<p>L'objet <code>sync</code> implémente les méthodes définies sur le type {{WebExtAPIRef("storage.StorageArea")}} :</p> + +<dl> + <dt>{{WebExtAPIRef("storage.StorageArea.get()")}}</dt> + <dd>Récupère un ou plusieurs éléments de la zone de stockage.</dd> + <dt>{{WebExtAPIRef("storage.StorageArea.getBytesInUse()")}}</dt> + <dd>Obtient la quantité d'espace de stockage (en octets) utilisée pour stocker un ou plusieurs éléments dans la zone de stockage.</dd> + <dt>{{WebExtAPIRef("storage.StorageArea.set()")}}</dt> + <dd>Stocke un ou plusieurs éléments dans la zone de stockage. Si un élément existe déjà, sa valeur sera mise à jour.</dd> + <dt>{{WebExtAPIRef("storage.StorageArea.remove()")}}</dt> + <dd>Supprime un ou plusieurs éléments de la zone de stockage.</dd> + <dt>{{WebExtAPIRef("storage.StorageArea.clear()")}}</dt> + <dd>Supprime tous les éléments de la zone de stockage.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.storage.sync")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/storage"><code>chrome.storage</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/storage.json"><code>storage.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre class="notranslate">// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> +<tmpopup style="top: 304px; left: 182.233px;"><tmpopupcolor id="tmpopupcolor--1" style="background: rgb(221, 153, 255) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--2" style="background: rgb(102, 187, 255) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--3" style="background: rgb(85, 255, 85) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--4" style="background: rgb(255, 102, 102) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--5" style="background: rgb(255, 204, 0) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--m" style="background: rgb(255, 238, 0) none repeat scroll 0% 0%;"></tmpopupcolor></tmpopup><tmpopup style="top: 304px; left: 182.233px;"><tmpopupcolor id="tmpopupcolor--1" style="background: rgb(221, 153, 255) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--2" style="background: rgb(102, 187, 255) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--3" style="background: rgb(85, 255, 85) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--4" style="background: rgb(255, 102, 102) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--5" style="background: rgb(255, 204, 0) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--m" style="background: rgb(255, 238, 0) none repeat scroll 0% 0%;"></tmpopupcolor></tmpopup><tmpopup style="top: 304px; left: 182.233px;"><tmpopupcolor id="tmpopupcolor--1" style="background: rgb(221, 153, 255) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--2" style="background: rgb(102, 187, 255) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--3" style="background: rgb(85, 255, 85) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--4" style="background: rgb(255, 102, 102) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--5" style="background: rgb(255, 204, 0) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--m" style="background: rgb(255, 238, 0) none repeat scroll 0% 0%;"></tmpopupcolor></tmpopup><tmpopup style="top: 304px; left: 182.233px;"><tmpopupcolor id="tmpopupcolor--1" style="background: rgb(221, 153, 255) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--2" style="background: rgb(102, 187, 255) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--3" style="background: rgb(85, 255, 85) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--4" style="background: rgb(255, 102, 102) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--5" style="background: rgb(255, 204, 0) none repeat scroll 0% 0%;"></tmpopupcolor><tmpopupcolor id="tmpopupcolor--m" style="background: rgb(255, 238, 0) none repeat scroll 0% 0%;"></tmpopupcolor></tmpopup> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/capturetab/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/capturetab/index.html new file mode 100644 index 0000000000..69848f0551 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/capturetab/index.html @@ -0,0 +1,102 @@ +--- +title: tabs.captureTab() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/captureTab +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - captureTab + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/captureTab +--- +<div>{{AddonSidebar()}}</div> + +<p>Crée un URI de données codant une image de la zone visible de l'onglet donné. Vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code><all_urls></code> pour utiliser cette méthode.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var capturing = browser.tabs.captureTab( + tabId, // optional integer + options // optional extensionTypes.ImageDetails +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. ID de l'onglet à capturer. Par défaut à l'onglet actif dans la fenêtre en cours.</dd> + <dt><code>options</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('extensionTypes.ImageDetails')}}.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec une URL de données qui code une image de la zone visible de l'onglet capturé. Peut être affecté à la propriété 'src' d'un élément HTML Image pour l'affichage. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Capturez une image de l'onglet actif dans la fenêtre actuelle, avec les paramètres par défaut :</p> + +<pre class="brush: js">function onCaptured(imageUri) { + console.log(imageUri); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.browserAction.onClicked.addListener(function() { + var capturing = browser.tabs.captureTab(); + capturing.then(onCaptured, onError); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.captureTab")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/capturevisibletab/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/capturevisibletab/index.html new file mode 100644 index 0000000000..a8b86e33b0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/capturevisibletab/index.html @@ -0,0 +1,105 @@ +--- +title: tabs.captureVisibleTab() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/captureVisibleTab +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - captureVisibleTab + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/captureVisibleTab +--- +<div>{{AddonSidebar()}}</div> + +<p>Crée une URI de données codant une image de la zone visible de l'onglet actuellement actif dans la fenêtre spécifiée. Vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code><all_urls></code> pour utiliser cette méthode. (Alternativement, Chrome permet l'utilisation de cette méthode avec la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>activeTab</code> et un geste utilisateur qualifiant).</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var capturing = browser.tabs.captureVisibleTab( + windowId, // optional integer + options // optional extensionTypes.ImageDetails +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. La fenêtre cible Par défaut à la fenêtre actuelle.</dd> + <dt><code>options</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('extensionTypes.ImageDetails')}}.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec une URL de données qui code une image de la zone visible de l'onglet capturé. Peut être affecté à la propriété 'src' d'un élément HTML Image pour l'affichage. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Capturez une image de l'onglet actif dans la fenêtre actuelle, avec les paramètres par défaut :</p> + +<pre class="brush: js">function onCaptured(imageUri) { + console.log(imageUri); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.browserAction.onClicked.addListener(function() { + var capturing = browser.tabs.captureVisibleTab(); + capturing.then(onCaptured, onError); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.captureVisibleTab")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/connect/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/connect/index.html new file mode 100644 index 0000000000..db0ab99f0b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/connect/index.html @@ -0,0 +1,122 @@ +--- +title: tabs.connect() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/connect +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - connect + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/connect +--- +<div>{{AddonSidebar()}}</div> + +<p>Appelez cette fonction pour configurer une connexion entre les scripts d'arrière-plan de l'extension (ou d'autres scripts privilégiés, tels que les scripts d'arrière-plan de l'extrension (ou d'autres scripts privilégiés, tels que les scripts de pages d'options) et les <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">scripts de contenu</a> appartenant à cette extension et s'exécutant dans l'onglet spécifié. Cette fonction renvoie un objet {{WebExtAPIRef("runtime.Port")}}.</p> + +<p>Lorsque cela est appelée, l'événement {{WebExtAPIRef('runtime.onConnect')}} est déclenché dans tout script de contenu appartenant à cette extension qui s'exécute dans l'onglet spécifié. L'écouteur d'événement recevra un autre objet {{WebExtAPIRef("runtime.Port")}}. Les deux parties peuvent ensuite utiliser les objets <code>Port</code> pour échanger des messages.</p> + +<p>Pour plus de détails, voir <a href="/en-US/Add-ons/WebExtensions/Content_scripts#Connection-based_messaging">connection-based messaging</a>.</p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox brush:js">browser.tabs.connect( + tabId, // integer + connectInfo // optional object +) +</pre> + +<h3 id="Parameters">Parameters</h3> + +<dl> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID of the tab whose content scripts we want to connect to.</dd> + <dt><code>connectInfo</code>{{optional_inline}}</dt> + <dd><code>object</code>. + <dl class="reference-values"> + <dt><code>name</code>{{optional_inline}}</dt> + <dd><code>string</code>. Will be passed into {{WebExtAPIRef("runtime.onConnect")}} event listeners in content scripts belonging to this extension and running in the specified tab.</dd> + <dt><code>frameId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Open a port to a specific frame identified by <code>frameId</code> instead of all frames in the tab.</dd> + </dl> + </dd> +</dl> + +<h3 id="Return_value">Return value</h3> + +<p>{{WebExtAPIRef('runtime.Port')}}. A port that can be used to communicate with the content scripts running in the specified tab.</p> + +<h2 id="Examples">Examples</h2> + +<p>In this example a background script listens for a click on a <a href="/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Browser_actions_2">browser action</a>, then connects to the currently active tab, then sends a message using the <code>Port</code> that's returned from <code>connect()</code>:</p> + +<pre class="brush: js">function connectToTab(tabs) { + if (tabs.length > 0) { + var examplePort = browser.tabs.connect( + tabs[0].id, + {name: "tabs-connect-example"} + ); + examplePort.postMessage({greeting: "Hi from background script"}); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.browserAction.onClicked.addListener(function() { + var gettingActive = browser.tabs.query({ + currentWindow: true, active: true + }); + gettingActive.then(connectToTab, onError); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.connect")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/create/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/create/index.html new file mode 100644 index 0000000000..227ff38917 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/create/index.html @@ -0,0 +1,145 @@ +--- +title: tabs.create() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/create +tags: + - API + - Add-ons + - Create + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/create +--- +<div>{{AddonSidebar()}}</div> + +<p>Crée un nouvel onglet</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var creating = browser.tabs.create( + createProperties // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>createProperties</code></dt> + <dd><code>object</code>.Propriétés pour donner le nouvel onglet. Pour en savoir plus sur ces propriétés, consultez la documentation {{WebExtAPIRef("tabs.Tab")}}.</dd> + <dd> + <dl class="reference-values"> + <dt><code>active</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'onglet doit devenir l'onglet actif dans la fenêtre. Si elle est <code>false</code>, elle n'a aucun effet. N'affecte pas si la fenêtre est mise au point (voir {{WebExtAPIRef('windows.update')}}). Par défaut à <code>true</code>.</dd> + <dt><code>cookieStoreId</code> {{optional_inline}}</dt> + <dd><code>string</code>. Utilisez-le pour créer un onglet dont l'ID de cookie estCette option n'est disponible que si l'extension a la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"cookies".</code></dd> + <dt><code>index</code>{{optional_inline}}</dt> + <dd><code>integer</code>. La position que l'onglet devrait prendre dans la fenêtre. La valeur fournie sera comprise entre zéro et le nombre d'onglets dans la fenêtre.</dd> + <dt><code>openerTabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet qui a ouvert cet onglet. Si spécifié, l'onglet d'ouverture doit être dans la même fenêtre que l'onglet nouvellement créé.</dd> + <dt><code>openInReaderMode</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. si <code>true</code>, ouvrez cet onglet en <a href="/fr/Add-ons/WebExtensions/API/tabs/toggleReaderMode">mode lecture</a>. Par défaut à <code>false</code>.</dd> + <dt><code>pinned</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'onglet doit être épinglé. Par défaut à <code>false</code>.</dd> + <dt><code>selected</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'onglet doit devenir l'onglet sélectionné dans la fenêtre. Par défaut à <code>true</code>. + <div class="warning">Cette propriété est obsolète et n'est pas prise en charge dans Firefox. Utilisez <code>actif</code> à la place.</div> + </dd> + <dt><code>url</code>{{optional_inline}}</dt> + <dd><code>string</code>. 'URL permettant de naviguer dans l'onglet initialement. Par défaut à la page Nouvel onglet.</dd> + <dd>Les URL complètes doivent inclure un schéma (i.e. 'http://www.google.com', par 'www.google.com').</dd> + <dd>Pour des raisons de sécurité, dans Firefox, il se peut que ce ne soit pas une URL privilégiée. Le passage de l'une des URL suivantes échouera :</dd> + <dd> + <ul> + <li>chrome: URLs</li> + <li>javascript: URLs</li> + <li>data: URLs</li> + <li>file: URLs (c'est-à-dire, fichiers sur le système de fichiers, cependant, pour utiliser un fichier empaqueté à l'intérieur de l'extension, voir ci-dessous)</li> + <li>privileged about: URLs (par exemple, <code>about:config</code>, <code>about:addons</code>, <code>about:debugging</code>)<span style="display: none;"> </span>. Les URL non privilégiées (e.g., <code>about:blank</code>) sont autorisés.</li> + <li>La page Nouvel onglet (<code>about:newtab</code>) peut être ouverte si aucune valeur n'est fournie pour l'URL.</li> + </ul> + + <p>Pour charger une page fournie avec votre extension, spécifiez une URL absolue à partir du fichier manifest.json de l'extension. Par exemple : '/path/to/my-page.html'. Si vous omettez le premier caractère '/', l'URL est traitée comme une URL relative et différents navigateurs peuvent construire différentes URL absolues.</p> + </dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. La fenêtre pour créer le nouvel onglet. Par défaut à la fenêtre actuelle.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>A <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> that will be fulfilled with a {{WebExtAPIRef('tabs.Tab')}} object containing details about the created tab. If the tab could not be created (for example, because <code>url</code> used a privileged scheme) the promise will be rejected with an error message.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ouvre "https://example.org" dans un nouvel onglet :</p> + +<pre class="brush: js">function onCreated(tab) { + console.log(`Created new tab: ${tab.id}`) +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.browserAction.onClicked.addListener(function() { + var creating = browser.tabs.create({ + url:"https://example.org" + }); + creating.then(onCreated, onError); +});</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.create", 10)}}</p> + + + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/detectlanguage/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/detectlanguage/index.html new file mode 100644 index 0000000000..f1beb98b3b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/detectlanguage/index.html @@ -0,0 +1,127 @@ +--- +title: tabs.detectLanguage() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/detectLanguage +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - detectLanguage + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/detectLanguage +--- +<div>{{AddonSidebar()}}</div> + +<p>Détecte la langue principale du contenu dans un onglet, en utilisant le <a class="external external-icon" href="https://github.com/CLD2Owners/cld2">détecteur de langue compact</a> (CLD).</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var detecting = browser.tabs.detectLanguage( + tabId, // optional integer + callback // optional function +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId </code>{{optional_inline}}</dt> + <dd><code>integer</code>. Par défaut à l'onglet actif de la fenêtre en cours.</dd> + <dt><code>callback </code>{{optional_inline}}</dt> + <dd><code>function</code>. Actuellement, si un <code>tabId</code> est spécifié, cette méthode utilise ce rappel pour renvoyer les résultats au lieu de renvoyer une promesse. Le rappel reçoit comme seul paramètre d'entrée une chaîne de caractères contenant le code de langue détecté <code>en</code> ou <code>fr</code>.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>qui sera remplie avec une chaîne représentant un code de langue ISO tel que <code>en</code> ou <code>fr</code>. Pour une liste complète des langues prises en charge par cette méthode, see <a href="https://src.chromium.org/viewvc/chrome/trunk/src/third_party/cld/languages/internal/languages.cc#l23">kLanguageInfoTable</a>. Pour une langue inconnue, <code>"und"</code> sera retourné (mais voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1288263">bug 1288263</a>). Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Détecter et enregistrer la langue de l'onglet actif lorsque l'utilisateur clique sur une action du navigateur :</p> + +<pre class="brush: js">function onLanguageDetected(lang) { + console.log(`Language is: ${lang}`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.browserAction.onClicked.addListener(function() { + var detecting = browser.tabs.detectLanguage(); + detecting.then(onLanguageDetected, onError); +});</pre> + +<p>Détecter et enregistrer la langue de chaque onglet ouvert lorsque l'utilisateur clique sur une action du navigateur (notez que cet exemple nécessite la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "tabs") :</p> + +<pre class="brush: js">function onLanguageDetected(url, lang) { + console.log(`Language in ${url} is: ${lang}`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +function detectLanguages(tabs) { + for (tab of tabs) { + var onFulfilled = onLanguageDetected.bind(null, tab.url); + var detecting = browser.tabs.detectLanguage(tab.id); + detecting.then(onFulfilled, onError); + } +} + +browser.browserAction.onClicked.addListener(function() { + var querying = browser.tabs.query({}); + querying.then(detectLanguages, onError); +});</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.tabs.detectLanguage")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/discard/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/discard/index.html new file mode 100644 index 0000000000..81ecd3387a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/discard/index.html @@ -0,0 +1,119 @@ +--- +title: tabs.discard() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/discard +tags: + - API + - Add-ons + - Extensions + - Méthode + - WebExtensions + - discard + - onglets + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/discard +--- +<div>{{AddonSidebar()}}</div> + +<p>Rejette un ou plusieurs onglets.</p> + +<p>Certains navigateurs "suppriment" automatiquement les onglets dont ils ne pensent pas qu'ils seront bientôt utiles à l'utilisateur. L'onglet reste visible dans la bande d'onglets et le navigateur se souvient de son état, donc si l'utilisateur sélectionne un onglet qui a été supprimé, il est immédiatement restauré.</p> + +<p>Les détails de ce qui est supprimé sont spécifiques au navigateur, mais en général, l'abandon d'un onglet permet au navigateur de libérer une partie de la mémoire occupée par cet onglet.</p> + +<p>L'API {{WebExtAPIRef("tabs.discard()")}} permet à une extension d'ignorer un ou plusieurs onglets. Il n'est pas possible de supprimer l'onglet actuellement actif ou un onglet dont le document contient un programme d'écoute <code><a href="/fr/docs/Web/Events/beforeunload">beforeunload</a></code> qui afficherait une invite.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var discarding = browser.tabs.discard( + tabIds // integer or integer array +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabIds</code></dt> + <dd><code><code>integer</code></code> or <code><code>array</code></code> of <code><code><code>integer</code></code></code>. Les ID de l'onglet ou des onglets à ignorer.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans argument lorsque tous les onglets spécifiés ont été supprimés. Si une erreur se produit (par exemple, ID d'onglet non valide), la promesse sera rejetée avec un message d'erreur.Si l'ID de l'onglet actif est transmis, il ne sera pas supprimé, mais la promesse sera satisfaite et tous les autres onglets transférés seront supprimés.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Supprimer un seul onglet :</p> + +<pre class="brush: js">function onDiscarded() { + console.log(`Discarded`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var discarding = browser.tabs.discard(2); +discarding.then(onDiscarded, onError);</pre> + +<p>Ignorer plusieurs onglets :</p> + +<pre class="brush: js">function onDiscarded() { + console.log(`Discarded`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var discarding = browser.tabs.discard([15, 14, 1]); +discarding.then(onDiscarded, onError);</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.discard", 10)}}</p> + + + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/duplicate/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/duplicate/index.html new file mode 100644 index 0000000000..69e47f8150 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/duplicate/index.html @@ -0,0 +1,114 @@ +--- +title: tabs.duplicate() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/duplicate +tags: + - API + - Add-ons + - Duplicate + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - onglets + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/duplicate +--- +<div>{{AddonSidebar()}}</div> + +<p>Duplique un onglet dont l’identifiant est donné.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var duplicating = browser.tabs.duplicate( + tabId // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'identifiant de l'onglet à dupliquer.</dd> +</dl> + +<h3 id="valeur_retournée">valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef('tabs.Tab')}} contenant des détails sur l'onglet dupliqué. L'objet <code>onglet</code> contient uniquement <code>url</code>, <code>title</code> et <code>favIconUrl</code> si l'extension a la <a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions"> permission <code>"tabs"</code></a>. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<div class="blockIndicator note"> +<p><strong>Note</strong>: A partir de Firefox 68, la promise retournée par browser.tabs.duplicate() se résout dès que l'onglet a été dupliqué. Auparavant, la promise n'était résolue qu'une fois l'onglet entièrement chargé.</p> +</div> + +<h2 id="Exemples">Exemples</h2> + +<p><span id="result_box" lang="fr"><span>Duplique le premier onglet, puis affiche l'ID de l'onglet nouvellement créé :</span></span></p> + +<pre class="brush: js">function onDuplicated(tabInfo) { + console.log(tabInfo.id); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +// Duplicate the first tab in the array +function duplicateFirstTab(tabs) { + console.log(tabs); + if (tabs.length > 0) { + var duplicating = browser.tabs.duplicate(tabs[0].id); + duplicating.then(onDuplicated, onError); + } +} + +// Query for all open tabs +var querying = browser.tabs.query({}); +querying.then(duplicateFirstTab, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.duplicate")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/executescript/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/executescript/index.html new file mode 100644 index 0000000000..fb748e75fb --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/executescript/index.html @@ -0,0 +1,176 @@ +--- +title: tabs.executeScript() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/executeScript +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - executeScript + - onglets + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/executeScript +--- +<div>{{AddonSidebar()}}</div> + +<p>Injecte du code JavaScript dans une page.</p> + +<p>Vous pouvez injecter du code dans des pages dont l'URL peut être exprimée à l'aide d'un <a href="/fr/Add-ons/WebExtensions/Match_patterns">modèle de correspondance </a>: son schéma doit être "http", "https", "file", "ftp". Pour ce faire, vous devez disposer de la permission pour l'URL de la page, soit explicitement en tant que <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission d'hôte</a>, ou via la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission">permission activeTab</a>.</p> + +<p>Vous pouvez également injecter du code dans des pages empaquetées avec votre propre extension :</p> + +<pre class="brush: js">browser.tabs.create({url: "/my-page.html"}).then(() => { + browser.tabs.executeScript({ + code: `console.log('location:', window.location.href);` + }); +});</pre> + +<p>Vous n'avez pas besoin de permissions spéciales pour le faire.</p> + +<p>Vous <em>ne pouvez pas</em> injecter de code dans les pages intégrées du navigateur, par exemple : about:debugging, about:addons, ou sur la page qui s'ouvre lorsque vous ouvrez un nouvel onglet vide.</p> + +<p>Les scripts que vous injectez s’appellent des scripts de contenu. <a href="/fr/Add-ons/WebExtensions/Content_scripts">En savoir plus sur les scripts de contenu</a>.</p> + +<p>Il s’agit d’une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var executing = browser.tabs.executeScript( + tabId, // optional integer + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. L’ID de l’onglet dans lequel exécuter le script. Par défaut, l’onglet actif de la fenêtre en cours.</dd> + <dt><code>details</code></dt> + <dd>Un objet décrivant le script à exécuter. Il contient les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>allFrames</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si <code>true</code>, le code sera injecté dans toutes les images de la page courante. Si <code>true</code> et <code>frameId</code> est défini, alors il y aura une erreur, frameId et allFrames sont mutuellement exclusifs. Si c'est <code>false</code>, le code n'est injecté que dans le cadre supérieur. La valeur par défaut est <code>false</code>.</dd> + <dt><code>code </code>{{optional_inline}}</dt> + <dd><code>string</code>. Code à injecter, sous la forme d’une chaine de texte. <strong>Attention :</strong> n’utilisez pas cette propriété pour interpoler des données non sûres dans JavaScript, car cela pourrait introduire une faille de sécurité.</dd> + <dt><code>file</code> {{optional_inline}}</dt> + <dd><code>string</code>. Chemin d’accès à un fichier contenant le code à injecter. Dans Firefox, les URL relatives ne commençant pas à la racine de l'extension sont résolues par rapport à l'URL de la page en cours. Dans Chrome, ces URL sont résolues par rapport à l’URL de base de l’extension. Pour travailler avec plusieurs navigateurs, vous pouvez spécifier le chemin comme une URL relative, en commençant à la racine de l’extension, comme ceci : <code>"/path/to/script.js"</code>.</dd> + <dt><code>frameId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. Le cadre où le code doit être injecté. La valeur par défaut est <code>0</code> (le cadre de niveau supérieur).</dd> + <dt><code>matchAboutBlank</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si <code>true</code>, le code sera injecté dans des cadres <code>about:blank</code> et <code>about:srcdoc</code> inclus depuis une page si votre extension a accès à leur document parent. Le code ne peut pas être inséré dans les cadres <code>about:</code> de niveau supérieur. Par défaut, <code>false</code>.</dd> + <dt><code>runAt</code> {{optional_inline}}</dt> + <dd>{{WebExtAPIRef('extensionTypes.RunAt')}}. Le moment le plus tôt auquel le code sera injecté dans l’onglet. Par défaut, <code>document_idle</code>.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_de_retour">Valeur de retour</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> résolue avec un tableau d’objets représentant le résultat du script dans chaque cadre où le script a été injecté.</p> + +<p>Le résultat du script est la dernière instruction évaluée, ce qui est similaire à ce qui serait produit (les résultats, pas les affichages de <code>console.log()</code>) si vous exécutiez le script dans la <a href="/fr/docs/Outils/Console_Web">Console Web</a>. Par exemple, considérez un script comme celui-ci :</p> + +<pre class="brush: js">var foo='my result';foo;</pre> + +<p>Ici, le tableau des résultats contiendra la chaîne <code>"my result"</code> en tant qu’élément. Les valeurs de résultat doivent être <a href="/fr/docs/Web/API/Web_Workers_API/algorithme_clonage_structure">clonables tructurées</a>. La dernière déclaration peut également être une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>, mais cette fonctionnalité n'est pas supportée par la bibliothèque <a href="https://github.com/mozilla/webextension-polyfill#tabsexecutescript">webextension-polyfill</a>.<br> + Si une erreur se produit, la promesse sera rejetée avec un message d’erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple exécute un extrait de code d’une ligne dans l’onglet actuellement actif :</p> + +<pre class="brush: js">function onExecuted(result) { + console.log(`We made it green`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var makeItGreen = 'document.body.style.border = "5px solid green"'; + +var executing = browser.tabs.executeScript({ + code: makeItGreen +}); +executing.then(onExecuted, onError);</pre> + +<p>L’exemple suivant exécute un script à partir d’un fichier empaqueté avec l’extension appelé <code>content-script.js</code>. Le script est exécuté dans l’onglet actuellement actif. Le script est exécuté dans les sous-cadres ainsi que dans le document principal :</p> + +<pre class="brush: js">function onExecuted(result) { + console.log(`We executed in all subframes`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var executing = browser.tabs.executeScript({ + file: "/content-script.js", + allFrames: true +}); +executing.then(onExecuted, onError);</pre> + +<p>L’exemple suivant exécute un script à partir d’un fichier empaqueté avec l’extension appelé <code>content-script.js</code>. Le script est exécuté dans l’onglet ayant l’ID 2 :</p> + +<pre class="brush: js">function onExecuted(result) { + console.log(`We executed in tab 2`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var executing = browser.tabs.executeScript( + 2, { + file: "/content-script.js" +}); +executing.then(onExecuted, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p class="hidden">La table de compatibilité dans cette page est générée à partir de données structurées. Si vous souhaitez contribuer aux données, veuillez consulter <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> et nous envoyer une <em>pull request</em>.</p> + +<p>{{Compat("webextensions.api.tabs.executeScript")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/get/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/get/index.html new file mode 100644 index 0000000000..6c6092944e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/get/index.html @@ -0,0 +1,97 @@ +--- +title: tabs.get() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/get +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - get + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/get +--- +<div>{{AddonSidebar()}}</div> + +<p>Étant donné un ID d'onglet, obtenez les détails de l'onglet en tant qu'objet {{WebExtAPIRef("tabs.Tab")}}.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getting = browser.tabs.get( + tabId // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet à obtenir.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef('tabs.Tab')}} contenant des informations sur l'onglet. Si l'onglet n'a pas pu être trouvé ou qu'une autre erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenir des informations sur un onglet lorsqu'il est activé :</p> + +<pre class="brush: js">async function logListener(info) { + try { + let tabInfo = await browser.tabs.get(info.tabId); + console.log(tabInfo); + } catch (error) { + console.error(error); + } +} + +browser.tabs.onActivated.addListener(logListener);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.get")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/getallinwindow/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/getallinwindow/index.html new file mode 100644 index 0000000000..1dcdc058f5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/getallinwindow/index.html @@ -0,0 +1,90 @@ +--- +title: tabs.getAllInWindow() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/getAllInWindow +tags: + - API + - Add-ons + - Deprecated + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getAllInWindow + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/getAllInWindow +--- +<div>{{AddonSidebar}} +<div class="blockIndicator deprecated"> +<p><strong>Deprecated</strong><br> + Cette méthode est dépréciée. Utilisez {{WebExtAPIRef("tabs.query", "tabs.query({currentWindow: true})")}} à la place.</p> +</div> +</div> + +<p>Obtient des détails sur tous les onglets de la fenêtre spécifiée.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getting = browser.tabs.getAllInWindow( + windowId // optional integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code>{{Optional_Inline}}</dt> + <dd><code>integer</code>. Par défaut à la fenêtre actuelle.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> qui sera remplie avec un <code>tableau</code> d'ojets <code>{{WebExtAPIRef('tabs.Tab')}}</code> contenant des informations sur tous les onglets de la fenêtre. Si la fenêtre n'a pas pu être trouvée ou qu'une autre erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.getAllInWindow")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/getcurrent/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/getcurrent/index.html new file mode 100644 index 0000000000..f51052ebda --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/getcurrent/index.html @@ -0,0 +1,100 @@ +--- +title: tabs.getCurrent() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/getCurrent +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getCurrent + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/getCurrent +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtenez un {{WebExtAPIRef("tabs.Tab")}} contenant des informations sur l'onglet dans lequel ce script s'exécute.</p> + +<p>Vous pouvez appeler cette fonction dans des contextes comportant un onglet de navigateur, par exemple une <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Options_pages">pages d'options</a>. Si vous l'appelez à partir d'un script d'arrière-plan ou d'une fenêtre contextuelle, elle renverra undefined.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingCurrent = browser.tabs.getCurrent() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef('tabs.Tab')}} contenant des informations sur l'onglet en cours. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenir les informations sur l'onglet en cours :</p> + +<pre class="brush: js">function onGot(tabInfo) { + console.log(tabInfo); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var gettingCurrent = browser.tabs.getCurrent(); +gettingCurrent.then(onGot, onError);</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.getCurrent")}}</p> + + + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/getselected/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/getselected/index.html new file mode 100644 index 0000000000..fbbdbd65f9 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/getselected/index.html @@ -0,0 +1,93 @@ +--- +title: tabs.getSelected() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/getSelected +tags: + - API + - Add-ons + - Deprecated + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getSelected + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/getSelected +--- +<div>{{AddonSidebar()}}</div> + +<div class="warning"> +<p>Cette méthode est dépréciée. utilisez {{WebExtAPIRef("tabs.query", "tabs.query({active: true})")}} à la place.</p> +</div> + +<p>Obtient l'onglet sélectionné dans la fenêtre spécifiée</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingSelected = browser.tabs.getSelected( + windowId // optional integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Par défaut à la fenêtre actuelle.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet <a href="/fr/Add-ons/WebExtensions/API/tabs/Tab" title="The type tabs.Tab contains information about a tab. This provides access to information about what content is in the tab, how large the content is, what special states or restrictions are in effect, and so forth."><code>tabs.Tab</code></a> contenant des informations sur l'onglet sélectionné. Si l'onglet n'a pas pu être trouvé ou qu'une autre erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.getSelected")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/getzoom/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/getzoom/index.html new file mode 100644 index 0000000000..0c8d376ee5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/getzoom/index.html @@ -0,0 +1,116 @@ +--- +title: tabs.getZoom() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/getZoom +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getZoom + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/getZoom +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient le facteur de zoom actuel pour l'onglet spécifié.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingZoom = browser.tabs.getZoom( + tabId // optional integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet pour obtenir le facteur de zoom actuel. Par défaut à l'onglet actif de la fenêtre en cours.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera satisfaite avec le facteur de zoom actuel de l'onglet, sous la forme d'un nombre compris entre 0,3 et 3. Si l'onglet n'a pu être trouvé ou qu'une autre erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenez le facteur de zoom pour l'onglet actuel :</p> + +<pre class="brush: js">function onGot(zoom) { + console.log(zoom); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var gettingZoom = browser.tabs.getZoom(); +gettingZoom.then(onGot, onError);</pre> + +<p>Obtenez le facteur zoom pour l'onglet dont l'ID est 2:</p> + +<pre class="brush: js">function onGot(zoom) { + console.log(zoom); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var gettingZoom = browser.tabs.getZoom(2); +gettingZoom.then(onGot, onError);</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.getZoom")}}</p> + + + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/getzoomsettings/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/getzoomsettings/index.html new file mode 100644 index 0000000000..57d52f9c60 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/getzoomsettings/index.html @@ -0,0 +1,103 @@ +--- +title: tabs.getZoomSettings() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/getZoomSettings +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - getZoomSettings + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/getZoomSettings +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient les paramètres de zoom actuels pour un onglet spécifié.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingZoomSettings = browser.tabs.getZoomSettings( + tabId // optional integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet pour obtenir les paramètres de zoom actuels. Par défaut à l'onglet actif de la fenêtre en cours.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef('tabs.ZoomSettings')}} représentant les paramètres de zoom actuels de l'onglet. Si l'onglet n'a pas pu être trouvé ou qu'une autre erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenez les paramètres de zoom pour l'onglet en cours :</p> + +<pre class="brush: js">function onGot(settings) { + console.log(settings); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var gettingZoomSettings = browser.tabs.getZoomSettings(); +gettingZoomSettings.then(onGot, onError);</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.getZoomSettings")}}</p> + + + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/goback/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/goback/index.html new file mode 100644 index 0000000000..399173037e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/goback/index.html @@ -0,0 +1,101 @@ +--- +title: tabs.goBack() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/goBack +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - hoBack +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/goBack +--- +<div>{{AddonSidebar()}}</div> + +<p>Naviguer à la page précédente dans l'historique de l'onglet, si disponible.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var withgoingBack = browser.tabs.goBack( + tabId, // optional integer + callback // optional function +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet à naviguer. Par défaut, l'onglet actif de la fenêtre en cours.</dd> + <dt><code>callback</code>{{optional_inline}}</dt> + <dd><code>function</code>. Lorsque la navigation sur la page se termine, cette fonction est appelée sans paramètres.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est tenue lorsque la navigation sur la page se termine.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.tabs.goBack")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Retournez à la page précédente dans l'onglet en cours :</p> + +<pre class="brush: js">function onGoBack() { + console.log("Gone back"); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var goingBack = browser.tabs.goBack(); +goingBack.then(onGoBack, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/tabs#method-getZoomSettings"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence américaine Creative Commons Attribution 3.0.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/goforward/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/goforward/index.html new file mode 100644 index 0000000000..26a67e0f04 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/goforward/index.html @@ -0,0 +1,101 @@ +--- +title: tabs.goForward() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/goForward +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - goForward +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/goForward +--- +<div>{{AddonSidebar()}}</div> + +<p>Passez à la page suivante dans l'historique de l'onglet, si disponible.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var goingForward = browser.tabs.goForward( + tabId, // optional integer + callback // optional function +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet à naviguer. Par défaut, l'onglet actif de la fenêtre en cours.</dd> + <dt><code>callback</code>{{optional_inline}}</dt> + <dd><code>function</code>. Lorsque la navigation sur la page se termine, cette fonction est appelée sans paramètres.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est tenue lorsque la navigation sur la page se termine.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.tabs.goForward")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Passez à la page suivante dans l'onglet en cours :</p> + +<pre class="brush: js">function onGoForward() { + console.log("Gone forward"); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var goingForward = browser.tabs.goForward(); +goingForward.then(onGoForward, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API <a href="https://developer.chrome.com/extensions/tabs#method-getZoomSettings"><code>chrome.tabs</code></a> de Chromium.Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence américaine Creative Commons Attribution 3.0.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/hide/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/hide/index.html new file mode 100644 index 0000000000..5fb1cf99f4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/hide/index.html @@ -0,0 +1,88 @@ +--- +title: tabs.hide() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/hide +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - hide + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/hide +--- +<div>{{AddonSidebar()}}</div> + +<p>Masque un ou plusieurs onglets.</p> + +<p>Les onglets cachés ne sont plus visibles dans l'onglet du navigateur. Les onglets cachés ne sont pas automatiquement <a href="/fr/Add-ons/WebExtensions/API/tabs/discard">supprimés</a> : le code qui s'y trouve continue à s'exécuter. Vous pouvez explicitement supprimer les onglets à chaque fois que vous les masquez : bien que cela ne soit pas approprié dans toutes les situations, cela aidera à réduire les ressources utilisées par le navigateur.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<p>Tous les onglets ne peuvent pas être masqués :</p> + +<ul> + <li>Les onglets épinglés ne peuvent pas être masqués.</li> + <li>Les onglets qui partagent l'écran, le microphone ou l'appareil photo ne peuvent pas être masqués.</li> + <li>L'onglet actif actuel ne peut pas être masqué.</li> + <li>Les onglets en cours de fermeture ne peuvent pas être masqués.</li> +</ul> + +<p>La première fois qu'une extension cache un onglet, le navigateur indiquera à l'utilisateur que l'onglet est caché, leur montrera comment ils peuvent accéder à l'onglet caché et leur donnera l'option de désactiver l'extension à la place.</p> + +<p>Pour utiliser cette API, vous devez disposer de la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "tabHide".</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var hiding = browser.tabs.hide( + tabIds // integer or integer array +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabIds</code></dt> + <dd><code><code>integer</code></code> or <code><code>array</code></code> of <code><code>integer</code></code>. Les ID de l'onglet ou des onglets à masquer.</dd> + <dd>Si l'un de ces onglets ne peut pas être masqué, il ne sera pas masqué, mais l'appel sera toujours valide et les onglets éligibles seront toujours masqués. Par exemple, si vous passez <code>[1, 3]</code>, et <code>1</code> identifie l'onglet actif, alors seulement <code>3</code> seront cachés.</dd> + <dd>Cependant, si l'un des ID d'onglet n'est pas valide, l'appel échouera et aucun onglet ne sera masqué.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un tableau contenant les ID des onglets qui ont été cachés. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Masquer un seul onglet :</p> + +<pre class="brush: js">function onHidden() { + console.log(`Hidden`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.tabs.hide(2).then(onHidden, onError);</pre> + +<p>Masquer plusieurs onglets :</p> + +<pre class="brush: js">function onHidden() { + console.log(`Hidden`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.tabs.hide([15, 14, 1]).then(onHidden, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.hide")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/highlight/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/highlight/index.html new file mode 100644 index 0000000000..0e22605c9b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/highlight/index.html @@ -0,0 +1,102 @@ +--- +title: tabs.highlight() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/highlight +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - highlight + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/highlight +--- +<div>{{AddonSidebar()}}</div> + +<div>Met en évidence (sélectionné) un ou plusieurs onglets. Les onglets sont spécifiés à l'aide d'un identifiant de fenêtre et d'une plage d'indices de tabulation.</div> + +<div></div> + +<div> +<p>C'est une fonction asynchrone qui renvoie une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var highlighting = browser.tabs.highlight( + highlightInfo // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>highlightInfo</code></dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. ID de la fenêtre contenant les onglets.</dd> + <dt><code>populate</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Par défaut la valeur est <code>true</code>. S'il est défini sur <code>false</code>, l'objet {{WebExtAPIRef('windows.Window')}} n'aura pas de propriété <code>tabs</code> contenant une liste d'objets {{WebExtAPIRef('tabs.Tab')}} représentant les onglets ouverts dans la fenêtre. + <div class="note"> + <p><strong>Note</strong>: Remplir la fenêtre (le comportement par défaut) peut être une opération coûteuse s'il y a beaucoup d'onglets. Pour de meilleures performances, il est recommandé de définir manuellement configuré <code>populate</code> à <code>false</code> si vous n'avez pas besoin des détails de l'onglet.</p> + </div> + </dd> + <dt><code>tabs</code></dt> + <dd><code>array</code> de valeurs entières spécifiant un ou plusieurs onglets à mettre en évidence. Les onglets surlignés précédemment qui ne sont pas inclus dans les <code>onglets</code> cesseront d'être surlignés. Le premier onglet des <code>onglets</code> devient actif.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef('windows.Window')}} contenant des détails sur la fenêtre dont les onglets ont été mis en surbrillance. Si la fenêtre n'a pas pu être trouvée ou qu'une autre erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.highlight",2)}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/index.html new file mode 100644 index 0000000000..0666c1885c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/index.html @@ -0,0 +1,225 @@ +--- +title: tabs +slug: Mozilla/Add-ons/WebExtensions/API/tabs +tags: + - API + - Add-ons + - Extensions + - Interface + - NeedsTranslation + - Non-standard + - Reference + - TopicStub + - WebExtensions + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs +--- +<div>{{AddonSidebar}}</div> + +<p>Permet d’interagir avec le système d’onglets du navigateur.</p> + +<p>Vous pouvez utiliser cette API pour obtenir une liste des onglets ouverts, filtrés par différents critères, ainsi que pour ouvrir, mettre à jour, déplacer, recharger et supprimer des onglets. Vous ne pouvez pas accéder directement au contenu hébergé par les onglets à l’aide de cette API, mais vous pouvez insérer du JavaScript et du CSS dans les onglets en utilisant les API {{WebExtAPIRef("tabs.executeScript()")}} ou {{WebExtAPIRef("tabs.insertCSS()")}}.</p> + +<p>Vous pouvez utiliser la majeure partie de cette API sans autorisation spéciale. Toutefois :</p> + +<ul> + <li>Pour accéder à <code>Tab.url</code>, <code>Tab.title</code> et <code>Tab.favIconUrl</code>, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"tabs"</code>. + + <ul> + <li>Dans Firefox, cela signifie également que vous avez besoin de <code>"tabs"</code> pour {{WebExtAPIRef("tabs.query", "requête d’onglet")}} par URL.</li> + </ul> + </li> + <li> + <p>Pour utiliser {{WebExtAPIRef("tabs.executeScript()")}} ou {{WebExtAPIRef("tabs.insertCSS()")}}, vous devez avoir les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission d’hôte</a> pour l’onglet.</p> + </li> +</ul> + +<p>Alternativement, vous pouvez obtenir ces autorisations temporairement, uniquement pour l’onglet actuellement actif et uniquement en réponse à une action explicite de l’utilisateur ou de l’utilisatrice, en demandant la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission">permission <code>"activeTab"</code></a>.</p> + +<p>De nombreuses opérations d’onglet utilisent un identifiant (<code>id</code>) d’onglet. Les <code>id</code> d’onglets sont seulement garantis uniques à un onglet durant une session de navigation. Si le navigateur est redémarré, il pourra recycler, et recyclera, les id d’onglets. Pour associer des informations à un onglet à travers les redémarrages du navigateur, utilisez {{WebExtAPIRef("sessions.setTabValue()")}}.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("tabs.MutedInfoReason")}}</dt> + <dd>Spécifie la raison pour laquelle un onglet a été rendu silencieux ou à nouveau sonore.</dd> + <dt>{{WebExtAPIRef("tabs.MutedInfo")}}</dt> + <dd>Cet objet contient un booléen indiquant si l’onglet est silencieux et la raison de la dernière modification de l’état.</dd> + <dt>{{WebExtAPIRef("tabs.PageSettings")}}</dt> + <dd> + <p>Permet de contrôler le rendu d’un onglet au format PDF par la méthode {{WebExtAPIRef("tabs.saveAsPDF()")}}.</p> + </dd> + <dt>{{WebExtAPIRef("tabs.Tab")}}</dt> + <dd>Ce type contient des informations sur un onglet.</dd> + <dt>{{WebExtAPIRef("tabs.TabStatus")}}</dt> + <dd>Indique si l’onglet a fini de charger.</dd> + <dt>{{WebExtAPIRef("tabs.WindowType")}}</dt> + <dd>Le type de fenêtre qui héberge cet onglet.</dd> + <dt>{{WebExtAPIRef("tabs.ZoomSettingsMode")}}</dt> + <dd>Définit si les modifications de zoom sont traitées par le navigateur, par l’extension ou sont désactivées.</dd> + <dt>{{WebExtAPIRef("tabs.ZoomSettingsScope")}}</dt> + <dd>Définit si les modifications de zoom persisteront pour l’origine de la page ou ne prendront effet que dans cet onglet.</dd> + <dt>{{WebExtAPIRef("tabs.ZoomSettings")}}</dt> + <dd>Définit les paramètres de zoom {{WebExtAPIRef("tabs.ZoomSettingsMode", "mode")}}, {{WebExtAPIRef("tabs.ZoomSettingsScope", "scope")}}, et le facteur de zoom par défaut.</dd> +</dl> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt>{{WebExtAPIRef("tabs.TAB_ID_NONE")}}</dt> + <dd>Une valeur d’id spéciale donnée aux onglets qui ne sont pas des onglets de navigation (par exemple, les onglets dans les fenêtres <em>devtools</em>).</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("tabs.captureTab()")}}</dt> + <dd>Crée un URI de données codant une image de la zone visible de l’onglet donné.</dd> + <dt>{{WebExtAPIRef("tabs.captureVisibleTab()")}}</dt> + <dd>Crée un URI de données codant une image de la zone visible de l’onglet actuellement actif dans la fenêtre donnée.</dd> + <dt>{{WebExtAPIRef("tabs.connect()")}}</dt> + <dd>Définit une connexion pour échanger des messages entre les scripts d’arrière-plan de l’extension (ou d’autres scripts privilégiés, tels que les scripts de <a href="/fr/Add-ons/WebExtensions/user_interface/Popups">popups</a> ou les scripts de page d’options) et les <a href="/fr/Add-ons/WebExtensions/Content_scripts">scripts de contenu</a> s’exécutant dans l’onglet spécifié.</dd> + <dt>{{WebExtAPIRef("tabs.create()")}}</dt> + <dd>Crée un nouvel onglet.</dd> + <dt>{{WebExtAPIRef("tabs.detectLanguage()")}}</dt> + <dd>Détecte la langue principale du contenu dans un onglet.</dd> + <dt>{{WebExtAPIRef("tabs.discard()")}}</dt> + <dd>Évince un ou plusieurs onglets.</dd> + <dt>{{WebExtAPIRef("tabs.duplicate()")}}</dt> + <dd>Duplique un onglet.</dd> + <dt>{{WebExtAPIRef("tabs.executeScript()")}}</dt> + <dd>Injecte du code JavaScript dans une page.</dd> + <dt>{{WebExtAPIRef("tabs.get()")}}</dt> + <dd>Obtient des détails sur l’onglet spécifié.</dd> + <dt>{{WebExtAPIRef("tabs.getAllInWindow()")}} {{deprecated_inline}}</dt> + <dd>Obtient des détails sur tous les onglets de la fenêtre spécifiée.</dd> + <dt>{{WebExtAPIRef("tabs.getCurrent()")}}</dt> + <dd>Obtient des informations sur l’onglet dans lequel ce script s’exécute, en tant qu’objet {{WebExtAPIRef("tabs.Tab")}}.</dd> + <dt>{{WebExtAPIRef("tabs.getSelected()")}} {{deprecated_inline}}</dt> + <dd>Obtient l’onglet sélectionné dans la fenêtre spécifiée. <strong>Deprecated: utilisez plutôt <a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query" title="Gets all tabs that have the specified properties, or all tabs if no properties are specified."><code>tabs.query({active: true})</code></a>.</strong></dd> + <dt>{{WebExtAPIRef("tabs.getZoom()")}}</dt> + <dd>Obtient le facteur de zoom actuel de l’onglet spécifié.</dd> + <dt>{{WebExtAPIRef("tabs.getZoomSettings()")}}</dt> + <dd>Obtient les paramètres de zoom actuels pour l’onglet spécifié.</dd> + <dt>{{WebExtAPIRef("tabs.goForward()")}}</dt> + <dd>Passez à la page suivante, si vous en avez une.</dd> + <dt>{{WebExtAPIRef("tabs.goBack()")}}</dt> + <dd>Retour à la page précédente, si elle est disponible.</dd> + <dt>{{WebExtAPIRef("tabs.hide()")}} {{experimental_inline}}</dt> + <dd>Masque un ou plusieurs onglets.</dd> + <dt>{{WebExtAPIRef("tabs.highlight()")}}</dt> + <dd>Met en évidence un ou plusieurs onglets.</dd> + <dt>{{WebExtAPIRef("tabs.insertCSS()")}}</dt> + <dd>Injecte CSS dans une page.</dd> + <dt>{{WebExtAPIRef("tabs.move()")}}</dt> + <dd>Déplace un ou plusieurs onglets vers une nouvelle position dans la même fenêtre ou vers une autre fenêtre.</dd> + <dt>{{WebExtApiRef("tabs.moveInSuccession()")}}</dt> + <dd>Modifie la relation de succession pour un groupe d’onglets.</dd> + <dt>{{WebExtAPIRef("tabs.print()")}}</dt> + <dd>Imprime le contenu de l’onglet actif.</dd> + <dt>{{WebExtAPIRef("tabs.printPreview()")}}</dt> + <dd> + <div>Ouvre l’aperçu avant impression pour l’onglet actif.</div> + </dd> + <dt>{{WebExtAPIRef("tabs.query()")}}</dt> + <dd>Obtient tous les onglets ayant les propriétés spécifiées, ou tous les onglets si aucune propriété n’est spécifiée.</dd> + <dt>{{WebExtAPIRef("tabs.reload()")}}</dt> + <dd>Recharge un onglet, en contournant éventuellement le cache web local.</dd> + <dt>{{WebExtAPIRef("tabs.remove()")}}</dt> + <dd>Ferme un ou plusieurs onglets.</dd> + <dt>{{WebExtAPIRef("tabs.removeCSS()")}}</dt> + <dd>Supprime d’une page CSS qui a été précédemment injectée en appelant {{WebExtAPIRef("tabs.insertCSS()")}}.</dd> + <dt>{{WebExtAPIRef("tabs.saveAsPDF()")}}</dt> + <dd>Enregistre la page en cours au format PDF.</dd> + <dt>{{WebExtAPIRef("tabs.sendMessage()")}}</dt> + <dd>Envoie un message unique au(x) script(s) de contenu dans l’onglet spécifié.</dd> + <dt>{{WebExtAPIRef("tabs.sendRequest()")}} {{deprecated_inline}}</dt> + <dd>Envoie une requête unique au(x) script(s) de contenu dans l’onglet spécifié. <strong>Déprécié :</strong> utilisez {{WebExtAPIRef("tabs.sendMessage()")}} à la place.</dd> + <dt>{{WebExtAPIRef("tabs.setZoom()")}}</dt> + <dd>Effectue un zoom sur l’onglet spécifié.</dd> + <dt>{{WebExtAPIRef("tabs.setZoomSettings()")}}</dt> + <dd>Définit les paramètres de zoom pour l’onglet spécifié.</dd> + <dt>{{WebExtAPIRef("tabs.show()")}} {{experimental_inline}}</dt> + <dd>Affiche un ou plusieurs onglets qui ont été {{WebExtAPIRef("tabs.hide()", "masqués")}}.</dd> + <dt>{{WebExtAPIRef("tabs.toggleReaderMode()")}}</dt> + <dd>Bascule en mode lecture pour l’onglet spécifié.</dd> + <dt>{{WebExtAPIRef("tabs.update()")}}</dt> + <dd>Charge une nouvelle URL dans l’onglet, ou modifie d’autres propriétés de l’onglet.</dd> +</dl> + +<h2 id="Évènements">Évènements</h2> + +<dl> + <dt>{{WebExtAPIRef("tabs.onActivated")}}</dt> + <dd>Est émis lorsque l’onglet actif dans une fenêtre change. Notez que l’URL de l’onglet peut ne pas être définie au moment où cet évènement a été émis.</dd> + <dt>{{WebExtAPIRef("tabs.onActiveChanged")}} {{deprecated_inline}}</dt> + <dd>Est émis lorsque l’onglet sélectionné dans une fenêtre change. <strong>Déprécié :</strong> utilisez {{WebExtAPIRef("tabs.onActivated")}} à la place.</dd> + <dt>{{WebExtAPIRef("tabs.onAttached")}}</dt> + <dd>Est émis lorsqu’un onglet est attaché à une fenêtre, par exemple parce qu’il a été déplacé entre différentes fenêtres.</dd> + <dt>{{WebExtAPIRef("tabs.onCreated")}}</dt> + <dd>Est émis lorsqu’un onglet est créé. Notez que l’URL de l’onglet peut ne pas être définie au moment où cet évènement a été émis.</dd> + <dt>{{WebExtAPIRef("tabs.onDetached")}}</dt> + <dd>Est émis lorsqu’un onglet est détaché d’une fenêtre, par exemple parce qu’il a été déplacé entre différentes fenêtres.</dd> + <dt>{{WebExtAPIRef("tabs.onHighlightChanged")}} {{deprecated_inline}}</dt> + <dd>Est émis lorsque les onglets en surbrillance ou sélectionnés dans une fenêtre changent. <strong>Déprécié :</strong> utilisez {{WebExtAPIRef("tabs.onHighlighted")}} à la place.</dd> + <dt>{{WebExtAPIRef("tabs.onHighlighted")}}</dt> + <dd>Est émis lorsque les onglets en surbrillance ou sélectionnés dans une fenêtre changent.</dd> + <dt>{{WebExtAPIRef("tabs.onMoved")}}</dt> + <dd>Est émis lorsqu’un onglet est déplacé dans une fenêtre.</dd> + <dt>{{WebExtAPIRef("tabs.onRemoved")}}</dt> + <dd>Est émis lorsqu’un onglet est fermé.</dd> + <dt>{{WebExtAPIRef("tabs.onReplaced")}}</dt> + <dd>Est émis lorsqu’un onglet est remplacé par un autre onglet en raison d’un <em lang="en-US">prerendering</em>.</dd> + <dt>{{WebExtAPIRef("tabs.onSelectionChanged")}} {{deprecated_inline}}</dt> + <dd>Est émis lorsque l’onglet sélectionné dans une fenêtre change. <strong>Déprécié :</strong> utilisez {{WebExtAPIRef("tabs.onActivated")}} à la place.</dd> + <dt>{{WebExtAPIRef("tabs.onUpdated")}}</dt> + <dd>Est émis lorsqu’un onglet est mis à jour.</dd> + <dt>{{WebExtAPIRef("tabs.onZoomChange")}}</dt> + <dd>Est émis lorsque le zoom dans un onglet est changé.</dd> +</dl> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<div class="hidden">La table de compatibilité sur cette page est générée à partir de données structurées. Si vous souhaitez contribuer aux données, veuillez consulter <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> et nous envoyer une <em>pull request.</em></div> + +<p>{{Compat("webextensions.api.tabs")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API Chromium <a class="external" href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a class="external" href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/insertcss/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/insertcss/index.html new file mode 100644 index 0000000000..372b6eb6e1 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/insertcss/index.html @@ -0,0 +1,144 @@ +--- +title: tabs.insertCSS() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/insertCSS +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - insertCSS + - onglets + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/insertCSS +--- +<div>{{AddonSidebar()}}</div> + +<p>Injecter du code CSS dans une page web.</p> + +<p>Pour utiliser cette API vous devez avoir la permission "<a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">host permission</a>" ou utiliser la permission "<a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission">activeTab permission</a>".</p> + +<p>Vous ne pouvez injecter du CSS que dans des pages dont l'URL peut être exprimée en utilisant un <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">motif de correspondance</a>, ce qui signifie que son schéma doit être "http", "https", "file", "ftp". Cela signifie que vous ne pouvez pas injecter de CSS dans les pages intégrées du navigateur, telles que about:debugging, about:addons, ou la page qui s'ouvre lorsque vous ouvrez un nouvel onglet vide.</p> + +<div class="blockIndicator note"> +<p><span class="tlid-translation translation" lang="fr"><span title="">Firefox résout les URL dans les fichiers CSS injectés par rapport au fichier CSS lui-même, plutôt qu'à la page dans laquelle il est injecté.</span></span></p> +</div> + +<p>Le CSS inséré peut être retiré à nouveau en appelant {{WebExtAPIRef("tabs.removeCSS()")}}.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> (sur Firefox seulement).</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var inserting = browser.tabs.insertCSS( + tabId, // optional integer + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet dans lequel insérer le CSS. Par défaut à l'onglet actif de la fenêtre en cours.</dd> + <dt><code>details</code></dt> + <dd>Un objet décrivant le CSS à insérer. Il contient les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>allFrames</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si <code>true</code>, le CSS sera injecté dans toutes les images de la page en cours. Si c'est <code>false</code>, CSS est seulement injecté dans le cadre supérieur. Par défaut à <code>false</code>.</dd> + <dt><code>code</code>{{optional_inline}}</dt> + <dd><code>string</code>. Code à injecter, sous la forme d'une chaîne de texte.</dd> + <dt><code>cssOrigin</code>{{optional_inline}}</dt> + <dd><code>string</code>. Cela peut prendre l'une des deux valeurs suivantes: "utilisateur", pour ajouter le CSS en tant que feuille de style utilisateur, ou "auteur" pour l'ajouter en tant que feuille de style auteur. Spécifier "utilisateur" vous permet d'empêcher les sites Web de surcharger le CSS que vous insérez: voir <a href="/en-US/docs/Web/CSS/Cascade#Cascading_order">la commande en cascade</a>. Si cette option est omise, le CSS est ajouté en tant que feuille de style auteur.</dd> + <dt><code>file</code>{{optional_inline}}</dt> + <dd><code>string</code>. Chemin d'accès à un fichier contenant le code à injecter. Dans Firefox, les URL relatives sont résolues par rapport à l'URL de la page en cours. Dans Chrome, ces URL sont résolues par rapport à l'URL de base de l'extension. Pour travailler avec plusieurs navigateurs, vous pouvez spécifier le chemin comme une URL absolue, en commençant à la racine de l'extension, comme ceci : <code>"/path/to/stylesheet.css"</code>.</dd> + <dt><code>frameId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Le cadre où le CSS doit être injecté. La valeur par défaut est <code>0</code> (l'image de niveau supérieur).</dd> + <dt><code>matchAboutBlank</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si<code>true</code>, le code sera injecté dans les cadres "about:blank" et "about:srcdoc" intégrés si votre extension a accès à leur document parent. Le code ne peut pas être inséré au niveau supérieur about: frames. Par défaut à <code>false</code>.</dd> + <dt><code>runAt</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('extensionTypes.RunAt')}}. Le plus tôt que le code sera injecté dans l'onglet. Par défaut à "document_idle".</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> qui sera remplie sans arguments lorsque tous les CSS ont été insérés. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple s'insère dans l'onglet CSS actif qui provient d'une chaîne.</p> + +<pre class="brush: js">var css = "body { border: 20px dotted pink; }"; + +browser.browserAction.onClicked.addListener(() => { + + function onError(error) { + console.log(`Error: ${error}`); + } + + var insertingCSS = browser.tabs.insertCSS({code: css}); + insertingCSS.then(null, onError); +});</pre> + +<p>Cet exemple insère CSS qui est chargé à partir d'un fichier empaqueté avec l'extension. Le CSS est inséré dans l'onglet dont l'identifiant est 2 :</p> + +<pre class="brush: js">browser.browserAction.onClicked.addListener(() => { + + function onError(error) { + console.log(`Error: ${error}`); + } + + var insertingCSS = browser.tabs.insertCSS(2, {file: "content-style.css"}); + insertingCSS.then(null, onError); +});</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.insertCSS")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/move/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/move/index.html new file mode 100644 index 0000000000..119198012b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/move/index.html @@ -0,0 +1,168 @@ +--- +title: tabs.move() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/move +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - deplacer + - move + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/move +--- +<div>{{AddonSidebar()}}</div> + +<p>Déplace un ou plusieurs onglets vers une nouvelle position dans la même fenêtre ou vers une autre fenêtre.</p> + +<p>Vous pouvez uniquement déplacer des onglets vers et à partir de fenêtres dont {{WebExtAPIRef('windows.WindowType', 'WindowType')}} est <code>"normal"</code>.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var moving = browser.tabs.move( + tabIds, // integer or integer array + moveProperties // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabIds</code></dt> + <dd><code><code>integer</code></code> ou <code><code>array</code></code> d'<code><code>integer</code></code>. ID du {{WebExtAPIRef('tabs.Tab', 'tab')}}à déplacer, ou un tableau d'ID d'onglet.</dd> + <dt><code>moveProperties</code></dt> + <dd><code>object</code>. Un objet qui spécifie où déplacer le(s) onglet(s).</dd> + <dd> + <dl class="reference-values"> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. 'ID de la fenêtre dans laquelle vous souhaitez déplacer les onglet(s). Si vous omettez cela, chaque onglet de <code>tabIds</code> sera déplacé vers l' <code>index</code> dans sa fenêtre actuelle. Si vous incluez ceci, et <code>tabIds</code> contient plus d'un onglet, alors le premier onglet de <code>tabIds</code> sera déplacé vers l'<code>index</code>, et les autres onglets le suivront dans l'ordre donné dans <code>tabIds</code>.</dd> + <dt><code>index</code></dt> + <dd><code>integer</code>. La position de l'index pour déplacer la tabulation à, en commençant à 0. Une valeur de -1 placera la tabulation à la fin de la fenêtre.</dd> + <dd>Si vous passez une valeur inférieure à -1, la fonction renvoie une erreur.</dd> + <dd>Notez que vous ne pouvez pas déplacer les onglets épinglés sur une position après les onglets non épinglés d'une fenêtre, ou déplacer les onglets non épinglés à une position avant les onglets épinglés. Par exemple, si vous avez un ou plusieurs onglets épinglés dans la fenêtre cible et si tabIds fait référence à un onglet non épinglé, vous ne pouvez pas passer 0 ici. Si vous essayez de le faire, la fonction échouera silencieusement (elle ne produira pas d'erreur).</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera satisfaite avec un objet <code>{{WebExtAPIRef('tabs.Tab')}}</code> ou un <code><code>tableau</code></code> d'objets <code><code>{{WebExtAPIRef('tabs.Tab')}}</code></code>, contenant des détails sur les onglets déplacés. Si aucun onglet n'a été déplacé (par exemple, parce que vous avez essayé de déplacer un onglet non épinglé avant un onglet épinglé), il s'agira d'un tableau vide. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Déplacer le premier onglet de la fenêtre en cours vers la dernière position de la fenêtre en cours :</p> + +<pre class="brush: js">function onMoved(tab) { + console.log(`Moved: ${tab}`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +function firstToLast(windowInfo) { + if (windowInfo.tabs.length == 0) { + return; + } + var moving = browser.tabs.move(windowInfo.tabs[0].id, {index: -1}); + moving.then(onMoved, onError); +} + +browser.browserAction.onClicked.addListener(function() { + var gettingCurrent = browser.windows.getCurrent({populate: true}); + gettingCurrent.then(firstToLast, onError); +});</pre> + +<p><span id="result_box" lang="fr"><span>Déplacer tous les onglets servis via HTTP ou HTTPS depuis * .mozilla.org jusqu'à la fin de leur fenêtre :</span></span></p> + +<pre class="brush: js">function onMoved(tab) { + console.log(`Moved: ${tab}`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +function moveMoz(tabs) { + var mozTabIds = tabs.map(tabInfo => tabInfo.id); + var moving = browser.tabs.move(mozTabIds, {index: -1}); + moving.then(onMoved, onError); +} + +browser.browserAction.onClicked.addListener(function() { + var gettingMozTabs = browser.tabs.query({url:"*://*.mozilla.org/*"}); + gettingMozTabs.then(moveMoz, onError); +});</pre> + +<p><span id="result_box" lang="fr"><span>Déplacer tous les onglets servis via HTTP ou HTTPS de * .mozilla.org vers la fenêtre qui héberge le premier onglet de ce type, en commençant à la position 0 :</span></span></p> + +<pre class="brush: js">function onMoved(tab) { + console.log(`Moved: ${tab}`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +function moveMoz(tabs) { + var mozTabIds = tabs.map(tabInfo => tabInfo.id); + var targetWindow = tabs[0].windowId; + var moving = browser.tabs.move(mozTabIds, {windowId: targetWindow, index: 0}); + moving.then(onMoved, onError); +} + +browser.browserAction.onClicked.addListener(function() { + var gettingMozTabs = browser.tabs.query({url:"*://*.mozilla.org/*"}); + gettingMozTabs.then(moveMoz, onError); +});</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.move")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/moveinsuccession/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/moveinsuccession/index.html new file mode 100644 index 0000000000..9514fe3192 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/moveinsuccession/index.html @@ -0,0 +1,54 @@ +--- +title: tabs.moveInSuccession() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/moveInSuccession +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - onglets + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/moveInSuccession +--- +<p>{{AddonSidebar()}}</p> + +<p>Modifie la relation de succession pour un groupe d'onglets.</p> + +<p>Using the {{WebExtAPIRef('tabs')}} API, a tab can be assigned a <em>successor</em> tab in the same window. If tab B is the successor of tab A, and tab A is closed while it is the active tab, tab B will be activated next. If tab A doesn't have a successor, then the browser is free to determine which tab to activate next. If tab B is the successor of tab A, then tab A is called a <em>predecessor</em> of tab B. A tab can have at most one successor, but it can have any number of predecessors. A tab cannot take itself or a tab in a different window as a successor.</p> + +<p>All tabs start out with no successor; tabs only get a successor if assigned one by a WebExtension. However, the browser must not orphan a tab in a succession relationship with other tabs, if possible: if tab B is the successor of tab A, and tab C is the successor of tab B, and B is closed (or moved to another window), then tab A will take tab C as its successor. Preventing C from being orphaned in this way is called <em>moving a tab</em> (B) <em>from its line of succession</em>.</p> + +<p><code>tabs.moveInSuccession()</code> takes an array of tab IDs, and moves all of those tabs from their lines of succession. It then makes each tab the successor of the previous tab in the array, forming a chain. It can optionally set the successor of the last tab in the chain to an anchor tab, which is <em>not</em> moved from its line of succession. Additional options can control whether the tab chain is "prepended" or "appended" to the anchor tab, and whether the operation acts like a linked-list insert.</p> + +<p>While the successor tab can be assigned with {{WebExtAPIRef('tabs.update()')}}, it is often desirable to use <code>tabs.moveInSuccession()</code> to change successors, even if only a single tab is having its successor assigned. The difference is that <code>browser.tabs.moveInSuccession([a], b)</code> moves tab <code>a</code> from its line of succession, so any predecessors of <code>a</code> will adopt <code>a</code>'s previous successor; whereas if <code>browser.tabs.update(a, {successorTabId: b})</code> is used instead, tab <code>a</code> may continue to be the successor of other tabs, which could be unexpected. Another advantage of <code>tabs.moveInSuccession()</code> is that all of the succession changes happen atomically, without having to worry about races between calls to {{WebExtAPIRef('tabs.update()')}} and {{WebExtAPIRef('tabs.get()')}} and other operations like the user closing a tab.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="brush: js">browser.tabs.moveInSuccession([1, 3, 5, 7, 2, 9], 4, {insert:true})</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabIds</code></dt> + <dd><code>array</code> of <code>integer</code>. Un tableau d'<code>ID</code>s. L'ordre des éléments dans le tableau définit la relation des onglets. Tout <code>ID</code> d'onglet invalide, ou l'<code>ID</code> d'onglet correspondant à des onglets qui ne sont pas dans la même fenêtre que <code>tabId</code> (ou le premier onglet du tableau, si <code>tabId</code> est omis), sera ignoré - ils conserveront leurs successeurs et prédécesseurs actuels.</dd> + <dt><code>tabId</code> {{optional_inline}}</dt> + <dd><code>integer.</code> L'<code>ID</code> de l'onglet qui succédera au dernier onglet du tableau <code>tabIds</code>. Si cet <code>ID</code> est invalide ou {{WebExtAPIRef('tabs.TAB_ID_NONE')}}, le dernier onglet n'aura pas de successeur. Par défaut {{WebExtAPIRef('tabs.TAB_ID_NONE')}}.</dd> + <dt><code>options</code> {{optional_inline}}</dt> + <dd><code>object</code>.</dd> + <dd> + <dl> + <dt><code>append</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Détermine s'il faut déplacer les onglets dans les <code>tabIds</code> avant ou après <code>tabId </code>dans la succession. Si <code>false</code>, les onglets sont déplacés avant <code>tabId</code>, si <code>true</code>, les onglets sont déplacés après <code>tabId</code>. Par défaut à <code>false</code>.</dd> + <dt><code>insert</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Détermine s'il faut lier les prédécesseurs ou successeurs actuels (selon <code>options.append</code>) de <code>tabId</code>à l'autre côté de la chaîne après son ajout ou son ajout. Si true, l'un des événements suivants se produit : si <code>options.append</code> est <code>false</code>, le premier onglet du tableau est défini comme successeur de tout prédécesseur actuel de <code>tabId</code>; Si <code>options.append</code> est <code>true</code>, le successeur actuel de tabId est défini comme le successeur du dernier onglet du tableau. La valeur par défaut est <code>false</code>.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.moveInSuccession", 10)}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/mutedinfo/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/mutedinfo/index.html new file mode 100644 index 0000000000..eac4be0c0f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/mutedinfo/index.html @@ -0,0 +1,81 @@ +--- +title: tabs.MutedInfo +slug: Mozilla/Add-ons/WebExtensions/API/tabs/MutedInfo +tags: + - API + - Add-ons + - Extensions + - MutedInfo + - Non-standard + - Reference + - Type + - WebExtensions + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/MutedInfo +--- +<div>{{AddonSidebar()}}</div> + +<p>Cet objet contient un booléen indiquant si l'onglet est muet et la raison du dernier changement d'état.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>extensionId</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'ID de l'extension qui a modifié en dernier l'état muet. Non défini si une extension n'a pas été la raison pour laquelle l'état muet a été modifié pour la dernière fois.</dd> + <dt><code>muted</code></dt> + <dd><code>boolean</code>. Si l'onglet est actuellement coupé. Équivalent à l'affichage de l'indicateur audio coupé.</dd> + <dt><code>reason</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('tabs.MutedInfoReason')}}. La raison pour laquelle l'onglet a été désactivé ou désactivé. Non défini si l'état muet de l'onglet n'a jamais été modifié.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.MutedInfo")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/mutedinforeason/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/mutedinforeason/index.html new file mode 100644 index 0000000000..7bbeb971db --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/mutedinforeason/index.html @@ -0,0 +1,81 @@ +--- +title: tabs.MutedInfoReason +slug: Mozilla/Add-ons/WebExtensions/API/tabs/MutedInfoReason +tags: + - API + - Add-ons + - Extensions + - MutedInfoReason + - Non-standard + - Refrence + - Type + - WebExtensions + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/MutedInfoReason +--- +<div>{{AddonSidebar()}}</div> + +<p>Spécifie la raison pour laquelle un onglet a été désactivé ou désactivé.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<dl> + <dt>"capture"</dt> + <dd>La capture d'onglets a commencé, forçant un changement d'état muet.</dd> + <dt>"extension"</dt> + <dd>Une extension définit l'état muet. Si c'est la raison, <code>extensionId</code> dans {{WebExtAPIRef("tabs.mutedInfo")}} contiendra l'ID de l'extension responsable.</dd> + <dt>"user"</dt> + <dd>L'utilisateur définit l'état muet.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.MutedInfoReason")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/onactivated/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/onactivated/index.html new file mode 100644 index 0000000000..260a75553f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/onactivated/index.html @@ -0,0 +1,127 @@ +--- +title: tabs.onActivated +slug: Mozilla/Add-ons/WebExtensions/API/tabs/onActivated +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onActivated + - tavs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onActivated +--- +<div>{{AddonSidebar()}}</div> + +<p>Se déclenche lorsque l'onglet actif dans une fenêtre change. Notez que l'URL de l'onglet peut ne pas être définie au moment où cet événement s'est déclenché, mais vous pouvez écouter les événements {{WebExtAPIRef("tabs.onUpdated")}} pour être averti lorsqu'une URL est définie.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.onActivated.addListener(listener) +browser.tabs.onActivated.removeListener(listener) +browser.tabs.onActivated.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback) </code></dt> + <dd>Ajoute un écouteur à cet événement</dd> + <dt><code>removeListener(listener)</code></dt> + <dd> Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>activeInfo</code></dt> + <dd><a href="#activeInfo"><code>object</code></a>. ID de l'onglet qui a été activé, et ID de sa fenêtre.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="activeInfo">activeInfo</h3> + +<dl class="reference-values"> + <dt><code>previousTabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet activé précédent, si cet onglet est encore ouvert.</dd> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet qui est devenu actif.</dd> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. L'ID de la fenêtre de l'onglet.</dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Écouter et enregistrer les événements d'activation des onglets :</p> + +<pre class="brush: js">function handleActivated(activeInfo) { + console.log("Tab " + activeInfo.tabId + + " was activated"); +} + +browser.tabs.onActivated.addListener(handleActivated);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<dl class="reference-values"> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.onActivated")}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/onactivechanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/onactivechanged/index.html new file mode 100644 index 0000000000..dfeccd0675 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/onactivechanged/index.html @@ -0,0 +1,120 @@ +--- +title: tabs.onActiveChanged +slug: Mozilla/Add-ons/WebExtensions/API/tabs/onActiveChanged +tags: + - API + - Add-ons + - Deprecated + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onActiveChanged + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onActiveChanged +--- +<div>{{AddonSidebar()}}</div> + +<div class="warning"> +<p>Cet événement est obsolète. Utilisez {{WebExtAPIRef("tabs.onActivated")}} à la place.</p> +</div> + +<p>Se déclenche lorsque l'onglet sélectionné dans une fenêtre change. Notez que l'URL de l'onglet peut ne pas être définie au moment où cet événement a été déclenché, mais vous pouvez écouter les événements {{WebExtAPIRef('tabs.onUpdated')}} pour être averti lorsqu'une URL est définie.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.onActiveChanged.addListener(listener) +browser.tabs.onActiveChanged.removeListener(listener) +browser.tabs.onActiveChanged.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement..</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie<code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<dl> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet qui est devenu actif.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>selectInfo</code></dt> + <dd><a href="#selectInfo"><code>object</code></a>.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="selectInfo">selectInfo</h3> + +<dl class="reference-values"> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. L'ID de la fenêtre contenant l'onglet sélectionné.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.onActiveChanged")}}</p> + +<p> + </p><div class="note"><strong>Remerciements :</strong> + + <p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + + <p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> + </div> +<p></p> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/onattached/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/onattached/index.html new file mode 100644 index 0000000000..e170ca07ac --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/onattached/index.html @@ -0,0 +1,133 @@ +--- +title: tabs.onAttached +slug: Mozilla/Add-ons/WebExtensions/API/tabs/onAttached +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onAttached + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onAttached +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'un onglet est attaché à une fenêtre, par exemple parce qu'il a été déplacé entre les fenêtres.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.onAttached.addListener(listener) +browser.tabs.onAttached.removeListener(listener) +browser.tabs.onAttached.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>CVérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet qui a été attaché à une nouvelle fenêtre..</dd> + </dl> + + <dl class="reference-values"> + <dt><code>attachInfo</code></dt> + <dd><a href="#attachInfo"><code>object</code></a>. ID de la nouvelle fenêtre, et index de l'onglet à l'intérieur.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="attachInfo">attachInfo</h3> + +<dl class="reference-values"> + <dt><code>newWindowId</code></dt> + <dd><code>integer</code>. ID de la nouvelle fenêtre.</dd> + <dt><code>newPosition</code></dt> + <dd><code>integer</code>. Position de l'index que l'onglet a dans la nouvelle fenêtre.</dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Écoutez les événements attachés et consignez les informations :</p> + +<pre class="brush: js">function handleAttached(tabId, attachInfo) { + console.log("Tab: " + tabId + " attached"); + console.log("New window: " + attachInfo.newWindowId); + console.log("New index: " + attachInfo.newPosition); +} + +browser.tabs.onAttached.addListener(handleAttached);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<dl class="reference-values"> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.onAttached")}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/oncreated/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/oncreated/index.html new file mode 100644 index 0000000000..e4d6049862 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/oncreated/index.html @@ -0,0 +1,121 @@ +--- +title: tabs.onCreated +slug: Mozilla/Add-ons/WebExtensions/API/tabs/onCreated +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onCreated + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onCreated +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'un onglet est créé.</p> + +<p>Notez que l'URL de l'onglet peut ne pas avoir sa valeur finale au moment où cet événement a été déclenché. En particulier, Firefox ouvre un nouvel onglet avec l'URL "about:blank" avant de charger la nouvelle page. Vous pouvez écouter les événements {{WebExtAPIRef("tabs.onUpdated")}} pour être averti lorsqu'une URL est définie.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.onCreated.addListener(callback) +browser.tabs.onCreated.removeListener(listener) +browser.tabs.onCreated.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument de <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si le <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>tab</code></dt> + <dd>{{WebExtAPIRef('tabs.Tab')}}. Détails de l'onglet qui a été créé.</dd> + </dl> + </dd> +</dl> + +<h2 id="Examples">Examples</h2> + +<p>Consignez les ID des nouveaux onglets créés :</p> + +<pre class="brush: js">function handleCreated(tab) { + console.log(tab.id); +} + +browser.tabs.onCreated.addListener(handleCreated);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<dl> + <dd> + <dl class="reference-values"> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.onCreated")}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/ondetached/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/ondetached/index.html new file mode 100644 index 0000000000..e4a20d483f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/ondetached/index.html @@ -0,0 +1,133 @@ +--- +title: tabs.onDetached +slug: Mozilla/Add-ons/WebExtensions/API/tabs/onDetached +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onDetached + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onDetached +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'un onglet est détaché d'une fenêtre, par exemple parce qu'il est déplacé entre des fenêtres.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.onDetached.addListener(listener) +browser.tabs.onDetached.removeListener(listener) +browser.tabs.onDetached.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument de <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>l'écouteur</code> est enregistré pour cet événemen. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet qui a été détaché.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>detachInfo</code></dt> + <dd><a href="#detachInfo"><code>object</code></a>. ID de la fenêtre précédente et index de l'onglet à l'intérieur.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="detachInfo">detachInfo</h3> + +<dl class="reference-values"> + <dt><code>oldWindowId</code></dt> + <dd><code>integer</code>. ID de la fenêtre précédente</dd> + <dt><code>oldPosition</code></dt> + <dd><code>integer</code>. Position de l'index que l'onglet avait dans l'ancienne fenêtre.</dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Ecoutez les événements de détachement et consignez les informations :</p> + +<pre class="brush: js">function handleDetached(tabId, detachInfo) { + console.log("Tab: " + tabId + " moved"); + console.log("Old window: " + detachInfo.oldWindowId); + console.log("Old index: " + detachInfo.oldPosition); +} + +browser.tabs.onDetached.addListener(handleDetached);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<dl class="reference-values"> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.onDetached")}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/onhighlightchanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/onhighlightchanged/index.html new file mode 100644 index 0000000000..f3bfce612c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/onhighlightchanged/index.html @@ -0,0 +1,112 @@ +--- +title: tabs.onHighlightChanged +slug: Mozilla/Add-ons/WebExtensions/API/tabs/onHighlightChanged +tags: + - API + - Add-ons + - Deprecated + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onHighlightChanged + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onHighlightChanged +--- +<div>{{AddonSidebar()}}</div> + +<div class="warning">Cet événement est obsolète. Utilisez {{WebExtAPIRef("tabs.onHighlighted")}} à la place.</div> + +<p>Lancé lorsque les onglets en surbrillance ou sélectionnés dans une fenêtre changent.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.onHighlightChanged.addListener(listener) +browser.tabs.onHighlightChanged.removeListener(listener) +browser.tabs.onHighlightChanged.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code>s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>selectInfo</code></dt> + <dd><a href="#selectInfo"><code>object</code></a>.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="selectInfo">selectInfo</h3> + +<dl class="reference-values"> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. La fenêtre dont les onglets ont changé.</dd> + <dt><code>tabIds</code></dt> + <dd><code>array</code> d'<code><code>integer</code></code>. Tous les onglets en surbrillance dans la fenêtre.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.onHighlightChanged")}}</p> + +<p> + </p><div class="note"><strong>Remerciements :</strong> + + <p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + + <p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> + </div> +<p></p> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/onhighlighted/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/onhighlighted/index.html new file mode 100644 index 0000000000..310a611721 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/onhighlighted/index.html @@ -0,0 +1,126 @@ +--- +title: tabs.onHighlighted +slug: Mozilla/Add-ons/WebExtensions/API/tabs/onHighlighted +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onHighlighted + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onHighlighted +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque l'ensemble des onglets en surbrillance dans une fenêtre change</p> + +<p>Notez qu'avant la version 63, Firefox n'avait pas le concept de mettre en évidence plusieurs onglets, donc cet événement n'était qu'un alias pour {{WebExtAPIRef("tabs.onActivated")}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.onHighlighted.addListener(listener) +browser.tabs.onHighlighted.removeListener(listener) +browser.tabs.onHighlighted.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> de l'écouteur est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>highlightInfo</code></dt> + <dd><a href="#highlightInfo"><code>object</code></a>. ID(s) des onglets en surbrillance, et ID de leur fenêtre.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="highlightInfo">highlightInfo</h3> + +<dl class="reference-values"> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. ID de la fenêtre dont les onglets ont changé.</dd> + <dt><code>tabIds</code></dt> + <dd><code>array</code> d'<code><code>integer</code></code>. Identifiants des onglets en surbrillance dans la fenêtre</dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Ecoutez les événements en surbrillance et consignez les ID des onglets mis en surbrillance</p> + +<pre class="brush: js">function handleHighlighted(highlightInfo) { + console.log("Highlighted tabs: " + highlightInfo.tabIds); +} + +browser.tabs.onHighlighted.addListener(handleHighlighted);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<dl class="reference-values"> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.onHighlighted")}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/onmoved/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/onmoved/index.html new file mode 100644 index 0000000000..1aa969a9df --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/onmoved/index.html @@ -0,0 +1,133 @@ +--- +title: tabs.onMoved +slug: Mozilla/Add-ons/WebExtensions/API/tabs/onMoved +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onMoved + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onMoved +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'un onglet est déplacé dans une fenêtre</p> + +<p>Un seul événement de déplacement est déclenché, représentant l'onglet que l'utilisateur a déplacé directement. Les événements de déplacement ne sont pas déclenchés pour les autres onglets qui doivent se déplacer en réponse. Cet événement n'est pas déclenché lorsqu'un onglet est déplacé entre des fenêtres. Pour cela, voir {{WebExtAPIRef('tabs.onDetached')}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.onMoved.addListener(listener) +browser.tabs.onMoved.removeListener(listener) +browser.tabs.onMoved.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions:</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> st l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si le <code>listener</code>est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet déplacé par l'utilisateur.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>moveInfo</code></dt> + <dd><a href="#moveInfo"><code>object</code></a>. Informations sur le déménagement.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="moveInfo">moveInfo</h3> + +<dl class="reference-values"> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. ID de la fenêtre de cet onglet.</dd> + <dt><code>fromIndex</code></dt> + <dd><code>integer</code>. Index initial de cet onglet dans la fenêtre.</dd> + <dt><code>toIndex</code></dt> + <dd><code>integer</code>. Index final de cet onglet dans la fenêtre</dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Écouter et enregistrer les événements de déplacement :</p> + +<pre class="brush: js">function handleMoved(tabId, moveInfo) { + console.log("Tab " + tabId + + " moved from " + moveInfo.fromIndex + + " to " + moveInfo.toIndex); +} + +browser.tabs.onMoved.addListener(handleMoved);</pre> + +<p>{{WebExtExamples}}</p> + +<dl class="reference-values"> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.onMoved")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/onremoved/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/onremoved/index.html new file mode 100644 index 0000000000..3f5148aaf0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/onremoved/index.html @@ -0,0 +1,129 @@ +--- +title: tabs.onRemoved +slug: Mozilla/Add-ons/WebExtensions/API/tabs/onRemoved +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onRemoved + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onRemoved +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé quand un onglet est fermé.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.onRemoved.addListener(callback) +browser.tabs.onRemoved.removeListener(listener) +browser.tabs.onRemoved.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet qui s'est fermé.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>removeInfo</code></dt> + <dd><a href="#removeInfo"><code>object</code></a>. L'ID de la fenêtre de l'onglet et un booléen indiquant si la fenêtre est également fermée.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="removeInfo">removeInfo</h3> + +<dl class="reference-values"> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. La fenêtre dont l'onglet est fermé.</dd> + <dt><code>isWindowClosing</code></dt> + <dd><code>boolean</code>. <code>true</code> si l'onglet est fermé car sa fenêtre est en cours de fermeture.</dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Écoutez les événements proches et consignez les informations :</p> + +<pre class="brush: js">function handleRemoved(tabId, removeInfo) { + console.log("Tab: " + tabId + " is closing"); + console.log("Window ID: " + removeInfo.windowId); + console.log("Window is closing: " + removeInfo.isWindowClosing); +} + +browser.tabs.onRemoved.addListener(handleRemoved);</pre> + +<p>{{WebExtExamples}}</p> + +<dl class="reference-values"> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.onRemoved")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/onreplaced/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/onreplaced/index.html new file mode 100644 index 0000000000..1a77cd74b9 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/onreplaced/index.html @@ -0,0 +1,124 @@ +--- +title: tabs.onReplaced +slug: Mozilla/Add-ons/WebExtensions/API/tabs/onReplaced +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onReplaced + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onReplaced +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'un onglet est remplacé par un autre en raison d'un prérendering ou d'un instantané.</p> + +<p>Cet événement peut ne pas être pertinent ou pris en charge par des navigateurs autres que Chrome.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.onReplaced.addListener(listener) +browser.tabs.onReplaced.removeListener(listener) +browser.tabs.onReplaced.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>addedTabId</code></dt> + <dd><code>integer</code>. ID de l'onglet de remplacement.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>removedTabId</code></dt> + <dd><code>integer</code>. ID de l'onglet qui a été remplacé.</dd> + </dl> + </dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Écoutez les événements de remplacement et consignez les informations associées :</p> + +<pre class="brush: js">function handleReplaced(addedTabId, removedTabId) { + console.log("New tab: " + addedTabId); + console.log("Old tab: " + removedTabId); +} + +browser.tabs.onReplaced.addListener(handleReplaced); +</pre> + +<p>{{WebExtExamples}}</p> + +<dl> + <dd> + <dl class="reference-values"> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.onReplaced")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/onselectionchanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/onselectionchanged/index.html new file mode 100644 index 0000000000..6c6b387bf0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/onselectionchanged/index.html @@ -0,0 +1,119 @@ +--- +title: tabs.onSelectionChanged +slug: Mozilla/Add-ons/WebExtensions/API/tabs/onSelectionChanged +tags: + - API + - Add-ons + - Deprecated + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onSelectionChanged + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onSelectionChanged +--- +<div>{{AddonSidebar()}}</div> + +<div class="warning">Cet événement est obsolète. Utilisez {{WebExtAPIRef("tabs.onActivated")}} à la place.</div> + +<p>Se déclenche lorsque l'onglet sélectionné dans une fenêtre change.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.onSelectionChanged.addListener(listener) +browser.tabs.onSelectionChanged.removeListener(listener) +browser.tabs.onSelectionChanged.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions:</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd> Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet qui est devenu actif.</dd> + </dl> + + <dl class="reference-values"> + <dt><code>selectInfo</code></dt> + <dd><a href="#selectInfo"><code>object</code></a>.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="selectInfo">selectInfo</h3> + +<dl class="reference-values"> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. L'ID de la fenêtre dans laquelle l'onglet sélectionné a changé.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.onSelectionChanged")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/onupdated/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/onupdated/index.html new file mode 100644 index 0000000000..52a4d27064 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/onupdated/index.html @@ -0,0 +1,281 @@ +--- +title: tabs.onUpdated +slug: Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onUpdated + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated +--- +<p>C'est déclenché lorsqu'un onglet est mis à jour.</p> + +<p>Lorsque l'utilisateur navigue vers une nouvelle URL dans un onglet, cela génère généralement plusieurs événements <code>onUpdated</code> au fur et à mesure que diverses propriétés de l'objet {{WebExtAPIRef("tabs.Tab")}} sont mises à jour. Ceci inclut l' <code>url</code>, mais aussi potentiellement le <code>title</code> et les propriétés <code>favIconUrl</code>. La propriété du <code>status</code> passe par le <code>"loading"</code> et <code>"complete"</code>.</p> + +<p>Cet événement sera également déclenché pour les modifications des propriétés d'un onglet qui n'impliquent pas de navigation, comme le pinning et le débrochage (qui met à jour la propriété <code>pinned</code>) et le muting ou le unmuting (qui met à jour les propriétés <code>audible</code> et <code>mutedInfo</code>).</p> + +<p>Vous pouvez filtrer cet événement, en le rendant uniquement valable pour les onglets dont les urls correspondent à des <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">patterns</a> spécifiques, ou pour les modifications de propriétés spécifiques, ou pour les modifications d'un onglet ou d'une fenêtre spécifique, ou toute combinaison de ces restrictions.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.onUpdated.addListener(listener[, extraParameters]) +browser.tabs.onUpdated.removeListener(listener) +browser.tabs.onUpdated.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback[, extraParameters])</code></dt> + <dd>Ajoute un écouteur à cet événement</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet qui a été mis à jour.</dd> + <dt><code>changeInfo</code></dt> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated$edit#changeInfo"><code>object</code></a>. ontient les propriétés des propriétés de l'onglet qui ont été modifiées. Voir <code><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/onUpdated#changeInfo">changeInfo</a></code> ci-dessous.</dd> + <dt><code>tab</code></dt> + <dd>{{WebExtAPIRef('tabs.Tab')}}. Le nouvel état de l'onglet.</dd> + </dl> + </dd> + <dt><code>extraParameters</code>{{optional_inline}}</dt> + <dd> + <p><code>object</code>. Un ensemble de filtres qui restreint les événements qui seront envoyés à cet auditeur. C'est un objet qui peut avoir une ou plusieurs des propriétés suivantes. Les événements ne seront envoyés que s'ils satisfont à tous les filtres donnés.</p> + + <dl class="reference-values"> + <dt><code>urls</code></dt> + <dd><code>Array</code>. Un tableau <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">match patterns</a>. Ne déclenchez l'événement que pour les onglets dont la propriété de l'<code>url</code> courante correspond à l'un des motifs.</dd> + <dt><code>properties</code></dt> + <dd> + <p><code>Array</code>. un tableau de chaîne de caractères, qui sont les noms des propriétés de l'objet {{WebExtAPIRef("tabs.Tab")}}. Ne déclenchez cet événement seulement pour les changement apportées à l'une des propriétés nommées dans ce tableau. Les propriétés suivantes peuvent être listées ici :</p> + + <ul> + <li>"attention"</li> + <li>"audible"</li> + <li>"discarded"</li> + <li>"favIconUrl"</li> + <li>"hidden"</li> + <li>"isArticle"</li> + <li>"mutedInfo"</li> + <li>"pinned"</li> + <li>"sharingState"</li> + <li>"status"</li> + <li>"title"</li> + </ul> + </dd> + <dt><code>tabId</code></dt> + <dd><code>Integer</code>. Ne déclenchez cet événement que pour l'onglet identifié par cet ID.</dd> + <dt><code>windowId</code></dt> + <dd><code>Integer</code>. N'activez cet événement que pour les onglets qui se trouvent actuellement dans la fenêtre identifiée par cet ID.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="changeInfo">changeInfo</h3> + +<p>Répertorie les modifications apportées à l'état de l'onglet mis à jour. Pour en savoir plus sur ces propriétés, consultez la documentation {{WebExtAPIRef("tabs.Tab")}}.</p> + +<dl class="reference-values"> + <dt><code>attention</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Indique si l'onglet attire l'attention. Par exemple, lorsque l'onglet affiche un dialogue modal, <code>attention</code> sera <code>true</code>.</dd> + <dt><code>audible</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Nouvel état audible de l'onglet.</dd> + <dt><code>discarded</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'onglet est ignoré. Un onglet supprimé est celui dont le contenu a été déchargé de la mémoire, mais est toujours visible dans la bande d'onglets. Son contenu est rechargé la prochaine fois qu'il est activé.</dd> + <dt><code>favIconUrl</code>{{optional_inline}}</dt> + <dd><code>string</code>. Nouvelle URL de favicon de l'onglet.</dd> + <dt><code>mutedInfo</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('tabs.MutedInfo')}}. Le nouvel état muet de l'onglet et la raison du changement.</dd> + <dt><code>pinned</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Nouvel état épinglé de l'onglet.</dd> + <dt><code>status</code>{{optional_inline}}</dt> + <dd><code>string</code>. Le statut de l'onglet. Peut être soit <em>chargé</em> ou <em>complet</em>.</dd> + <dt><code>title</code>{{optional_inline}}</dt> + <dd><code>string</code>. Le nouveau titre de l'onglet.</dd> + <dt><code>url</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'URL de l'onglet s'il a changé.</dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Écoutez et connectez toutes les informations de changement et nouvel état:</p> + +<pre class="brush: js">function handleUpdated(tabId, changeInfo, tabInfo) { + console.log("Updated tab: " + tabId); + console.log("Changed attributes: "); + console.log(changeInfo); + console.log("New tab Info: "); + console.log(tabInfo); +} + +browser.tabs.onUpdated.addListener(handleUpdated);</pre> + +<p>Consigner les modifications dans les URL :</p> + +<pre class="brush: js">function handleUpdated(tabId, changeInfo, tabInfo) { + if (changeInfo.url) { + console.log("Tab: " + tabId + + " URL changed to " + changeInfo.url); + } +} + +browser.tabs.onUpdated.addListener(handleUpdated);</pre> + +<h3 id="Filtering_examples">Filtering examples</h3> + +<p>Le journal ne change que pour les onglets dont la propriété <code>url</code> est <a href="/en-US/Add-ons/WebExtensions/Match_patterns">matched</a> par "https://developer.mozilla.org/*" ou "https://twitter.com/mozdevnet":</p> + +<pre class="brush: js">const pattern1 = "https://developer.mozilla.org/*"; +const pattern2 = "https://twitter.com/mozdevnet"; + +const filter = { + urls: [pattern1, pattern2] +} + +function handleUpdated(tabId, changeInfo, tabInfo) { + console.log(`Updated tab: ${tabId}`); + console.log("Changed attributes: ", changeInfo); + console.log("New tab Info: ", tabInfo); +} + +browser.tabs.onUpdated.addListener(handleUpdated, filter);</pre> + +<p>Le journal ne change que la propriété <code>épinglée</code> des onglets (c'est-à-dire les actions d'épinglage et de déblocage) :</p> + +<pre class="brush: js">const filter = { + properties: ["pinned"] +} + +function handleUpdated(tabId, changeInfo, tabInfo) { + console.log(`Updated tab: ${tabId}`); + console.log("Changed attributes: ", changeInfo); + console.log("New tab Info: ", tabInfo); +} + +browser.tabs.onUpdated.addListener(handleUpdated, filter);</pre> + +<p>Combiner les deux filtres précédents : changements de journal seulement :</p> + +<ul> + <li>A la propriété <code>épinglée</code> des onglets</li> + <li>Dont la propriété <code>url</code> est <a href="/en-US/Add-ons/WebExtensions/Match_patterns">matched</a> par "https://developer.mozilla.org/*" ou "https://twitter.com/mozdevnet":</li> +</ul> + +<pre class="brush: js">const pattern1 = "https://developer.mozilla.org/*"; +const pattern2 = "https://twitter.com/mozdevnet"; + +const filter = { + urls: [pattern1, pattern2], + properties: ["pinned"] +} + +function handleUpdated(tabId, changeInfo, tabInfo) { + console.log(`Updated tab: ${tabId}`); + console.log("Changed attributes: ", changeInfo); + console.log("New tab Info: ", tabInfo); +} + +browser.tabs.onUpdated.addListener( + handleUpdated, + filter);</pre> + +<p>Changements dans le journal seulement :</p> + +<ul> + <li>A la propriété <code>épinglée</code> des onglets</li> + <li>Dont la propriété <code>url</code> est <a href="/en-US/Add-ons/WebExtensions/Match_patterns">matched</a> par "https://developer.mozilla.org/*" ou "https://twitter.com/mozdevnet"</li> + <li>et qui font partie de la fenêtre actuelle du navigateur au moment où l'événement de mise à jour est déclenché :</li> +</ul> + +<pre class="brush: js">const pattern1 = "https://developer.mozilla.org/*"; +const pattern2 = "https://twitter.com/mozdevnet"; + +const filter = { + urls: [pattern1, pattern2], + properties: ["pinned"], + windowId: browser.windows.WINDOW_ID_CURRENT +} + +function handleUpdated(tabId, changeInfo, tabInfo) { + console.log(`Updated tab: ${tabId}`); + console.log("Changed attributes: ", changeInfo); + console.log("New tab Info: ", tabInfo); +} + +browser.tabs.onUpdated.addListener( + handleUpdated, + filter);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<dl class="reference-values"> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.onUpdated", 10)}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> + +<p>{{AddonSidebar}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/onzoomchange/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/onzoomchange/index.html new file mode 100644 index 0000000000..f9a7aa0d6e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/onzoomchange/index.html @@ -0,0 +1,134 @@ +--- +title: tabs.onZoomChange +slug: Mozilla/Add-ons/WebExtensions/API/tabs/onZoomChange +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onZoomChange + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/onZoomChange +--- +<div>{{AddonSidebar()}}</div> + +<p>Envoyé lorsqu'un onglet est agrandi.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.onZoomChange.addListener(listener) +browser.tabs.onZoomChange.removeListener(listener) +browser.tabs.onZoomChange.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> de l'écouteur est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>ZoomChangeInfo</code></dt> + <dd><a href="#ZoomChangeInfo"><code>object</code></a>. Informations sur l'événement de zoom.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="ZoomChangeInfo">ZoomChangeInfo</h3> + +<dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet qui a été zoomé.</dd> + <dt><code>oldZoomFactor</code></dt> + <dd><code>number</code>. Le facteur de zoom précédent.</dd> + <dt><code>newZoomFactor</code></dt> + <dd><code>number</code>. Le nouveau facteur de zoom.</dd> + <dt><code>zoomSettings</code></dt> + <dd>{{WebExtAPIRef('tabs.ZoomSettings')}}. Paramètres de zoom pour l'onglet.</dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Ecoutez les événements de zoom et consignez les informations :</p> + +<pre class="brush: js">function handleZoomed(zoomChangeInfo) { + console.log("Tab: " + zoomChangeInfo.tabId + " zoomed"); + console.log("Old zoom: " + zoomChangeInfo.oldZoomFactor); + console.log("New zoom: " + zoomChangeInfo.newZoomFactor); +} + +browser.tabs.onZoomChange.addListener(handleZoomed);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<dl class="reference-values"> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p> </p> + +<p>{{Compat("webextensions.api.tabs.onZoomChange")}}</p> + +<p> </p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/pagesettings/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/pagesettings/index.html new file mode 100644 index 0000000000..1f518b000b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/pagesettings/index.html @@ -0,0 +1,92 @@ +--- +title: tabs.PageSettings +slug: Mozilla/Add-ons/WebExtensions/API/tabs/PageSettings +tags: + - API + - Add-ons + - Extensions + - PageSettings + - Reference + - Type + - WebExtensions + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/PageSettings +--- +<div>{{AddonSidebar}}</div> + +<p>Le type <strong><code>tabs.PageSettings</code></strong> est utilisé pour contrôler le rendu d'un onglet au format PDF par la méthode {{WebExtAPIRef("tabs.saveAsPDF()")}}.</p> + +<p>Toutes ses propriétés sont facultatives.</p> + +<p>Pour définir les en-têtes et les pieds de page, vous pouvez inclure certains caractères spéciaux dans les chaînes que vous fournissez. Ceux-ci seront remplacés dans la sortie rendue comme suit :</p> + +<ul> + <li>"&P": le numéro de page, comme "2"</li> + <li>"&PT": le numéro de page et le nombre total de pages, comme "2 su 3"</li> + <li>"&D": la date / heure actuelle</li> + <li>"&T": le titre de la page</li> + <li>"&U": l'URL de la page</li> +</ul> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>edgeBottom </code>{{optional_inline}}</dt> + <dd><code>number</code>. L'espacement entre le bas des pieds et le bord inférieur du papier (pouces). Par défaut : 0.</dd> + <dt><code>edgeLeft </code>{{optional_inline}}</dt> + <dd><code>number</code>. L'espacement entre l'en-tête / pied de page gauche et le bord gauche du papier (pouces). Par défaut : 0</dd> + <dt><code>edgeRight </code>{{optional_inline}}</dt> + <dd><code>number</code>. L'espacement entre l'en-tête / pied droit et le bord gauche du papier (pouces). Par défaut : 0.</dd> + <dt><code>edgeTop </code>{{optional_inline}}</dt> + <dd><code>number</code>. L'espacement entre le haut des en-têtes et le bord supérieur du papier (pouces). Par défaut : 0</dd> + <dt><code>footerCenter</code> {{optional_inline}}</dt> + <dd><code>string</code>. Le texte du pied de page central de la page. Défaut : ''.</dd> + <dt><code>footerLeft</code> {{optional_inline}}</dt> + <dd><code>string</code>. Le texte pour le pied gauche de la page. Par défaut : '&PT'.</dd> + <dt><code>footerRight</code> {{optional_inline}}</dt> + <dd><code>string</code>. Le texte pour le pied droit de la page. Par défaut : '&D'.</dd> + <dt><code>headerCenter</code> {{optional_inline}}</dt> + <dd><code>string</code>. Le texte de l'en-tête du centre de la page. Défaut : ''.</dd> + <dt><code>headerLeft</code> {{optional_inline}}</dt> + <dd><code>string</code>. Le texte de l'en-tête gauche de la page. Par défaut : '&T'.</dd> + <dt><code>headerRight</code> {{optional_inline}}</dt> + <dd><code>string</code>. Le texte de l'en-tête de la page. Par défaut : '&U'.</dd> + <dt><code>marginBottom </code>{{optional_inline}}</dt> + <dd><code>number</code>. La marge entre le contenu de la page et le bord inférieur du papier (pouces). Par défaut : 0.5.</dd> + <dt><code>marginLeft </code>{{optional_inline}}</dt> + <dd><code>number</code>. La marge entre le contenu de la page et le bord gauche du papier (pouces). Par défaut : 0.5.</dd> + <dt><code>marginRight </code>{{optional_inline}}</dt> + <dd><code>number</code>. La marge entre le contenu de la page et le bord droit du papier (en pouces). Par défaut : 0.5.</dd> + <dt><code>marginTop </code>{{optional_inline}}</dt> + <dd><code>number</code>. La marge entre le contenu de la page et le bord supérieur du papier (pouces). Par défaut : 0.5.</dd> + <dt><code>orientation </code> {{optional_inline}}</dt> + <dd><code>integer</code>. Orientation de la page: 0 signifie "portrait", 1 signifie "paysage". Par défaut : 0.</dd> + <dt><code>paperHeight </code>{{optional_inline}}</dt> + <dd><code>number</code>. La hauteur du papier dans les unités de format papier. Par défaut : 11.0.</dd> + <dt><code>paperSizeUnit</code> {{optional_inline}}</dt> + <dd><code>integer</code>. L'unité de format de papier: 0 = pouces, 1 = millimètres. Par défaut : 0.</dd> + <dt><code>paperWidth</code> {{optional_inline}}</dt> + <dd><code>number</code>. La largeur du papier dans les unités de format papier. Par défaut : 8.5.</dd> + <dt><code>scaling</code> {{optional_inline}}</dt> + <dd><code>number</code>. Facteur d'échelle du contenu de la page. 1 signifie 100% ou taille normale. Par défaut : 1.</dd> + <dt><code>showBackgroundColors</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si les couleurs d'arrière-plan de la page doivent être affichées. Par défaut : false.</dd> + <dt><code>showBackgroundImages</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si les images d'arrière-plan de la page doivent être affichées. Par défaut : false.</dd> + <dt><code>shrinkToFit</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si le contenu de la page doit rétrécir pour s'adapter à la largeur de la page (remplace la mise à l'échelle). Par défaut : true.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.PageSettings")}}</p> + + + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/print/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/print/index.html new file mode 100644 index 0000000000..920cde1de3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/print/index.html @@ -0,0 +1,50 @@ +--- +title: tabs.print() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/print +tags: + - API + - Add-ons + - Extensions + - Méthode + - Reference + - WebExtensions + - impression + - print + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/print +--- +<div>{{AddonSidebar()}}</div> + +<p>Appelez cette fonction pour imprimer le contenu de l'onglet actif. Si cette fonction est appelée, l'utilisateur recevra la boîte de dialogue d'impression de la plate-forme sous-jacente et aura la possibilité de modifier les paramètres d'impression, puis d'imprimer l'onglet actuellement actif.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.tabs.print() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>None.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Dans cet exemple, un script d'arrière-plan écoute un clic sur une <a href="/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Browser_actions_2">action navigateur</a>, puis tente d'imprimer l'onglet actuellement actif :</p> + +<pre class="brush: js">browser.browserAction.onClicked.addListener(() => { + browser.tabs.print(); +}); +</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.print")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/printpreview/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/printpreview/index.html new file mode 100644 index 0000000000..e04a6035ef --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/printpreview/index.html @@ -0,0 +1,66 @@ +--- +title: tabs.printPreview() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/printPreview +tags: + - API + - Add-ons + - Extensions + - Méthode + - Reference + - WebExtensions + - printPreview + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/printPreview +--- +<div>{{AddonSidebar()}}</div> + +<div>Ouvre l'aperçu avant impression pour l'onglet actif.</div> + +<div></div> + +<div>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</div> + +<div></div> + +<div>Une extension peut détecter lorsque l'aperçu d'impression a été fermé en écoutant l'événement <a href="/fr/docs/Web/Events/afterprint">afterprint</a> :</div> + +<div></div> + +<div> +<pre class="brush: js no-line-numbers" id="ct-13">window.addEventListener("afterprint", resumeFunction, false);</pre> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var openingPreview = browser.tabs.printPreview() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans argument lorsque la page d'aperçu est ouverte.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Dans cet exemple, un script d'arrière-plan écoute un clic sur une <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Browser_actions_2">action de navigateur</a>, puis ouvre l'aperçu avant impression pour l'onglet actuellement actif :</p> + +<pre class="brush: js">browser.browserAction.onClicked.addListener(() => { + browser.tabs.printPreview() + .then(() => { + console.log("Entered print preview"); + }); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.printPreview")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/query/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/query/index.html new file mode 100644 index 0000000000..31cd449ad6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/query/index.html @@ -0,0 +1,190 @@ +--- +title: tabs.query() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/query +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - query + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/query +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient tous les onglets qui ont les propriétés spécifiées, ou tous les onglets si aucune propriété n'est spécifiée.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var querying = browser.tabs.query( + queryInfo // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>queryInfo</code></dt> + <dd><code>object</code>. La fonction <code>query()</code> obtiendra uniquement les onglets dont les propriétés correspondent aux propriétés incluses ici. Pour en savoir plus sur ces propriétés, consultez la documentation {{WebExtAPIRef("tabs.Tab")}}.</dd> + <dd> + <dl class="reference-values"> + <dt><code>active</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si les onglets sont actifs dans leurs fenêtres.</dd> + <dt><code>audible</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si les onglets sont audibles.</dd> + <dt><code>autoDiscardable</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si les onglets peuvent être supprimés automatiquement par le navigateur lorsque les ressources sont faibles.</dd> + <dt><code>cookieStoreId</code> {{optional_inline}}</dt> + <dd><code>string</code>. Utilisez cette option pour renvoyer uniquement les onglets dont l'ID est <code>cookieStoreId</code>. Cette option n'est disponible que si l'extension à la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"cookies"</code></dd> + <dt><code>currentWindow</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si les onglets sont dans la fenêtre actuelle.</dd> + <dt><code>discarded</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si les onglets sont supprimés. Un onglet supprimé est celui dont le contenu a été déchargé de la mémoire, mais est toujours visible dans la bande d'onglets. Son contenu est rechargé la prochaine fois qu'il est activé.***</dd> + <dt><code>hidden</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si les onglets sont cachés.</dd> + <dt><code>highlighted</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si les onglets sont en surbrillance.</dd> + <dt><code>index</code>{{optional_inline}}</dt> + <dd><code>integer</code>. La position des onglets dans leurs fenêtres.</dd> + <dt><code>muted</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si les onglets sont en sourdine.</dd> + <dt><code>lastFocusedWindow</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si les onglets sont dans la dernière fenêtre focalisée.</dd> + <dt><code>openerTabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet qui a ouvert cet onglet.</dd> + <dt><code>pinned</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si les onglets sont épinglés.</dd> + <dt><code>status</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('tabs.TabStatus')}}. Si les onglets ont terminé le chargement.</dd> + <dt><code>title</code>{{optional_inline}}</dt> + <dd><code>string</code>. Faites correspondre les titres de page à un motif.</dd> + <dt><code>url</code>{{optional_inline}}</dt> + <dd><code><code>string</code></code> ou <code><code>array</code> de <code><code>string</code></code></code>. Faites correspondre les onglets avec un ou plusieurs <a href="/fr/Add-ons/WebExtensions/Match_patterns">modèle de correspondance</a>. Notez que les identificateurs de fragment ne sont pas appariés.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de la fenêtre parente, ou {{WebExtAPIRef('windows.WINDOW_ID_CURRENT')}} pour la fenêtre en cours.</dd> + <dt><code>windowType</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('tabs.WindowType')}}. Le type de fenêtre dans lequel les onglets y sont.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un <code>tableau</code> d'objets <code>{{WebExtAPIRef('tabs.Tab')}}</code>, contenant des informations sur chaque onglet correspondant. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p><span class="short_text" id="result_box" lang="fr"><span>Obtenez tous les onglets : </span></span></p> + +<pre class="brush: js">function logTabs(tabs) { + for (let tab of tabs) { + // tab.url requires the `tabs` permission + console.log(tab.url); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var querying = browser.tabs.query({}); +querying.then(logTabs, onError);</pre> + +<p>Obtenez tous les onglets dans la fenêtre actuelle :</p> + +<pre class="brush: js">function logTabs(tabs) { + for (let tab of tabs) { + // tab.url requires the `tabs` permission + console.log(tab.url); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var querying = browser.tabs.query({currentWindow: true}); +querying.then(logTabs, onError);</pre> + +<p>Obtenez l'onglet actif dans la fenêtre actuelle :</p> + +<pre class="brush: js">function logTabs(tabs) { + for (let tab of tabs) { + // tab.url requires the `tabs` permission + console.log(tab.url); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var querying = browser.tabs.query({currentWindow: true, active: true}); +querying.then(logTabs, onError);</pre> + +<p>Obtenez des onglets pour toutes les URL HTTP et HTTPS sous "mozilla.org" ou l'un de ses sous-domaines :</p> + +<pre class="brush: js">function logTabs(tabs) { + for (let tab of tabs) { + // tab.url requires the `tabs` permission + console.log(tab.url); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var querying = browser.tabs.query({url: "*://*.mozilla.org/*"}); +querying.then(logTabs, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.query")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/reload/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/reload/index.html new file mode 100644 index 0000000000..509ecd29bf --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/reload/index.html @@ -0,0 +1,115 @@ +--- +title: tabs.reload() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/reload +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - reload + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/reload +--- +<div>{{AddonSidebar()}}</div> + +<p>Rechargez un onglet, en contournant éventuellement le cache Web local.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var reloading = browser.tabs.reload( + tabId, // optional integer + reloadProperties // optional object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet à recharger. Par défaut à l'onglet sélectionné de la fenêtre en cours.</dd> + <dt><code>reloadProperties</code>{{optional_inline}}</dt> + <dd><code>object</code>. + <dl class="reference-values"> + <dt><code>bypassCache</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Contourner le cache web local. La valeur par défaut est <code>false</code>.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments lorsque l'onglet a été rechargé. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Recharger l'onglet actif de la fenêtre en cours :</p> + +<pre class="brush: js">browser.tabs.reload();</pre> + +<p>Rechargez l'onglet actif de la fenêtre en cours, en ignorant le cache :</p> + +<pre class="brush: js">browser.tabs.reload({bypassCache: true});</pre> + +<p>Rechargez l'onglet dont l'ID est 2, en ignorant le cache et en appelant un rappel lorsque vous avez terminé :</p> + +<pre class="brush: js">function onReloaded() { + console.log(`Reloaded`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var reloading = browser.tabs.reload(2, {bypassCache: true}); +reloading.then(onReloaded, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.reload")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/remove/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/remove/index.html new file mode 100644 index 0000000000..af37d0279e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/remove/index.html @@ -0,0 +1,116 @@ +--- +title: tabs.remove() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/remove +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - remove + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/remove +--- +<div>{{AddonSidebar()}}</div> + +<p>Ferme un ou plusieurs onglets.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.tabs.remove( + tabIds // integer or integer array +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabIds</code></dt> + <dd><code><code>integer</code></code> or <code><code>array</code> of <code><code>integer</code></code></code>. Les identifiants de l'onglet ou des onglets à fermer.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments lorsque tous les onglets spécifiés ont été supprimés ou que leurs invites <code>beforeunload</code> ont été traitées. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Fermer un seul onglet :</p> + +<pre class="brush: js">function onRemoved() { + console.log(`Removed`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var removing = browser.tabs.remove(2); +removing.then(onRemoved, onError);</pre> + +<p>Fermer plusieurs onglets :</p> + +<pre class="brush: js">function onRemoved() { + console.log(`Removed`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var removing = browser.tabs.remove([15, 14, 1]); +removing.then(onRemoved, onError);</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.remove")}}</p> + + + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/removecss/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/removecss/index.html new file mode 100644 index 0000000000..3290985ea2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/removecss/index.html @@ -0,0 +1,121 @@ +--- +title: tabs.removeCSS() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/removeCSS +tags: + - API + - Add-ons + - Extensions + - Mehod + - Non-standard + - Reference + - WebExtensions + - removeCSS + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/removeCSS +--- +<div>{{AddonSidebar()}}</div> + +<p>Supprime d'une page CSS précédemment injectée par un appel à {{WebExtAPIRef("tabs.insertCSS()")}}.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox">var removing = browser.tabs.removeCSS( + tabId, // optional integer + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet à partir duquel supprimer le CSS. Par défaut à l'onglet actif de la fenêtre en cours.</dd> + <dt><code>details</code></dt> + <dd>Un objet décrivant le CSS à retirer de la page. Il contient les propriétés suivantes : + <dl class="reference-values"> + <dt></dt> + <dt><code>allFrames</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. si <code>true</code>, le code sera supprimé de toutes les images de la page en cours. si c'est <code>false</code>, le code est seulement retiré du cadre supérieur. Par défaut à <code>false</code>.</dd> + <dt><code>code</code>{{optional_inline}}</dt> + <dd><code>string</code>. CSS à supprimer, en tant que chaîne de texte. Cela doit correspondre exactement à une chaîne CSS précédemment insérée dans la page en utilisant {{WebExtAPIRef("tabs.insertCSS()")}}.</dd> + <dt><code>cssOrigin</code>{{optional_inline}}</dt> + <dd><code>string</code>. Cela peut prendre l'une des deux valeurs suivantes : "user", pour CSS ajouté en tant que feuille de style utilisateur, ou "author" pour CSS ajouté en tant que feuille de style auteur. Si cette option a été définie précédemment par {{WebExtAPIRef("tabs.insertCSS()")}}, elle doit correspondre exactement.</dd> + <dt><code>file</code>{{optional_inline}}</dt> + <dd><code>string</code>. Chemin d'accès à un fichier contenant le CSS à supprimer. Cela doit correspondre exactement à un fichier CSS préalablement inséré dans la page en utilisant {{WebExtAPIRef("tabs.insertCSS()")}}.</dd> + <dt><code>frameId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Le cadre à partir duquel supprimer le CSS. La valeur par défaut est <code>0</code> (l'image de niveau supérieur).</dd> + <dt><code>matchAboutBlank</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. si <code>true</code>, le CSS sera supprimé des cadres "about:blank" et "about:srcdoc" intégrés si votre extension a accès à leur document parent. Par défaut à <code>false</code>.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments lorsque tous les CSS ont été supprimés. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple ajoute du code CSS en utilisant {{WebExtAPIRef("tabs.insertCSS")}}, puis le supprime à nouveau lorsque l'utilisateur clique sur une action du navigateur :</p> + +<pre class="brush: js">var css = "body { border: 20px dotted pink; }"; + +function onError(error) { + console.log(`Error: ${error}`); +} + +var insertingCSS = browser.tabs.insertCSS(2, {code: css}); +insertingCSS.then(null, onError); + +browser.browserAction.onClicked.addListener(() => { + var removing = browser.tabs.removeCSS(2, {code: css}); + removing.then(null, onError); +});</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.removeCSS")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/saveaspdf/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/saveaspdf/index.html new file mode 100644 index 0000000000..6d0a57fcc3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/saveaspdf/index.html @@ -0,0 +1,68 @@ +--- +title: tabs.saveAsPDF() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/saveAsPDF +tags: + - API + - Add-ons + - Extensions + - Méthode + - Reference + - WebExtensions + - saveAsPDF + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/saveAsPDF +--- +<div>{{AddonSidebar()}}</div> + +<p>Enregistre la page en cours en tant que fichier PDF. Cela ouvrira une boîte de dialogue, fournie par le système d'exploitation sous-jacent, demandant à l'utilisateur où il veut enregistrer le fichier PDF.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var saving = browser.tabs.saveAsPDF( + pageSettings // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>pageSettings</code></dt> + <dd><code>object</code>. Paramètres de la page enregistrée, en tant qu'objet {{WebExtAPIRef("tabs.PageSettings")}}. Cet objet doit être donné, mais toutes ses propriétés sont facultatives. Toutes les propriétés non spécifiées ici recevront les valeurs par défaut répertoriées dans la documentation {{WebExtAPIRef("tabs.PageSettings", "PageSettings")}}.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec une chaîne d'état lorsque la boîte de dialogue sera fermée. La chaîne peut être l'une des :</p> + +<ul> + <li>"saved"</li> + <li>"replaced"</li> + <li>"canceled"</li> + <li>"not_saved"</li> + <li>"not_replaced"</li> +</ul> + +<h2 id="Exemples">Exemples</h2> + +<p>Dans cet exemple, un script d'arrière-plan écoute un clic sur une <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">action du navigateur</a>, puis tente d'enregistrer l'onglet actif en tant que fichier PDF, puis enregistre le résultat:</p> + +<pre class="brush: js">browser.browserAction.onClicked.addListener(() => { + browser.tabs.saveAsPDF({}) + .then((status) => { + console.log(status); + }); +});</pre> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.saveAsPDF")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/sendmessage/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/sendmessage/index.html new file mode 100644 index 0000000000..c082a06bd4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/sendmessage/index.html @@ -0,0 +1,148 @@ +--- +title: tabs.sendMessage() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - onglets + - sendMessage + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage +--- +<div>{{AddonSidebar()}}</div> + +<div>Envoi un message unique depuis le script d'arrière plan d'extension (ou autre scripts accrédité, comme les scripts popup ou les scripts de page d'options) vers n'importe quel <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">script de contenu </a>concerné par l'extension et qui s'execute dans l'onglet spécifié.</div> + +<div>Ce message sera reçu dans script de contenu par n'importe quel gestionnaire d'évènements à l'écoute de l'évènement</div> + +<p>{{WebExtAPIRef("runtime.onMessage")}}. Les gestionnaires d'évènements peuvent optionellement envoyé une réponse en retour au script d'arrière plan en utilisant l'argument <code>sendResponse</code>.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoit un objet <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<div class="blockIndicator note"> +<p>Vous pouvez également utiliser une <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#Communication_avec_les_scripts_darrière-plan">approche basée sur la connexion pour échanger des messages</a>.</p> +</div> + + + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var sending = browser.tabs.sendMessage( + tabId, // integer + message, // any + options // optional object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet qui contient le script de contenu auquel on veut envoyer un message.</dd> + <dt><code>message</code></dt> + <dd><code>any</code>. Un objet qui peut être sérialisé en JSON.</dd> + <dt><code>options</code>{{optional_inline}}</dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>frameId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Envoie le message à un cadre (<em>iframe</em>) spécifique identifiée par <code>frameId</code> au lieu de tous les cadres de l'onglet. Le fait que le script de contenu soit exécuté dans tous les cadres dépend du paramètre <code>all_frames</code> dans la section <a href="/fr/Add-ons/WebExtensions/manifest.json/content_scripts"><code>content_scripts</code></a> de manifest.json.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_renvoyée">Valeur renvoyée</h3> + +<p>Un objet <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera rempli avec une réponse objet au format JSON envoyé par le gestionnaire de message dans le script de contenu, ou sans arguments si le script de contenu n'a pas renvoyé de réponses. Si une erreur survient durant la connexion avec l'onglet spécifié, ou si n'importe quelle erreur survient, la promesse sera rejeté avec un message d'erreur. Si plusieurs trames répondent au message, la promesse est résolue en une des réponses</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Voici un exemple de script d'arrière plan qui envoi un message au script de contenu qui s'execute dans l'onglet actif quand le client clique sur l'icone de l'extension. Le script d'arrière plan s'attend également que le script de contenu lui renvoit une réponse:</p> + +<pre class="brush: js">// background-script.js +"use strict"; + +function onError(error) { + console.error(`Error: ${error}`); +} + +function sendMessageToTabs(tabs) { + for (let tab of tabs) { + browser.tabs.sendMessage( + tab.id, + {greeting: "Hi from background script"} + ).then(response => { + console.log("Message from the content script:"); + console.log(response.response); + }).catch(onError); + } +} + +browser.browserAction.onClicked.addListener(() => { + browser.tabs.query({ + currentWindow: true, + active: true + }).then(sendMessageToTabs).catch(onError); +});</pre> + +<p>Voici le script de contenu associé:</p> + +<pre class="brush: js">// content-script.js +"use strict"; + +browser.runtime.onMessage.addListener(request => { + console.log("Message from the background script:"); + console.log(request.greeting); + return Promise.resolve({response: "Hi from content script"}); +});</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatiblité_des_navigateurs">Compatiblité des navigateurs</h2> + +<p class="hidden">La table de compatibilité de cette page est générée depuis des données établies. Si vous souhaitez contriburer aux données, merci de regarder <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> et de nous envoyer une pull-request.</p> + +<p>{{Compat("webextensions.api.tabs.sendMessage")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/sendrequest/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/sendrequest/index.html new file mode 100644 index 0000000000..55a2546655 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/sendrequest/index.html @@ -0,0 +1,93 @@ +--- +title: tabs.sendRequest() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/sendRequest +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - sendRequest + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/sendRequest +--- +<div>{{AddonSidebar()}}</div> + +<div class="warning"> +<p>Cette méthode a été dépréciée. Utilisez {{WebExtAPIRef("tabs.sendMessage()")}} à la place.</p> +</div> + +<p>Envoie une seule requête au(x) script(s) de contenu dans l'onglet spécifié, avec un rappel facultatif à exécuter lorsqu'une réponse est renvoyée. L'événement {{WebExtAPIRef('extension.onRequest')}} est déclenché dans chaque script de contenu exécuté dans l'onglet spécifié pour l'extension en cours.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var sending = browser.tabs.sendRequest( + tabId, // integer + request // any +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code></dt> + <dd><code>integer</code>.</dd> + <dt><code>request</code></dt> + <dd><code>any</code>.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec l'objet de réponse JSON envoyé par le gestionnaire du message dans le script de contenu, ou sans arguments si le script de contenu n'a pas envoyé de réponse. Si une erreur survient lors de la connexion à l'onglet spécifié ou si une autre erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.sendRequest")}}</p> + + + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/setzoom/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/setzoom/index.html new file mode 100644 index 0000000000..1a6402d61d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/setzoom/index.html @@ -0,0 +1,107 @@ +--- +title: tabs.setZoom() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/setZoom +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - setZoom + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/setZoom +--- +<div>{{AddonSidebar()}}</div> + +<p>Effectue un zoom sur l'onglet spécifié.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var zooming = browser.tabs.setZoom( + tabId, // optional integer + zoomFactor // number +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet à zoomer. Par défaut à l'onglet actif de la fenêtre en cours.</dd> + <dt><code>zoomFactor</code></dt> + <dd><code>number</code>. Le nouveau facteur de zoom. Utilisez une valeur de 0 ici pour régler l'onglet à son facteur de zoom par défaut actuel. Sinon, il doit s'agir d'un nombre compris entre 0,3 et 3, en spécifiant un facteur de zoom.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> cela sera accompli sans arguments après que le facteur de zoom ait été changé. Si l'onglet n'a pas pu être trouvé ou qu'une autre erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Set the zoom factor for the current tab to 2:</p> + +<pre class="brush: js">function onError(error) { + console.log(`Error: ${error}`); +} + +var setting = browser.tabs.setZoom(2); +setting.then(null, onError);</pre> + +<p>Set the zoom factor for the tab whose ID is 16 tab to 0.5:</p> + +<pre class="brush: js">function onError(error) { + console.log(`Error: ${error}`); +} + +var setting = browser.tabs.setZoom(16, 0.5); +setting.then(null, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.setZoom")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/setzoomsettings/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/setzoomsettings/index.html new file mode 100644 index 0000000000..38a51e8572 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/setzoomsettings/index.html @@ -0,0 +1,102 @@ +--- +title: tabs.setZoomSettings() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/setZoomSettings +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - setZoomSettings + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/setZoomSettings +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit les paramètres de zoom pour l'onglet spécifié. Ces paramètres sont réinitialisés aux paramètres par défaut lors de la navigation dans l'onglet.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var settingZoomSettings = browser.tabs.setZoomSettings( + tabId, // optional integer + zoomSettings // ZoomSettings +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet pour modifier les paramètres de zoom pour. Par défaut à l'onglet actif de la fenêtre en cours.</dd> + <dt><code>zoomSettings</code></dt> + <dd>{{WebExtAPIRef('tabs.ZoomSettings')}}. Définit comment les modifications de zoom sont gérées et à quelle portée.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments après que les paramètres de zoom ont été modifiés. Si l'onglet n'a pas pu être trouvé ou qu'une autre erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Désactiver le zoom pour l'onglet actuel :</p> + +<pre class="brush: js">function onSet() { + console.log(`Set zoom factor`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var setting = browser.tabs.setZoomSettings({mode:"disabled"}); +setting.then(onSet, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.setZoomSettings")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/show/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/show/index.html new file mode 100644 index 0000000000..969264f963 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/show/index.html @@ -0,0 +1,73 @@ +--- +title: tabs.show() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/show +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - show + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/show +--- +<div>{{AddonSidebar()}}</div> + +<p>Affiche un ou plusieurs onglets précédemment masqués par un appel à {{WebExtAPIRef("tabs.hide")}}.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var showing = browser.tabs.show( + tabIds // integer or integer array +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabIds</code></dt> + <dd><code><code>integer</code></code> or <code><code>array</code></code> of <code><code>integer</code></code>. Les ID de l'onglet ou des onglets à afficher.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera accomplie sans arguments. Si une erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Afficher un seul onglet :</p> + +<pre class="brush: js">function onShown() { + console.log(`Shown`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.tabs.show(2).then(onShown, onError);</pre> + +<p>Afficher plusieurs onglets :</p> + +<pre class="brush: js">function onShown() { + console.log(`Shown`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.tabs.show([15, 14, 1]).then(onShown, onError);</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.show")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/tab/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/tab/index.html new file mode 100644 index 0000000000..b0650208df --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/tab/index.html @@ -0,0 +1,127 @@ +--- +title: tabs.Tab +slug: Mozilla/Add-ons/WebExtensions/API/tabs/Tab +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Tab + - Type + - WebExtensions + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/Tab +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <strong><code>tabs.Tab</code></strong> contient des informations sur un onglet. Cela donne accès à des informations sur le contenu de l'onglet, la taille du contenu, les états spéciaux ou les restrictions en vigueur, etc.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>active</code></dt> + <dd><code>boolean</code>. Si l'onglet est actif dans sa fenêtre. Ceci peut être vrai même si la fenêtre de l'onglet n'est pas actuellement focalisée.</dd> + <dd>L'onglet actif est généralement l'onglet sélectionné. Cependant, sur Firefox pour Android, les popups d'extension s'ouvrent dans un nouvel onglet. Lorsque cet onglet popup est sélectionné, l'onglet actif sera plutôt celui dans lequel le popup s'est ouvert.</dd> + <dt><code>attention</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Indique si l'onglet attire l'attention. Par exemple, lorsque l'onglet affiche un dialogue modal, <code>attention</code> sera à <code>true</code>.</dd> + <dt><code>audible</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'onglet n'est pas coupé: si l'onglet produit du son. Si l'onglet est coupé: si l'onglet produit un son, s'il n'est pas muet.</dd> + <dt><code>autoDiscardable</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'onglet peut être supprimé automatiquement par le navigateur lorsque les ressources sont faibles.</dd> + <dt><code>cookieStoreId</code> {{optional_inline}}</dt> + <dd><code>string</code>. Le magasin de cookies de l'onglet. Si différents onglets peuvent avoir différents magasins de cookies (par exemple, pour prendre en charge l'<a href="https://wiki.mozilla.org/Security/Contextual_Identity_Project/Containers">identitié contextuelle</a>), vous pouvez passer cette option <code>storeId</code> dans différentes méthodes de l'API {{WebExtAPIRef("cookies")}}, pour définir et obtenir des cookies associés à Le magasin de cookies de cet onglet. Seulement présent si l'extension a la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"cookies".</code></dd> + <dt><code>discarded</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'onglet est ignoré. Un onglet supprimé est celui dont le contenu a été déchargé de la mémoire, mais est toujours visible dans la bande d'onglets. Son contenu est rechargé la prochaine fois qu'il est activé.</dd> + <dt><code>favIconUrl</code> {{optional_inline}}</dt> + <dd><code>string</code>. L'URL de la favicon de l'onglet. Seulement présent si l'extension a la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"tabs"</code>. Il peut également s'agir d'une chaîne vide si l'onglet est en cours de chargement.</dd> + <dt><code>height</code> {{optional_inline}}</dt> + <dd><code>integer</code>. La hauteur de l'onglet en pixels.</dd> + <dt><code>hidden</code></dt> + <dd><code>boolean</code>. Si l'onglet est caché.</dd> + <dt><code>highlighted</code></dt> + <dd><code>boolean</code>. Si l'onglet est en surbrillance, c'est-à-dire une partie de la sélection de l'onglet en cours. Un onglet actif est toujours mis en surbrillance, mais certains navigateurs peuvent permettre de mettre en surbrillance des onglets supplémentaires, par exemple en cliquant dessus tout en maintenant les touches <kbd>Ctrl</kbd>, <kbd>Shift</kbd> ou <kbd>⌘ Command</kbd> .</dd> + <dd>Firefox pour Android ne prend pas en charge la mise en surbrillance de plusieurs onglets, et le bureau Firefox nécessite la préférence <code>browser.tabs.multiselect</code> (activé par défaut).</dd> + <dt><code>id</code> {{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet. Les ID d'onglet sont uniques dans une session de navigateur. L'ID d'onglet peut également être défini sur {{WebExtAPIRef('tabs.TAB_ID_NONE')}} pour les fenêtres de navigateur qui n'hébergent pas d'onglets de contenu (par exemple, les fenêtres devtools).</dd> + <dt><code>incognito</code></dt> + <dd><code>boolean</code>. Si l'onglet est dans une fenêtre de navigation privée.</dd> + <dt><code>index</code></dt> + <dd><code>integer</code>. L'indice de base zéro de l'onglet dans sa fenêtre.</dd> + <dt><code>isArticle</code></dt> + <dd><code>boolean</code>. Vrai si l'onglet peut être <a href="/fr/Add-ons/WebExtensions/API/tabs/toggleReaderMode">rendu en mode lecteur</a>, sinon faux.</dd> + <dt><code>isInReaderMode</code></dt> + <dd><code>boolean</code>. Vrai si l'onglet en cours de <a href="/fr/Add-ons/WebExtensions/API/tabs/toggleReaderMode">rendu en mode lecteur</a>, sinon faux.</dd> + <dt><code>lastAccessed</code></dt> + <dd><code>double</code>. Heure à laquelle l'onglet a été accédé pour la dernière fois, en <a class="external external-icon" href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>mutedInfo</code> {{optional_inline}}</dt> + <dd>{{WebExtAPIRef('tabs.MutedInfo')}}. L'état en sourdine actuel pour l'onglet et la raison du dernier changement d'état.</dd> + <dt><code>openerTabId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet qui a ouvert cet onglet, le cas échéant. Cette propriété n'est présente que si l'onglet d'ouverture existe toujours.</dd> + <dt><code>pinned</code></dt> + <dd><code>boolean</code>. Si l'onglet est épinglé.</dd> + <dt><code>selected</code> {{deprecated_inline}}</dt> + <dd><code>boolean</code>. Si l'onglet est sélectionné. Cette propriété a été remplacée par <code>active</code> et <code>highlighted</code>.</dd> + <dt><code>sessionId</code> {{optional_inline}}</dt> + <dd><code>string</code>. L'identifiant de session utilisé pour identifier de façon unique un <code>onglet</code> obtenu à partir de l'API {{WebExtAPIRef('sessions')}}.</dd> + <dt><code>status</code> {{optional_inline}}</dt> + <dd><code>string</code>. Soit <em>charger</em> ou <em>compléter</em>.</dd> + <dt><code>successorId</code> {{optional_inline}}</dt> + <dd><code>integer</code> L'ID du successeur de l'onglet.</dd> + <dt><code>title</code> {{optional_inline}}</dt> + <dd><code>string</code>. Le titre de l'onglet. Seulement présent si l'extension à la <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"tabs".</code></dd> + <dt><code>url</code> {{optional_inline}}</dt> + <dd><code>string</code>. L'URL du document que l'onglet affiche. Seulement présent si l'extension à la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"tabs"</code>.</dd> + <dt><code>width</code> {{optional_inline}}</dt> + <dd><code>integer</code>. La largeur de l'onglet en pixels</dd> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. L'ID de la fenêtre qui héberge cet onglet.**</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.Tab", 10)}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/tab_id_none/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/tab_id_none/index.html new file mode 100644 index 0000000000..e12d79bdde --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/tab_id_none/index.html @@ -0,0 +1,68 @@ +--- +title: tabs.TAB_ID_NONE +slug: Mozilla/Add-ons/WebExtensions/API/tabs/TAB_ID_NONE +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Property + - Reference + - TAB_ID_NONE + - WebExtensions + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/TAB_ID_NONE +--- +<div>{{AddonSidebar()}}</div> + +<p>Une valeur d'ID spéciale donnée aux onglets qui ne sont pas des onglets du navigateur (par exemple, des onglets dans les fenêtres devtools).</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.TAB_ID_NONE")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#property-TAB_ID_NONE"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/tabstatus/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/tabstatus/index.html new file mode 100644 index 0000000000..7b32459ba0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/tabstatus/index.html @@ -0,0 +1,72 @@ +--- +title: tabs.TabStatus +slug: Mozilla/Add-ons/WebExtensions/API/tabs/TabStatus +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - TabStatus + - Type + - WebExtensions + - tazbs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/TabStatus +--- +<div>{{AddonSidebar()}}</div> + +<p>Indique si l'onglet a terminé le chargement.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont : <code>"loading"</code> et <code>"complete"</code>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.TabStatus")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/togglereadermode/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/togglereadermode/index.html new file mode 100644 index 0000000000..aeaf6287c4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/togglereadermode/index.html @@ -0,0 +1,85 @@ +--- +title: tabs.toggleReaderMode() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/toggleReaderMode +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - tabs + - toogleReaderMode +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/toggleReaderMode +--- +<div>{{AddonSidebar()}}</div> + +<p>Bascule en mode Lecteur pour l'onglet donné.</p> + +<ul> +</ul> + +<p>Cette fonction permet de basculer en mode Lecteur pour l'onglet donné. Il prend un identifiant de tabulation en tant que paramètre: s'il est omis, l'onglet actuellement actif est basculé.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<p>Le mode Lecteur, également connu sous le nom de Reader View, est une fonction de navigateur qui permet à l'utilisateur de se concentrer plus facilement sur un article en :</p> + +<ul> + <li>masquage d'éléments de page non essentiels, tels que des encadrés, des bas de page et des annonces</li> + <li>changer la taille du texte de la page, le contraste et la disposition pour une meilleure lisibilité.</li> +</ul> + +<p>Le mode Lecteur est utile spécifiquement pour les articles: c'est-à-dire, les pages qui ont un corps de texte comme caractéristique principale. Les pages qui n'ont pas d'article identifiable ne peuvent pas être affichées en mode Lecteur. Pour savoir si une page est un article, vérifiez la propriété <code>isArticle</code> de {{WebExtAPIRef("tabs.Tab")}}.</p> + +<p>Pour savoir si un onglet est déjà en mode Lecteur, vérifiez la propriété <code>isInReaderMode</code> de {{WebExtAPIRef("tabs.Tab")}}. Pour suivre les onglets entrant ou sortant du mode Lecteur, vous devez suivre l'état actuel de tous les onglets et vérifier quand <code>isInReaderMode</code> change :</p> + +<pre class="brush: js">function handleUpdated(tabId, changeInfo, tabInfo) { + if (changeInfo.status === "complete") { + console.log(`Tab ${tabId} reader mode: ${tabInfo.isInReaderMode}`); + } +} + +browser.tabs.onUpdated.addListener(handleUpdated);</pre> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var toggling = browser.tabs.toggleReaderMode( + tabId // optional integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet à afficher en mode Lecteur. Par défaut à l'onglet sélectionné de la fenêtre en cours.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans argument lorsque l'onglet a été mis à jour. Si une erreur se produit (par exemple, parce que la page n'était pas un article), la promesse sera rejetée avec un message d'erreur..</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code bascule chaque nouvelle page en mode lecteur, si cette page est éligible pour cela :</p> + +<pre class="brush: js">function switchToReaderMode(tabId, changeInfo, tabInfo) { + if (changeInfo.isArticle) { + browser.tabs.toggleReaderMode(tabId); + } +} + +browser.tabs.onUpdated.addListener(switchToReaderMode);</pre> + +<p>{{WebExtExamples}}</p> + +<p> </p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.toggleReaderMode")}}</p> + +<p> </p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/update/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/update/index.html new file mode 100644 index 0000000000..8fe8ee06ab --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/update/index.html @@ -0,0 +1,172 @@ +--- +title: tabs.update() +slug: Mozilla/Add-ons/WebExtensions/API/tabs/update +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - Update + - WebExtensions + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/update +--- +<div>{{AddonSidebar()}}</div> + +<p>Parcourez l'onglet vers une nouvelle URL ou modifiez d'autres propriétés de l'onglet.</p> + +<p>Pour utiliser cette fonction, transmettez l'ID de l'onglet à mettre à jour et un objet <code>updateProperties</code> contenant les propriétés que vous souhaitez mettre à jour. Les propriétés qui ne sont pas spécifiées dans <code>updateProperties</code> ne sont pas modifiées.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var updating = browser.tabs.update( + tabId, // optional integer + updateProperties // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Par défaut à l'onglet sélectionné de la fenêtre en cours.</dd> + <dt><code>updateProperties</code></dt> + <dd><code>object</code>. L'ensemble des propriétés à mettre à jour pour cet onglet. Pour en savoir plus sur ces propriétés, consultez la documentation {{WebExtAPIRef("tabs.Tab")}}.</dd> + <dd> + <dl class="reference-values"> + <dt><code>active</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'onglet doit devenir actif. Ne modifie pas le focus de la fenêtre (voir {{WebExtAPIRef('windows.update')}}). Si <code>true</code>, les onglets surlignés non actifs cesseront d'être surlignés. Si <code>false</code>, ne fait rien.</dd> + <dt><code>autoDiscardable</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'onglet doit être supprimé automatiquement par le navigateur lorsque les ressources sont faibles.</dd> + <dt><code>highlighted</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Ajoute ou supprime l'onglet de la sélection courante. Si <code>true</code> et que l'onglet n'est pas surligné, il deviendra actif par défaut.</dd> + <dd> + <p>Si vous voulez seulement mettre en surbrillance l'onglet sans l'activer, Firefox accepte le réglage <code>highlighted</code> à <code>true</code> et <code>active</code> à <code>false</code>. D'autres navigateurs peuvent activer l'onglet même dans ce cas.</p> + </dd> + <dt><code>loadReplace</code>{{optional_inline}}</dt> + <dd> + <p><code>boolean</code>. Si la nouvelle URL doit remplacer l'ancienne URL dans l'historique de navigation de l'onglet, accessible via le bouton "Retour".</p> + + <p>Par exemple, supposons que l'utilisateur crée un nouvel onglet en utilisant Ctrl + T. Par défaut, dans Firefox, cela chargerait "about:newtab". Si votre extension met alors à jour cette page en utilisant {{WebExtAPIRef("tabs.update")}}, sans <code>loadReplace</code>, le bouton "retour" sera activé et ramènera l'utilisateur à "about:newtab". Si l'extension définit <code>loadReplace</code>, le bouton "retour" sera désactivé et ce sera comme si l'URL fournie par l'extension était la première page visitée dans cet onglet.</p> + + <p>Notez cependant que l'URL d'origine apparaîtra toujours dans l'historique global du navigateur.</p> + </dd> + <dt><code>muted</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'onglet doit être coupé.</dd> + <dt><code>openerTabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de l'onglet qui a ouvert cet onglet. Si spécifié, l'onglet d'ouverture doit être dans la même fenêtre que cet onglet.</dd> + <dt><code>pinned</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'onglet doit être épinglé.</dd> + <dt><code>selected</code> {{deprecated_inline}} {{optional_inline}}</dt> + <dd><code>boolean</code>. Si l'onglet doit être sélectionné. Cette propriété a été remplacée par <code>active</code> et <code>highlighted</code>.</dd> + <dt><code>successorTabId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. L'identifiant de l'ID du successeur de l'onglet.</dd> + <dt><code>url</code>{{optional_inline}}</dt> + <dd><code>string</code>. Une URL pour naviguer dans l'onglet. </dd> + <dd>Pour des raisons de sécurité, dans Firefox, il se peut que ce ne soit pas une URL privilégiée. Le passage de l'une des URL suivantes échouera, avec {{WebExtAPIRef("runtime.lastError")}} étant défini sur un message d'erreur :</dd> + <dd> + <ul> + <li>chrome: URLs</li> + <li>javascript: URLs</li> + <li>data: URLs</li> + <li>file: URLs (c'est-à-dire, fichiers sur le système de fichiers, cependant, pour utiliser un fichier empaqueté à l'intérieur de l'extension, voir ci-dessous)</li> + <li>confidentiel : URLs (par exemle, <code>about:config</code>, <code>about:addons</code>, <code>about:debugging</code>, <code>about:newtab</code>)<span style="display: none;"> </span>. Les URL non privilégiées (par exemple, <code>about:blank</code>) sont autorisées.</li> + </ul> + Pour charger une page fournie avec votre extension, spécifiez une URL absolue à partir du fichier manifest.json de l'extension. Par exemple : '/path/to/my-page.html'. Si vous omettez le premier caractère '/', l'URL est traitée comme une URL relative et différents navigateurs peuvent construire différentes URL absolues.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>A <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef('tabs.Tab')}} contenant des détails sur l'onglet mis à jour. L'objet {{WebExtAPIRef('tabs.Tab')}} ne contient pas d' <code>url</code>, <code>title</code> et <code>favIconUrl</code> sauf si la permission <code>"tabs"</code> a été demandée. Si l'onglet n'a pas pu être trouvé ou qu'une autre erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Naviguez dans l'onglet actif de la fenêtre en cours pour https://developer.mozilla.org :</p> + +<pre class="brush: js">function onUpdated(tab) { + console.log(`Updated tab: ${tab.id}`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var updating = browser.tabs.update({url: "https://developer.mozilla.org"}); +updating.then(onUpdated, onError);</pre> + +<p>Activez le premier onglet de la fenêtre actuelle et naviguez jusqu'à https://developer.mozilla.org:</p> + +<pre class="brush: js">function onUpdated(tab) { + console.log(`Updated tab: ${tab.id}`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +function updateFirstTab(tabs) { + var updating = browser.tabs.update(tabs[0].id, { + active: true, + url: "https://developer.mozilla.org" + }); + updating.then(onUpdated, onError); +} + +var querying = browser.tabs.query({currentWindow:true}); +querying.then(updateFirstTab, onError);</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.tabs.update", 10)}}</p> + + + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l’API <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a> de Chromium. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/windowtype/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/windowtype/index.html new file mode 100644 index 0000000000..b952ce711b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/windowtype/index.html @@ -0,0 +1,79 @@ +--- +title: tabs.WindowType +slug: Mozilla/Add-ons/WebExtensions/API/tabs/WindowType +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - WindowType + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/WindowType +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type de fenêtre qui héberge cet onglet.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont:</p> + +<ul> + <li><strong>"normal"</strong></li> + <li><strong>"popup"</strong></li> + <li><strong>"panel"</strong></li> + <li><strong>"devtools"</strong></li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.WindowType")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/zoomsettings/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/zoomsettings/index.html new file mode 100644 index 0000000000..2447db6866 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/zoomsettings/index.html @@ -0,0 +1,81 @@ +--- +title: tabs.ZoomSettings +slug: Mozilla/Add-ons/WebExtensions/API/tabs/ZoomSettings +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - ZoomSettings + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/ZoomSettings +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit les paramètres de zoom pour un onglet : {{WebExtAPIRef("tabs.ZoomSettingsMode", "mode")}}, {{WebExtAPIRef("tabs.ZoomSettingsScope", "scope")}}, et le facteur de zoom par défaut.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>defaultZoomFactor</code>{{optional_inline}}</dt> + <dd><code>number</code>. Le niveau de zoom par défaut pour l'onglet actuel. Notez que ceci n'est utilisé que dans {{WebExtAPIRef("tabs.getZoomSettings")}}.</dd> + <dt><code>mode</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('tabs.ZoomSettingsMode')}}. Définit si les modifications de zoom sont gérées par le navigateur, par l'extension ou désactivées.</dd> + <dt><code>scope</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('tabs.ZoomSettingsScope')}}. Définit si les changements de zoom persisteront pour l'origine de la page ou ne prendront effet que dans cet onglet.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.ZoomSettings")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/zoomsettingsmode/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/zoomsettingsmode/index.html new file mode 100644 index 0000000000..afd63cf859 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/zoomsettingsmode/index.html @@ -0,0 +1,81 @@ +--- +title: tabs.ZoomSettingsMode +slug: Mozilla/Add-ons/WebExtensions/API/tabs/ZoomSettingsMode +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - ZoomSettingsMode + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/ZoomSettingsMode +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit comment les modifications de zoom sont gérées. Les extensions peuvent transférer cette valeur dans {{WebExtAPIRef("tabs.setZoomSettings()")}} pour contrôler la façon dont le navigateur gère les tentatives de modification des paramètres de zoom pour un onglet. Par défaut à "automatique".</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<dl> + <dt>"automatic"</dt> + <dd>Les modifications de zoom sont gérées normalement par le navigateur.</dd> + <dt>"disabled"</dt> + <dd>Désactive tout zoom dans l'onglet. L'onglet revient au niveau de zoom par défaut, et toutes les modifications de zoom tentées seront ignorées.</dd> + <dt>"manual"</dt> + <dd>L'extension gère elle-même les changements de zoom, en écoutant l'événement {{WebExtAPIRef("tabs.onZoomChange")}} et en redimensionnant la page en conséquence. Ce mode ne prend pas en charge le zoom <code>per-origin</code> : il ignore la <code>portée</code> {{WebExtAPIRef("tabs.zoomSettings", "zoom setting")}} et utilise toujours la fonction <code>per-tab</code>.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.ZoomSettingsMode")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/tabs/zoomsettingsscope/index.html b/files/fr/mozilla/add-ons/webextensions/api/tabs/zoomsettingsscope/index.html new file mode 100644 index 0000000000..71c95f7e60 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/tabs/zoomsettingsscope/index.html @@ -0,0 +1,79 @@ +--- +title: tabs.ZoomSettingsScope +slug: Mozilla/Add-ons/WebExtensions/API/tabs/ZoomSettingsScope +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - ZoomSettingsScope + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/API/tabs/ZoomSettingsScope +--- +<div>{{AddonSidebar()}}</div> + +<p>Définit si les changements de zoom persisteront pour l'origine de la page ou ne prendront effet que dans cet onglet. La valeur par défaut est à <code>per-origin</code> lorsque {{WebExtAPIRef("tabs.zoomSettingsMode")}} est "automatique", et est toujours <code>per-tab</code>.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<dl> + <dt>"per-origin"</dt> + <dd>Tous les autres onglets ayant la même origine que cet onglet auront les changements de zoom qui leur sont appliqués. Cette étendue n'est disponible que si if {{WebExtAPIRef("tabs.zoomSettingsMode")}} est "automatique".</dd> + <dt>"per-tab"</dt> + <dd>Les changements de zoom ne prennent effet que dans cet onglet et les changements de zoom dans les autres onglets n'affectent pas le zoom de cet onglet. De plus, les changements de zoom <code>per-tab</code> ont réinitialisés lors de la navigation ; la navigation dans un onglet charge toujours les pages avec <code>per-origin</code> de zoom d'origine.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.tabs.ZoomSettingsScope")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/tabs#method-executeScript"><code>chrome.tabs</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/tabs.json"><code>tabs.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/theme/getcurrent/index.html b/files/fr/mozilla/add-ons/webextensions/api/theme/getcurrent/index.html new file mode 100644 index 0000000000..8e79c32bc7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/theme/getcurrent/index.html @@ -0,0 +1,66 @@ +--- +title: theme.getCurrent() +slug: Mozilla/Add-ons/WebExtensions/API/theme/getCurrent +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - Theme + - WebExtensions + - getCurrent +translation_of: Mozilla/Add-ons/WebExtensions/API/theme/getCurrent +--- +<div>{{AddonSidebar()}}</div> + +<p>Retourne le theme utilisé actuellement sous la forme d'un objet {{WebExtAPIRef("theme.Theme", "Theme")}}. Les arguments disponible dans l'objet couleur sont listés dans les <a href="/fr/Add-ons/WebExtensions/manifest.json/theme#colors">propriétés de la couleur</a>.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie un objet <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getting = browser.theme.getCurrent( + <em>windowId</em> // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. L'ID d'une fenêtre. Si cela est indiqué, le thème appliqué sur cette fenêtre sera retourné. Sinon le thème appliqué sur la dernière fenêtre active sera retourné.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Un objet <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. L'objet Promise sera résolu avec un objet {{WebExtAPIRef("theme.Theme")}} représentant le thème appliqué à la fenêtre spécifiée. Si aucun thème provenant d'une extension a été appliqué, l'objet Promise sera résolu avec un objet vide.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.theme.getCurrent", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtient les propriétés des couleurs <code>accentcolor</code> et <code>toolbar</code> dans le thème actuel.</p> + +<pre class="brush: js">function getStyle(themeInfo) +{ + if (themeInfo.colors) + { + console.log("accent color : " + themeInfo.colors.accentcolor); + console.log("toolbar : " + themeInfo.colors.toolbar); + } +} + +async function getCurrentThemeInfo() +{ + var themeInfo = await browser.theme.getCurrent(); + getStyle(themeInfo); +} + +getCurrentThemeInfo();</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/theme/index.html b/files/fr/mozilla/add-ons/webextensions/api/theme/index.html new file mode 100644 index 0000000000..9e7cd40392 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/theme/index.html @@ -0,0 +1,50 @@ +--- +title: theme +slug: Mozilla/Add-ons/WebExtensions/API/theme +tags: + - Extensions + - Themes + - WebExtensions + - add-on +translation_of: Mozilla/Add-ons/WebExtensions/API/theme +--- +<div>{{AddonSidebar}}</div> + +<p>Permet aux extensions du navigateur de mettre à jour le thème du navigateur.</p> + +<p>Pour utiliser cette API, une extension doit demander la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "theme" dans son fichier <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a>.</p> + +<div class="note"> +<p>Note: quand on met un thème en arrière plan, on doit déclarer la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> 'theme' et on ne peut pas utiliser la fonction <a href="/fr/Add-ons/WebExtensions/manifest.json/theme">theme</a> du manifest, puisque ce n'est pas compatible.</p> +</div> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("theme.Theme")}}</dt> + <dd>Représente le contenu d'un thème.</dd> +</dl> + +<h2 id="Fonctions">Fonctions</h2> + +<dl> + <dt>{{WebExtAPIRef("theme.getCurrent()")}}</dt> + <dd>Retourne le thème actuel du navigateur.</dd> + <dt>{{WebExtAPIRef("theme.update()")}}</dt> + <dd>Met à jour à le thème du navigateur.</dd> + <dt>{{WebExtAPIRef("theme.reset()")}}</dt> + <dd>Supprime les mises à jour de thèmes effectuées lors d'un appel à {{WebExtAPIRef("theme.update()")}}.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("theme.onUpdated")}}</dt> + <dd>Emis quand le thème du navigateur change.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.theme")}}</p> + +<p>{{WebExtExamples("h2")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/theme/onupdated/index.html b/files/fr/mozilla/add-ons/webextensions/api/theme/onupdated/index.html new file mode 100644 index 0000000000..6e06fbf0d6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/theme/onupdated/index.html @@ -0,0 +1,85 @@ +--- +title: theme.onUpdated +slug: Mozilla/Add-ons/WebExtensions/API/theme/onUpdated +tags: + - Add-ons + - Event + - Extensions + - Theme + - WebExtensions; +translation_of: Mozilla/Add-ons/WebExtensions/API/theme/onUpdated +--- +<div>{{AddonSidebar()}}</div> + +<p>L'événement se déclenche lorsqu'un thème fourni en tant qu'extension de navigateur est appliqué ou supprimé, plus précisément :</p> + +<ul> + <li>Quand un <a href="/fr/Add-ons/Themes/Theme_concepts#Static_themes">thème statique</a> est installé</li> + <li>Quand un <a href="/fr/Add-ons/WebExtensions/API/theme">thème dynamique </a>appelle <code><a href="/fr/Add-ons/WebExtensions/API/theme/update">theme.update()</a></code> ou <code><a href="/fr/Add-ons/WebExtensions/API/theme/update">theme.reset()</a></code></li> + <li>Quand un thème est désinstallé</li> +</ul> + +<p>Notez que cet événement n'est pas déclenché pour les thèmes intégrés.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.theme.onUpdated.addListener(listener) +browser.theme.onUpdated.removeListener(listener) +browser.theme.onUpdated.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrête d'écouter cet événement. L'argument de <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si <code>listener</code> est enregistré pour cet événement. Retourne <code>true</code> s'il écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les paramètres suivants :</p> + + <dl class="reference-values"> + <dt><code>updateInfo</code></dt> + <dd> + <p><code>object</code>. Un objet contenant deux propriétés :</p> + + <dl class="reference-values"> + <dt><code>theme</code></dt> + <dd><code>object</code>. Si l'événement a été déclenché parce qu'un thème fourni par une extension a été supprimé, il s'agira d'un objet vide. Si il a été déclenché parce qu'un thème fourni par une extension a été appliqué, ce sera un objet {{WebExtAPIRef("theme.Theme")}} représentant le thème qui a été appliqué.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de la fenêtre pour laquelle le thème a été mis à jour. Si cette propriété n'est pas présente, cela signifie que le thème a été mise à jour globalement.</dd> + </dl> + </dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.theme.onUpdated", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function handleUpdated(updateInfo) { + if (updateInfo.theme.colors) { + console.log(`Theme was applied: ${updateInfo.theme}`); + } else { + console.log(`Theme was removed`); + } +} + +browser.theme.onUpdated.addListener(handleUpdated);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/theme/reset/index.html b/files/fr/mozilla/add-ons/webextensions/api/theme/reset/index.html new file mode 100644 index 0000000000..e4504afb4f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/theme/reset/index.html @@ -0,0 +1,80 @@ +--- +title: theme.reset() +slug: Mozilla/Add-ons/WebExtensions/API/theme/reset +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - Theme + - WebExtensions + - reset +translation_of: Mozilla/Add-ons/WebExtensions/API/theme/reset +--- +<div>{{AddonSidebar()}}</div> + +<p>Réinitialise tout thème appliqué à l'aide de la méthode {{WebExtAPIRef("theme.update()")}}</p> + +<p>Notez que cela réinitialisera toujours le thème au thème par défaut d'origine, même si l'utilisateur a sélectionné un thème différent avant que le thème de cette extension ait été appliqué (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1415267">bug 1415267</a>).</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.theme.reset( windowsId // integer ) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. L'ID d'une fenêtre. Si cela est indiqué, le thème appliqué sur cette fenêtre sera réinitialisé. Sinon le thème sera réinitialisé sur toutes les fenêtres.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.theme.reset")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code applique un thème, puis le supprime lorsque l'utilisateur clique sur une action du navigateur:</p> + +<pre class="brush: js">browser.theme.update(themes.night); + +browser.browserAction.onClicked.addListener(() => { + browser.theme.reset(); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/theme/theme/index.html b/files/fr/mozilla/add-ons/webextensions/api/theme/theme/index.html new file mode 100644 index 0000000000..f411c5af7f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/theme/theme/index.html @@ -0,0 +1,25 @@ +--- +title: Theme +slug: Mozilla/Add-ons/WebExtensions/API/theme/Theme +tags: + - Extension + - Theme + - WebExtensions + - add-on +translation_of: Mozilla/Add-ons/WebExtensions/API/theme/Theme +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet thème représente la spécification d'un thème.</p> + +<h2 id="Type">Type</h2> + +<p>Un <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object">object</a> JSON qui prend les mêmes propriétés que la clé du manifest <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">"theme"</a>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.theme.Theme")}}</p> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/theme/update/index.html b/files/fr/mozilla/add-ons/webextensions/api/theme/update/index.html new file mode 100644 index 0000000000..d935f69cad --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/theme/update/index.html @@ -0,0 +1,86 @@ +--- +title: update +slug: Mozilla/Add-ons/WebExtensions/API/theme/update +tags: + - API + - Add-ons + - Extensions + - Method + - Refernce + - Theme + - Update + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/theme/update +--- +<div>{{AddonSidebar()}}</div> + +<p>Met à jour le thème du navigateur en fonction du contenu de l'objet {{WebExtAPIRef("theme.Theme", "Theme")}} donné.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.theme.update( + windowId, // integer + theme // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. L'ID d'une fenêtre. Si cela est prévu, le thème est appliqué uniquement à cette fenêtre. S'il est omis, le thème est appliqué à toutes les fenêtres.</dd> +</dl> + +<dl> + <dt><code>theme</code></dt> + <dd><code>object</code>. Un objet {{WebExtAPIRef("theme.Theme", "Theme")}} spécifiant des valeurs pour les éléments de l'interface utilisateur que vous voulez modifier</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.theme.update", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Définit le thème du navigateur pour utiliser un graphique solaire avec une couleur de fond complémentaire:</p> + +<pre class="brush: js" dir="ltr">const suntheme = { + images: { + headerURL: 'sun.jpg', + }, + colors: { + accentcolor: '#CF723F', + textcolor: '#111', + } +}; + +browser.theme.update(suntheme);</pre> + +<p dir="ltr">Définissez le thème uniquement pour la fenêtre actuellement ciblée:</p> + +<pre class="brush: js">const day = { + images: { + headerURL: 'sun.jpg', + }, + colors: { + accentcolor: '#CF723F', + textcolor: '#111', + } +}; + +browser.menus.create({ + id: "set-theme", + title: "set theme", + contexts: ["all"] +}); + +async function updateThemeForCurrentWindow() { + let currentWindow = await browser.windows.getLastFocused(); + browser.theme.update(currentWindow.id, day); +} + +browser.menus.onClicked.addListener(updateThemeForCurrentWindow);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/topsites/get/index.html b/files/fr/mozilla/add-ons/webextensions/api/topsites/get/index.html new file mode 100644 index 0000000000..2b737ff1ea --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/topsites/get/index.html @@ -0,0 +1,145 @@ +--- +title: topSites.get() +slug: Mozilla/Add-ons/WebExtensions/API/topSites/get +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Reference + - WebExtensions + - get + - topSites +translation_of: Mozilla/Add-ons/WebExtensions/API/topSites/get +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient un tableau contenant des informations sur les pages que l'utilisateur a visitées souvent et récemment.</p> + +<p>Les navigateurs gardent une liste des pages que l'utilisateur visite souvent et récemment. Ils utilisent cette liste pour aider l'utilisateur à retourner à ces endroits facilement. Par exemple, Firefox fournit par défaut une liste des pages les plus visitées dans la page "Nouvel onglet".</p> + +<p>Pour déterminer quelles pages apparaissent dans la liste et dans quel ordre, le navigateur combine "fréquence" - combien de fois l'utilisateur a visité la page - et "récente" - combien de fois l'utilisateur a visité la page.</p> + +<p>Le navigateur peut ensuite appliquer un filtrage supplémentaire à cette liste avant de la présenter à l'utilisateur. Par exemple, dans Firefox, la page "Nouvel onglet" ne liste qu'une page par domaine, et l'utilisateur peut bloquer l'apparition de pages dans la liste.</p> + +<p>L'API <code>topSites.get()</code> permet à une extension d'accéder à cette liste. Appelé sans aucune option, il fournira la liste filtrée des pages, c'est-à-dire celle qui apparaît dans la page "Nouvel onglet". Cependant, en fournissant diverses options, il est possible pour une extension d'obtenir la liste non filtrée des pages.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<p>Pour utiliser l'API topSites, vous devez avoir la <a href="fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API</a> "topSites"</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingTopSites = browser.topSites.get() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>options</code></dt> + <dd><code>object</code>. Options pour modifier la liste des pages retournées. Il peut s'agir de l'une des propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>includeBlocked</code> {{optional_inline}}</dt> + <dd><code>Boolean</code>. Inclure les pages que l'utilisateur a supprimées de la page "Nouvel onglet". La valeur par défaut est <code>false</code>.</dd> + <dt><code>includeFavicon</code> {{optional_inline}}</dt> + <dd><code>Boolean</code>. Inclure les favicons dans les résultats, pour les pages où ils sont disponibles. La valeur par défaut est <code>false</code>.</dd> + <dt><code>includePinned</code> {{optional_inline}}</dt> + <dd><code>Boolean</code>. inclure les sites que l'utilisateur a épinglés dans le nouvel onglet Firefox.<br> + Par défaut à <code>false</code>.</dd> + <dt><code>includeSearchShortcuts</code> {{optional_inline}}</dt> + <dd><code>Boolean</code>. Inclut les raccourcis de recherche qui apparaissent dans le nouvel onglet Firefox.<br> + Par défaut à <code>false</code>.</dd> + <dt><code>limit</code> {{optional_inline}}</dt> + <dd><code>Integer</code>. Le nombre de pages à retourner. Ce chiffre doit être compris entre 1 et 100 inclusivement. La valeur par défaut est 12.</dd> + <dt><code>onePerDomain</code> {{optional_inline}}</dt> + <dd><code>Boolean</code>. N'incluez qu'une seule page par domaine. La valeur par défaut est <code>true</code>.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Ceci sera réalisé avec un tableau d'objets {{WebExtAPIRef("topSites.MostVisitedURL", "MostVisitedURL")}}, un pour chaque site listé dans la page "Nouvel onglet" du navigateur. Si une erreur se produit, la presse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.topSites.get")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code enregistre le titre et l'UL de tous les sites dans la page "Nouvel onglet" :</p> + +<pre class="brush: js">function logTopSites(topSitesArray) { + for (topSite of topSitesArray) { + console.log(`Title: ${topSite.title}, URL: ${topSite.url}`); + } +} + +function onError(error) { + console.log(error); +} + +var gettingTopSites = browser.topSites.get(); +gettingTopSites.then(logTopSites, onError); +</pre> + +<p>Ce code enregistre le titre et l'URL de toutes les pages d'accueil, y compris celles que l'utilisateur a bloquées, et peut inclure plusieurs pages dans le même domaine :</p> + +<pre class="brush: js">function logTopSites(topSitesArray) { + for (topSite of topSitesArray) { + console.log(`Title: ${topSite.title}, URL: ${topSite.url}`); + } +} + +function onError(error) { + console.log(error); +} + +<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="cm-keyword">var</span> <span class="cm-def">gettingTopSites</span> <span class="cm-operator">=</span> <span class="cm-variable">browser</span>.<span class="cm-property">topSites</span>.<span class="cm-property">get</span>({</span></span></span> +<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="cm-property"> includeBlocked</span>: <span class="cm-atom">true</span>,</span></span></span> +<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="cm-property"> onePerDomain</span>: <span class="cm-atom">false</span></span></span></span> +<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body">});</span></span></span> + +<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="cm-variable">gettingTopSites</span>.<span class="cm-property">then</span>(<span class="cm-variable">logTopSites</span>, <span class="cm-variable">onError</span>);</span></span></span></pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/topSites"><code>chrome.topSites</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/topsites/index.html b/files/fr/mozilla/add-ons/webextensions/api/topsites/index.html new file mode 100644 index 0000000000..b702764b9f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/topsites/index.html @@ -0,0 +1,81 @@ +--- +title: topSites +slug: Mozilla/Add-ons/WebExtensions/API/topSites +tags: + - API + - Add-ons + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions + - topSites +translation_of: Mozilla/Add-ons/WebExtensions/API/topSites +--- +<div>{{AddonSidebar}}</div> + +<p>Utilisez l'API topSites pour obtenir un tableau contenant les pages que l'utilisateur a visitées fréquemment.</p> + +<p>Les navigateurs maintiennent ceci pour aider l'utilisateur à retourner à ces endroits facilement. Par exemple, Firefox fournit par défaut une liste des pages les plus visitées dans la page "Nouvel onglet".</p> + +<p>Pour utiliser l'API topSites, vous devez disposez de l' <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API permission</a> "topSites".</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("topSites.MostVisitedURL")}}</dt> + <dd>Un objet contenant le titre et l'URL d'un site web.</dd> +</dl> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("topSites.get()")}}</dt> + <dd>Obtient un tableau contenant tous les sites répertoriés dans la page "Nouvel onglet" du navigateur. Notez que le nombre de sites renvoyés ici est spécifique au navigateur, et les sites particuliers retournés seront probablement spécifiques à l'utilisateur, en fonction de leur historique de navigation.</dd> +</dl> + +<h2 id="Compatibilité_du_Navigateur">Compatibilité du Navigateur</h2> + + + +<p>{{Compat("webextensions.api.topSites")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/topSites"><code>chrome.topSites</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/topsites/mostvisitedurl/index.html b/files/fr/mozilla/add-ons/webextensions/api/topsites/mostvisitedurl/index.html new file mode 100644 index 0000000000..3b862b78ac --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/topsites/mostvisitedurl/index.html @@ -0,0 +1,79 @@ +--- +title: topSites.MostVisitedURL +slug: Mozilla/Add-ons/WebExtensions/API/topSites/MostVisitedURL +tags: + - API + - Add-ons + - Extensions + - MostVisitedURL + - Non-standard + - Reference + - Type + - WebExtensions + - topSites +translation_of: Mozilla/Add-ons/WebExtensions/API/topSites/MostVisitedURL +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type <code>MostVisitedURL</code> contient deux propriétés : le titre de la page et son URL.</p> + +<h2 id="Type">Type</h2> + +<p>Values of this type are objects. They contain the following properties:</p> + +<dl class="reference-values"> + <dt><code>favicon</code> {{optional_inline}}</dt> + <dd><code>String</code>. Une donnée : URL contenant le favicon de la page, si <code>includeFavicon</code> était donné dans {{WebExtAPIRef("topSites.get()")}} et le favicon était disponible.</dd> + <dt><code>title</code></dt> + <dd><code>String</code>. Le titre de la page.</dd> + <dt><code>url</code></dt> + <dd><code>String</code>. L'URL de la page.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.topSites.MostVisitedURL")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/topSites"><code>chrome.topSites</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/clear/index.html b/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/clear/index.html new file mode 100644 index 0000000000..20428e77c8 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/clear/index.html @@ -0,0 +1,98 @@ +--- +title: clear() +slug: Mozilla/Add-ons/WebExtensions/API/types/BrowserSetting/clear +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - Types + - WebExtensions + - clear +translation_of: Mozilla/Add-ons/WebExtensions/API/types/BrowserSetting/clear +--- +<div>{{AddonSidebar}}</div> + +<p>Utilisez <code>BrowserSetting.clear()</code> pour effacer toutes les modification apportées à l'extension du navigateur. Le paramètre du navigateur revient à sa valeur précédente.</p> + +<p>L'extensions annulera également le contrôle du paramètre, permettant une extension avec une ancienne précédente (c'est à dire, une extensions qui a été installée avant celle-ci) à modifier la paramètre. Voir <code><a href="/fr/Add-ons/WebExtensions/API/privacy/BrowserSetting/set">BrowserSetting.set()</a></code> pour en savoir plus sur le contrôle des paramètres.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>. Si la compensation a échoué, la promesse renvoie une valeur à <code>false</code>. Si l'effacement de la valeur a réussi, il se résout à <code>true</code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var clearing = setting.clear( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd>Un objet vide</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera rempli avec un <code>booléen</code>: <code>true</code> Si le paramètre est effacé, <code>false</code> sinon.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>Voir {{WebExtAPIRef("types.BrowserSetting")}}.</p> + +<h2 id="Exemple">Exemple</h2> + +<p>Effacer le paramètre <code>webRTCIPHandlingPolicy</code> :</p> + +<pre class="brush: js">function onCleared(result) { + if (result) { + console.log("Setting was cleared"); + } else { + console.log("Setting was not cleared"); + } +} + +var clearing = browser.privacy.network.webRTCIPHandlingPolicy.clear({}); +clearing.then(onCleared);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/types"><code>chrome.types</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/get/index.html b/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/get/index.html new file mode 100644 index 0000000000..fb3ef69fdc --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/get/index.html @@ -0,0 +1,121 @@ +--- +title: get() +slug: Mozilla/Add-ons/WebExtensions/API/types/BrowserSetting/get +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - Types + - WebExtensions + - get +translation_of: Mozilla/Add-ons/WebExtensions/API/types/BrowserSetting/get +--- +<div>{{AddonSidebar()}}</div> + +<p>La méthode <code>BrowserSetting.get()</code> obtient la valeur actuelle du paramètre du navigateur et une énumération indiquant comment la valeur du paramètre est actuellement controléee..</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getting = setting.get( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>détails</code></dt> + <dd>Un objet vide.</dd> +</dl> + +<h3 id="Valeur_de_retour">Valeur de retour</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet avec les propriétés suivantes :</p> + +<dl> + <dt><code>value</code></dt> + <dd>La valeur du paramètre. Le type de cette propriété est déterminé par le paramètre particulier.</dd> + <dt><code>levelOfControl</code></dt> + <dd><code>string</code>. Cela représente la façon dont la paramètre est actuellement controllé. Vous pouvez l'utiliser pour vérifier si vous pouvez modifier le paramètre. Voir <code><a href="/fr/Add-ons/WebExtensions/API/privacy/BrowserSetting/set">BrowserSetting.set()</a></code> pour plus détails. Sa valeur peut-être l'une des suivantes : + <table class="fullwidth-table standard-table"> + <tbody> + <tr> + <td><code>"not_controllable"</code></td> + <td>Les extensions ne sont pas autorisées à modifier le paramètre.</td> + </tr> + <tr> + <td><code>"controlled_by_other_extensions"</code></td> + <td>Une autre extension qui a été installée après celle-ci a modifié ce paramètre</td> + </tr> + <tr> + <td><code>"controllable_by_this_extension"</code></td> + <td>Cette extension est autorisée à modifier le paramètre.</td> + </tr> + <tr> + <td><code>"controlled_by_this_extension"</code></td> + <td>Cette extensions a déjà modifi le paramètre.</td> + </tr> + </tbody> + </table> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>Voir {{WebExtAPIRef("types.BrowserSetting")}}.</p> + +<h2 id="Exemple">Exemple</h2> + +<p>Enregitrez la valeur et le niveau de contrôle de la propriété <code>networkPredictionEnabled</code> de l'objet {{WebExtAPIRef("privacy.network")}}, pour les fenêtres de navigations privées. Notez que cela nécessite la permission du navigateur "privacy".</p> + +<pre class="brush: js">var getting = browser.privacy.network.networkPredictionEnabled.get({}); + +getting.then((got) => { + console.log(`Value: ${got.value}`); + console.log(`Control: ${got.levelOfControl}`); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/types"><code>chrome.types</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/index.html b/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/index.html new file mode 100644 index 0000000000..27e2adf49c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/index.html @@ -0,0 +1,85 @@ +--- +title: BrowserSetting +slug: Mozilla/Add-ons/WebExtensions/API/types/BrowserSetting +tags: + - API + - Add-ons + - BrowserSetting + - Extensions + - Reference + - Type + - Types + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/types/BrowserSetting +--- +<div>{{AddonSidebar()}}</div> + +<p>Un <code>BrowserSetting</code> est un objet représentant un paramètre de navigateur.</p> + +<p>Il fournit des méthodes pour définir et obtenir la valeur sous-jacente du paramètre, pour effacer tout changement que vous avez apporté et pour écouter les modifications apportées à sa valeur.</p> + +<p>Notez que si cet objet est basé sur le type <a href="https://developer.chrome.com/extensions/types#type-ChromeSetting">ChromeSetting</a>, cet objet ne fait pas de distinction entre le réglage de la valeur dans les fenêtres de navigation privées. Cela signifie que toutes les parties de l'API relatives à la navigation privée (telles que l'option <code>scope</code> de <code>ChromeSetting.set()</code>) ne sont pas implémentées.</p> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("types.BrowserSetting.get()")}}</dt> + <dd>Obtenez la valeur actuelle du paramètre et une énumération représentant la façon dont le paramètre est actuellement contrôlé.</dd> + <dt>{{WebExtAPIRef("types.BrowserSetting.set()")}}</dt> + <dd>Réglez le paramètre sur une nouvelle valeur.</dd> + <dt>{{WebExtAPIRef("types.BrowserSetting.clear()")}}</dt> + <dd>Effacez toute modification apportée au paramètre par cette extension.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("types.BrowserSetting.onChange")}}</dt> + <dd>Définit lorsque la valeur du paramètre change.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + + + +<p>{{Compat("webextensions.api.types.BrowserSetting")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/types"><code>chrome.types</code></a>.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/onchange/index.html b/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/onchange/index.html new file mode 100644 index 0000000000..bd29ceaec4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/onchange/index.html @@ -0,0 +1,128 @@ +--- +title: onChange +slug: Mozilla/Add-ons/WebExtensions/API/types/BrowserSetting/onChange +tags: + - API + - Add-ons + - BrowserSetting + - Event + - Extensions + - Privacy + - Reference + - WebExtensions + - onchange +translation_of: Mozilla/Add-ons/WebExtensions/API/types/BrowserSetting/onChange +--- +<p>{{AddonSidebar()}}</p> + +<p>L'événement <code>BrowserSetting.onChanged</code> est déclenché lorsque le paramètre est modifié.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">BrowserSetting.onChanged.addListener(listener) +BrowserSetting.onChanged.removeListener(listener) +BrowserSetting.onChanged.hasListener(listener) +</pre> + +<p>Les événement ont trois fonctions :</p> + +<dl> + <dt><code>addListener(listener)</code></dt> + <dd>Ajout un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifier si l'auditeur est enregistré pour cet événement. Renvoie <code>true</code> si elle écoute, <code>false</code> sinon.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Une fonction de rappel qui sera appelée lorsque cet événement se produira. La fonction passera les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd>Un <code>object</code> contenant des détails sur le changement survenu. Ses propriété sont les suivantes : + <dl class="reference-values"> + <dt><code>value</code></dt> + <dd>La nouvelle valeur du paramètre. Le type de cette propriété est déterminé par le paramètre particulier.</dd> + <dt><code>levelOfControl</code></dt> + <dd><code>string</code>. Cela représente la façon dont le paramètre est actuellement controlé. Vous pouvez l'utiliser pour vérifier si vous pouvez modifier le réglage. Voir <code><a href="/fr/Add-ons/WebExtensions/API/privacy/BrowserSetting/set">BrowserSetting.set()</a></code> pour plus détails. Sa valeur peut-être l'une des suivantes : + <table class="fullwidth-table standard-table"> + <tbody> + <tr> + <td><code>"not_controllable"</code></td> + <td>Les extensions ne sont pas autorisées à modifier ce paramètre.</td> + </tr> + <tr> + <td><code>"controlled_by_other_extensions"</code></td> + <td>Une autre extensions qui a été installée après celle-ci a modifié ce paramètre.</td> + </tr> + <tr> + <td><code>"controllable_by_this_extension"</code></td> + <td>Cette extensions est autorisée à modifier le paramètre.</td> + </tr> + <tr> + <td><code>controlled_by_this_extension"</code></td> + <td>Cette extensions a déjà modifié le paramètre.</td> + </tr> + </tbody> + </table> + </dd> + </dl> + </dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.types.BrowserSetting.onChange")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/types"><code>chrome.types</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/set/index.html b/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/set/index.html new file mode 100644 index 0000000000..36d7b7ae6d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/types/browsersetting/set/index.html @@ -0,0 +1,127 @@ +--- +title: set() +slug: Mozilla/Add-ons/WebExtensions/API/types/BrowserSetting/set +tags: + - API + - Add-ons + - BrowserSetting + - Extensions + - Privacy + - Reference + - WebExtensions + - set +translation_of: Mozilla/Add-ons/WebExtensions/API/types/BrowserSetting/set +--- +<div>{{AddonSidebar()}}</div> + +<p>Utilisez <code>BrowserSetting.set()</code> pour modifier le paramètre du navigateur vers une nouvelle valeur.</p> + +<p>Certaines règles peuvent être restreintes lorsque les extensions sont capables de modifier les paramètres :</p> + +<ul> + <li>Certains paramètres sont verrouillés, de sorte qu'ils ne peuvent pas être modifiés par les extensions</li> + <li>Si plusieurs extensions tentent de modifier le même paramètre, les extensions reçoivent un ordre de priorité en fonction de leur installation. Plus récemment, les extensions installées ont priorité sur l'extension installée récemment.</li> +</ul> + +<p>Cela signifie que si l'extension X essaie de modifier un paramètre :</p> + +<ol> + <li>Si le réglage est verrouillé, le réglage n'est pas modifié. Cependant, le changement de X est rappelé, et il est stocké dans une file d'attente, commandé par la priorité de X par rapport à toutes les autres extensions qui ont essayé de modifier le paramètre. Si le réglage devient déverrouillé plus tard, la première extension de la file d'attente permet de modifier le réglage.</li> + <li>Sinon, si aucune autre extension n'a déjà changé le paramètre, X réussit à modifier le réglage, puis on dit "contrôler" le réglage.</li> + <li>Sinon, si une extension de priorité inférieure Y a déjà changé le paramètre, X réussit à modifier le réglage et maintenant le réglage. However, Y's change is remembered, and is stored in a queue in precedence order. Cependant, le changement de Y est rappelé et est stocké dans une file d'attente dans l'ordre de priorité. Si X efface ensuite sa valeur, ou si X est désactivé ou désinstallé, la première extension de la file d'attente permet de modifier sa valeur.</li> + <li>Sinon, si une extension de priorité supérieure Z a déjà changé le paramètre, X ne réussit pas à modifier le paramètre, mais sa modification est mise en file d'attente. Si Z efface ensuite sa valeur, ou si Z est désactivé ou désinstallé, la première extension de la file d'attente permet de modifier sa valeur.</li> +</ol> + +<p>Une extension peut déterminer lequel de ces scénarios s'applique en examinant la propriété "<code>levelOfControl</code>" renvoyée d'un appel à <code><a href="/fr/Add-ons/WebExtensions/API/privacy/BrowserSetting/get">BrowserSetting.get()</a></code>.</p> + +<p>la méthode <code><a href="/fr/Add-ons/WebExtensions/API/privacy/BrowserSetting/set">BrowserSetting.set()</a></code> renvoie une promesse qui résout un booléen : Si une tentative de modification d'un paramètre aboutit à la modification du paramètre (scenarios 2 et 3 ci-dessus) le booléen est <code>true</code>: sinon il est <code>false</code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var setting = setting.set( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd>Un objet qui doit contenir la propriété suivante :</dd> + <dd> + <dl class="reference-values"> + <dt><code>value</code></dt> + <dd><code>any</code>. La valeur à laquelle vous souhaitez modifier le paramètre. Son type dépend du réglage particulier.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un <code>booléen</code>: <code>true</code> si le paramètre a été modifié, <code>false</code> sinon (par exemple, parce que l'extension n'a pas contrôlé le paramètre).</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>Voir {{WebExtAPIRef("types.BrowserSetting")}}.</p> + +<h2 id="Exemple">Exemple</h2> + +<p>Modifiez le paramètre <code>hyperlinkAuditingEnabled</code> (ceci nécessite la permission "privacy") :</p> + +<pre class="brush: js">function onSet(result) { + if (result) { + console.log("Value was updated"); + } else { + console.log("Value was not updated"); + } +} + +browser.browserAction.onClicked.addListener(() => { + + var setting = browser.privacy.websites.hyperlinkAuditingEnabled.set({ + value: false + }); + setting.then(onSet); + +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/types"><code>chrome.types</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/types/index.html b/files/fr/mozilla/add-ons/webextensions/api/types/index.html new file mode 100644 index 0000000000..bff6b0b60c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/types/index.html @@ -0,0 +1,64 @@ +--- +title: types +slug: Mozilla/Add-ons/WebExtensions/API/types +tags: + - API + - Add-ons + - Extensions + - Reference + - Types + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/types +--- +<div>{{AddonSidebar}}</div> + +<p>Définit le type <code>BrowserSetting</code> , qui est utilisé pour représenter un paramètre de navigateur.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("types.BrowserSetting")}}</dt> + <dd>Représente un paramètre de navigateur.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/types"><code>chrome.types</code></a>.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/userscripts/apiscript/index.html b/files/fr/mozilla/add-ons/webextensions/api/userscripts/apiscript/index.html new file mode 100644 index 0000000000..1af1fed65e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/userscripts/apiscript/index.html @@ -0,0 +1,43 @@ +--- +title: APIScript +slug: Mozilla/Add-ons/WebExtensions/API/userScripts/APIScript +tags: + - APIScript + - Add-ons + - Custimisation + - Extensions + - Firefox + - Reference + - WebExtensions + - userScripts +translation_of: Mozilla/Add-ons/WebExtensions/API/userScripts/APIScript +--- +<p>{{AddOnSidebar}}</p> + +<p>L'APIScript userScripts est un type spécial d'extension Content Script.</p> + +<p>Comme un script de contenu d'extension régulier :</p> + +<ul> + <li>Il s'exécute dans les processus de contenu..</li> + <li>Il a accès à la fenêtre et aux globes de documents relatifs à la page Web à laquelle il est attaché.</li> + <li>Il a accès au même sous-ensemble d'API WebExtension généralement disponibles dans un script de contenu.</li> +</ul> + +<p>Contrairement à une extension régulière Content Script :</p> + +<ul> + <li>Il doit être déclaré dans le manifeste en utilisant la propriété user_scripts.api_script.</li> +</ul> + +<pre class="brush: json">manifest.json +{ + ... + "user_scripts": { + "api_script": "apiscript.js" + } +}</pre> + +<p>Il est exécuté automatiquement sur n'importe quelle page Web correspondant à userScript enregistrée par la même extension, avant qu'un userScript correspondant ne soit exécuté.</p> + +<p>Il a accès à l'API Event browser.userScripts.onBeforeScript que l'APIScript peut utiliser pour inscrire un auditeur à appeler juste avant qu'un userScript correspondant soit exécuté, ce qui permet à l'APIScript d'exporter un ensemble de méthodes API personnalisées pour le rendre disponible à l'userScript.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/userscripts/index.html b/files/fr/mozilla/add-ons/webextensions/api/userscripts/index.html new file mode 100644 index 0000000000..c8e84968e7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/userscripts/index.html @@ -0,0 +1,70 @@ +--- +title: userScripts +slug: Mozilla/Add-ons/WebExtensions/API/userScripts +tags: + - Add-ons + - Customisation + - Extensions + - Firefox + - Mozilla + - Reference + - WebExtensions + - userScripts +translation_of: Mozilla/Add-ons/WebExtensions/API/userScripts +--- +<p>{{AddonSidebar}}</p> + +<p>Utilisez cette API pour enregistrer des scripts utilisateurs, des scripts tiers conçus pour manipuler des pages web ou fournir de nouvelles fonctionnalités. L'enregistrement d'un script utilisateur indique au navigateur de joindre le script aux pages qui correspondent aux modèles d'URL spécifiés lors de l'enregistrement.</p> + +<p>Cette API offre des capacités similaires à {{WebExtAPIRef("contentScripts")}} mais avec des fonctionnalités adaptées à la gestion de scripts tiers :</p> + +<ul> + <li>l'exécution se fait dans une sandbox isolée : chaque script utilisateur est exécuté dans une sandbox isolée au sein des processus de contenu web, ce qui empêche toute interférence accidentelle ou délibérée entre les scripts.</li> + <li>l'accès à la <code>fenêtre</code> et aux valeurs globales du <code>document</code> liées à la page web à laquelle le script utilisateur est attaché.</li> + <li>aucun accès aux API de WebExtension ou aux autorisations associées accordées à l'extension : le script API, qui hérite des autorisations de l'extension, peut fournir des API de WebExtension packagées aux scripts utilisateur enregistrés. Un script API est déclaré dans le fichier manifeste de l'extension en utilisant la clé du manifeste "user_scripts".</li> +</ul> + +<div class="blockIndicator warning"> +<p>Cette API requiert la présence de la clé <code><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts">user_scripts</a></code> dans le manifest.json, même si aucun script API n'est spécifié. Par exemple, <code>user_scripts: {}</code>.</p> +</div> + +<p>Pour utiliser l'API, appelez <code>{{WebExtAPIRef("userScripts.register","register()")}}</code> en passant un objet définissant les scripts à enregistrer. La méthode renvoie une promesse qui est résolue par un objet <code>{{WebExtAPIRef("userScripts.RegisteredUserScript","RegisteredUserScript")}}</code>.</p> + +<div class="blockIndicator note"> +<p>Les scripts utilisateur sont désenregistrés lorsque la page d'extension correspondante (à partir de laquelle les scripts utilisateur ont été enregistrés) est déchargée, vous devez donc enregistrer un script utilisateur depuis une page d'extension qui persiste au moins aussi longtemps que vous voulez que les scripts utilisateur restent enregistrés</p> +</div> + +<dl> +</dl> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("userScripts.RegisteredUserScript")}}</dt> + <dd>L'<code>object</code> renvoyé par la méthode {{WebExtAPIRef("userScripts.register","register()")}}. Il représente les scripts utilisateur enregistrés et est utilisé pour désenregistrer les scripts utilisateur.</dd> +</dl> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("userScripts.register()")}}</dt> + <dd>Enregistre les scripts utilisateur donnés.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("userScripts.onBeforeScript")}}</dt> + <dd>Un événement disponible pour le script API, enregistré dans <code><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts">"user_scripts"</a></code>, qui s'exécute avant qu'un script utilisateur ne s'exécute. Utilisez-le pour déclencher l'exportation des API supplémentaires fournies par le script API, afin qu'elles soient disponibles pour le script utilisateur.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.userScripts", 10, 1)}}</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/userScripts/Working_with_userScripts">Working with <code>userScripts</code></a></li> + <li>{{WebExtAPIRef("contentScripts","browser.contentScripts")}}</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/api/userscripts/onbeforescript/index.html b/files/fr/mozilla/add-ons/webextensions/api/userscripts/onbeforescript/index.html new file mode 100644 index 0000000000..0af37da17d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/userscripts/onbeforescript/index.html @@ -0,0 +1,51 @@ +--- +title: userScripts.onBeforeScript +slug: Mozilla/Add-ons/WebExtensions/API/userScripts/onBeforeScript +tags: + - Add-ons + - Addons + - Customisation + - Extensions + - Firefox + - Mozilla + - Reference + - User Scripts API + - WebExtensions + - userScripts +translation_of: Mozilla/Add-ons/WebExtensions/API/userScripts/onBeforeScript +--- +<div>{{AddonSidebar}}</div> + +<div>La propriété <strong><code>onBeforeScript</code></strong> de l'événement {{WebExtAPIRef("userScripts","browser.userScripts")}} est un {{DOMxRef("EventHandler")}} qui traite {{event("beforeScript")}}.</div> + +<p>L'événement <code>beforeScript</code> se déclenche juste avant l'exécution d'un script utilisateur correspondant, permettant à APIScript d'exporter des méthodes API personnalisées vers le script utilisateur.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox"><code>browser.userScripts.onBeforeScript = </code>functionRef +<code>browser.userScripts.onBeforeScript.addListener(</code>functionRef<code>) +browser.userScripts.onBeforeScript.removeListener(</code>functionRef<code>) +browser.userScripts.onBeforeScript.hasListener(</code>functionRef<code>)</code> +</pre> + +<h3 id="Value">Value</h3> + +<p><code>functionRef</code> est la function de gestionnaire à appeler lorsque l'événement <code>beforeScript</code> du script utilisateur se déclenche.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Voir <a href="https://blog.mozilla.org/addons/2019/03/26/extensions-in-firefox-67/#userscripts">ce billet de blog</a> pour des exemples détaillés</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<div> + + +<p>{{Compat("webextensions.api.userScripts.onBeforeScript")}}</p> +</div> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li>{{WebExtAPIRef("contentScripts")}}</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/api/userscripts/register/index.html b/files/fr/mozilla/add-ons/webextensions/api/userscripts/register/index.html new file mode 100644 index 0000000000..89800b16d4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/userscripts/register/index.html @@ -0,0 +1,78 @@ +--- +title: userScripts.register() +slug: Mozilla/Add-ons/WebExtensions/API/userScripts/register +tags: + - Add-ons + - Extensions + - Méthode + - User Scripts API + - WebExtensions + - register + - userScripts +translation_of: Mozilla/Add-ons/WebExtensions/API/userScripts/register +--- +<p>{{AddonSidebar}}</p> + +<p>Dans les pages d'une extension (comme la page d'arrière plan), l'API userScripts fournit une méthode API {{WebExtAPIRef("userScripts.register","register()")}}. Cette méthode est très similaire à la méthode API {{WebExtAPIRef("contentScripts.register","contentScripts.register()")}} (par exemple, ils retournent tous les deux une promise qui est résolue à un objet API qui fournit un {{WebExtAPIRef("userScripts.RegisteredUserScript.unregister","unregister()")}} pour la désinscription du script enregistré de tous les processus enfants), avec quelques différences dans les options prises en charge.</p> + +<p>C'est une méthode asynchrone qui retourne un {{JSxRef("Promise")}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="brush: js">const registeredUserScript = await browser.userScripts.register( + userScriptOptions // object +); +…. +await registeredUserScript.unregister();</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>userScriptOptions</code></dt> + <dd><code>object</code>. Un objet <code>UserScriptOptions</code> représentant les scripts de contenu à enregistrer. Il a une syntaxe similaire aux options supportées par {{WebExtAPIRef("contentScripts.register","contentScripts.register()")}}. + <p><br> + L'objet <code>UserScriptOptions</code> possède les propriétés suivantes :</p> + + <dl class="reference-values"> + <dt>scriptMetadata <code>{{Optional_Inline}}</code></dt> + <dd>Un objet <code>JSON</code> qui contient certaines propriétés de métadonnées associées aux <code>userScripts</code> enregistrés</dd> + <dt><code>allFrames {{Optional_Inline}}</code></dt> + <dd>Identiques à <code>all_frames</code> dans la clé <code><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts">user_scripts</a></code>.</dd> + <dt><code>excludeGlobs</code> {{Optional_Inline}}</dt> + <dd>Identique à <code>exclude_globs</code> dans la clé <code><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts">user_scripts</a></code>.</dd> + <dt><code>excludeMatches</code> {{Optional_Inline}}</dt> + <dd>Identique à <code>exclude_matches</code> dans la clé <code><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts">user_scripts</a></code>.</dd> + <dt><code>includeGlobs</code> {{Optional_Inline}}</dt> + <dd>Identique à <code>include_globs</code> dans la clé <code><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts">user_scripts</a></code>.</dd> + <dt><code>js</code> {{Optional_Inline}}</dt> + <dd>Un tableau d'objets. Chaque objet a soit une propriété nommée <code>file</code>, qui est une URL commençant par le fichier manifest.json de l'extension et pointant vers un fichier JavaScript à enregistrer, soit une propriété nommée <code>code</code>, qui est un code JavaScript à enregistrer.</dd> + <dt><code>matchAboutBlank</code> {{Optional_Inline}}</dt> + <dd>Identique à <code>match_about_blank</code> dans la clé <code><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts">user_scripts</a></code>.</dd> + <dt><code>matches</code></dt> + <dd>Identique à <code>matches</code> dans la clé <code><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts">user_scripts</a></code>.</dd> + <dt><code>runAt</code> {{Optional_Inline}}</dt> + <dd>Identique à<code>run_at</code> dans la clé <code><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts">user_scripts</a></code>.</dd> + </dl> + </dd> +</dl> + +<p>Contrairement aux options de script de contenu, l'objet userScriptOptions n'a pas de propriété css. Utilisez {{WebExtAPIRef("contentScripts.register","contentScripts.register()")}} pour enregistrer/désenregistrer dynamiquement les feuilles de style).</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une {{JSxRef("Promise")}} qui sera rempli avec un objet {{WebExtAPIRef("userScripts.RegisteredUserScript","RegisteredUserScript")}} que vous pouvez utiliser pour désinscrire ce script utilisateur particulier.</p> + +<div class="blockIndicator note"> +<p>Note: Actuellement, les scripts utilisateur sont désenregistrés lorsque la page d'extension correspondante (à partir de laquelle les scripts utilisateur ont été enregistrés) est déchargée, vous devez donc enregistrer un script utilisateur depuis une page d'extension qui persiste au moins aussi longtemps que vous voulez que les scripts utilisateur restent enregistrés.</p> +</div> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.userScripts.register", 10)}}</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li>{{WebExtAPIRef("contentScripts.register","contentScripts.register()")}}</li> + <li>{{WebExtAPIRef("userScripts.RegisteredUserScript.unregister","RegisteredUserScript.unregister()")}}</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/api/userscripts/registereduserscript/index.html b/files/fr/mozilla/add-ons/webextensions/api/userscripts/registereduserscript/index.html new file mode 100644 index 0000000000..968066495b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/userscripts/registereduserscript/index.html @@ -0,0 +1,34 @@ +--- +title: userScripts.RegisteredUserScript +slug: Mozilla/Add-ons/WebExtensions/API/userScripts/RegisteredUserScript +tags: + - API + - Extensions + - Reference + - RegisteredUserScript + - Type + - userScripts +translation_of: Mozilla/Add-ons/WebExtensions/API/userScripts/RegisteredUserScript +--- +<p>{{AddonSidebar()}}</p> + +<p>Un RegisteredUserScript est retourné par un appel à {{WebExtAPIRef("userScripts.register","userScripts.register()")}} et représente les scripts utilisateur enregistrés dans cet appel.</p> + +<p>L'objet définit une méthode unique, {{WebExtAPIRef("userScripts.RegisteredUserScript.unregister","unregister()")}}, qui peut être utilisée pour désinscrire les scripts utilisateur.</p> + +<div class="blockIndicator note"> +<p><strong>Note:</strong> Si cet objet est détruit (par exemple parce qu'il sort du champ d'application), les scripts associés seront automatiquement désenregistrés, vous devez donc conserver une référence à cet objet aussi longtemps que vous voulez que les scripts de contenu restent enregistrés.</p> +</div> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("userScripts.RegisteredUserScript.unregister","unregister()")}}</dt> + <dd>Désenregistre les scripts utilisateurs représentés par cet objet.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.userScripts.RegisteredUserScript", 10)}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/userscripts/registereduserscript/registereduserscript.unregister()/index.html b/files/fr/mozilla/add-ons/webextensions/api/userscripts/registereduserscript/registereduserscript.unregister()/index.html new file mode 100644 index 0000000000..0a71ce921b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/userscripts/registereduserscript/registereduserscript.unregister()/index.html @@ -0,0 +1,49 @@ +--- +title: unregister +slug: >- + Mozilla/Add-ons/WebExtensions/API/userScripts/RegisteredUserScript/RegisteredUserScript.unregister() +tags: + - API + - Extensions + - Reference + - RegisteredUserScript + - Type + - unregister + - userScripts +translation_of: >- + Mozilla/Add-ons/WebExtensions/API/userScripts/RegisteredUserScript/RegisteredUserScript.unregister() +--- +<p>{{AddonSidebar}}</p> + +<p>La méhode <code>unregister()</code> de l'interface {{WebExtAPIRef("userScripts.RegisteredUserScript","RegisteredUserScript")}}désenregistre le script utilisateur représenté par cette instance d'interface et précédemment enregistré via {{WebExtAPIRef("userScripts.register","userScripts.register()")}}.</p> + +<div class="blockIndicator note"> +<p><strong>Note:</strong> Les scripts utilisateur sont automatiquement désenregistrés lorsque la page d'extension correspondante (à partir de laquelle les scripts utilisateur ont été enregistrés) est déchargée, vous devez donc enregistrer un script utilisateur depuis une page d'extension qui persiste au moins aussi longtemps que vous voulez que les scripts utilisateur restent enregistrés..</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="brush: js">const registeredUserScript = await browser.userScripts.register( + userScriptOptions // object +); +… +await registeredUserScript.unregister()</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une {{JSxRef("Promise")}} qui sera résolu une fois le script utilisateur désenregistré. La promesse ne rapporte rien.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.userScripts.RegisteredUserScript.unregister")}}</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li>{{WebExtAPIRef("userScripts.register","userScripts.register()")}}</li> + <li>{{WebExtAPIRef("userScripts.RegisteredUserScript","RegisteredUserScript")}}</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/api/userscripts/registereduserscript/unregister/index.html b/files/fr/mozilla/add-ons/webextensions/api/userscripts/registereduserscript/unregister/index.html new file mode 100644 index 0000000000..fb1508e240 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/userscripts/registereduserscript/unregister/index.html @@ -0,0 +1,47 @@ +--- +title: RegisteredUserScript.unregister() +slug: Mozilla/Add-ons/WebExtensions/API/userScripts/RegisteredUserScript/unregister +tags: + - Add-ons + - Extensions + - Method + - User Scripts API + - WebExtensions + - unregister + - userScripts +translation_of: Mozilla/Add-ons/WebExtensions/API/userScripts/RegisteredUserScript/unregister +--- +<p>{{AddonSidebar}}</p> + +<p>La méthode <code>unregister()</code> de l'interface {{WebExtAPIRef("userScripts.RegisteredUserScript","RegisteredUserScript")}} désenregistre le script utilisateur représenté par cette instance d'interface et précédemment enregistré via {{WebExtAPIRef("userScripts.register","userScripts.register()")}}.</p> + +<div class="blockIndicator note"> +<p><strong>Note:</strong> Les scripts utilisateur sont automatiquement désenregistrés lorsque la page d'extension correspondante (à partir de laquelle les scripts utilisateur ont été enregistrés) est déchargée, vous devez donc enregistrer un script utilisateur depuis une page d'extension qui persiste au moins aussi longtemps que vous voulez que les scripts utilisateur restent enregistrés..</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="brush: js">const registeredUserScript = await browser.userScripts.register( + userScriptOptions // object +); +… +await registeredUserScript.unregister()</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>Aucun</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une {{JSxRef("Promise")}} qui sera résolu une fois le script utilisateur désenregistré. La promesse ne rapporte rien.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.userScripts.RegisteredUserScript.unregister")}}</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li>{{WebExtAPIRef("userScripts.register","userScripts.register()")}}</li> + <li>{{WebExtAPIRef("userScripts.RegisteredUserScript","RegisteredUserScript")}}</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/api/userscripts/travailler_avec_userscripts/index.html b/files/fr/mozilla/add-ons/webextensions/api/userscripts/travailler_avec_userscripts/index.html new file mode 100644 index 0000000000..8cf9fcc2b2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/userscripts/travailler_avec_userscripts/index.html @@ -0,0 +1,115 @@ +--- +title: Travailler avec userScripts +slug: Mozilla/Add-ons/WebExtensions/API/userScripts/travailler_avec_userScripts +tags: + - API + - Extensions + - How-to + - Tutorial + - userScripts +translation_of: Mozilla/Add-ons/WebExtensions/API/userScripts/Working_with_userScripts +--- +<p>{{draft}}</p> + +<p>{{AddonSidebar}}</p> + +<p>En implémentant userScripts, les développeurs d'extension peuvent modifier l'apparence et/ou le fonctionnement des sites pour mieux répondre aux besoins des utilisateurs.</p> + +<p>Implémentez userScripts dans votre extension en suivant les étapes suivantes :</p> + +<ol> + <li>Définissez le script dans le manifeste de l'extension à l'aide de la clé <code>"user_scripts"</code>.</li> + <li>Enregistrer le userScript</li> + <li>Implémenter les fonctions userScript</li> +</ol> + +<p>Passons en revue les processus à l'aide d'un petit exemple d'extension Web qui illustre le processus. L'exemple est disponible dans le dépôt <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> sur GitHub.</p> + +<h2 id="Manifest_userScripts">Manifest userScripts</h2> + +<p>Un script utilisateur est identifié par le contenu de la clé <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts">user_scripts</a> du manifeste des extensions. L'information minimale pour la clé <code>user_scripts</code> serait :</p> + +<pre class="brush: json"> "user_scripts": { + "api_script": "customUserScriptAPIs.js" + }</pre> + +<p>La propriété "api_script" indique le chemin d'accès au fichier JavaScript qui contient le code du <code>userScript</code>.</p> + +<h2 id="Charge_lextension_dexemple">Charge l'extension d'exemple</h2> + +<p>Une fois que vous avez téléchargé l'exemple :</p> + +<p>Naviguez jusqu'à about:debugging, cliquez sur <strong>Charger temporairement une extension... </strong>et double-cliquez sur le manifest des extensions.</p> + +<p>/Le code par défaut inclus dans l'exemple vous permet de charger un <code>userScript</code> qui va "manger" le contenu des pages correspondant à l'entrée Hosts. Effectuez tous les changements que vous voulez faire avant de cliquer sur le bouton <strong>Enregistrer le script</strong> au bas du panneau.</p> + +<p>Dans l'image suivante, l'extension va "manger" le contenu des pages dont le nom de domaine se termine par.org. C'est le comportement par défaut pour cette extension.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/16901/userScriptExample.png" style="border: 1px solid black; display: block; height: 812px; margin: 0px auto; width: 304px;"></p> + +<p>Rien ne se passera tant que vous n'aurez pas cliqué sur le bouton <strong>Enregistrer le script</strong>. Le bouton implémente le script utilisateur en fonction des paramètres de cette boîte de dialogue. Cela signifie que vous pouvez expérimenter le comportement du script sans avoir à implémenter une extension vous-même.</p> + +<h2 id="Register_the_userScript">Register the userScript</h2> + +<p>Avant qu'un userScript puisse être exécuté, il doit être enregistré en utilisant la méthode <code>userScripts.register()</code>. Voici le code pour enregistrer l'extension d'exemple :</p> + +<pre class="brush: js">async function registerScript() { + const params = { + hosts: stringToArray(hostsInput.value), + code: codeInput.value, + excludeMatches: stringToArray(excludeMatchesInput.value), + includeGlobs: stringToArray(includeGlobsInput.value), + excludeGlobs: stringToArray(excludeGlobsInput.value), + runAt: runAtInput.value, + matchAboutBlank: stringToBool(matchAboutBlankInput.value), + allFrames: stringToBool(allFramesInput.value), + scriptMetadata: {name: scriptNameInput.value || null}, + }; + + // Store the last submitted values to the extension storage + // (so that they can be restored when the popup is opened + // the next time). + await browser.storage.local.set({ + lastSetValues: params, + }); + + try { + // Clear the last userScripts.register result. + lastResultEl.textContent = ""; + + await browser.runtime.sendMessage(params); + lastResultEl.textContent = "UserScript successfully registered"; + // Clear the last userScripts.register error. + lastErrorEl.textContent = ""; + + // Clear the last error stored. + await browser.storage.local.remove("lastError"); + } catch (e) { + // There was an error on registering the userScript, + // let's show the error message in the popup and store + // the last error into the extension storage. + + const lastError = `${e}`; + // Show the last userScripts.register error. + lastErrorEl.textContent = lastError; + + // Store the last error. + await browser.storage.local.set({lastError}); + } +}</pre> + +<p>Ce code initialise d'abord l'objet params pour passer les valeurs à la méthode <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/userScripts/register">userScripts.register</a>.</p> + +<h2 id="Implementer_les_fonctions_userScript">Implementer les fonctions userScript</h2> + +<p>Une fois le script enregistré, naviguez vers une page dont le nom de domaine se termine par .org, et vous verrez quelque chose comme ceci :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/16902/user_script_in_action.png" style="border: 1px solid black; display: block; height: 823px; margin: 0px auto; width: 1026px;"></p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li>{{WebExtAPIRef("userScripts")}}</li> + <li>{{WebExtAPIRef("userScripts.register()", "userScripts.register()")}}</li> + <li>{{WebExtAPIRef("userScripts.onBeforeScript")}}</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/api/userscripts/userscriptoptions/index.html b/files/fr/mozilla/add-ons/webextensions/api/userscripts/userscriptoptions/index.html new file mode 100644 index 0000000000..2d8c3ad8af --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/userscripts/userscriptoptions/index.html @@ -0,0 +1,48 @@ +--- +title: UserScripts.UserScriptOptions +slug: Mozilla/Add-ons/WebExtensions/API/userScripts/UserScriptOptions +tags: + - Add-ons + - Extensions + - Firefox + - Guide + - Intermediate + - NeedsExample + - UserScriptOptions + - WebExtensions + - userScripts +translation_of: Mozilla/Add-ons/WebExtensions/API/userScripts/UserScriptOptions +--- +<p>{{AddonSidebar}}</p> + +<p>L'objet UserScriptOptions représente les scripts de contenu à enregistrer. Sa syntaxe est similaire à celle des options contentScript prises en charge par browser.contentScripts.register. Les différences sont les suivantes :</p> + +<ul> + <li>il ne prend pas en charge une propriété css (utilisez browser.contentScripts.register pour enregistrer/désenregistrer dynamiquement les feuilles de style)</li> + <li>Il supporte une propriété optionnelle scriptMetadata (comme un objet JSON simple qui contient certaines propriétés de métadonnées associées aux userScripts enregistrés)</li> +</ul> + +<p>L'objet UserScriptOptions a les propriétés suivantes :</p> + +<dl> + <dt><code>allFrames</code>{{optional_inline}}</dt> + <dd>Même chose que <code>all_frames</code> dans la clé <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + <dt><code>excludeGlobs</code>{{optional_inline}}</dt> + <dd>Même chose que <code>exclude_globs</code> dans la clé <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + <dt><code>excludeMatches</code>{{optional_inline}}</dt> + <dd>Même chose que <code>exclude_matches</code> dans la clé <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + <dt><code>includeGlobs</code>{{optional_inline}}</dt> + <dd>Même chose que <code>include_globs</code> dans la clé <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + <dt><code>js</code>{{optional_inline}}</dt> + <dd>Un ensemble d'objets. Chaque objet a soit une propriété nommée <code>file</code>, qui est une URL commençant à l'extension manifest.json et pointant vers un fichier JavaScript à enregistrer, soit une propriété nommée <code>code</code>, qui est un code JavaScript à enregistrer.</dd> + <dt><code>matchAboutBlank</code>{{optional_inline}}</dt> + <dd>Même chose que <code>match_about_blank</code> dans la clé <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + <dt><code>matches</code></dt> + <dd>Même chose que <code>matches</code> dans la clé <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + <dt><code>runAt</code>{{optional_inline}}</dt> + <dd>Même chose que <code>run_at</code> dans la clé <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>.</dd> + <dt><code>scriptMetadata</code> {{optional_inline}}</dt> + <dd>Une valeur de métadonnées de script utilisateur</dd> +</dl> + +<p>Sa syntaxe est similaire à celle des options contentScript prises en charge par browser.contentScripts.register.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/getallframes/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/getallframes/index.html new file mode 100644 index 0000000000..ab9b261e8e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/getallframes/index.html @@ -0,0 +1,135 @@ +--- +title: webNavigation.getAllFrames() +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/getAllFrames +tags: + - API + - Add-ons + - Exntesions + - Method + - Non-standard + - Reference + - WebExtensions + - getAllFrames + - webNavigation +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/getAllFrames +--- +<div>{{AddonSidebar()}}</div> + +<p>Étant donné un ID d'onglet, récupère des informations sur toutes les images qu'il contient.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingFrames = browser.webNavigation.getAllFrames( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Informations sur l'onglet pour récupérer toutes les images.</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'identifiant de l'onglet</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> sera accompli avec un tableau d'objets, dont chacun a les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>errorOccurred</code></dt> + <dd><code>boolean</code>. Vrai si la dernière navigation dans cette trame a été interrompue par une erreur, c'est-à-dire l'événement {{WebExtAPIRef("webNavigation.onErrorOccurred", "onErrorOccurred")}} déclenché.</dd> + <dt><code>processId</code></dt> + <dd><code>integer</code>. L'ID du processus exécutant le moteur de rendu pour cet onglet.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. L'identifiant de l'image Si c'est l'image principale, alors <code>frameId</code> est nul.</dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. ID du parent de cette image. C'est -1 s'il n'y a pas de cadre parent: c'est-à-dire si ce cadre est le contexte de navigation de niveau supérieur dans l'onglet.</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL actuellement associée à ce cadre.</dd> +</dl> + +<p>Si l'onglet spécifié n'a pas pu être trouvé ou qu'une autre erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webNavigation.getAllFrames")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code enregistre les URL de toutes les images dans l'onglet actif, lorsque l'utilisateur clique sur une action du navigateur :</p> + +<pre class="brush: js">function logFrameInfo(framesInfo) { + for (frameInfo of framesInfo) { + console.log(frameInfo); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +function logAllFrames(tabs) { + var gettingAllFrames = browser.webNavigation.getAllFrames({tabId: tabs[0].id}); + gettingAllFrames.then(logFrameInfo, onError); +} + +browser.browserAction.onClicked.addListener(function() { + + var querying = browser.tabs.query({ + currentWindow: true, + active: true + }); + + querying.then(logAllFrames, onError); + +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/getframe/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/getframe/index.html new file mode 100644 index 0000000000..07a0a99760 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/getframe/index.html @@ -0,0 +1,126 @@ +--- +title: webNavigation.getFrame() +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/getFrame +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - getFrame + - webNavigation +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/getFrame +--- +<div>{{AddonSidebar()}}</div> + +<p>Récupère des informations sur un cadre particulier. Un cadre peut être l'image de niveau supérieur dans un onglet ou un <a href="/en-US/docs/Web/HTML/Element/iframe">iframe</a> imbriqué, et est identifié de manière unique par un ID de tabulation et un ID de cadre.</p> + +<p>C'est une fonction asynchrone qui renvoie une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingFrame = browser.webNavigation.getFrame( + details // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>details</code></dt> + <dd><code>object</code>. Informations sur le cadre pour récupérer des informations sur :</dd> + <dd> + <dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet dans lequel se trouve le cadre.</dd> + <dt><code>processId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. L'ID du processus exécutant le moteur de rendu pour cet onglet.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. L'ID du cadre dans l'onglet donné.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code> qui sera rempli avec un objet contenant les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>errorOccurred</code></dt> + <dd><code>boolean</code>. Vrai si la dernière navigation dans cette trame a été interrompue par une erreur, c'est-à-dire l'événement {{WebExtAPIRef("webNavigation.onErrorOccurred", "onErrorOccurred")}} déclenché.</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL actuellement associée à cette trame, si la trame identifiée par <code>frameId</code> existait à un point de l'onglet identifié par <code>tabId</code>. Le fait qu'une URL soit associée à un <code>frameId</code> donné n'implique pas que la trame correspondante existe toujours.</dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. ID du parent de cette image. C'est -1 s'il n'y a pas de cadre parent: c'est-à-dire si ce cadre est le contexte de navigation de niveau supérieur dans l'onglet.</dd> +</dl> + +<p>Si l'onglet ou l'ID de trame spécifié n'a pas pu être trouvé ou qu'une autre erreur se produit, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webNavigation.getFrame")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function onGot(frameInfo) { + console.log(frameInfo); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var gettingFrame = browser.webNavigation.getFrame({ + tabId: 19, + frameId: 1537 +}); + +// Edge specific - processId is required not optional, must be integer not null +//var gettingFrame = browser.webNavigation.getFrame({ tabId: 19, processId: 0, frameId: 1537 }); + +gettingFrame.then(onGot, onError); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/index.html new file mode 100644 index 0000000000..b343ff3744 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/index.html @@ -0,0 +1,143 @@ +--- +title: webNavigation +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation +tags: + - API + - Add-ons + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions + - webNavigation +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation +--- +<div>{{AddonSidebar}}</div> + +<p>Ajouter des écouteurs d'événement pour les différentes étapes d'une navigation. Une navigation se compose d'un cadre dans le navigateur passant d'une URL à l'autre, généralement (mais pas toujours) en réponse à une action de l'utilisateur comme cliquer sur un lien ou entrer une URL dans la barre d'adresse.</p> + +<p>Comparable à l'API {{WebExtAPIRef("webRequest")}}: Les navigations entrainent le navigateur à faire des requetes web, mais l'API webRequest travaille au niveau inférieur de la couche HTTP, contrairement à l'API webNavigation qui travaille directement au niveau de l'interface utilisateur du navigateur elle-même.</p> + +<p>Chaque evenement correspond directement à un état précis dans la navigation. La séquence des évenements est comme suit:</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13374/we-flow.png" style="display: block; height: 562px; margin-left: auto; margin-right: auto; width: 745px;"></p> + +<ul> + <li>Le flux primaire est : + <ul> + <li><code>{{WebExtAPIRef("webNavigation.onBeforeNavigate", "onBeforeNavigate")}}</code></li> + <li><code>{{WebExtAPIRef("webNavigation.onCommitted", "onCommitted")}}</code></li> + <li><code>{{WebExtAPIRef("webNavigation.onDOMContentLoaded", "onDOMContentLoaded")}}</code></li> + <li><code>{{WebExtAPIRef("webNavigation.onCompleted", "onCompleted")}}</code>.</li> + </ul> + </li> + <li>Adionellement : + <ul> + <li><code>{{WebExtAPIRef("webNavigation.onCreatedNavigationTarget", "onCreatedNavigationTarget")}}</code> est déclenché avant <code>onBeforeNavigate</code> si le navigateur a besoin de créer un nouvel onglet ou une nouvelle fenêtre pour la navigation (par exemple, parce que l'utilisateur a ouvert un lien dans un nouvel onglet).</li> + <li>{{WebExtAPIRef("webNavigation.onHistoryStateUpdated", "onHistoryStateUpdated")}} est déclenché si une page utilise l'<a href="http://diveintohtml5.info/history.html">API historique</a> pour mettre à jour l'URL affichée dans la barre d'adresse du navigateur.</li> + <li>{{WebExtAPIRef("webNavigation.onReferenceFragmentUpdated", "onReferenceFragmentUpdated")}} est déclenché si <a href="https://en.wikipedia.org/wiki/Fragment_identifier">fl'identificateur de fragment</a> d'une page est modifié.</li> + <li>{{WebExtAPIRef("webNavigation.onErrorOccurred", "onErrorOccurred")}} peut être déclenché à tout moment.</li> + </ul> + </li> +</ul> + +<p>Chaque navigation est une transition d'URL dans un cadre de navigateur particulier. Le cadre du navigateur est identifié par un ID d'onglet et un ID de trame. Le cadre peut être le contexte de navigation de niveau supérieur dans l'onglet ou peut être un contexte de navigation imbriqué implémenté en tant qu'<a href="/fr/docs/Web/HTML/Element/iframe">iframe</a>.</p> + +<p>L'appel <code>addListener()</code> de chaque événement accepte un paramètre de filtre facultatif. Le filtre spécifiera un ou plusieurs modèles d'URL, et l'événement ne sera alors déclenché que pour les navigations dans lesquelles l'URL cible correspond à l'un des modèles.</p> + +<p>L'écouteur d'événement <code>onCommitted</code>reçoit deux propriétés supplémentaires : un {{WebExtAPIRef("webNavigation.TransitionType","TransitionType")}} indiquant la cause de la navigation (par exemple, parce que l'utilisateur a cliqué sur un lien ou parce que l'utilisateur a sélectionné un signet), et un {{WebExtAPIRef("webNavigation.TransitionQualifier","TransitionQualifier")}} fournissant plus d'informations sur la navigation.</p> + +<p>Pour utiliser cette API, vous devez avoir la <a href="https://developer.mozilla.org/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "webNavigation".</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("webNavigation.TransitionType")}}</dt> + <dd>Cause de la navigation: par exemple, l'utilisateur a cliqué sur un lien, ou a tapé une adresse, ou a cliqué sur un signet.</dd> + <dt>{{WebExtAPIRef("webNavigation.TransitionQualifier")}}</dt> + <dd> + <div>Informations supplémentaires sur une transition.</div> + </dd> +</dl> + +<h2 id="Functions">Functions</h2> + +<dl> + <dt>{{WebExtAPIRef("webNavigation.getFrame()")}}</dt> + <dd>Récupère des informations sur un cadre particulier. Ce cadre peut être le cadre de niveau supérieur dans un onglet ou un <a href="https://developer.mozilla.org/fr/docs/Web/HTML/Element/iframe">iframe</a> imbriqué, et est identifié de manière unique par un ID d'onglet et un ID de <em>frame</em>.</dd> + <dt>{{WebExtAPIRef("webNavigation.getAllFrames()")}}</dt> + <dd> + <p>Étant donné un ID d'onglet, récupère des informations sur tous les cadres qu'il contient.</p> + </dd> +</dl> + +<h2 id="Events">Events</h2> + +<dl> + <dt>{{WebExtAPIRef("webNavigation.onBeforeNavigate")}}</dt> + <dd> + <p>Lancé lorsque le navigateur est sur le point de démarrer un événement de navigation.</p> + </dd> + <dt>{{WebExtAPIRef("webNavigation.onCommitted")}}</dt> + <dd>Lancé lorsqu'une navigation est validée. Au moins une partie du nouveau document a été reçue du serveur et le navigateur a décidé de passer au nouveau document.</dd> + <dt>{{WebExtAPIRef("webNavigation.onDOMContentLoaded")}}</dt> + <dd>Lancé lorsque l'événement <a href="https://developer.mozilla.org/fr/docs/Web/Events/DOMContentLoaded">DOMContentLoaded</a> est déclenché dans la page.</dd> + <dt>{{WebExtAPIRef("webNavigation.onCompleted")}}</dt> + <dd>Lancé lorsqu'un document, y compris les ressources auxquelles il fait référence, est complètement chargé et initialisé. Ceci est équivalent à l'événement de <code><a href="https://developer.mozilla.org/fr/docs/Web/Events/load">chargement</a></code> du DOM.</dd> + <dt>{{WebExtAPIRef("webNavigation.onErrorOccurred")}}</dt> + <dd>Lancé lorsqu'une erreur se produit et que la navigation est annulée. Cela peut se produire si une erreur réseau s'est produite ou si l'utilisateur a interrompu la navigation.</dd> + <dt>{{WebExtAPIRef("webNavigation.onCreatedNavigationTarget")}}</dt> + <dd>Lancé lorsqu'une nouvelle fenêtre ou un nouvel onglet dans une fenêtre existante est créé pour héberger une navigation: par exemple, si l'utilisateur ouvre un lien dans un nouvel onglet.</dd> + <dt>{{WebExtAPIRef("webNavigation.onReferenceFragmentUpdated")}}</dt> + <dd>Lancé si l' <a class="external-icon external" href="https://en.wikipedia.org/wiki/Fragment_identifier">identificateur de fragment</a> d'une page a été modifié.</dd> + <dt>{{WebExtAPIRef("webNavigation.onTabReplaced")}}</dt> + <dd> + <p>Lancé lorsque le contenu de l'onglet est remplacé par un onglet différent (généralement précédemment pré-rendu).</p> + </dd> + <dt>{{WebExtAPIRef("webNavigation.onHistoryStateUpdated")}}</dt> + <dd>Lancé lorsque la page a utilisé l' <a class="external external-icon" href="http://diveintohtml5.info/history.html">API d'histoirique</a> pour mettre à jour l'URL affichée dans la barre d'adresse du navigateur.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.webNavigation")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/onbeforenavigate/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/onbeforenavigate/index.html new file mode 100644 index 0000000000..ab426f9c98 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/onbeforenavigate/index.html @@ -0,0 +1,142 @@ +--- +title: webNavigation.onBeforeNavigate +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/onBeforeNavigate +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onBeforeNavigate + - webNavigation +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/onBeforeNavigate +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque le navigateur est sur le point de démarrer un événement de navigation.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webNavigation.onBeforeNavigate.addListener( + listener, // function + filter // optional object +) +browser.webNavigation.onBeforeNavigate.removeListener(listener) +browser.webNavigation.onBeforeNavigate.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="syntaxe_addListener">syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur l'événement de navigation.</dd> + </dl> + </dd> + <dt><code>filter</code>{{optional_inline}}</dt> + <dd> + <p><code>object</code>. Un objet contenant une seule propriété <code>url</code>, qui est un <code>tableau</code> d'objets {{WebExtAPIRef("events.UrlFilter")}} objects.Un objet contenant une seule propriété qui correspondent à au moins un <code>UrlFilter</code> dans le tableau. Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.</p> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet dans lequel la navigation est sur le point de se produire.</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL à laquelle le cadre donné va naviguer.</dd> + <dt><code>processId</code></dt> + <dd><code>integer</code>. L'ID du processus dans lequel cet onglet est rendu (Cette propriété <strong>n'est pas pris en charge sur Firefox</strong> et c'est <strong>déprécié sur Chrome</strong>).</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Cadre dans lequel la navigation est sur le point de se produire. 0 indique que la navigation se déroule dans le contexte de navigation de niveau supérieur de l'onglet, et non dans un <a href="/fr/docs/Web/HTML/Element/iframe">iframe</a> imbriqué. Une valeur positive indique que la navigation se déroule dans un iframe imbriqué. Les ID de cadre sont uniques pour un onglet et un processus donnés.</dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. ID du parent de cette image. Défini à -1 s'il s'agit d'un cadre de niveau supérieur.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle le navigateur est sur le point de démarrer la navigation, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webNavigation.onBeforeNavigate")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Logs les URL cibles de <code>onBeforeNavigate</code>, si le nom d'hôte de la cible contient "example.com" ou commence avec "developer".</p> + +<pre class="brush: js">var filter = { + url: + [ + {hostContains: "example.com"}, + {hostPrefix: "developer"} + ] +} + +function logOnBefore(details) { + console.log("onBeforeNavigate to: " + details.url); +} + +browser.webNavigation.onBeforeNavigate.addListener(logOnBefore, filter);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/oncommitted/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/oncommitted/index.html new file mode 100644 index 0000000000..c8f8dc48d7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/oncommitted/index.html @@ -0,0 +1,148 @@ +--- +title: webNavigation.onCommitted +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/onCommitted +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onCommitted + - webNavigations +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/onCommitted +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'une navigation est validée. Au moins une partie du nouveau document a été reçue du serveur et le navigateur a décidé de passer au nouveau document.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webNavigation.onCommitted.addListener( + listener, // function + filter // optional object +) +browser.webNavigation.onCommitted.removeListener(listener) +browser.webNavigation.onCommitted.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur l'événement de navigation.</dd> + </dl> + </dd> + <dt><code>filter</code>{{optional_inline}}</dt> + <dd> + <p><code>object</code>. Un objet contenant une seule propriété url, qui est un <code>tableau</code> d'objets {{WebExtAPIRef("events.UrlFilter")}}. Si vous incluez ce paramètre, l'événement se déclenchera uniquement pour les transitions vers les URL qui correspondent à au moins un <code>UrlFilter</code> dans le tableau. Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.</p> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet dans lequel la navigation est sur le point de se produire.</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL à laquelle le cadre donné va naviguer.</dd> + <dt><code>processId</code></dt> + <dd><code>integer</code>. L'ID du processus dans lequel cet onglet est rendu.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Frame dans lequel la navigation aura lieu. 0 indique que la navigation se déroule dans le contexte de navigation de niveau supérieur de l'onglet, et non dans un <a href="/frS/docs/Web/HTML/Element/iframe">iframe</a> imbriqué. A positive value indicates that navigation happens in a nested iframe. Les ID de frame sont uniques pour un onglet et un processus donnés.</dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. ID du parent de cette image. Réglez à -1 s'il s'agit d'un cadre de niveau supérieur.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle la navigation a été validée, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>transitionType</code></dt> + <dd><code>{{WebExtAPIRef("webNavigation.transitionType", "transitionType")}}</code>. La raison de la navigation : par exemple, <code>"link"</code> si l'utilisateur a cliqué sur un lien, ou <code>"reload"</code> si l'utilisateur a rechargé la page.</dd> + <dt><code>transitionQualifiers</code></dt> + <dd><code>Array</code> de <code>{{WebExtAPIRef("webNavigation.transitionQualifier", "transitionQualifier")}}</code>. Informations supplémentaires sur la navigation : par exemple, s'il existait une redirection de serveur ou de client.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webNavigation.onCommitted")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Logs les URL cibles et les informations de transition supplémentaires pour <code>onCommitted</code>, si le nom d'hôte de l'URL cible contient "example.com" ou commence avec "developer".</p> + +<pre class="brush: js">var filter = { + url: + [ + {hostContains: "example.com"}, + {hostPrefix: "developer"} + ] +} + +function logOnCommitted(details) { + console.log("target URL: " + details.url); + console.log("transition type: " + details.transitionType); + console.log("transition qualifiers: " + details.transitionQualifiers); +} + +browser.webNavigation.onCommitted.addListener(logOnCommitted, filter);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/oncompleted/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/oncompleted/index.html new file mode 100644 index 0000000000..d05a067f89 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/oncompleted/index.html @@ -0,0 +1,141 @@ +--- +title: webNavigation.onCompleted +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/onCompleted +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onCompleted + - webNavigation +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/onCompleted +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'un document, y compris les ressources auxquelles il fait référence, est complètement chargé et initialisé. Ceci est équivalent à l'événement <code><a href="/fr/docs/Web/Events/load">chargement</a></code> du DOM.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webNavigation.onCompleted.addListener( + listener, // function + filter // optional object +) +browser.webNavigation.onCompleted.removeListener(listener) +browser.webNavigation.onCompleted.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants:</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur l'événement de navigation.</dd> + </dl> + </dd> + <dt><code>filter</code>{{optional_inline}}</dt> + <dd> + <p><code>object</code>. Un objet contenant une seule propriété <code>url</code>, qui est un <code>Array</code> d'objets {{WebExtAPIRef("events.UrlFilter")}}. Si vous incluez ce paramètre, l'événement se déclenchera uniquement pour les transitions vers les URL qui correspondent à au moins un <code>UrlFilter</code> dans le tableau.Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.</p> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet dans lequel la navigation s'est produite.</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL à laquelle le cadre donné a navigué.</dd> + <dt><code>processId</code></dt> + <dd><code>integer</code>. L'ID du processus dans lequel cet onglet est rendu.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Cadre dans lequel la navigation s'est produite. 0 indique que la navigation s'est déroulée dans le contexte de navigation de niveau supérieur de l'onglet, et non dans un <a href="/fr/docs/Web/HTML/Element/iframe">iframe</a> imbriqué. Une valeur positive indique que la navigation s'est déroulée dans un iframe imbriqué. Les ID de cadre sont uniques pour un onglet et un processus donnés.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle la page a terminé le chargement, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webNavigation.onCompleted")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Consigne les URL cibles de <code>onCompleted</code>, si le nom d'hôte de l'URL cible contient "example.com" ou commence avec "developer".</p> + +<pre class="brush: js">var filter = { + url: + [ + {hostContains: "example.com"}, + {hostPrefix: "developer"} + ] +} + +function logOnCompleted(details) { + console.log("onCompleted: " + details.url); +} + +browser.webNavigation.onCompleted.addListener(logOnCompleted, filter); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/oncreatednavigationtarget/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/oncreatednavigationtarget/index.html new file mode 100644 index 0000000000..ea7f67f411 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/oncreatednavigationtarget/index.html @@ -0,0 +1,156 @@ +--- +title: webNavigation.onCreatedNavigationTarget +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/onCreatedNavigationTarget +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onCreatedNavigationTarget + - webNavigation +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/onCreatedNavigationTarget +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'une nouvelle fenêtre ou un nouvel onglet dans une fenêtre existante est créé pour héberger la cible d'une navigation. Par exemple, cet événement est envoyé lorsque :</p> + +<ul> + <li>l'utilisateur ouvre un lien dans un nouvel onglet ou une nouvelle fenêtre</li> + <li>une page Web charge une ressource dans un nouvel onglet ou une nouvelle fenêtre en utilisant <code><a href="/fr/docs/Web/API/Window/open">window.open()</a></code> (mais notez que l'événement n'est pas envoyé si le bloqueur de popup du navigateur bloque le chargement).</li> +</ul> + +<p>L'événement n'est pas envoyé si un onglet ou une fenêtre est créé sans cible de navigation (par exemple, si l'utilisateur ouvre un nouvel onglet en appuyant sur Ctrl+T).</p> + +<p>Si cet événement est déclenché, il sera déclenché avant {{WebExtAPIRef("webNavigation.onBeforeNavigate")}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webNavigation.onCreatedNavigationTarget.addListener( + listener, // function + filter // optional object +) +browser.webNavigation.onCreatedNavigationTarget.removeListener(listener) +browser.webNavigation.onCreatedNavigationTarget.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="addListener_syntax">addListener syntax</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur l'événement de navigation Voir les <a href="#details">détails</a> ci-dessous.</dd> + </dl> + </dd> + <dt><code>filter</code>{{optional_inline}}</dt> + <dd> + <p><code>object</code>. Un objet contenant une seule propriété <code>url</code>, qui est un <code>Array</code> d'objets {{WebExtAPIRef("events.UrlFilter")}}. Si vous incluez ce paramètre, l'événement se déclenchera uniquement pour les transitions vers les URL qui correspondent à au moins un <code>UrlFilter</code> dans le tableau. Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions. Notez que le <code>filtre</code>n'est pas supporté dans Firefox.</p> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>sourceFrameId</code></dt> + <dd><code>integer</code>. ID de l'image à partir de laquelle la navigation est initiée. 0 indique que le cadre est le contexte de navigation de niveau supérieur de l'onglet, et non un <a href="/fr/docs/Web/HTML/Element/iframe">iframe</a> imbriqué. Une valeur positive indique que la navigation est initiée à partir d'un iframe imbriqué. Les ID de cadre sont uniques pour un onglet et un processus donnés.</dd> + <dt><code>sourceProcessId</code></dt> + <dd><code>integer</code>. L'ID du processus à partir duquel la navigation est initiée.</dd> + <dt><code>sourceTabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet à partir duquel la navigation est initiée. Par exemple, si l'utilisateur ouvre un lien dans un nouvel onglet, ce sera l'identifiant de l'onglet contenant le lien.</dd> + <dt><code>tabId</code></dt> + <dd>integer: L'ID de l'onglet nouvellement créé.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle le navigateur a créé la cible de navigation, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL qui sera chargée dans le nouvel onglet.</dd> + <dt><code>windowId</code></dt> + <dd>number. L'ID de la fenêtre dans laquelle le nouvel onglet est créé.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webNavigation.onCreatedNavigationTarget")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Logs l'URL cible, l'ID de la table source et l'ID de la trame source pour <code>onCreatedNavigationTarget</code>, si le nom d'hôte de la cible contient "example.com" ou commence par "developer".</p> + +<pre class="brush: js">var filter = { + url: + [ + {hostContains: "example.com"}, + {hostPrefix: "developer"} + ] +} + +function logOnCreatedNavigationTarget(details) { + console.log("onCreatedNavigationTarget: " + details.url); + console.log(details.sourceTabId); + console.log(details.sourceFrameId); +} + +browser.webNavigation.onCreatedNavigationTarget.addListener(logOnCreatedNavigationTarget, filter); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/ondomcontentloaded/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/ondomcontentloaded/index.html new file mode 100644 index 0000000000..6c7ba2d62d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/ondomcontentloaded/index.html @@ -0,0 +1,142 @@ +--- +title: webNavigation.onDOMContentLoaded +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/onDOMContentLoaded +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onDOMContentLoaded + - webNavigation +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/onDOMContentLoaded +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque l'événement <a href="/fr/docs/Web/Events/DOMContentLoaded">DOMContentLoaded</a> est déclenché dans la page. À ce stade, le document est chargé et analysé, et le DOM est entièrement construit, mais les ressources liées telles que les images, les feuilles de style et les sous-trames peuvent ne pas encore être chargées.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webNavigation.onDOMContentLoaded.addListener( + listener, // function + filter // optional object +) +browser.webNavigation.onDOMContentLoaded.removeListener(listener) +browser.webNavigation.onDOMContentLoaded.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur l'événement de navigation</dd> + </dl> + </dd> + <dt><code>filter</code>{{optional_inline}}</dt> + <dd> + <p><code>object</code>. Un objet contenant une seule propriété <code>url</code>, qui est un <code>tableau</code> d'objets {{WebExtAPIRef("events.UrlFilter")}}. Si vous incluez ce paramètre, l'événement se déclenchera uniquement pour les transitions vers les URL qui correspondent à au moins un <code>UrlFilter</code> dans un tableau. Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.</p> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet dans lequel la navigation s'est produite.</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL à laquelle le cadre donné a navigué.</dd> + <dt><code>processId</code></dt> + <dd><code>integer</code>. L'ID du processus dans lequel cet onglet est rendu.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Frame dans lequel la navigation est en cours. 0 indique que la navigation se déroule dans le contexte de navigation de niveau supérieur de l'onglet, et non dans un <a href="/fr/docs/Web/HTML/Element/iframe">iframe</a> imbriqué. Une valeur positive indique que la navigation se déroule dans un iframe imbriqué. Les ID <em>frames</em> sont uniques pour un onglet et un processus donnés.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle <code>DOMContentLoaded</code> a été déclenchée, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webNavigation.onDOMContentLoaded")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Logs les URL cibles pour <code>onDOMContentLoaded</code>,si le nom d'hôte de l'URL cible contient "example.com" ou commence par "developer".</p> + +<pre class="brush: js">var filter = { + url: + [ + {hostContains: "example.com"}, + {hostPrefix: "developer"} + ] +} + +function logOnDOMContentLoaded(details) { + console.log("onDOMContentLoaded: " + details.url); +} + +browser.webNavigation.<code>onDOMContentLoaded</code>.addListener(logOnDOMContentLoaded, filter); + +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/onerroroccurred/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/onerroroccurred/index.html new file mode 100644 index 0000000000..15d131b148 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/onerroroccurred/index.html @@ -0,0 +1,144 @@ +--- +title: webNavigation.onErrorOccurred +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/onErrorOccurred +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onErrorOccurred + - webNavigation +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/onErrorOccurred +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsqu'une erreur se produit et que la navigation est annulée. Cela peut se produire si une erreur réseau s'est produite ou si l'utilisateur a interrompu la navigation.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webNavigation.onErrorOccurred.addListener( + listener, // function + filter // optional object +) +browser.webNavigation.onErrorOccurred.removeListener(listener) +browser.webNavigation.onErrorOccurred.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants:</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur l'événement de navigation.</dd> + </dl> + </dd> + <dt><code>filter</code>{{optional_inline}}</dt> + <dd> + <p><code>object</code>. Un objet contenant une seule propriété <code>url</code>, qui est un <code>tableau</code> d'objets {{WebExtAPIRef("events.UrlFilter")}}. Si vous incluez ce paramètre, l'événement se déclenchera uniquement pour les transitions vers les URL qui correspondent à au moins un <code>UrlFilter</code> dans un tableau. Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.</p> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="details">details</h3> + +<dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet dans lequel la navigation se passait.</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL à laquelle le cadre donné naviguait.</dd> + <dt><code>processId</code></dt> + <dd><code>integer</code>. L'ID du processus dans lequel cet onglet est rendu.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Cadre dans lequel la navigation se passait. 0 indique que la navigation s'est déroulée dans le contexte de navigation de niveau supérieur de l'onglet,et non dans un <a href="/fr/docs/Web/HTML/Element/iframe">iframe</a> imbriqué. Une valeur positive indique que la navigation s'est déroulée dans un iframe imbriqué. Les ID de cadre sont uniques pour un onglet et un processus donnés.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle l'erreur s'est produite, en <a href="https://en.wikipedia.org/wiki/Unix_time">milliseconde depuis l'époque</a>.</dd> + <dt><code>error</code></dt> + <dd><code>string</code>. Le code d'erreur. Il s'agit d'un code d'erreur interne qui n'est pas garanti pour rester identique ou être cohérent d'un navigateur à l'autre.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webNavigation.onErrorOccurred")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Logs les URL cibles de <code>onErrorOccurred</code>, si le nom d'hôte de l'URL cible contient "example.com" ou commence par "developer".</p> + +<pre class="brush: js">var filter = { + url: + [ + {hostContains: "example.com"}, + {hostPrefix: "developer"} + ] +} + +function logOnErrorOccurred(details) { + console.log("onErrorOccurred: " + details.url); + console.log(details.error); +} + +browser.webNavigation.onErrorOccurred.addListener(logOnErrorOccurred, filter); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/onhistorystateupdated/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/onhistorystateupdated/index.html new file mode 100644 index 0000000000..073ba7dc5e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/onhistorystateupdated/index.html @@ -0,0 +1,147 @@ +--- +title: webNavigation.onHistoryStateUpdated +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/onHistoryStateUpdated +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onHistoryStateUpdated + - webNavigation +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/onHistoryStateUpdated +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque la page a utilisé l'<a href="http://diveintohtml5.info/history.html">API history</a> pour mettre à jour l'URL affichée dans la barre d'adresse du navigateur. Tous les événements futurs de ce cadre utiliseront l'URL mise à jour.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webNavigation.onHistoryStateUpdated.addListener( + listener, // function + filter // optional object +) +browser.webNavigation.onHistoryStateUpdated.removeListener(listener) +browser.webNavigation.onHistoryStateUpdated.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="syntaxe_addListener">syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur l'événement de navigation.</dd> + </dl> + </dd> + <dt><code>filter</code>{{optional_inline}}</dt> + <dd> + <p><code>object</code>. Un objet contenant une seule propriété <code>url</code>, qui est un <code>tableau</code> d'objets {{WebExtAPIRef("events.UrlFilter")}}. Si vous incluez ce paramètre, l'événement se déclenchera uniquement pour les transitions vers les URL qui correspondent à au moins un <code>UrlFilter</code> dans un tableau. Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.</p> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet dans lequel la navigation est sur le point de se produire.</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL à laquelle le cadre donné va naviguer.</dd> + <dt><code>processId</code></dt> + <dd><code>integer</code>. L'ID du processus dans lequel cet onglet est rendu.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Frame dans lequel la navigation aura lieu. 0 indique que la navigation se déroule dans le contexte de navigation de niveau supérieur de l'onglet, et non dans un <a href="/fr/docs/Web/HTML/Element/iframe">iframe</a> imbriqué. Une valeur positive indique que la navigation se déroule dans un iframe imbriqué. Les ID de <em>frames</em> sont uniques pour un onglet et un processus donnés.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle la navigation a été validée, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'origine</a>.</dd> + <dt><code>transitionType</code></dt> + <dd><code>{{WebExtAPIRef("webNavigation.transitionType", "transitionType")}}</code>.La raison de la navigation: par exemple, <code>"link"</code> si l'utilisateur a cliqué sur un lien.</dd> + <dt><code>transitionQualifiers</code></dt> + <dd><code>Array</code> de <code>{{WebExtAPIRef("webNavigation.transitionQualifier", "transitionQualifier")}}</code>. Informations supplémentaires sur la navigation : par exemple, s'il existait une redirection de serveur ou de client.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.webNavigation.onHistoryStateUpdated")}}</p> + +<h2 id="Examples">Examples</h2> + +<p>Logs les URL cibles et les informations de transition supplémentaires pour <code>onHistoryStateUpdated</code>, si le nom d'hôte de l'URL cible contient "example.com" ou commence par "developer".</p> + +<pre class="brush: js">var filter = { + url: + [ + {hostContains: "example.com"}, + {hostPrefix: "developer"} + ] +} + +function logOnHistoryStateUpdated(details) { + console.log("onHistoryStateUpdated: " + details.url); + console.log("Transition type: " + details.transitionType); + console.log("Transition qualifiers: " + details.transitionQualifiers); +} + +browser.webNavigation.onHistoryStateUpdated.addListener(logOnHistoryStateUpdated, filter); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/onreferencefragmentupdated/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/onreferencefragmentupdated/index.html new file mode 100644 index 0000000000..36aed3f413 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/onreferencefragmentupdated/index.html @@ -0,0 +1,149 @@ +--- +title: webNavigation.onReferenceFragmentUpdated +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/onReferenceFragmentUpdated +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onReferenceFragmentUpdated + - webNavigation +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/onReferenceFragmentUpdated +--- +<div>{{AddonSidebar()}}</div> + +<div>Lancé si <a class="external external-icon" href="https://en.wikipedia.org/wiki/Fragment_identifier">identificateur dee fragment</a> d'une page est modifié. Par exemple, si une page implémente une table des matières à l'aide de fragments et que l'utilisateur clique sur une entrée dans la table des matières, cet événement se déclenche. Tous les événements futurs de ce cadre utiliseront l'URL mise à jour.</div> + +<div></div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webNavigation.onReferenceFragmentUpdated.addListener( + listener, // function + filter // optional object +) +browser.webNavigation.onReferenceFragmentUpdated.removeListener(listener) +browser.webNavigation.onReferenceFragmentUpdated.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants:</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur l'événement de navigation.</dd> + </dl> + </dd> + <dt><code>filter</code>{{optional_inline}}</dt> + <dd> + <p><code>object</code>. Un objet contenant une seule propriété <code>url</code>, qui est un <code>Array</code> d'objets {{WebExtAPIRef("events.UrlFilter")}}. Si vous incluez ce paramètre, l'événement se déclenchera uniquement pour les transitions vers les URL qui correspondent à au moins un <code>UrlFilter</code> dans le tableau.Si vous omettez ce paramètre, l'événement se déclenchera pour toutes les transitions.</p> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet dans lequel la navigation est sur le point de se produire.</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. L'URL à laquelle le cadre donné va naviguer.</dd> + <dt><code>processId</code></dt> + <dd><code>integer</code>. L'ID du processus dans lequel cet onglet est rendu.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>.Cadre dans lequel la navigation aura lieu. 0 indique que la navigation se déroule dans le contexte de navigation de niveau supérieur de l'onglet, et non dans un <a href="/fr/docs/Web/HTML/Element/iframe">iframe</a> imbriqué. Une valeur positive indique que la navigation se déroule dans un iframe imbriqué. Les ID de cadre sont uniques pour un onglet et un processus donnés.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle la navigation a été validée, en <a href="https://en.wikipedia.org/wiki/Unix_time">milliseconde depuis l'époque</a>.</dd> + <dt><code>transitionType</code></dt> + <dd><code>{{WebExtAPIRef("webNavigation.transitionType", "transitionType")}}</code>. La raison de la navigation: par exemple, <code>"link"</code> si l'utilisateur a cliqué sur un lien.</dd> + <dt><code>transitionQualifiers</code></dt> + <dd><code>Array</code> de <code>{{WebExtAPIRef("webNavigation.transitionQualifier", "transitionQualifier")}}</code>. Informations supplémentaires sur la navigation : par exemple, s'il existait une redirection de serveur ou de client.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.webNavigation.onReferenceFragmentUpdated")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Consigne les URL cibles et les informations de transition supplémentaires pour <code>onReferenceFragmentUpdated</code>, si le nom d'hôte de l'URL cible contient "example.com" ou commence par "developer".</p> + +<pre class="brush: js">var filter = { + url: + [ + {hostContains: "example.com"}, + {hostPrefix: "developer"} + ] +} + +function logOnReferenceFragmentUpdated(details) { + console.log("onReferenceFragmentUpdated: " + details.url); + console.log("Transition type: " + details.transitionType); + console.log("Transition qualifiers: " + details.transitionQualifiers); +} + +browser.webNavigation.onReferenceFragmentUpdated.addListener(logOnReferenceFragmentUpdated, filter); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/ontabreplaced/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/ontabreplaced/index.html new file mode 100644 index 0000000000..d8a0489e27 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/ontabreplaced/index.html @@ -0,0 +1,126 @@ +--- +title: webNavigation.onTabReplaced +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/onTabReplaced +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onTabReplaced + - webNavigation +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/onTabReplaced +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque le contenu de l'onglet est remplacé par un onglet différent (généralement précédemment pré-rendu).</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webNavigation.onTabReplaced.addListener( + listener, // function + filter // optional object +); +browser.webNavigation.onTabReplaced.removeListener(listener) +browser.webNavigation.onTabReplaced.hasListener(listener) +</pre> + + + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré pour cet événement. Renvoie <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + + + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produit. La fonction recevra les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>.</dd> + </dl> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>replacedTabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet qui a été remplacé.</dd> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. L'ID de l'onglet qui a remplacé l'ancien onglet.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. Le moment où le remplacement s'est produit, en <a class="external external-icon" href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.api.webNavigation.onTabReplaced")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function logOnTabReplaced(details) { + console.log("onTabReplaced: " + details); +} + +browser.webNavigation.onTabReplaced.addListener(logOnTabReplaced);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Acknowledgements</strong> + +<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/webNavigation#event-onTabReplaced"><code>chrome.webNavigation</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> in the Chromium code.</p> + +<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/transitionqualifier/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/transitionqualifier/index.html new file mode 100644 index 0000000000..a224bd4316 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/transitionqualifier/index.html @@ -0,0 +1,85 @@ +--- +title: webNavigation.TransitionQualifier +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/TransitionQualifier +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - TransitionQualifier + - Type + - WebExtensions + - webNavigation +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/TransitionQualifier +--- +<div>{{AddonSidebar()}}</div> + +<div>Informations supplémentaires sur une transition.</div> + +<div></div> + +<div>Notez que beaucoup de valeurs ne sont actuellement pas supportées dans Firefox : voir la <a href="/fr/Add-ons/WebExtensions/API/WebNavigation/TransitionQualifier#Browser_compatibility">table de compatibilité</a> pour plus de détails.</div> + +<div></div> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<dl> + <dt>"client_redirect"</dt> + <dd>Redirection(s) provoquée par le JavaScript en cours d'exécution dans la page ou un pragma "actualiser" dans la balise <a href="/fr/docs/Web/HTML/Element/meta">meta</a> de la page.</dd> + <dt>"server_redirect"</dt> + <dd>Redirection(s) provoquée par un <a href="https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection">code status HTTP 3XX</a> envoyé par le serveur.</dd> + <dt>"forward_back"</dt> + <dd>L'utilisateur a utilisé le bouton avant ou arrière pour déclencher la navigation..</dd> + <dt>"from_address_bar"</dt> + <dd>L'utilisateur a déclenché la navigation depuis la barre d'adresse.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webNavigation.TransitionQualifier")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webnavigation/transitiontype/index.html b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/transitiontype/index.html new file mode 100644 index 0000000000..47bab38b4a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webnavigation/transitiontype/index.html @@ -0,0 +1,95 @@ +--- +title: webNavigation.TransitionType +slug: Mozilla/Add-ons/WebExtensions/API/webNavigation/TransitionType +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - TransitionType + - Type + - WebExtensions + - webNavigation +translation_of: Mozilla/Add-ons/WebExtensions/API/webNavigation/TransitionType +--- +<div>{{AddonSidebar()}}</div> + +<p>Cause de la navigation: par exemple, l'utilisateur a cliqué sur un lien, ou a tapé une adresse, ou a cliqué sur un signet.</p> + +<p>Notez que beaucoup de valeurs ne sont actuellement pas supportées dans Firefox : voir la <a href="/fr/Add-ons/WebExtensions/API/WebNavigation/TransitionType#Browser_compatibility">table de compatibilité du navigateur</a> pour plus de détails.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<dl> + <dt><a id="value-link" name="value-link"></a>"link"</dt> + <dd>L'utilisateur a cliqué sur un lien dans une autre page.</dd> + <dt><a id="value-typed" name="value-typed"></a>"typed"</dt> + <dd>L'utilisateur a tapé l'URL dans la barre d'adresse. Ceci est également utilisé si l'utilisateur a commencé à taper dans la barre d'adresse, puis sélectionné une URL parmi les suggestions qu'il a proposées. Voir aussi " generated".</dd> + <dt><a id="value-auto_bookmark" name="value-auto_bookmark"></a>"auto_bookmark"</dt> + <dd>L'utilisateur a cliqué sur un signet ou un élément dans l'historique du navigateur.</dd> + <dt><a id="value-auto_subframe" name="value-auto_subframe"></a>"auto_subframe"</dt> + <dd>Les iframes imbriqués qui sont automatiquement chargés par leur parent.</dd> + <dt><a id="value-manual_subframe" name="value-manual_subframe"></a>"manual_subframe"</dt> + <dd>Les iframes imbriqués chargés en tant qu'action utilisateur explicite. Le chargement d'une telle iframe générera une entrée dans la liste de navigation avant/arrière.</dd> + <dt><a id="value-generated" name="value-generated"></a>"generated"</dt> + <dd>L'utilisateur a commencé à taper dans la barre d'adresse, puis a cliqué sur une entrée suggérée qui ne contenait pas d'URL.</dd> + <dt><a id="value-start_page" name="value-start_page"></a>"start_page"</dt> + <dd>La page a été passée à la ligne de commande ou est la page de démarrage.</dd> + <dt><a id="value-form_submit" name="value-form_submit"></a>"form_submit"</dt> + <dd>L'utilisateur a soumis un formulaire. Notez que dans certaines situations, par exemple lorsqu'un formulaire utilise un script pour soumettre son contenu, l'envoi d'un formulaire n'entraîne pas ce type de transition.</dd> + <dt><a id="value-reload" name="value-reload"></a>"reload"</dt> + <dd>L'utilisateur a rechargé la page en utilisant le bouton Recharger ou en appuyant sur Entrée dans la barre d'adresse. Ceci est également utilisé pour la restauration de session et la réouverture des onglets fermés.</dd> + <dt><a id="value-keyword" name="value-keyword"></a>"keyword"</dt> + <dd>L'URL a été générée à l'aide d'une <a href="https://support.mozilla.org/fr/kb/comment-rechercher-site-barre-adresse">rechercher par mot</a> configurée par l'utilisateur.</dd> + <dt><a id="value-keyword_generated" name="value-keyword_generated"></a>"keyword_generated"</dt> + <dd>Correspond à une visite générée pour un mot clé.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webNavigation.TransitionType")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webNavigation"><code>chrome.webNavigation</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/web_navigation.json"><code>web_navigation.json</code></a> dans le code de Chromium code.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/blockingresponse/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/blockingresponse/index.html new file mode 100644 index 0000000000..ae6f4733cf --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/blockingresponse/index.html @@ -0,0 +1,97 @@ +--- +title: webRequest.BlockingResponse +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/BlockingResponse +tags: + - API + - Add-ons + - BlockingResponse + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/BlockingResponse +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet de ce type est renvoyé par les auditeurs d'événements qui ont défini le <code>"blocking"</code> dans leur argument <code>extraInfoSpec</code>.</p> + +<p>En définissant des propriétés particulières dans <code>BlockingResponse</code>, l'auditeur peut modifier les requêtes réseau.</p> + +<p>Notez que vous ne pouvez pas définir toutes les propriétés de cet objet dans chaque auditeur : les propriétés que vous pouvez définir dépendent de l'événement qui a déclenché cet auditeur, comme détaillé ci-dessous.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>authCredentials</code>{{optional_inline}}</dt> + <dd><code>object</code>. Si elle est définie, la demande est faite en utilisant les informations d'identification données. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}}. La propriété <code>authCredentials</code> est un objet avec les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>username</code></dt> + <dd><code>string</code>. Nom d'utilisateur à fournir.</dd> + <dt><code>password</code></dt> + <dd><code>string</code>. Mot de passe à fournir.</dd> + </dl> + </dd> + <dt><code>cancel</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si <code>true</code>, la demande est annulée. Vous ne pouvez définir cette propriété dans {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}}, {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}, {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}, et {{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}}.</dd> + <dt><code>redirectUrl</code>{{optional_inline}}</dt> + <dd><code>string</code>. Il s'agit d'une URL, et si elle est définie, la requête originale est redirigée vers cette URL. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} ou {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}.</dd> + <dd>Les redirections vers des schémas non-HTTP tels que data : sont autorisées, mais elles ne sont pas prises en charge actuellement (<span id="summary_alias_container"><span id="short_desc_nonedit_display">{{bug("707624")}})</span></span>. Les redirections utilisent la même méthode de requête que la requête originale à moins qu'elle ne soit initiée à partir de l'étape <code>onHeadersReceived</code>, auquel cas la redirection utilise la méthode GET.</dd> + <dd>Si une extension veut rediriger une URL publique (par exemple HTTPS) vers une <a href="/fr/Add-ons/WebExtensions/user_interface/Extension_pages">page d'extension</a>, le fichier manifest.json de l'extension doit contenir une clé <a href="/fr/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a> qui liste l'URL de la page d'extension.</dd> + <dt><code>requestHeaders</code>{{optional_inline}}</dt> + <dd> + <p>{{WebExtAPIRef('webRequest.HttpHeaders')}}. C'est un objet {{WebExtAPIRef('webRequest.HttpHeaders', "HttpHeaders")}}, un tableau dans lequel chaque objet représente un en-tête. Si elle est définie, la demande est faite avec ces en-têtes plutôt qu'avec les en-têtes d'origine. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}} .</p> + </dd> + <dt><code>responseHeaders</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. C'est un objet {{WebExtAPIRef('webRequest.HttpHeaders', "HttpHeaders")}}, un tableau dans lequel chaque objet représente un en-tête. Si elle est définie, le serveur est supposé avoir répondu avec ces en-têtes de réponse au lieu des originaux. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}. Si plusieurs extensions tentent de définir le même en-tête (par exemple, <code>Content-Security-Policy</code>), une seule des modifications sera réussie..</dd> + <dt><code>upgradeToSecure</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si la valeur <code>true</code> est est définie et que la requête originale est une requête HTTP, cela empêchera l'envoi de la requête originale et fera plutôt une requête sécurisée (HTTPS). Si une extension renvoie <code>redirectUrl</code> dans <code>onBeforeRequest</code>, alors <code>upgradeToSecure</code> sera ignoré pour cette requête. Vous ne pouvez définir cette propriété que dans {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}}.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.BlockingResponse")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/certificateinfo/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/certificateinfo/index.html new file mode 100644 index 0000000000..d97bd2e112 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/certificateinfo/index.html @@ -0,0 +1,79 @@ +--- +title: webRequest.CertificateInfo +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/CertificateInfo +tags: + - API + - Add-ons + - CertificateInfo + - Extensions + - Reference + - Type + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/CertificateInfo +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet décrivant un seul <a href="https://tools.ietf.org/html/rfc5280">certificat X.509</a>.</p> + +<p>L'objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}} retourné par l'objet {{WebExtAPIRef("webRequest.getSecurityInfo()")}} API inclut une propriété de <code>certificats</code> qui est un tableau de ces objets.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>fingerprint</code></dt> + <dd> + <p><code>Object</code>. Un objet avec les propriétés suivantes :</p> + + <dl class="reference-values"> + <dt><code>sha1</code></dt> + <dd><code>String</code>. SHA-1 hash de l'encodage DER du certificat.</dd> + <dt><code>sha256</code></dt> + <dd><code>String</code>. SHA-256 hash de l'encodage DER du certificat.</dd> + </dl> + </dd> + <dt><code>isBuiltInRoot</code></dt> + <dd> + <p><code>Boolean</code>. <code>true</code> si le certificat est l'une des racines de confiance installées dans le navigateur, sinon <code>false</code>.</p> + </dd> + <dt><code>issuer</code></dt> + <dd><code>String</code>. Nom de l'organisation qui a délivré ce certificat, représenté par un nom distinctif et formaté sous la forme d'une liste de noms distinctifs relatifs séparés par des virgules, chacun de la forme "type=value".</dd> + <dd>Par exemple: "<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="objectBox objectBox-string">CN=DigiCert SHA2 Secure Server CA,O=DigiCert Inc,C=US</span></span></span></span>".</dd> + <dt><code>rawDER</code></dt> + <dd><code>Array</code> de <code>Number</code>. Si <a href="/fr/Add-ons/WebExtensions/API/webRequest/getSecurityInfo" title="Use this function to get detailed information about the TLS connection associated with a particular request."><code>webRequest.getSecurityInfo()</code></a> a été appelé avec l'option <code>rawDER</code> présent et mis à <code>true</code>, ceci contiendra l'encodage DER du certificat.</dd> + <dt><code>serialNumber</code></dt> + <dd><code>String</code>. Le <a href="https://tools.ietf.org/html/rfc5280#section-4.1.2.2">numéro de série</a> du certificat.</dd> + <dt><code>subject</code></dt> + <dd><code>String</code>. Nom de l'organisation qui a délivré ce certificat, représenté par un nom distinctif et formaté sous la forme d'une liste de noms distinctifs relatifs séparés par des virgules, chacun de la forme "type=value".</dd> + <dd>Par exemple: "<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="objectBox objectBox-string">CN=*.cdn.mozilla.net,O=Mozilla Corporation,L=Mountain View,ST=California,C=US</span></span></span></span>".</dd> + <dt><code>subjectPublicKeyInfoDigest</code></dt> + <dd> + <p><code>Object</code>. Un objet contenant les propriétés suivantes :</p> + + <dl class="reference-values"> + <dt><code>sha256</code></dt> + <dd><code>String</code>. Base64 encodé SHA-256 hash de l'<a href="https://tools.ietf.org/html/rfc5280#section-4.1.2.7">information de clé publique</a> codée DER.</dd> + </dl> + </dd> + <dt><code>validity</code></dt> + <dd> + <p><code>Object</code>. Période de validité du certificat. Un objet contenant les propriétés suivantes :</p> + + <dl class="reference-values"> + <dt><code>start</code></dt> + <dd><code>Number</code>. Le début de la période de validité du certificat, en <a class="external external-icon" href="https://en.wikipedia.org/wiki/Unix_time" rel="noopener">millisecondes depuis l'époque</a>.</dd> + <dt><code>end</code></dt> + <dd><code>Number</code>. La fin de la période de validité du certificat, en <a class="external external-icon" href="https://en.wikipedia.org/wiki/Unix_time" rel="noopener">millisecondes depuis l'époque</a>.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.CertificateInfo", 10)}}</p> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/filterresponsedata/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/filterresponsedata/index.html new file mode 100644 index 0000000000..1286990c18 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/filterresponsedata/index.html @@ -0,0 +1,76 @@ +--- +title: webRequest.filterResponseData() +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/filterResponseData +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - filterResponseData + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/filterResponseData +--- +<div>{{AddonSidebar()}}</div> + +<p>Utilisez cette fonction pour créer un objet {{WebExtAPIRef("webRequest.StreamFilter")}} pour une requête particulière.<br> + Vous pouvez ensuite utiliser le filtre de flux pour surveiller et modifier la réponse. Vous appelez typiquement cette fonction à partir d'un écouteur d'événements <code>webRequest</code>.</p> + +<p>Pour utiliser cette API, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API</a> "webRequestBlocking", ainsi que les permissions normales nécessaires à l'auditeur de l'événement (la permission "webRequest" et la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission hôte </a>pour l'hôte).</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var filter = browser.webRequest.filterResponseData( + requestId // string +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>requestId</code></dt> + <dd><code>string</code>. ID de la requête à filtrer. Vous pouvez l'obtenir à partir de l'objet de <code>details</code> qui est passé dans n'importe quel écouteur d'événement <code>webRequest</code>.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Un objet {{WebExtAPIRef("webRequest.StreamFilter")}} que vous pouvez utiliser pour surveiller et modifier la réponse.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple, tiré de l'extension <a href="https://github.com/mdn/webextensions-examples/tree/master/http-response">http-response</a>, crée un filtre dans {{WebExtAPIRef("webRequest.onBeforeRequest")}} et l'utilise pour modifier la réponse :</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + let decoder = new TextDecoder("utf-8"); + let encoder = new TextEncoder(); + + filter.ondata = event => { + let str = decoder.decode(event.data, {stream: true}); + // Just change any instance of Example in the HTTP response + // to WebExtension Example. + str = str.replace(/Example/g, 'WebExtension Example'); + filter.write(encoder.encode(str)); + filter.disconnect(); + } + + return {}; +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.com/*"], types: ["main_frame"]}, + ["blocking"] +); +</pre> + +<p>{{WebExtExamples}}</p> + + + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.filterResponseData", 10)}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/getsecurityinfo/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/getsecurityinfo/index.html new file mode 100644 index 0000000000..28f7039917 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/getsecurityinfo/index.html @@ -0,0 +1,106 @@ +--- +title: webRequest.getSecurityInfo() +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/getSecurityInfo +tags: + - API + - Add-ons + - Extensions + - Method + - Reference + - WebExtensions + - getSecurityInfo + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/getSecurityInfo +--- +<div>{{AddonSidebar()}}</div> + +<p>Utilisez cette fonction pour obtenir des informations détaillées sur la connexion <a href="/fr/docs/Glossaire/TLS">TLS</a> associée à une demande particulière..</p> + +<p>Vous passez à cette fonction la <code>requestId</code> pour la requête en question, et quelques paramètres supplémentaires optionnels. Il retourne une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera résolue à un objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}}.</p> + +<p>Vous ne pouvez appeler cette fonction qu'à partir de l'écouteur {{WebExtAPIRef("webRequest.onHeadersReceived")}}. La <code>requestId</code> peut être trouvée dans l'objet <code>details</code> object qui est passé dans l'écouteur.</p> + +<p>Vous devez également passer l'option "blocking" à <code>webRequest.onHeadersReceived.addListener()</code>. Ainsi, pour utiliser cette API, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API</a> "webRequestBlocking", ainsi que les permissions normales nécessaires pour utiliser les écouteurs <code>webRequest</code> (la permission "webRequest" et la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission hôte</a> pour le hôte).</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingInfo = browser.webRequest.getSecurityInfo( + requestId, // string + options // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>requestId</code></dt> + <dd><code>string</code>. ID de la requête pour laquelle vous souhaitez obtenir des informations de sécurité. Vous pouvez l'obtenir à partir de l'objet de <code>details</code> qui est passé dans n'importe quel écouteur d'événement <code>webRequest</code>.</dd> + <dt><code>options</code></dt> + <dd><code>object</code>. Un objet qui peut contenir l'une des propriétés suivantes, toutes facultatives :</dd> + <dd> + <dl class="reference-values"> + <dt><code>certificateChain</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si <code>true</code>, l'objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}} retourné inclura toute la chaîne de certificats jusqu'à et y compris la racine de confiance. Si <code>false</code>, <br> + il n'inclura que le certificat du serveur. La valeur par défaut est <code>false</code>.</dd> + <dt><code>rawDER</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si true, chaque propriété {{WebExtAPIRef("webRequest.CertificateInfo", "CertificateInfo")}} dans le {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo.certificates")}} contiendra une propriété <code>rawDER</code>. Il contient le DER-encoded ASN.1 qui comprend les données du certificat.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui se résout en un objet {{WebExtAPIRef("webRequest.SecurityInfo", "SecurityInfo")}}.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.getSecurityInfo", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple écoute toutes les requêtes HTTPS à "mozilla.org" ou ses sous-domaines, et enregistre le nom de l'objet dans le certificat du serveur :</p> + +<pre class="brush: js">async function logSubject(details) { + try { + let securityInfo = await browser.webRequest.getSecurityInfo(details.requestId, {}); + console.log(details.url); + if (securityInfo.state === "secure" || securityInfo.state === "weak") { + console.log(securityInfo.certificates[0].subject); + } + } + catch(error) { + console.error(error); + } +} + +browser.webRequest.onHeadersReceived.addListener(logSubject, + {urls: ["https://*.mozilla.org/*"]}, + ["blocking"] +);</pre> + +<p>Cet exemple écoute toutes les requêtes HTTPS à "mozilla.org" ou ses sous-domaines, et enregistre le nom dans le certificat racine de confiance :</p> + +<pre class="brush: js">async function logRoot(details) { + try { + let securityInfo = await browser.webRequest.getSecurityInfo( + details.requestId, + {"certificateChain": true} + ); + console.log(details.url); + if (securityInfo.state === "secure" || securityInfo.state === "weak") { + console.log(securityInfo.certificates[securityInfo.certificates.length - 1].issuer); + } + } + catch(error) { + console.error(error); + } +} + +browser.webRequest.onHeadersReceived.addListener(logRoot, + {urls: ["https://*.mozilla.org/*"]}, + ["blocking"] +);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/handlerbehaviorchanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/handlerbehaviorchanged/index.html new file mode 100644 index 0000000000..f5eb98c557 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/handlerbehaviorchanged/index.html @@ -0,0 +1,115 @@ +--- +title: webRequest.handlerBehaviorChanged() +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/handlerBehaviorChanged +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - handlerBehaviorChanged + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/handlerBehaviorChanged +--- +<div>{{AddonSidebar()}}</div> + +<div>Cette fonction peut être utilisée pour s'assurer que les auditeurs d'événements sont appliqués correctement lorsque les pages se trouvent dans le cache en mémoire du navigateur.</div> + +<div></div> + +<div>Si le navigateur a chargé une page et que la page est rechargée, le navigateur peut recharger la page à partir de son cache en mémoire, et dans ce cas, les événements ne seront pas déclenchés pour la demande.</div> + +<p>Supposons que le travail d'une extension consiste à bloquer les requêtes Web par rapport à un modèle, et le scénario suivant se produit :</p> + +<ul> + <li>L'utilisateur charge une page qui inclut une requête particulière, et le modèle permet la requête.</li> + <li>La ressource est chargée et mise en cache en mémoire.</li> + <li>Les modèles de l'extension sont mis à jour, de telle sorte que la ressource ne serait plus autorisée.</li> + <li>L'utilisateur recharge la page.</li> +</ul> + +<p>Comme la page sera rechargée à partir du cache mémoire, il se peut que l'auditeur ne soit plus appelé et que la requête soit chargée malgré la nouvelle stratégie de l'extension.</p> + +<p>La fonction <code>handlerBehaviorChanged()</code> est conçue pour résoudre ce problème. Il vide le cache en mémoire, de sorte que les rechargements de page déclenchent les auditeurs d'événements.</p> + +<p>Parce que <code>handlerBehaviorChanged()</code> nettoie le cache, cela peut être coûteux et mauvais pour la performance. Le module webRequest définit une propriété en lecture seule {{WebExtAPIRef("webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES", "MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES")}} : faire plus d'appels que ce nombre en 10 minutes n'aura aucun effet.</p> + +<p>L'implémentation de la mise en cache, d'où la nécessité de cette fonction, varie d'un navigateur à l'autre, de sorte que dans certains navigateurs, cette fonction ne fait rien.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var flushingCache = browser.webRequest.handlerBehaviorChanged() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie sans arguments, lorsque l'opération sera terminée.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.handlerBehaviorChanged")}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Dans le snippet suivant, nous vidons le cache en mémoire via un appel à <code>handlerBehaviorChanged()</code>, et signalons cette action en enregistrant un message approprié à la console.</p> + +<pre class="brush: js">function onFlushed() { + console.log(`In-memory cache flushed`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +var flushingCache = browser.webRequest.handlerBehaviorChanged(); +flushingCache.then(onFlushed, onError);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/httpheaders/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/httpheaders/index.html new file mode 100644 index 0000000000..5b2ff2cd61 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/httpheaders/index.html @@ -0,0 +1,77 @@ +--- +title: webRequest.HttpHeaders +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/HttpHeaders +tags: + - API + - Add-ons + - Extensions + - HttpHeaders + - Non-standard + - Reference + - Type + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/HttpHeaders +--- +<div>{{AddonSidebar()}}</div> + +<p>Un tableau d'en-tetes HTTP. Chaque en-tête est représenté comme un objet avec deux propriétés : <code>name</code> et <code>valeur</code> ou <code>binaryValue</code>.</p> + +<h2 id="Type">Type</h2> + +<p>Un <code>tableau</code> d'<code>objet</code>s. Chaque objet a les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>name</code></dt> + <dd><code>string</code>. Nom de l'en-tête HTTP.</dd> + <dt><code>value</code>{{optional_inline}}</dt> + <dd><code>string</code>. Valeur de l'en-tete HTTP si elle peut être représentée par UTF-8. Cette propriété ou valeur binaire doit être présente.</dd> + <dt><code>binaryValue</code>{{optional_inline}}</dt> + <dd><code>array</code> d'<code><code>integer</code></code>. Valeur de l'en-tête HTTP s'il ne peut pas être représenté par UTF-8, représenté par en octets (0..255). Soit cette propriété ou cette <code>valeur</code> doit être présente.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.HttpHeaders")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/index.html new file mode 100644 index 0000000000..ccf4a09b02 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/index.html @@ -0,0 +1,200 @@ +--- +title: webRequest +slug: Mozilla/Add-ons/WebExtensions/API/webRequest +tags: + - API + - Add-ons + - Extensions + - Interface + - Non-standard + - Reference + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest +--- +<p>{{AddonSidebar}}</p> + +<p>Ajout d'écouteurs d'événements pour les différentes étapes d'une requête HTTP. L'écouteur de l'événement reçoit des informations détaillées sur la demande et peut modifier ou annuler la demande.</p> + +<p>Chaque événement est déclenché à un stade particulier de la demande. La séquence typique des événements est la suivante :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13376/webRequest-flow.png" style="display: block; height: 680px; margin-left: auto; margin-right: auto; width: 624px;"></p> + +<p>{{WebExtAPIRef("webRequest.onErrorOccurred", "onErrorOccurred")}} peut être tiré à tout moment pendant la requête. Notez également que parfois la séquence des événements peut différer de ceci : par exemple, dans Firefox, lors d'une mise à niveau <a href="/fr/docs/Sécurité/HTTP_Strict_Transport_Security">HSTS</a>, l'événement <code>onBeforeRedirect</code> sera déclenché immédiatement après <code>onBeforeRequest</code>.</p> + +<p>Tous les évènements (excepté <code>onErrorOccurred</code>) peuvent prendre trois arguments pour <code>addListener()</code>:</p> + +<ul> + <li>Le receveur d'évènements lui-même</li> + <li>un {{WebExtAPIRef("webRequest.RequestFilter", "filter")}} objet, afin de n'être notifié que pour les requêtes effectués par des URLs particulières ou pour un type particulier de ressources.</li> + <li>un <code>extraInfoSpec</code> objet optionnel. Vous pouvez utiliser celui-ci pour passer des instructions spécifiques à l'évènement supplémentaires.</li> +</ul> + +<p>Une fonction d'écoute reçoit un objet <code>details</code> qui contient des informations à propos de la requête. Il inclut un ID de requête, fourni afin de permettre à une extension de relier des évènements associés à une même requête. Il est unique à chaque session de navigation et à l'extension. Il reste le même tout au long d'une requête, même durant les redirections et les échanges d'authentifications.</p> + +<p>Pour utiliser l'API webRequest pour un hôte donné, une extension doit avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission API</a> "webRequest" et la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission hôte </a>pour cet hôte. Pour utiliser la fonction "blocking", l'extension doit également avoir la permission API "webRequestBlocking".</p> + +<p>Pour intercepter des ressources chargées par une page (comme des images, des scripts ou des feuilles de style), l'extension doit avoir la permission de l'hôte pour la ressource ainsi que pour la page principale demandant la ressource. Par exemple, si une page à "https://developer.mozilla.org" charge une image à partir de "https://mdn.mozillademos.org", alors une extension doit avoir les deux permissions d'hôte si elle doit intercepter la demande d'image.</p> + +<h2 id="Modifier_une_requête">Modifier une requête</h2> + +<p>Sur certains de ces événements, vous pouvez modifier la demande. Plus précisément, vous pouvez :</p> + +<ul> + <li>Annuler une requête avec: + <ul> + <li>{{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}}</li> + <li>{{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}</li> + <li>{{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}}</li> + </ul> + </li> + <li>Rediriger une requête avec: + <ul> + <li>{{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}}</li> + <li>{{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}</li> + </ul> + </li> + <li>Modifier des en-têtes de requêtes avec: + <ul> + <li>{{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}</li> + </ul> + </li> + <li>Modifier des réponses d'en-têtes avec: + <ul> + <li>{{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}}</li> + </ul> + </li> + <li>Fournir des informations d'authentifications avec: + <ul> + <li>{{WebExtAPIRef("webRequest.onAuthRequired", "onAuthRequired")}}</li> + </ul> + </li> +</ul> + +<p>Pour ce faire, vous devez transmettre une option avec la valeur "blocking" dans l'argument <code>extraInfoSpec</code> à la fonction <code>addListener()</code> de l'événement. Cela rend l'auditeur synchrone. Dans l'écouteur, vous pouvez alors renvoyer un objet {{WebExtAPIRef("webRequest.BlockingResponse", "BlockingResponse")}}, qui indique la modification à apporter : par exemple, l'en-tête de requête modifié que vous souhaitez envoyer.</p> + +<div class="blockIndicator warning"> +<p><strong>Avertissement </strong>: Les protocoles non-HTTP(S) ne supportent pas actuellement la fonctionnalité de "<code>blockage</code>", donc la modification de ces requêtes n'est pas disponible pour le moment. Voir {{bug(1475832)}} pour plus de détails.</p> +</div> + +<h2 id="Accéder_aux_informations_de_sécurité">Accéder aux informations de sécurité</h2> + +<p>Dans l'écouteur {{WebExtAPIRef("webRequest.onHeadersReceived", "onHeadersReceived")}} vous pouvez accéder aux propriétés <a href="/fr/docs/Glossaire/TLS">TLS</a> d'une requête en appelant {{WebExtAPIRef("webRequest.getSecurityInfo()", "getSecurityInfo()")}}. Pour ce faire, vous devez également transmettre le "blockage" dans l'argument <code>extraInfoSpec</code> à la fonction <code>addListener()</code> de l'évènement.</p> + +<p>Vous pouvez lire les détails de la prise de contact TLS, mais vous ne pouvez pas les modifier ou remplacer les décisions de confiance du navigateur.</p> + +<h2 id="Modifier_les_réponses">Modifier les réponses</h2> + +<p>Pour modifier les corps de réponse HTTP pour une requête, appelez {{WebExtAPIRef("webRequest.filterResponseData")}}, en lui transmettant l'ID de la requête. Cela renvoie un objet {{WebExtAPIRef("webRequest.StreamFilter")}} que vous pouvez utiliser pour examiner et modifier les données reçues par le navigateur.</p> + +<p>Pour ce faire, vous devez disposer de la permission de l'API "webRequestBlocking" ainsi que la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API</a> "webRequest" et la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission de l'hôte </a>pour l'hôte concerné.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("webRequest.BlockingResponse")}}</dt> + <dd> + <p>Un objet de ce type est renvoyé par les auditeurs d'événements qui ont défini le <code>"blockage"</code> dans leur argument <code>extraInfoSpec</code>. En définissant des propriétés particulières dans <code>BlockingResponse</code>, the listener can modify network requests.</p> + </dd> + <dt>{{WebExtAPIRef("webRequest.CertificateInfo")}}</dt> + <dd>Un objet décrivant un seul certificat X.509.</dd> + <dt>{{WebExtAPIRef("webRequest.HttpHeaders")}}</dt> + <dd>Un tableau d'en-têtes HTTP. Chaque en-tête est représenté comme un objet avec deux propriétés : <code>name</code> et <code>valeur</code> ou <code>binaryValue</code>.</dd> + <dt>{{WebExtAPIRef("webRequest.RequestFilter")}}</dt> + <dd>Un objet décrivant les filtres à appliquer aux événements webRequest.</dd> + <dt>{{WebExtAPIRef("webRequest.ResourceType")}}</dt> + <dd>Représente un type particulier de ressources récupérées dans une requête Web.</dd> + <dt>{{WebExtAPIRef("webRequest.SecurityInfo")}}</dt> + <dd>Un objet décrivant les propriétés de sécurité d'une requête Web particulière.</dd> + <dt>{{WebExtAPIRef("webRequest.StreamFilter")}}</dt> + <dd>Un objet qui peut être utilisé pour surveiller et modifier les réponses HTTP pendant leur réception.</dd> + <dt>{{WebExtAPIRef("webRequest.UploadData")}}</dt> + <dd>Contient des données téléchargées dans une requête URL.</dd> +</dl> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt>{{WebExtAPIRef("webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES", "webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES")}}</dt> + <dd>Le nombre de fois que <code><a href="/fr/Add-ons/WebExtensions/API/WebRequest/handlerBehaviorChanged" title="Suppose an add-on's job is to block web requests against a pattern, and the following scenario happens:"><code>handlerBehaviorChanged()</code></a></code> peut être appelé dans une période de 10 minutes.</dd> +</dl> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("webRequest.handlerBehaviorChanged()")}}</dt> + <dd>Cette fonction peut être utilisée pour s'assurer que les écouteurs d'événements sont appliqués correctement lorsque les pages se trouvent dans le cache en mémoire du navigateur.</dd> + <dt>{{WebExtAPIRef("webRequest.filterResponseData()")}}</dt> + <dd>Retourne un objet {{WebExtAPIRef("webRequest.StreamFilter")}} pour une requête donnée.</dd> + <dt>{{WebExtAPIRef("webRequest.getSecurityInfo()")}}</dt> + <dd>Obtient des informations détaillées sur la connexion <a href="/fr/docs/Glossaire/TLS">TLS</a> associée à une requête donnée.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("webRequest.onBeforeRequest")}}</dt> + <dd>Lancé lorsqu'une demande est sur le point d'être faite, et avant que les en-têtes ne soient disponibles. C'est un bon endroit pour écouter si vous voulez annuler ou rediriger la demande.</dd> + <dt>{{WebExtAPIRef("webRequest.onBeforeSendHeaders")}}</dt> + <dd>Câblé avant d'envoyer des données HTTP, mais après que les en-têtes HTTP soient disponibles. C'est un bon endroit pour écouter si vous voulez modifier les en-têtes de requête HTTP.</dd> + <dt>{{WebExtAPIRef("webRequest.onSendHeaders")}}</dt> + <dd>Lancé juste avant l'envoi des en-têtes. Si votre add-on ou d'autres en-têtes modifiés dans <code>{{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}</code>, vous verrez la version modifiée ici.</dd> + <dt>{{WebExtAPIRef("webRequest.onHeadersReceived")}}</dt> + <dd>Lancé lorsque les en-têtes de réponse HTTP associés à une requête ont été reçus. Vous pouvez utiliser cet événement pour modifier les en-têtes de réponse HTTP.</dd> + <dt>{{WebExtAPIRef("webRequest.onAuthRequired")}}</dt> + <dd>Déclenché lorsque le serveur demande au client de fournir des informations d'authentification. L'auditeur ne peut rien faire, annuler la demande ou fournir des informations d'authentification.</dd> + <dt>{{WebExtAPIRef("webRequest.onResponseStarted")}}</dt> + <dd>Lancé lorsque le premier octet du corps de réponse est reçu. Pour les requêtes HTTP, cela signifie que la ligne d'état et les en-têtes de réponse sont disponibles.</dd> + <dt>{{WebExtAPIRef("webRequest.onBeforeRedirect")}}</dt> + <dd>Déclenché lorsqu'une redirection initiée par le serveur est sur le point de se produirer.</dd> + <dt>{{WebExtAPIRef("webRequest.onCompleted")}}</dt> + <dd>C'est déclenché lorsqu'une demande est complétée.</dd> + <dt>{{WebExtAPIRef("webRequest.onErrorOccurred")}}</dt> + <dd>Déclenché lorsqu'une erreur se produit.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.webRequest")}}</p> + +<p><a href="/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities#webRequest_incompatibilities">Extra notes on Chrome incompatibilities</a>.</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/max_handler_behavior_changed_calls_per_10_minutes/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/max_handler_behavior_changed_calls_per_10_minutes/index.html new file mode 100644 index 0000000000..8baf0fb950 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/max_handler_behavior_changed_calls_per_10_minutes/index.html @@ -0,0 +1,68 @@ +--- +title: webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES +slug: >- + Mozilla/Add-ons/WebExtensions/API/webRequest/MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES +tags: + - API + - Add-ons + - Extensions + - MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES + - Non-standard + - Property + - Reference + - WebExtensions + - webRequest +translation_of: >- + Mozilla/Add-ons/WebExtensions/API/webRequest/MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES +--- +<p>{{AddonSidebar}}</p> + +<p>Le nombre maximum de fois que <code>{{WebExtAPIRef("webRequest.handlerBehaviorChanged", "handlerBehaviorChanged()")}}</code> peut être appelé dans une période de 10 minutes.</p> + +<p>Cette propriété est en lecture seule.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onauthrequired/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onauthrequired/index.html new file mode 100644 index 0000000000..3ed5ad38ca --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onauthrequired/index.html @@ -0,0 +1,367 @@ +--- +title: webRequest.onAuthRequired +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/onAuthRequired +tags: + - API + - Addons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onAuthRequired + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onAuthRequired +--- +<div>{{AddonSidebar()}}</div> + +<p>Mise en place quand le serveur envoie un code status 401 ou 407 : c'est-à-dire lorsque le serveur demande au client de fournir des informations d'authentification telles qu'un nom d'utilisateur et un mot de passe.</p> + +<p>L'auditeur peut répondre de l'une des quatre façons suivantes :</p> + +<p><strong>Ne rien faire </strong>: l'auditeur ne peut rien faire, il suffit d'observer la demande. Si cela se produit, cela n'aura aucun effet sur le traitement de la demande, et le navigateur demandera probablement simplement à l'utilisateur de se connecter.</p> + +<p><strong>Annuler la demande </strong>: l'auditeur peut annuler la demande. S'ils le font, l'authentification échouera et l'utilisateur ne sera pas invité à se connecter. Les prolongations peuvent annuler les demandes comme suit :</p> + +<ul> + <li>dans addListener, passez <code>"blocking"</code> dans le paramètre <code>extraInfoSpec </code></li> + <li>dans l'écouteur lui-même, retourne un objet avec une propriété <code>cancel</code> définie à <code>true</code></li> +</ul> + +<p><strong>Fournir des informations d'identification de manière synchrone </strong>: si les informations d'identification sont disponibles de manière synchrone, l'extension peut les fournir de manière synchrone. Si l'extension fait cela, le navigateur tentera de se connecter avec les informations d'identification données.<br> + L'auditeur peut fournir des informations d'identification de manière synchrone comme suit :</p> + +<ul> + <li>dans addListener, passez <code>"blocking"</code> dans le paramètre <code>extraInfoSpec</code></li> + <li>dans l'auditeur, retourner un objet avec une propriété <code>authCredentials</code> définie sur les informations d'identification à fournir</li> +</ul> + +<p><strong>Fournir les informations d'identification de manière asynchrone </strong>: l'extension peut avoir besoin de récupérer les informations d'identification de manière asynchrone. Par exemple, l'extension peut avoir besoin d'extraire les informations d'identification du stockage ou de demander à l'utilisateur. Dans ce cas, l'auditeur peut fournir des informations d'identification de manière asynchrone comme suit :</p> + +<ul> + <li>dans addListener, passez <code>"blocking"</code> dans le paramère <code>extraInfoSpec</code></li> + <li>dans l'auditeur, retourner une <code>Promise</code> qui est résolue avec un objet contenant une propriété <code>authCredentials</code>, définie sur les credentials à fournir.</li> +</ul> + +<p>Voir <a href="/fr/Add-ons/WebExtensions/API/webRequest/onAuthRequired#Examples">Exemples</a>.</p> + +<p>Si vous utilisez le <code>"blockage"</code> vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API "webRequestBlocking"</a> dans votre manifest.json.</p> + +<p>Si votre poste fournit de mauvaises informations d'identification, l'auditeur sera rappelé. Pour cette raison, veillez à ne pas entrer dans une boucle infinie en fournissant à plusieurs reprises de mauvaises informations d'identification.</p> + +<h2 id="Autorisation_de_proxy">Autorisation de proxy</h2> + +<p>En général, Firefox ne déclenche pas d'événements <code>webRequest</code> pour les requêtes système, telles que les mises à jour de navigateur ou d'extension, ou les requêtes des moteurs de recherche. Pour permettre à l'autorisation de proxy de fonctionner sans problème pour les requêtes système, à partir de la version 57 Firefox implémente une exception à cette règle.</p> + +<p>Si une extension a les permissions "webRequest", "webRequestBlocking", "proxy", et "<all_urls>", alors elle pourra utiliser <code>onAuthRequired</code> pour fournir des informations d'identification pour l'autorisation de proxy (mais pas pour l'autorisation web normale). L'auditeur ne sera pas en mesure d'annuler les demandes du système ou d'apporter d'autres modifications aux demandes du système.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webRequest.onAuthRequired.addListener( + listener, // function + filter, // object + extraInfoSpec // optional array of strings +) +browser.webRequest.onAuthRequired.removeListener(listener) +browser.webRequest.onAuthRequired.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> + <dd>Ajoute un écouteur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>écouteur</code> est enregistré à cet événement. Retourne <code>true</code> s'il est à l'écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p> Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur la demande. Voir les <code><a href="#details">détails</a></code> ci-dessous.</dd> + </dl> + + <p>Retourne : {{WebExtAPIRef('webRequest.BlockingResponse')}} ou une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + + <ul> + <li>Pour traiter la requête de manière synchrone, inclure<code>"blocking"</code> dans le paramètre <code>extraInfoSpec</code> et retourner un objet <code>BlockingResponse</code>, avec son <code>cancel</code> ou ses propriétés <code>authCredentials</code>.</li> + <li>Pour traiter la requête de manière asynchrone, inclure <code>"blocking"</code> dans le paramètre <code>extraInfoSpec</code> et retourner une <code>Promise</code> qui est résolue avec un objet <code>BlockingResponse</code>, avec son <code>cancel</code> ou ses propriétés <code>authCredentials</code>.</li> + </ul> + </dd> + <dt><code>filter</code></dt> + <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> + <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> + <dd><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes <span class="im">:</span></dd> + <dd> + <ul> + <li><code>"blocking"</code>: faire le blocage de la demande, afin que vous puissiez annuler la demande ou fournir des informations d'authentification.</li> + <li><span class="im"><code>"</code></span><code>responseHeaders</code><span class="im"><code>"</code>: inclure <code>responseHeaders</code> dans l'objet <code>details</code> transmis à l'auditeur</span></li> + </ul> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>challenger</code></dt> + <dd><code>object</code>. Le serveur demandant l'authentification. C'est un objet avec les propriétés suivantes :</dd> + <dd> + <dl class="reference-values"> + <dt><code>host</code></dt> + <dd><code>string</code>. Le <a href="https://en.wikipedia.org/wiki/Hostname#Internet_hostnames">nom d'hôte</a> du serveur.<br> + <strong>Warning</strong>: Contrairement à chrome, Firefox retournera l'hôte demandé au lieu du proxy demandant l'authentification, même si <code>isProxy</code> est <code>true</code>.</dd> + <dt><code>port</code></dt> + <dd><code>integer</code>. Le numéro de port du serveur.</dd> + </dl> + </dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> + <dt><code>isProxy</code></dt> + <dd><code>boolean</code>. <code>true</code> pour Proxy-Authenticate, <code>false</code> pour WWW-Authenticate. <strong>Note</strong>: <code>webRequest.onAuthRequired</code> n'est appelé que pour les serveurs proxy HTTP et HTTPS/SSL nécessitant une authentification, et non pour les serveurs proxy SOCKS nécessitant une authentification.</dd> + <dt><code>method</code></dt> + <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> + <dt><code>proxyInfo</code></dt> + <dd> + <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> + + <dl> + <dt><code>host</code></dt> + <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> + <dt><code>port</code></dt> + <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> + <dt><code>type</code></dt> + <dd> + <p><code>string</code>. Le type de serveur proxy. L'un des :</p> + + <ul> + <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> + <li>"https": proxy HTTP sur connexion TLS vers proxy</li> + <li>"socks": SOCKS v5 proxy</li> + <li>"socks4": SOCKS v4 proxy</li> + <li>"direct": pas de proxy</li> + <li>"unknown": proxy inconnu</li> + </ul> + </dd> + <dt><code>username</code></dt> + <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> + <dt><code>proxyDNS</code></dt> + <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> + <dt><code>failoverTimeout</code></dt> + <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion ne parvient pas à connecter le serveur proxy après ce nombre de secondes, le serveur proxy suivant dans le tableau renvoyé par <a href="/fr/docs/Add-ons/WebExtensions/API/proxy#FindProxyForURL()_return_value">FindProxyForURL()</a> sera utilisé.</dd> + </dl> + </dd> + <dt><code>realm</code>{{optional_inline}}</dt> + <dd><code>string</code>. La zone d'authentification <a href="https://tools.ietf.org/html/rfc1945#section-11">realm</a> fournie par le serveur, s'il y en a un.</dd> + <dt><code>requestId</code></dt> + <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> + <dd> + <dl class="reference-values"> + </dl> + </dd> + <dt><code>responseHeaders</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> + <dt><code>scheme</code></dt> + <dd><code>string</code>. Le schéma d'authentification : <code>"basic"</code> ou <code>"digest</code>".</dd> + <dt><code>statusCode</code></dt> + <dd><code>integer</code>. Code d'état HTTP standard renvoyé par le serveur.</dd> + <dt><code>statusLine</code></dt> + <dd><code>string</code>. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes</dd> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>type</code></dt> + <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. Cible de la demande.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.onAuthRequired", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code n'observe que les demandes d'authentification pour l'URL cible :</p> + +<pre class="brush: js">var target = "https://intranet.company.com/"; + +function observe(requestDetails) { + console.log("observing: " + requestDetails.requestId); +} + +browser.webRequest.onAuthRequired.addListener( + observe, + {urls: [target]} +);</pre> + +<p>Ce code annule les demandes d'authentification pour l'URL cible :</p> + +<pre class="brush: js">var target = "https://intranet.company.com/"; + +function cancel(requestDetails) { + console.log("canceling: " + requestDetails.requestId); + return {cancel: true}; +} + +browser.webRequest.onAuthRequired.addListener( + cancel, + {urls: [target]}, + ["blocking"] +);</pre> + +<p>Ce code fournit les informations d'identification de manière synchrone. Il doit garder une trace des demandes en suspens, pour s'assurer qu'il n'essaie pas à plusieurs reprises de soumettre de mauvaises références :</p> + +<pre class="brush: js">var target = "https://intranet.company.com/"; + +var myCredentials = { + username: "me@company.com", + password: "zDR$ERHGDFy" +} + +var pendingRequests = []; + +// A request has completed. +// We can stop worrying about it. +function completed(requestDetails) { + console.log("completed: " + requestDetails.requestId); + var index = pendingRequests.indexOf(requestDetails.requestId); + if (index > -1) { + pendingRequests.splice(index, 1); + } +} + +function provideCredentialsSync(requestDetails) { + // If we have seen this request before, then + // assume our credentials were bad, and give up. + if (pendingRequests.indexOf(requestDetails.requestId) != -1) { + console.log("bad credentials for: " + requestDetails.requestId); + return {cancel:true}; + } + pendingRequests.push(requestDetails.requestId); + console.log("providing credentials for: " + requestDetails.requestId); + return {authCredentials: myCredentials}; +} + +browser.webRequest.onAuthRequired.addListener( + provideCredentialsSync, + {urls: [target]}, + ["blocking"] + ); + +browser.webRequest.onCompleted.addListener( + completed, + {urls: [target]} +); + +browser.webRequest.onErrorOccurred.addListener( + completed, + {urls: [target]} +);</pre> + +<p>Ce code fournit les informations d'identification de manière asynchrone, en les récupérant à partir du stockage. Il doit également assurer le suivi des demandes en suspens, afin de s'assurer qu'il n'essaie pas à plusieurs reprises de soumettre de mauvaises références :</p> + +<pre class="brush: js">var target = "https://httpbin.org/basic-auth/*"; + +var pendingRequests = []; + +/* +A request has completed. We can stop worrying about it. +*/ +function completed(requestDetails) { + console.log("completed: " + requestDetails.requestId); + var index = pendingRequests.indexOf(requestDetails.requestId); + if (index > -1) { + pendingRequests.splice(index, 1); + } +} + +function provideCredentialsAsync(requestDetails) { + // If we have seen this request before, + // then assume our credentials were bad, + // and give up. + if (pendingRequests.indexOf(requestDetails.requestId) != -1) { + console.log("bad credentials for: " + requestDetails.requestId); + return {cancel: true}; + + } else { + pendingRequests.push(requestDetails.requestId); + console.log("providing credentials for: " + requestDetails.requestId); + // we can return a promise that will be resolved + // with the stored credentials + return browser.storage.local.get(null); + } +} + +browser.webRequest.onAuthRequired.addListener( + provideCredentialsAsync, + {urls: [target]}, + ["blocking"] + ); + +browser.webRequest.onCompleted.addListener( + completed, + {urls: [target]} +); + +browser.webRequest.onErrorOccurred.addListener( + completed, + {urls: [target]} +); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforeredirect/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforeredirect/index.html new file mode 100644 index 0000000000..0a3aa3992e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforeredirect/index.html @@ -0,0 +1,208 @@ +--- +title: webRequest.onBeforeRedirect +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeRedirect +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onBeforeRedirect + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeRedirect +--- +<div>{{AddonSidebar()}}</div> + +<p>Déclenché lorsqu'une redirection initiée par le serveur est sur le point de se produire.</p> + +<p>Notez que vous ne pouvez pas passer le <code>"blockage"</code> pour cet événement, donc vous ne pouvez pas modifier ou annuler la demande de cet événement : c'est uniquement à titre d'information.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webRequest.onBeforeRedirect.addListener( + listener, // function + filter, // object + extraInfoSpec // optional array of strings +) +browser.webRequest.onBeforeRedirect.removeListener(listener) +browser.webRequest.onBeforeRedirect.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> + <dd>Ajouter un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur la demande. Voir les <code><a href="#details">détails</a></code> ci-dessous.</dd> + </dl> + </dd> + <dt><code>filter</code></dt> + <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> + <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> + <dd><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur :</dd> + <dd> + <ul> + <li><span class="im"><code>"</code></span><code>responseHeaders</code><span class="im"><code>"</code>: inclure <code>responseHeaders</code> dans l'objet <code>détails</code> </span>transmis à l'auditeur.</li> + </ul> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>documentUrl</code></dt> + <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> + <dt><code>fromCache</code></dt> + <dd><code>boolean</code>. Indique si cette réponse a été récupérée dans le cache du disque.</dd> + <dt><code>ip</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'adresse IP du serveur à laquelle la requête a été envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale.</dd> + <dt><code>method</code></dt> + <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> + <dt><code>originUrl</code></dt> + <dd> + <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> + + <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> + + + </dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> + <dt><code>proxyInfo</code></dt> + <dd> + <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> + + <dl> + <dt><code>host</code></dt> + <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> + <dt><code>port</code></dt> + <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> + <dt><code>type</code></dt> + <dd> + <p><code>string</code>. Le type de serveur proxy. L'un des :</p> + + <ul> + <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> + <li>"https": proxy HTTP sur connexion TLS vers proxy</li> + <li>"socks": SOCKS v5 proxy</li> + <li>"socks4": SOCKS v4 proxy</li> + <li>"direct": pas de proxy</li> + <li>"unknown": proxy inconnu</li> + </ul> + </dd> + <dt><code>username</code></dt> + <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> + <dt><code>proxyDNS</code></dt> + <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> + <dt><code>failoverTimeout</code></dt> + <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> + </dl> + </dd> + <dt><code>redirectUrl</code></dt> + <dd><code>string</code>. La nouvelle URL.</dd> + <dt><code>requestId</code></dt> + <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> + <dt><code>responseHeaders</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> + <dt><code>statusCode</code></dt> + <dd><code>integer</code>. Code d'état HTTP standard renvoyé par le serveur.</dd> + <dt><code>statusLine</code></dt> + <dd><code>string</code>. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes</dd> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>type</code></dt> + <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. Cible de la demande.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.onBeforeRedirect", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">var target = "https://developer.mozilla.org/*"; + +/* +e.g. +"https://developer.mozilla.org/" +"https://developer.mozilla.org/en-US/" +*/ +function logResponse(responseDetails) { + console.log(responseDetails.url); + console.log(responseDetails.redirectUrl); +} + +browser.webRequest.onBeforeRedirect.addListener( + logResponse, + {urls: [target]} +); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforerequest/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforerequest/index.html new file mode 100644 index 0000000000..c9d06a4872 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforerequest/index.html @@ -0,0 +1,301 @@ +--- +title: webRequest.onBeforeRequest +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeRequest +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onBeforeRequest + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeRequest +--- +<div>{{AddonSidebar()}}</div> + +<p>Cet événement est déclenché lorsqu'une demande est sur le point d'être faite et avant que les en-têtes ne soient disponibles. C'est un bon endroit pour écouter si vous voulez annuler ou rediriger la demande.</p> + +<p>Pour annuler ou rediriger la requête, incluez d'abord <code>"blocking"</code> dans l'argument tableau <code>extraInfoSpec</code> pour <code>addListener()</code>. Ensuite, dans la fonction Listener, retournez un objet {{WebExtAPIRef("webRequest.BlockingResponse", "BlockingResponse")}}, en définissant la propriété appropriée :</p> + +<ul> + <li>pour annuler la demande, inclure une propriété <code>cancel</code> avec la valeur <code>true</code>.</li> + <li>pour rediriger la requête, inclure une propriété <code>redirectUrl</code> avec la valeur fixée à l'URL vers laquelle vous voulez rediriger.</li> +</ul> + +<p>Si une extension veut rediriger une URL publique (par exemple HTTPS) ver une <a href="/fr/Add-ons/WebExtensions/user_interface/Extension_pages">page d'extension</a>, de l'extension doit contenir une clé <a href="/fr/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a> qui liste l'URL de la page d'extension.</p> + +<p>Lorsque plusieurs gestionnaires de blocage modifient une requête, une seule série de modifications prend effet. Les redirections et les annulations ont la même priorité. Ainsi, si vous avez annulé une requête, vous pouvez voir une autre requête avec la même <code>requestId</code> à nouveau si un autre gestionnaire de blocage a redirigé la requête.</p> + +<p>A partir de Firefox 52, au lieu de renvoyer <code>BlockingResponse</code>, l'auditeur peut renvoyer une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue avec un <code>BlockingResponse</code>. Ceci permet à l'auditeur de traiter la demande de manière asynchrone.</p> + +<p>Si vous utilisez le <code>"blocking"</code>, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API "webRequestBlocking"</a> dans votre manifest.json.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webRequest.onBeforeRequest.addListener( + listener, // function + filter, // object + extraInfoSpec // optional array of strings +) +browser.webRequest.onBeforeRequest.removeListener(listener) +browser.webRequest.onBeforeRequest.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> + <dd>Ajoute un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument de l'<code>écouteur</code> est l'écouteur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>l'écouteur</code> est inscrit à cet événement. Renvoie <code>true</code> s'il est à l'écoute, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur la demande. Voir les <code><a href="#details">details</a></code> ci-dessous.</dd> + </dl> + + <p>Les retours : {{WebExtAPIRef('webRequest.BlockingResponse')}}. Si <code>"blocking"</code>est spécifié dans le paramètre <code>extraInfoSpec</code>, l'auditeur d'événement doit retourner un objet <code>BlockingResponse</code>, et peut définir soit son <code>annulation</code>, soit ses propriétés <code>redirectUrl</code>. A partir de Firefox 52, au lieu de renvoyer <code>BlockingResponse</code>,l'auditeur peut renvoyer une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue avec un <code>BlockingResponse</code>. Ceci permet à l'auditeur de traiter la demande de manière asynchrone.</p> + </dd> + <dt><code>filter</code></dt> + <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> + <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> + <dd><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes <span class="im">:</span></dd> + <dd> + <ul> + <li><code>"blocking"</code>: rendre la requête synchrone, de sorte que vous pouvez annuler ou rediriger la requête</li> + <li><span class="im"><code>"requestBody"</code>: include <code>requestBody</code> dans l'objet <code>details</code> </span>transmis à l'auditeur</li> + </ul> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>documentUrl</code></dt> + <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> + <dt><code>frameAncestors</code></dt> + <dd><code>array</code>. Contient des informations pour chaque document dans la hiérarchie des cadres jusqu'au document de niveau supérieur. Le premier élément du tableau contient des informations sur le parent immédiat du document demandé, et le dernier élément contient des informations sur le document de niveau supérieur. Si la charge est réellement pour le document de niveau supérieur, alors ce tableau est vide.</dd> + <dd> + <dl class="reference-values"> + <dt><code>url</code></dt> + <dd><code>string</code>. URL à partir de laquelle le document a été chargé.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Le <code>frameId</code> du document. <code>details.frameAncestors[0].frameId</code> est le même que <code>details.parentFrameId</code>.</dd> + </dl> + </dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> + <dt><code>method</code></dt> + <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> + <dt><code>originUrl</code></dt> + <dd> + <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> + + <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> + </dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> + <dt><code>proxyInfo</code></dt> + <dd> + <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> + + <dl> + <dt><code>host</code></dt> + <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> + <dt><code>port</code></dt> + <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> + <dt><code>type</code></dt> + <dd> + <p><code>string</code>. Le type de serveur proxy. L'un des :</p> + + <ul> + <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> + <li>"https": proxy HTTP sur connexion TLS vers proxy</li> + <li>"socks": SOCKS v5 proxy</li> + <li>"socks4": SOCKS v4 proxy</li> + <li>"direct": pas de proxy</li> + <li>"unknown": proxy inconnu</li> + </ul> + </dd> + <dt><code>username</code></dt> + <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> + <dt><code>proxyDNS</code></dt> + <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> + <dt><code>failoverTimeout</code></dt> + <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> + </dl> + </dd> + <dt><code>requestBody</code>{{optional_inline}}</dt> + <dd><code>object</code>. Contient les données du corps de la requête HTTP. Seulement si <code>extraInfoSpec</code> contient <code>"requestBody"</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>error</code>{{optional_inline}}</dt> + <dd><code>string</code>. Ce paramètre est défini si des erreurs ont été rencontrées lors de l'obtention des données du corps de la demande.</dd> + <dt><code>formData</code>{{optional_inline}}</dt> + <dd><code>object</code>. Cet objet est présent si la méthode de requête est POST et que le corps est une séquence de paires clé-valeur codées en UTF-8 sous la forme "multipart/form-data" ou "application/x-www-form-urlencoded".</dd> + <dd>Il s'agit d'un dictionnaire dans lequel chaque clé contient la liste de toutes les valeurs de cette clé. Par exemple: <code>{'key': ['value1', 'value2']}</code>. Si les données sont d'un autre type de support, ou si elles sont malformées, l'objet n'est pas présent.</dd> + <dt><code>raw</code>{{optional_inline}}</dt> + <dd><code>array</code> of <code>{{WebExtAPIRef('webRequest.UploadData')}}</code>. Si la méthode de requête est PUT ou POST, et que le corps n'est pas déjà analysé dans <code>formData</code>, alors ce tableau contient les éléments de corps de requête non analysés.</dd> + </dl> + </dd> + <dt><code>requestId</code></dt> + <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>type</code></dt> + <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. Cible de la demande.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.onBeforeRequest", 10)}}</p> + +<h3 id="Ordre_de_résolution_DNS_lorsque_BlockingResponse_est_utilisé">Ordre de résolution DNS lorsque BlockingResponse est utilisé</h3> + +<p>En ce qui concerne la résolution DNS lorsque BlockingResponse est utilisé avec OnBeforeRequest : Dans le canal HTTP, avec réponse de blocage se produit avant la résolution DNS et avant la connexion spéculative. Pour les autres canaux, une connexion spéculative peut provoquer des requêtes DNS avant onBeforeRequest. Cet ordre n'est pas quelque chose sur quoi un développeur d'extension devrait se fier, car il peut varier d'un navigateur à l'autre, et encore moins d'une version de navigateur à l'autre, et encore moins d'un canal de requête à l'autre. Référez-vous <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1466099">à la clarification du problème de BugZilla fournie par les développeurs Mozilla sur la commande de la résolution DNS</a></p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code enregistre l'URL de chaque ressource demandée qui correspond au modèle <a href="/fr/Add-ons/WebExtensions/Match_patterns#<all_urls>"><all_urls></a> :</p> + +<pre class="brush: js">function logURL(requestDetails) { + console.log("Loading: " + requestDetails.url); +} + +browser.webRequest.onBeforeRequest.addListener( + logURL, + {urls: ["<all_urls>"]} +);</pre> + +<p>Ce code annule les demandes d'images qui sont faites aux URLs sous "https://mdn.mozillademos.org/" (pour voir l'effet, visitez n'importe quelle page de MDN qui contient des images, comme <a href="/fr/docs/Mozilla/Firefox/Developer_Edition">Firefox Developer Edition</a>):</p> + +<pre class="brush: js">// match pattern for the URLs to redirect +var pattern = "https://mdn.mozillademos.org/*"; + +// cancel function returns an object +// which contains a property `cancel` set to `true` +function cancel(requestDetails) { + console.log("Canceling: " + requestDetails.url); + return {cancel: true}; +} + +// add the listener, +// passing the filter argument and "blocking" +browser.webRequest.onBeforeRequest.addListener( + cancel, + {urls: [pattern], types: ["image"]}, + ["blocking"] +); +</pre> + +<p>Ce code remplace, par redirection, toutes les demandes de réseau pour des images qui sont faites à des URLs sous "https://mdn.mozillademos.org/" (pour voir l'effet, visitez n'importe quelle page de MDN qui contient des images, comme <a href="/fr/docs/Mozilla/Firefox/Developer_Edition">Firefox Developer Edition</a>) :</p> + +<pre class="brush: js">// match pattern for the URLs to redirect +var pattern = "https://mdn.mozillademos.org/*"; + +// redirect function +// returns an object with a property `redirectURL` +// set to the new URL +function redirect(requestDetails) { + console.log("Redirecting: " + requestDetails.url); + return { + redirectUrl: "https://38.media.tumblr.com/tumblr_ldbj01lZiP1qe0eclo1_500.gif" + }; +} + +// add the listener, +// passing the filter argument and "blocking" +browser.webRequest.onBeforeRequest.addListener( + redirect, + {urls:[pattern], types:["image"]}, + ["blocking"] +);</pre> + +<p>Ce code est exactement comme l'exemple précédent, sauf que l'auditeur traite la requête de manière asynchrone. Il renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui définit une minuterie et se résout avec l'URL de redirection lorsque la minuterie expire :</p> + +<pre class="brush: js">// match pattern for the URLs to redirect +var pattern = "https://mdn.mozillademos.org/*"; + +// URL we will redirect to +var redirectUrl = "https://38.media.tumblr.com/tumblr_ldbj01lZiP1qe0eclo1_500.gif"; + +// redirect function returns a Promise +// which is resolved with the redirect URL when a timer expires +function redirectAsync(requestDetails) { + console.log("Redirecting async: " + requestDetails.url); + return new Promise((resolve, reject) => { + window.setTimeout(() => { + resolve({redirectUrl}); + }, 2000); + }); +} + +// add the listener, +// passing the filter argument and "blocking" +browser.webRequest.onBeforeRequest.addListener( + redirectAsync, + {urls: [pattern], types: ["image"]}, + ["blocking"] +);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforesendheaders/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforesendheaders/index.html new file mode 100644 index 0000000000..e1a48c9207 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onbeforesendheaders/index.html @@ -0,0 +1,286 @@ +--- +title: webRequest.onBeforeSendHeaders +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeSendHeaders +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standardn + - Reference + - WebExtensions + - onBeforeSendHeaders + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeSendHeaders +--- +<div>{{AddonSidebar()}}</div> + +<p>Cet événement est déclenché avant l'envoi de données HTTP, mais après que tous les en-têtes HTTP soient disponibles. C'est un bon endroit pour écouter si vous voulez modifier les en-têtes de requête HTTP.</p> + +<p>Pour que les en-têtes de requête soient passés dans l'écouteur avec le reste des données de requête, passez <code>"requestHeaders"</code> dans un tableau <code>extraInfoSpec</code>.</p> + +<p>Pour modifier les en-têtes de façon synchrone : passez <code>"blocking"</code> dans <code>extraInfoSpec</code>, puis dans votre événement écouté, retournez un <a href="/fr/Add-ons/WebExtensions/API/webRequest/BlockingResponse" title='An object of this type is returned by event listeners that have set "blocking" in their extraInfoSpec argument.'><code>BlockingResponse</code></a> avec une propriété nommée <code>requestHeaders</code>, dont la valeur est l'ensemble des en-têtes de requête à envoyer.</p> + +<p>Pour modifier les en-têtes de façon asynchrone : passez <code>"blocking"</code> dans <code>extraInfoSpec</code>, puis dans votre event listener, retournez une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue avec une <code>BlockingResponse</code>.</p> + +<p>Si vous utilisez le <code>"blocking"</code>, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">"permission de l'API "webRequestBlocking"</a> dans votre manifest.json.</p> + +<p>Il est possible d'étendre le conflit ici. Si deux extensions écoutent <code>onBeforeSendHeaders</code> pour la même requête, le deuxième auditeur verra les modifications apportées par le premier auditeur et pourra annuler les modifications apportées par le premier auditeur. Par exemple, si le premier auditeur ajoute un en-tête <code>Cookie</code>, et que le deuxième auditeur supprime tous les en-têtes <code>Cookie</code>, les modifications apportées par le premier auditeur seront perdues. Si vous voulez voir les en-têtes qui sont effectivement envoyés, sans risque qu'une autre extension les modifie par la suite, utilisez {{WebExtAPIRef("webRequest.onSendHeaders", "onSendHeaders")}}, bien que vous ne puissiez pas modifier les en-têtes sur cet événement.</p> + +<p>Tous les en-têtes réellement envoyés ne sont pas toujours inclus dans <code>requestHeaders</code>. En particulier, les en-têtes liés à la mise en cache (par exemple, <code>Cache-Control</code>, <code>If-Modified-Since</code>, <code>If-None-Match</code>) ne sont jamais envoyés. De plus, le comportement peut différer d'un navigateur à l'autre.</p> + +<p>Selon la spécification, les noms d'en-tête sont insensibles à la casse. Cela signifie que pour être sûr de faire correspondre un en-tête particulier, l'auditeur devrait minuscules le nom avant de le comparer :</p> + +<pre class="brush: js">for (let header of e.requestHeaders) { + if (header.name.toLowerCase() === desiredHeader) { + // process header + } +}</pre> + +<p>Le navigateur conserve la casse originale du nom de l'en-tête tel qu'il a été généré par le navigateur. Si l'auditeur de l'extension change la casse, ce changement ne sera pas conservé.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webRequest.onBeforeSendHeaders.addListener( + listener, // function + filter, // object + extraInfoSpec // optional array of strings +) +browser.webRequest.onBeforeSendHeaders.removeListener(listener) +browser.webRequest.onBeforeSendHeaders.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> + <dd>Ajouter un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails de la demande. Ceci inclura les en-têtes de demande si vous avez inclus <code>"requestHeaders"</code> dans <code>extraInfoSpec</code>.</dd> + </dl> + + <p>Retourne : {{WebExtAPIRef('webRequest.BlockingResponse')}}. si <code>"blocking"</code> est spécifié dans le paramètre <code>extraInfoSpec</code>, l'auditeur d'événement doit retourner un objet <code>BlockingResponse</code>, et peut définir sa propriété <code>requestHeaders</code>.</p> + </dd> + <dt><code>filter</code></dt> + <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un ensemble de filtres qui restreint les événements qui seront envoyés à cet auditeur.</dd> + <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> + <dd><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes <span class="im">:</span></dd> + <dd> + <ul> + <li><code>"blocking"</code>: rendre la requête synchrone, ce qui vous permet de modifier les en-têtes de requête</li> + <li><span class="im"><code>"requestHeaders"</code>: </span>inclure les en-têtes de requête dans l'objet<span class="im"> <code>details</code> </span>transmis à l'auditeur</li> + </ul> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>documentUrl</code></dt> + <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> + <dt><code>method</code></dt> + <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> + <dt><code>originUrl</code></dt> + <dd> + <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> + + <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> + </dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> + <dt><code>proxyInfo</code></dt> + <dd> + <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> + + <dl> + <dt><code>host</code></dt> + <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> + <dt><code>port</code></dt> + <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> + <dt><code>type</code></dt> + <dd> + <p><code>string</code>. Le type de serveur proxy. L'un des :</p> + + <ul> + <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> + <li>"https": proxy HTTP sur connexion TLS vers proxy</li> + <li>"socks": SOCKS v5 proxy</li> + <li>"socks4": SOCKS v4 proxy</li> + <li>"direct": pas de proxy</li> + <li>"unknown": proxy inconnu</li> + </ul> + </dd> + <dt><code>username</code></dt> + <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> + <dt><code>proxyDNS</code></dt> + <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> + <dt><code>failoverTimeout</code></dt> + <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> + </dl> + </dd> + <dt><code>requestHeaders</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> + <dt><code>requestId</code></dt> + <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>type</code></dt> + <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. Cible de la demande.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.onBeforeSendHeaders", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code modifie l'en-tête "User-Agent" pour que le navigateur s'identifie comme étant Opera 12.16, mais uniquement lors de la visite des pages sous "https://httpbin.org/".</p> + +<pre class="brush: js">"use strict"; + +/* +This is the page for which we want to rewrite the User-Agent header. +*/ +var targetPage = "https://httpbin.org/*"; + +/* +Set UA string to Opera 12 +*/ +var ua = "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16"; + +/* +Rewrite the User-Agent header to "ua". +*/ +function rewriteUserAgentHeader(e) { + for (var header of e.requestHeaders) { + if (header.name.toLowerCase() === "user-agent") { + header.value = ua; + } + } + return {requestHeaders: e.requestHeaders}; +} + +/* +Add rewriteUserAgentHeader as a listener to onBeforeSendHeaders, +only for the target page. + +Make it "blocking" so we can modify the headers. +*/ +browser.webRequest.onBeforeSendHeaders.addListener( + rewriteUserAgentHeader, + {urls: [targetPage]}, + ["blocking", "requestHeaders"] +); +</pre> + +<p>Ce code est exactement comme l'exemple précédent, sauf que l'auditeur est asynchrone, retournant une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue avec les nouveaux en-têtes :</p> + +<pre class="brush: js">"use strict"; + +/* +This is the page for which we want to rewrite the User-Agent header. +*/ +var targetPage = "https://httpbin.org/*"; + +/* +Set UA string to Opera 12 +*/ +var ua = "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16"; + +/* +Rewrite the User-Agent header to "ua". +*/ +function rewriteUserAgentHeaderAsync(e) { + var asyncRewrite = new Promise((resolve, reject) => { + window.setTimeout(() => { + for (var header of e.requestHeaders) { + if (header.name.toLowerCase() === "user-agent") { + header.value = ua; + } + } + resolve({requestHeaders: e.requestHeaders}); + }, 2000); + }); + + return asyncRewrite; +} + +/* +Add rewriteUserAgentHeader as a listener to onBeforeSendHeaders, +only for the target page. + +Make it "blocking" so we can modify the headers. +*/ +browser.webRequest.onBeforeSendHeaders.addListener( + rewriteUserAgentHeaderAsync, + {urls: [targetPage]}, + ["blocking", "requestHeaders"] +); + +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/oncompleted/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/oncompleted/index.html new file mode 100644 index 0000000000..5ea489118a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/oncompleted/index.html @@ -0,0 +1,209 @@ +--- +title: webRequest.onCompleted +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/onCompleted +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onCompleted + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onCompleted +--- +<div>{{AddonSidebar()}}</div> + +<p>Utilisé lorsqu'une demande est complétée.</p> + +<p>Cet événement est à titre d'information seulement.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webRequest.onCompleted.addListener( + listener, // function + filter, // object + extraInfoSpec // optional array of strings +) +browser.webRequest.onCompleted.removeListener(listener) +browser.webRequest.onCompleted.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> + <dd>Ajouter un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Details sur la demande. voir les <code><a href="#details">détails</a></code> ci-dessous.</dd> + </dl> + </dd> + <dt><code>filter</code></dt> + <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> + <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> + <dd><code>array</code> of <code>string</code>. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur <span class="im">:</span></dd> + <dd> + <ul> + <li><span class="im"><code>"</code></span><code>responseHeaders</code><span class="im"><code>"</code>: inclure <code>responseHeaders</code> dans l'objet <code>details</code> transmis à l'auditeur</span></li> + </ul> + </dd> +</dl> + +<h2 id="objets_supplémentaires">objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>documentUrl</code></dt> + <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> + <dt><code>fromCache</code></dt> + <dd><code>boolean</code>. Indique si cette réponse a été récupérée dans le cache du disque.</dd> + <dt><code>ip</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'adresse IP du serveur à laquelle la requête a été envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale.</dd> + <dt><code>method</code></dt> + <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> + <dt><code>originUrl</code></dt> + <dd> + <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> + + <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> + </dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> + <dt><code>proxyInfo</code></dt> + <dd> + <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> + + <dl> + <dt><code>host</code></dt> + <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> + <dt><code>port</code></dt> + <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> + <dt><code>type</code></dt> + <dd> + <p><code>string</code>. Le type de serveur proxy. L'un des :</p> + + <ul> + <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> + <li>"https": proxy HTTP sur connexion TLS vers proxy</li> + <li>"socks": SOCKS v5 proxy</li> + <li>"socks4": SOCKS v4 proxy</li> + <li>"direct": pas de proxy</li> + <li>"unknown": proxy inconnu</li> + </ul> + </dd> + <dt><code>username</code></dt> + <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> + <dt><code>proxyDNS</code></dt> + <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> + <dt><code>failoverTimeout</code></dt> + <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> + </dl> + </dd> + <dt><code>requestId</code></dt> + <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> + <dt><code>responseHeaders</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> + <dt><code>statusCode</code></dt> + <dd><code>integer</code>. Code d'état HTTP standard renvoyé par le serveur.</dd> + <dt><code>statusLine</code></dt> + <dd><code>string</code>. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes</dd> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>type</code></dt> + <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. Cible de la demande.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.onCompleted", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">var target = "https://developer.mozilla.org/*"; + +/* +e.g. +"https://developer.mozilla.org/en-US/" +200 + +or: + +"https://developer.mozilla.org/en-US/xfgkdkjdfhs" +404 +*/ +function logResponse(responseDetails) { + console.log(responseDetails.url); + console.log(responseDetails.statusCode); +} + +browser.webRequest.onCompleted.addListener( + logResponse, + {urls: [target]} +); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onerroroccurred/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onerroroccurred/index.html new file mode 100644 index 0000000000..96a0184d1d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onerroroccurred/index.html @@ -0,0 +1,196 @@ +--- +title: webRequest.onErrorOccurred +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/onErrorOccurred +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onErrorOccurred + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onErrorOccurred +--- +<div>{{AddonSidebar()}}</div> + +<p>Utilisé lorsqu'une demande n'a pas pu être traitée en raison d'une erreur : par exemple, un manque de connectivité Internet.</p> + +<p>L'erreur est transmise à l'auditeur en tant que propriété d'<code>erreur</code> de l'objet <code><a href="#details">details</a></code>.</p> + +<p>Notez que cet événement n'est pas déclenché pour les erreurs HTTP (réponses 4XX ou 5XX) : celles-ci passent par les étapes normales d'une requête, en appelant n'importe quel auditeur d'événement et en définissant <code>details.statusCode</code> pour signaler l'erreur.</p> + +<p>Cet événement est à titre d'information seulement.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webRequest.onErrorOccurred.addListener( + listener, // function + filter // object +) +browser.webRequest.onErrorOccurred.removeListener(listener) +browser.webRequest.onErrorOccurred.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> + <dd>Ajouter un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur la demande. Voir les <code><a href="#details">details</a></code> ci-dessous.</dd> + </dl> + </dd> + <dt><code>filter</code></dt> + <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> +</dl> + +<h2 id="objets_supplémentaires">objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>documentUrl</code></dt> + <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> + <dt><code>error</code></dt> + <dd><code>string</code>. La description de l'erreur. Cette chaîne est une chaîne d'erreur interne, peut varier d'un navigateur à l'autre et n'est pas garantie de rester la même entre les versions.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> + <dt><code>fromCache</code></dt> + <dd><code>boolean</code>. Indique si cette réponse a été récupérée dans le cache du disque.</dd> + <dt><code>ip</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'adresse IP du serveur à laquelle la requête a été envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale.</dd> + <dt><code>method</code></dt> + <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> + <dt><code>originUrl</code></dt> + <dd> + <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> + + <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> + </dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> + <dt><code>proxyInfo</code></dt> + <dd> + <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> + + <dl> + <dt><code>host</code></dt> + <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> + <dt><code>port</code></dt> + <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> + <dt><code>type</code></dt> + <dd> + <p><code>string</code>. Le type de serveur proxy. L'un des :</p> + + <ul> + <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> + <li>"https": proxy HTTP sur connexion TLS vers proxy</li> + <li>"socks": SOCKS v5 proxy</li> + <li>"socks4": SOCKS v4 proxy</li> + <li>"direct": pas de proxy</li> + <li>"unknown": proxy inconnu</li> + </ul> + </dd> + <dt><code>username</code></dt> + <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> + <dt><code>proxyDNS</code></dt> + <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> + <dt><code>failoverTimeout</code></dt> + <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> + </dl> + </dd> + <dt><code>requestId</code></dt> + <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>type</code></dt> + <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. Cible de la demande.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.onErrorOccurred", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">var target = "<all_urls>"; + +/* +e.g., with no network: +"https://developer.mozilla.org/en-US/" +NS_ERROR_NET_ON_RESOLVED in Firefox +net::ERR_INTERNET_DISCONNECTED in Chrome +*/ +function logError(responseDetails) { + console.log(responseDetails.url); + console.log(responseDetails.error); +} + +browser.webRequest.onErrorOccurred.addListener( + logError, + {urls: [target]} +);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onheadersreceived/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onheadersreceived/index.html new file mode 100644 index 0000000000..33f11f91ae --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onheadersreceived/index.html @@ -0,0 +1,248 @@ +--- +title: webRequest.onHeadersReceived +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/onHeadersReceived +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onHeadersReceived + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onHeadersReceived +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque les en-têtes de réponse HTTP associés à une requête ont été reçus. Vous pouvez utiliser cet événement pour modifier les en-têtes de réponse HTTP.</p> + +<p>Pour que les en-têtes de réponse soient passés dans l'écouteur avec le reste des données de la requête, passez <code>"responseHeaders"</code> dans le tableau <code>extraInfoSpec</code>.</p> + +<p>Pour modifier les en-têtes, passez <code>"blocking"</code> dans <code>extraInfoSpec</code>. Ensuite, dans votre écouteur d'événements, retournez un objet avec une propriété nommée <code>responseHeaders</code>, dont la valeur est l'ensemble des en-têtes de réponse à utiliser. Le navigateur se comportera comme si le serveur avait envoyé les en-têtes modifiées.</p> + +<p>A partir de Firefox 52, au lieu de renvoyer <code>BlockingResponse</code>, l'auditeur peut renvoyer une Promesse qui est résolue avec un <code>BlockingResponse</code>. Ceci permet à l'auditeur de traiter la demande de manière asynchrone.</p> + +<p>Si vous utilisez le <code>"blocking"</code>, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permission de l'API "webRequestBlocking" </a>dans votre manifest.json.</p> + +<p>Notez qu'il est possible que des extensions entrent en conflit ici. Si deux extensions écoutent <code>onHeadersReceived</code> pour la même requête et retournent <code>responseHeaders</code> essayant de définir le même en-tête (par exemple, <code>Content-Security-Policy</code>), seule une des modifications sera réussie. Si vous voulez voir les en-têtes qui sont effectivement traités par le système, sans risque qu'une autre extension les modifie par la suite, utilisez {{WebExtAPIRef("webRequest.onResponseStarted", "onResponseStarted", "onResponseStarted")}}, mais vous ne pouvez pas modifier les entêtes sur cet événement<br> + </p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webRequest.onHeadersReceived.addListener( + listener, // function + filter, // object + extraInfoSpec // optional array of strings +) +browser.webRequest.onHeadersReceived.removeListener(listener) +browser.webRequest.onHeadersReceived.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> + <dd>Ajouter un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails de la demande. Ceci inclura les en-têtes de réponse si vous avez inclus <code>"responseHeaders"</code> dans <code>extraInfoSpec</code>.</dd> + </dl> + + <p>Retourne : {{WebExtAPIRef('webRequest.BlockingResponse')}}. Si <code>"blocking"</code> est spécifié dans le paramètre <code>extraInfoSpec</code>, l'auditeur d'événement doit retourner un objet <code>BlockingResponse</code>, et peut définir sa propriété <code>responseHeaders</code>.</p> + </dd> + <dt><code>filter</code></dt> + <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un ensemble de filtres qui restreint les événements qui seront envoyés à cet auditeur.</dd> + <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> + <dd><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous pouvez passer n'importe laquelle des valeurs suivantes <span class="im">:</span></dd> + <dd> + <ul> + <li><code>"blocking"</code> pour rendre la requête synchrone, de sorte que vous pouvez modifier les en-têtes de requête et réponse.</li> + <li><span class="im"><code>"responseHeaders"</code> </span>pour inclure les en-têtes de réponse dans l'objet <span class="im"> <code>détails</code> </span>transmis à l'auditeur</li> + </ul> + </dd> +</dl> + +<h2 id="objets_supplémentaires">objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>documentUrl</code></dt> + <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> + <dt><code>method</code></dt> + <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> + <dt><code>originUrl</code></dt> + <dd> + <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> + + <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> + </dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> + <dt><code>proxyInfo</code></dt> + <dd> + <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> + + <dl> + <dt><code>host</code></dt> + <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> + <dt><code>port</code></dt> + <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> + <dt><code>type</code></dt> + <dd> + <p><code>string</code>. Le type de serveur proxy. L'un des :</p> + + <ul> + <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> + <li>"https": proxy HTTP sur connexion TLS vers proxy</li> + <li>"socks": SOCKS v5 proxy</li> + <li>"socks4": SOCKS v4 proxy</li> + <li>"direct": pas de proxy</li> + <li>"unknown": proxy inconnu</li> + </ul> + </dd> + <dt><code>username</code></dt> + <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> + <dt><code>proxyDNS</code></dt> + <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> + <dt><code>failoverTimeout</code></dt> + <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> + </dl> + </dd> + <dt><code>requestId</code></dt> + <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> + <dt><code>responseHeaders</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> + <dt><code>statusCode</code></dt> + <dd><code>integer</code>. Code d'état HTTP standard renvoyé par le serveur.</dd> + <dt><code>statusLine</code></dt> + <dd><code>string</code>. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes</dd> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>type</code></dt> + <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. Cible de la demande.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.onHeadersReceived", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code définit un cookie supplémentaire lors de la demande d'une ressource à partir de l'URL cible :</p> + +<pre class="brush: js">var targetPage = "https://developer.mozilla.org/en-US/Firefox/Developer_Edition"; + +// Add the new header to the original array, +// and return it. +function setCookie(e) { + var setMyCookie = { + name: "Set-Cookie", + value: "my-cookie1=my-cookie-value1" + }; + e.responseHeaders.push(setMyCookie); + return {responseHeaders: e.responseHeaders}; +} + +// Listen for onHeaderReceived for the target page. +// Set "blocking" and "responseHeaders". +browser.webRequest.onHeadersReceived.addListener( + setCookie, + {urls: [targetPage]}, + ["blocking", "responseHeaders"] +);</pre> + +<p>Ce code fait la même chose que l'exemple précédent, sauf que l'auditeur est asynchrone, retournant une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui est résolue avec les nouveaux en-têtes :</p> + +<pre class="brush: js">var targetPage = "https://developer.mozilla.org/en-US/Firefox/Developer_Edition"; + +// Return a Promise that sets a timer. +// When the timer fires, resolve the promise with +// modified set of response headers. +function setCookieAsync(e) { + var asyncSetCookie = new Promise((resolve, reject) => { + window.setTimeout(() => { + var setMyCookie = { + name: "Set-Cookie", + value: "my-cookie1=my-cookie-value1" + }; + e.responseHeaders.push(setMyCookie); + resolve({responseHeaders: e.responseHeaders}); + }, 2000); + }); + + return asyncSetCookie; +} + +// Listen for onHeaderReceived for the target page. +// Set "blocking" and "responseHeaders". +browser.webRequest.onHeadersReceived.addListener( + setCookieAsync, + {urls: [targetPage]}, + ["blocking", "responseHeaders"] +); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onresponsestarted/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onresponsestarted/index.html new file mode 100644 index 0000000000..a48c38e43a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onresponsestarted/index.html @@ -0,0 +1,205 @@ +--- +title: webRequest.onResponseStarted +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/onResponseStarted +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onResponseStarted + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onResponseStarted +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancé lorsque le premier octet du corps de réponse est reçu.</p> + +<p>Cet événement est à titre d'information seulement.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webRequest.onResponseStarted.addListener( + listener, // function + filter, // object + extraInfoSpec // optional array of strings +) +browser.webRequest.onResponseStarted.removeListener(listener) +browser.webRequest.onResponseStarted.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> + <dd>Ajouter un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Une fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur la demande. Voir les <code><a href="#details">details</a></code> ci-dessous.</dd> + </dl> + </dd> + <dt><code>filter</code></dt> + <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> + <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> + <dd><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur <span class="im">:</span></dd> + <dd> + <ul> + <li><span class="im"><code>"</code></span><code>responseHeaders</code><span class="im"><code>"</code>: inclure <code>responseHeaders</code> dans l'objet <code>détails</code> </span>transmis à l'auditeur</li> + </ul> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>documentUrl</code></dt> + <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> + <dt><code>fromCache</code></dt> + <dd><code>boolean</code>. Indique si cette réponse a été récupérée dans le cache du disque.</dd> + <dt><code>ip</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'adresse IP du serveur à laquelle la requête a été envoyée. Notez qu'il peut s'agir d'une adresse IPv6 littérale.</dd> + <dt><code>method</code></dt> + <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> + <dt><code>originUrl</code></dt> + <dd> + <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> + + <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> + </dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> + <dt><code>proxyInfo</code></dt> + <dd> + <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> + + <dl> + <dt><code>host</code></dt> + <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> + <dt><code>port</code></dt> + <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> + <dt><code>type</code></dt> + <dd> + <p><code>string</code>. Le type de serveur proxy. L'un des :</p> + + <ul> + <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> + <li>"https": proxy HTTP sur connexion TLS vers proxy</li> + <li>"socks": SOCKS v5 proxy</li> + <li>"socks4": SOCKS v4 proxy</li> + <li>"direct": pas de proxy</li> + <li>"unknown": proxy inconnu</li> + </ul> + </dd> + <dt><code>username</code></dt> + <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> + <dt><code>proxyDNS</code></dt> + <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> + <dt><code>failoverTimeout</code></dt> + <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> + </dl> + </dd> + <dt><code>requestId</code></dt> + <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> + <dt><code>responseHeaders</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> + <dt><code>statusCode</code></dt> + <dd><code>integer</code>. Code d'état HTTP standard renvoyé par le serveur.</dd> + <dt><code>statusLine</code></dt> + <dd><code>string</code>. Status d'état HTTP de la réponse ou la chaîne 'HTTP/0.9 200 OK' pour les réponses HTTP/0.9 (c'est-à-dire les réponses qui n'ont pas de ligne d'état) ou une chaîne vide s'il n'y a pas d'en-têtes</dd> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>type</code></dt> + <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. Cible de la demande.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.onResponseStarted", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">var target = "https://developer.mozilla.org/*"; + +/* +e.g. +"https://developer.mozilla.org/en-US/Firefox/Releases" +200 +HTTP/1.1 200 OK +*/ +function logResponse(responseDetails) { + console.log(responseDetails.url); + console.log(responseDetails.statusCode); + console.log(responseDetails.statusLine); +} + +browser.webRequest.onResponseStarted.addListener( + logResponse, + {urls: [target]} +);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/onsendheaders/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onsendheaders/index.html new file mode 100644 index 0000000000..3f0bf5b2a8 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/onsendheaders/index.html @@ -0,0 +1,200 @@ +--- +title: webRequest.onSendHeaders +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/onSendHeaders +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - onSendHeaders + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/onSendHeaders +--- +<div>{{AddonSidebar()}}</div> + +<p>Cet événement est déclenché juste avant l'envoi des en-têtes. Si votre extension ou une autre extension a modifié les en-têtes dans <code>{{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}}</code>, vous verrez la version modifiée ici.</p> + +<p>Cet événement est à titre d'information seulement.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.webRequest.onSendHeaders.addListener( + listener, // function + filter, // object + extraInfoSpec // optional array of strings +) +browser.webRequest.onSendHeaders.removeListener(listener) +browser.webRequest.onSendHeaders.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback, filter, extraInfoSpec)</code></dt> + <dd>Ajouter un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument <code>listener</code> est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si <code>listener</code> est enregistré à cet événement. Retourne <code>true</code> s'il est écouté, sinon <code>false</code>.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lorsque cet événement se produira. La fonction sera passée les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>details</code></dt> + <dd><a href="#details"><code>object</code></a>. Détails sur la demande. Voir les <code><a href="#details">details</a></code> ci-dessous.</dd> + </dl> + </dd> + <dt><code>filter</code></dt> + <dd>{{WebExtAPIRef('webRequest.RequestFilter')}}. Un filtre qui restreint les événements qui seront envoyés à cet auditeur.</dd> + <dt><code>extraInfoSpec</code>{{optional_inline}}</dt> + <dd><code>array</code> de <code>string</code>. Options supplémentaires pour l'événement. Vous ne pouvez passer qu'une seule valeur ici <span class="im">:</span></dd> + <dd> + <ul> + <li><span class="im"><code>"requestHeaders"</code>: </span>inclure les en-têtes de requête dans l'objet détails transmis à l'auditeur</li> + </ul> + </dd> +</dl> + +<h2 id="Objets_supplémentaires">Objets supplémentaires</h2> + +<h3 id="détails">détails</h3> + +<dl class="reference-values"> + <dt><code>documentUrl</code></dt> + <dd><code>string</code>. URL du document dans lequel la ressource sera chargée. Par exemple, si la page web "https://example.com" contient une image ou un iframe, alors le <code>documentUrl</code> pour l'image ou l'iframe sera "https://example.com". Pour un document de niveau supérieur, <code>documentUrl</code> n'est pas défini.</dd> + <dt><code>frameId</code></dt> + <dd><code>integer</code>. Zéro si la requête se produit dans le cadre principal ; une valeur positive est l'ID d'une sous-trame dans laquelle la requête se produit. Si le document d'un (sous-)cadre est chargé (<code>type</code> is <code>main_frame</code> or <code>sub_frame</code>), <code>frameId</code> indique l'ID de ce cadre et non l'ID du cadre extérieur. Les ID de trame sont uniques dans un onglet.</dd> + <dt><code>method</code></dt> + <dd><code>string</code>. Méthode HTTP standard : par exemple, "GET" ou "POST".</dd> + <dt><code>originUrl</code></dt> + <dd> + <p><code>string</code>. URL de la ressource qui a déclenché la requête. Par exemple, si "https://example.com" contient un lien, et que l'utilisateur clique sur le lien, alors <code>originUrl</code> de la requête résultante est "https://example.com".</p> + + <p>L'<code>originUrl</code> est souvent mais pas toujours la même chose que <code>documentUrl</code>.Par exemple, si une page contient une iframe, et que l'iframe contient un lien qui charge un nouveau document dans l'iframe, alors le <code>documentUrl</code> pour la requête résultante sera le document parent de l'iframe, mais l'<code>originUrl</code> sera l'URL du document dans l'iframe qui contenait le lien.</p> + </dd> + <dt><code>parentFrameId</code></dt> + <dd><code>integer</code>. de la trame qui contient la trame qui a envoyé la requête. Réglé à -1 s'il n'existe pas de l'iframe parent.</dd> + <dt><code>proxyInfo</code></dt> + <dd> + <p><code>object</code>. Cette propriété n'est présente que si la demande est proxied. Il contient les propriétés suivantes :</p> + + <dl> + <dt><code>host</code></dt> + <dd><code>string</code>. Le nom d'hôte du serveur proxy.</dd> + <dt><code>port</code></dt> + <dd><code>integer</code>. Le numéro de port du serveur proxy.</dd> + <dt><code>type</code></dt> + <dd> + <p><code>string</code>. Le type de serveur proxy. L'un des :</p> + + <ul> + <li>"http": proxy HTTP (ou SSL CONNECT pour HTTPS)</li> + <li>"https": proxy HTTP sur connexion TLS vers proxy</li> + <li>"socks": SOCKS v5 proxy</li> + <li>"socks4": SOCKS v4 proxy</li> + <li>"direct": pas de proxy</li> + <li>"unknown": proxy inconnu</li> + </ul> + </dd> + <dt><code>username</code></dt> + <dd><code>string</code>. Nom d'utilisateur pour le service proxy.</dd> + <dt><code>proxyDNS</code></dt> + <dd><code>boolean</code>. Vrai si le proxy exécutera une résolution de nom de domaine basée sur le nom d'hôte fourni, ce qui signifie que le client ne doit pas faire sa propre recherche DNS.</dd> + <dt><code>failoverTimeout</code></dt> + <dd><code>integer</code>. Délai d'attente de basculement en secondes. Si la connexion par proxy échoue, le proxy ne sera pas utilisé à nouveau pendant cette période.</dd> + </dl> + </dd> + <dt><code>requestId</code></dt> + <dd><code>string</code>. L'ID de la demande. Les ID de requête sont uniques au sein d'une session de navigateur, de sorte que vous pouvez les utiliser pour relier différents événements associés à la même requête.</dd> + <dt><code>requestHeaders</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('webRequest.HttpHeaders')}}. Les en-têtes de réponse HTTP qui ont été reçus avec cette réponse.</dd> + <dt><code>tabId</code></dt> + <dd><code>integer</code>. ID de l'onglet dans lequel la demande a lieu. Définir à -1 si la requête n'est pas liée à un onglet.</dd> + <dt><code>timeStamp</code></dt> + <dd><code>number</code>. L'heure à laquelle cet événement s'est déclenché, en <a href="https://en.wikipedia.org/wiki/Unix_time">millisecondes depuis l'époque</a>.</dd> + <dt><code>type</code></dt> + <dd>{{WebExtAPIRef('webRequest.ResourceType')}}. Le type de ressource demandée : par exemple, "image", "script", "stylesheet".</dd> + <dt><code>url</code></dt> + <dd><code>string</code>. Cible de la demande.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.onSendHeaders", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code enregistre tous les cookies qui seront envoyés en faisant des demandes au <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">modèle de match</a> cible :</p> + +<pre class="brush: js">// The target match pattern +var targetPage = "*://*.google.ca/*"; + +// Log cookies sent with this request +function logCookies(e) { + for (var header of e.requestHeaders) { + if (header.name == "Cookie") { + console.log(header.value); + } + } +} + +// Listen for onSendHeaders, and pass +// "requestHeaders" so we get the headers +browser.webRequest.onSendHeaders.addListener( + logCookies, + {urls: [targetPage]}, + ["requestHeaders"] +);</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/requestfilter/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/requestfilter/index.html new file mode 100644 index 0000000000..c1dffeb223 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/requestfilter/index.html @@ -0,0 +1,81 @@ +--- +title: webRequest.RequestFilter +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/RequestFilter +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - RequestFilter + - Type + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/RequestFilter +--- +<div>{{AddonSidebar()}}</div> + +<p>Un objet décrivant les filtres à appliquer aux événements webRequest.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>urls</code></dt> + <dd><code>array</code> de <code><code>string</code></code>. Un tableau de <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">motifs (Match patterns)</a>. L'auditeur ne sera appelé que pour les demandes dont les cibles correspondent à l'un des modèles donnés. Seules les requêtes faites en utilisant HTTP ou HTTPS déclencheront des événements, même si les modèles de correspondance peuvent correspondre à d'autres protocoles.</dd> + <dt><code>types</code>{{optional_inline}}</dt> + <dd><code>array</code> de <code>{{WebExtAPIRef('webRequest.ResourceType')}}</code>. Une liste des types de ressources (par exemple, feuilles de style, images, scripts). L'auditeur ne sera appelé que pour les demandes de ressources qui sont de l'un des types donnés.</dd> + <dt><code>tabId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'auditeur ne sera appelé que pour les requêtes provenant du {{WebExtAPIRef("tabs.Tab", "tab")}} identifié par cet ID.</dd> + <dt><code>windowId</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'auditeur ne sera appelé que pour les requêtes provenant du {{WebExtAPIRef("windows.Window", "window")}} identifié par cet ID.</dd> + <dt>incognito {{optional_inline}}</dt> + <dd><code>boolean</code>. Si elles sont fournies, les demandes qui ne correspondent pas à l'état incognito (<code>true</code> ou <code>false</code>) seront filtrées.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.RequestFilter")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/resourcetype/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/resourcetype/index.html new file mode 100644 index 0000000000..a8b07698ea --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/resourcetype/index.html @@ -0,0 +1,120 @@ +--- +title: webRequest.ResourceType +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - ResourceType + - Type + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType +--- +<div>{{AddonSidebar()}}</div> + +<p>Ce type est une chaîne de caractères, qui représente le contexte dans lequel une ressource a été récupérée dans une requête web.</p> + +<p>Il est utilisé pour <a href="/fr/Add-ons/WebExtensions/API/WebRequest/RequestFilter">filtrer</a> les requêtes que vous écoutez en utilisant l'API webRequest. Par exemple : vous pouvez écouter les requêtes uniquement pour les images, ou uniquement pour les scripts.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes de caractères. Les valeurs possibles sont :</p> + +<dl> + <dt><code>beacon</code></dt> + <dd>Demandes envoyées par le biais de l'<a href="/fr/docs/Web/API/Beacon_API">API Beacon</a>.</dd> + <dt><code>csp_report</code></dt> + <dd>Demandes envoyées au {{CSP("report-uri")}} donné dans l'en-tête {{HTTPHeader("Content-Security-Policy")}}, lorsqu'une tentative de violation de la politique est détectée.</dd> + <dt><code>font</code></dt> + <dd>Polices Web chargées pour un {{cssxref("@font-face")}} règle CSS.</dd> + <dt><code>image</code></dt> + <dd>Les ressources chargées pour être rendues sous forme d'image, à l'exception de <code>imageset</code> sur les navigateurs qui prennent en charge ce type (voir la compatibilité des navigateurs ci-dessous).</dd> + <dt><code>imageset</code></dt> + <dd>Images chargées par un élément {{HTMLElement("picture")}} ou données dans un attribut {{htmlattrxref("srcset", "img")}} d'un élement <code><img></code>.</dd> +</dl> + +<dl> + <dt><code>main_frame</code></dt> + <dd>Documents de niveau chargés dans un objet.</dd> + <dt><code>media</code></dt> + <dd>Ressources chargées par un élément {{HTMLElement("video")}} ou {{HTMLElement("audio")}}.</dd> + <dt><code>object</code></dt> + <dd>Ressources chargées par un élément {{HTMLElement("object")}} ou {{HTMLElement("embed")}}.</dd> + <dd>Les navigateurs qui n'ont pas de type <code>object_subrequest</code> dédié (voir compatibilité des navigateurs ci-dessous), étiquettent également les requêtes ultérieures envoyées par le plugin en tant <code>object</code>.</dd> + <dt><code>object_subrequest</code></dt> + <dd>Requêtes envoyées par plugins.</dd> + <dt><code>ping</code></dt> + <dd>Demandes envoyées à l'URL donnée dans l'attribut {{htmlattrxref("ping", "a")}} d'un hyperlien, lorsque l'hyperlien est suivi..</dd> + <dd><span style="display: none;"> </span>Les navigateurs qui n'ont pas de type de <code>balise</code> dédié (voir la compatibilité des navigateurs ci-dessous), étiquettent également les requêtes envoyées par l'API Beacon en tant que <code>ping</code>.</dd> + <dt><code>script</code></dt> + <dd>Code chargé pour être exécuté par un élément {{HTMLElement("script")}} ou exécuté dans un <a href="/fr/docs/Web/API/Web_Workers_API">Worker</a>.</dd> + <dt><code>speculative</code></dt> + <dd>Dans une connexion spéculative, le navigateur a déterminé qu'une demande d'URI pourrait bientôt arriver, donc il lance immédiatement un handshake TCP et/ou TLS, de sorte qu'il est prêt plus rapidement lorsque la ressource est effectivement demandée.</dd> + <dt><code>stylesheet</code></dt> + <dd>Feuilles de style <a href="/fr/docs/Web/CSS">CSS</a> chargées pour décrire la représentation d'un document.</dd> + <dt><code>sub_frame</code></dt> + <dd>Documents chargés dans un élément {{HTMLElement("iframe")}} ou {{HTMLElement("frame")}}.</dd> + <dt><code>web_manifest</code></dt> + <dd><a href="/fr/docs/Web/Manifest">Manifests Web App</a> chargés pour les sites Web qui peuvent être installés sur l'écran d'accueil.</dd> + <dt><code>websocket</code></dt> + <dd>Requêtes initiant une connexion à un serveur via l'<a href="/fr/docs/WebSockets">API WebSocket</a>.</dd> + <dt><code>xbl</code></dt> + <dd><a href="/fr/docs/XBL">XBL</a> bindings chargés pour étendre le comportement des éléments d'un document.</dd> + <dt><code>xml_dtd</code></dt> + <dd><a href="/fr/docs/Glossaire/DTD">DTDs</a> chargées pour un document XML.</dd> + <dt><code>xmlhttprequest</code></dt> + <dd>Requêtes envoyées par un objet {{domxref("XMLHttpRequest")}} ou par l'<a href="/fr/docs/Web/API/Fetch_API">API Fetch</a>.</dd> + <dt><code>xslt</code></dt> + <dd>Feuilles de style <a href="/fr/docs/Web/XSLT">XSLT</a> chargées pour transformer un document XML</dd> + <dt><code>other</code></dt> + <dd>Ressources qui ne sont couvertes par aucun autre type disponible.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.ResourceType")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/securityinfo/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/securityinfo/index.html new file mode 100644 index 0000000000..f9470561ce --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/securityinfo/index.html @@ -0,0 +1,98 @@ +--- +title: webRequest.SecurityInfo +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/SecurityInfo +tags: + - API + - Add-ons + - Reference + - SecurityInfo + - Type + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/SecurityInfo +--- +<div>{{AddonSidebar()}}</div> + +<p>Objet décrivant les propriétés de sécurité d'une requête Web particulière. Un objet de ce type est retourné depuis l'API {{WebExtAPIRef("webRequest.getSecurityInfo()")}}.</p> + +<p>Si la requête n'est pas sécurisée par <a href="/fr/docs/Glossaire/TLS">TLS</a>, alors cet objet ne contiendra que l'état de la propriété <code>state</code>, dont la valeur sera <code>"insecure"</code>.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>certificates</code></dt> + <dd><code>Array</code> de {{WebExtAPIRef("webRequest.CertificateInfo", "CertificateInfo")}}. Si {{WebExtAPIRef("webRequest.getSecurityInfo()")}} a été appelé avec l'option <code>certificateChain</code> présente et définie sur <code>true</code>, cela contiendra un objet <code>CertificateInfo</code> pour chaque certificat de la chaîne, depuis le certificat du serveur jusqu'à et y compris la racine de confiance.</dd> + <dd>Sinon, il contiendra un seul objet <code>CertificateInfo</code>, pour le certificat du serveur.</dd> + <dt><code>certificateTransparencyStatus</code><span class="diff_add"> {{optional_inline}}</span></dt> + <dd> + <p><code>String</code>. Indique l'état de la <a href="https://www.certificate-transparency.org/">transparence des certificats</a> pour la connexion. Ceci peut prendre l'une des valeurs suivantes :</p> + + <ul> + <li>"not_applicable"</li> + <li>"policy_compliant"</li> + <li>"policy_not_enough_scts"</li> + <li>"policy_not_diverse_scts"</li> + </ul> + </dd> + <dt><code>cipherSuite</code><span class="diff_add"> {{optional_inline}}</span></dt> + <dd><code>String</code>. Suite de chiffrement utilisée pour la connexion, formatée selon la <a href="https://tools.ietf.org/html/rfc5246#appendix-A.5">specification TLS </a>: par exemple, "<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><span class="objectBox objectBox-string">TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</span></span></span></span>".</dd> + <dt><code>errorMessage</code><span class="diff_add"> {{optional_inline}}</span></dt> + <dd> + <p><code>String</code>. S'il y a eu un problème avec le protocole TLS (for example, the certificate had expired, or a trusted root could not be found, or a certificate was revoked) then <code>status</code> will be "broken" and the <code>errorMessage</code> property will contain a string describing the error, taken from Firefox's internal list of error codes.</p> + + <p>Note though that at present you can only call <code>getSecurityInfo()</code> in the <code>onHeaderReceived</code> listener, and the <code>onHeaderReceived</code> event is not fired when the handshake fails. So in practice this will never be set. </p> + </dd> + <dt><code>hpkp</code><span class="diff_add"> {{optional_inline}}</span></dt> + <dd><code>Boolean</code>. <code>true</code> si l'hôte utilise <a href="/fr/docs/Web/Security/Public_Key_Pinning">Public Key Pinning</a>, sinon <code>false</code>.</dd> + <dt><code>hsts</code><span class="diff_add"> {{optional_inline}}</span></dt> + <dd><code>Boolean</code>. <code>true</code> si l'hôte utilise <a href="/fr/docs/Sécurité/HTTP_Strict_Transport_Security">Strict Transport Security</a>, sinon <code>false</code>.</dd> + <dt><code>isDomainMismatch</code><span class="diff_add"> {{optional_inline}}</span></dt> + <dd><code>Boolean</code>. <code>true</code> si le nom de domaine du serveur ne correspond pas au nom de domaine dans son certificat, sinon <code>false</code>.</dd> + <dt><code>isExtendedValidation</code><span class="diff_add"> {{optional_inline}}</span></dt> + <dd><code>Boolean</code>. <code>true</code> si le serveur possède un <a href="https://en.wikipedia.org/wiki/Extended_Validation_Certificate">Extended Validation Certificate</a>, sinon <code>false</code>.</dd> + <dt><code>isNotValidAtThisTime</code><span class="diff_add"> {{optional_inline}}</span></dt> + <dd><code>Boolean</code>. <code>true</code> si l'heure actuelle tombe en dehors de la période de validité du certificat de serveur (c'est-à-dire que le certificat a expiré ou n'est pas encore valide), sinon <code>false</code>.</dd> + <dt><code>isUntrusted</code><span class="diff_add"> {{optional_inline}}</span></dt> + <dd><code>Boolean</code>. <code>true</code> si une chaîne de retour à un certificat racine de confiance n'a pas pu être construite, sinon <code>false</code>.</dd> + <dt><code>keaGroupName</code> {{optional_inline}}</dt> + <dd><code>String</code>. Si <code>state</code> est "sécurisé" cela décrit l'algorithme d'échange de clé utilisé dans cette requête.</dd> + <dt><code>protocolVersion</code><span class="diff_add"> {{optional_inline}}</span></dt> + <dd> + <p><code>String</code>. Version du protocole TLS utilisé. L'un des :</p> + + <ul> + <li>"TLSv1"</li> + <li>"TLSv1.1"</li> + <li>"TLSv1.2"</li> + <li>"TLSv1.3"</li> + <li>"inconnu" (si la version n'est pas valide)</li> + </ul> + </dd> + <dt><code>signatureSchemeName</code> {{optional_inline}}</dt> + <dd><code>String</code>. Si <code>state</code> est "sécurisé", cela décrit le schéma de signature utilisé dans cette requête.t.</dd> + <dt><code>state</code></dt> + <dd> + <p><code>String</code>. État de la connexion. L'un des :</p> + + <ul> + <li>"broken": la poignée de main TLS a échoué (par exemple, le certificat a expiré)</li> + <li>"insecure": la connexion n'est pas une connexion TLS</li> + <li>"secure": la connexion est une connexion TLS sécurisée</li> + <li>"weak": la connexion est une connexion TLS mais est considérée comme faible. Vous pouvez examiner les <code>weaknessReasons</code> pour découvrir le problème.</li> + </ul> + + <p>Notez cependant qu'actuellement, vous ne pouvez appele <code>getSecurityInfo()</code> que dans l'écouteur <code>onHeaderReceived</code>, et l'événement <code>onHeaderReceived</code> n'est pas déclenché lorsque la poignée de main échoue. Ainsi, dans la pratique, il ne sera jamais réglé sur "cassé".</p> + </dd> + <dt><code>weaknessReasons</code><span class="diff_add"> {{optional_inline}}</span></dt> + <dd><code>String</code>. Si l'<code>état</code> est "faible", cela indique la raison. Actuellement, il ne peut contenir qu'une seule valeur "chiffre", ce qui indique que la suite de chiffres négociée est considérée comme faible.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.SecurityInfo", 10)}}</p> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/close/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/close/index.html new file mode 100644 index 0000000000..ac4971601b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/close/index.html @@ -0,0 +1,63 @@ +--- +title: webRequest.StreamFilter.close() +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/close +tags: + - Add-ons + - Extensions + - Method + - StreamFilter.close + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/close +--- +<div>{{AddonSidebar()}}</div> + +<p>Ferme la demande. Après cet appel, aucune autre donnée de réponse ne sera transmise au moteur de rendu du navigateur et aucun autre événement de filtrage ne sera donné à l'extension.</p> + +<p>Notez la différence entre cette fonction et {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}}. Avec <code>disconnect()</code>, le navigateur continuera à traiter d'autres données de réponse, mais il ne sera pas accessible par le filtre. Avec <code>close()</code>, le navigateur ignorera toutes les données de réponse qui n'ont pas déjà été transmises au moteur de rendu.</p> + +<p>Vous devriez toujours appeler <code>close()</code> ou <code>disconnect()</code> une fois que vous n'avez plus besoin d'interagir avec la réponse.</p> + +<p>Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">filter.close() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>None.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.StreamFilter.close", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple remplacera le contenu de la page par "texte de remplacement" :</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + + filter.onstart = event => { + console.log("started"); + let encoder = new TextEncoder(); + filter.write(encoder.encode("replacement content")); + filter.close(); + } +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.org/"], types: ["main_frame"]}, + ["blocking"] +);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/disconnect/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/disconnect/index.html new file mode 100644 index 0000000000..fad9309e83 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/disconnect/index.html @@ -0,0 +1,67 @@ +--- +title: webRequest.StreamFilter.disconnect() +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/disconnect +tags: + - API + - Add-ons + - Extensions + - StreamFilter.disconnect + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/disconnect +--- +<div>{{AddonSidebar()}}</div> + +<div>Déconnecte le filtre de la requête. Après cela, le navigateur continuera à traiter la réponse, mais plus aucun événement de filtrage ne se déclenchera, et plus aucun appel de fonction de filtrage n'aura d'effet.</div> + +<div></div> + +<div>Notez la différence entre cette fonction et {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}}. Avec <code>disconnect()</code>, le navigateur continuera à traiter d'autres données de réponse, mais il ne sera pas accessible par le filtre. Avec <code>close()</code>, le navigateur ignorera toutes les données de réponse qui n'ont pas déjà été transmises au moteur de rendu.</div> + +<div></div> + +<p>Vous devriez toujours appeler <code>disconnect()</code> ou <code>close()</code> une fois que vous n'avez plus besoin d'interagir avec la réponse.</p> + +<p>Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">filter.disconnect() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>None.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.StreamFilter.disconnect", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple précèdera "preface text" au corps de la réponse. Il se déconnecte ensuite, de sorte que le corps de réponse d'origine se charge normalement :</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + + filter.onstart = event => { + console.log("started"); + let encoder = new TextEncoder(); + filter.write(encoder.encode("preface text")); + filter.disconnect(); + } +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.org/"], types: ["main_frame"]}, + ["blocking"] +);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/error/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/error/index.html new file mode 100644 index 0000000000..f4f88ef3c2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/error/index.html @@ -0,0 +1,46 @@ +--- +title: webRequest.Streamfilter.error +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/error +tags: + - API + - Add-ons + - Extensions + - Reference + - StreamFilter.error + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/error +--- +<div>{{AddonSidebar()}}</div> + +<div> +<p>Une chaîne de caractères qui contiendra un message d'erreur après le déclenchement de l'événement {{WebExtAPIRef("webRequest.StreamFilter.onerror", "onerror")}}.</p> +</div> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.StreamFilter.error", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple ajoute un écouteur {{WebExtAPIRef("webRequest.StreamFilter.onerror", "onerror")}} qui enregistre la valeur de <code>error</code>.</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">listener</span><span class="punctuation token">(</span>details<span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">let</span> filter <span class="operator token">=</span> browser<span class="punctuation token">.</span>webRequest<span class="punctuation token">.</span><span class="function token">filterResponseData</span><span class="punctuation token">(</span><span class="string token">"12345"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + + filter<span class="punctuation token">.</span>onerror <span class="operator token">=</span> event <span class="operator token">=</span><span class="operator token">></span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="template-string token"><span class="string token">`Error: </span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span>filter<span class="punctuation token">.</span>error<span class="interpolation-punctuation punctuation token">}</span></span><span class="string token">`</span></span><span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span> + + <span class="keyword token">//return</span> <span class="punctuation token">{</span><span class="punctuation token">}</span><span class="punctuation token">; // not needed</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>webRequest<span class="punctuation token">.</span>onBeforeRequest<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span> + listener<span class="punctuation token">,</span> + <span class="punctuation token">{</span>urls<span class="punctuation token">:</span> <span class="punctuation token">[</span><span class="string token">"<all_urls>"</span><span class="punctuation token">]</span><span class="punctuation token">,</span> types<span class="punctuation token">:</span> <span class="punctuation token">[</span><span class="string token">"main_frame"</span><span class="punctuation token">]</span><span class="punctuation token">}</span><span class="punctuation token">,</span> + <span class="punctuation token">[</span><span class="string token">"blocking"</span><span class="punctuation token">]</span> +<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/index.html new file mode 100644 index 0000000000..6ed8b962a8 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/index.html @@ -0,0 +1,126 @@ +--- +title: webRequest.StreamFilter +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter +tags: + - API + - Add-ons + - Extensions + - NeedsTranslation + - Reference + - StreamFilter + - TopicStub + - Type + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter +--- +<div>{{AddonSidebar()}}</div> + +<p>Un <code>StreamFilter</code> est un objet que vous pouvez utiliser pour surveiller et modifier les réponses HTTP.</p> + +<p>Pour créer un <code>StreamFilter</code>, appelez {{WebExtAPIRef("webRequest.filterResponseData()")}}, en lui passant l'ID de la requête web que vous voulez filtrer.</p> + +<p>Vous pouvez imaginer le filtre de flux entre la pile réseau et le moteur de rendu du navigateur. Le filtre passe les données de réponse HTTP au fur et à mesure qu'il est reçu du réseau, et peut examiner et modifier les données avant de les transmettre au moteur de rendu, où elles seront analysées et rendues.</p> + +<p>Le filtre génère quatre événements différents :</p> + +<ul> + <li>{{WebEXTAPIRef("webRequest.StreamFilter.onstart", "onstart")}} lorsque le filtre est sur le point de commencer à recevoir les données de réponse.</li> + <li>{{WebEXTAPIRef("webRequest.StreamFilter.ondata", "ondata")}} lorsque des données de réponse ont été reçues par le filtre et sont disponibles pour être examinées ou modifiées.</li> + <li>{{WebEXTAPIRef("webRequest.StreamFilter.onstop", "onstop")}} lorsque le filtre a fini de recevoir les données de réponse.</li> + <li>{{WebEXTAPIRef("webRequest.StreamFilter.onerror", "onerror")}} si une erreur s'est produite lors de l'initialisation et de l'utilisation du filtre.</li> +</ul> + +<p>Vous pouvez écouter chaque événement en assignant une fonction d'écoute à son attribut :</p> + +<pre class="brush: js">filter.onstart = event => { + console.log("started"); +}</pre> + +<p>Notez que la demande est bloquée pendant l'exécution de n'importe quel auditeur d'événement.</p> + +<p>Le filtre fournit une fonction {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}}. A tout moment à partir de l'événement <code>onstart</code>, vous pouvez utiliser cette fonction pour écrire des données dans le flux de sortie.</p> + +<p>Si vous assignez des auditeurs à l'un des événements du filtre, alors toutes les données de réponse transmises au moteur de rendu seront fournies par les appels que vous faites pour <code>write()</code>: donc si vous ajoutez un auditeur mais n'appelez pas <code>write()</code>, alors la page rendue sera vide.</p> + +<p>Une fois que vous avez terminé d'interagir avec la réponse, vous appelez l'un ou l'autre des éléments suivants :</p> + +<ul> + <li>{{WebEXTAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}} : Cela déconnecte le filtre de la requête, de sorte que le reste de la réponse est traité normalement.</li> + <li>{{WebEXTAPIRef("webRequest.StreamFilter.close()", "close()")}}: Cela met fin à la demande, de sorte qu'aucune donnée de réponse supplémentaire ne sera traitée.</li> +</ul> + +<p>Le filtre fournit également des fonctions à {{WebEXTAPIRef("webRequest.StreamFilter.suspend()", "suspend()")}} et {{WebEXTAPIRef("webRequest.StreamFilter.resume()", "resume()")}} la requête.</p> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("webRequest.StreamFilter.close()")}}</dt> + <dd>Ferme la demande.</dd> + <dt>{{WebExtAPIRef("webRequest.StreamFilter.disconnect()")}}</dt> + <dd>Déconnecte le filtre de la requête.</dd> + <dt>{{WebExtAPIRef("webRequest.StreamFilter.resume()")}}</dt> + <dd>Reprend le traitement de la demande.</dd> +</dl> + +<dl> + <dt>{{WebExtAPIRef("webRequest.StreamFilter.suspend()")}}</dt> + <dd>Suspend le traitement de la demande.</dd> + <dt>{{WebExtAPIRef("webRequest.StreamFilter.write()")}}</dt> + <dd>Écrit quelques données dans le flux de sortie.</dd> +</dl> + +<h2 id="Propriétés">Propriétés</h2> + +<dl> + <dt>{{WebExtAPIRef("webRequest.StreamFilter.ondata")}}</dt> + <dd>Gestionnaire d'événements qui est appelé lorsque les données entrantes sont disponibles.</dd> + <dt>{{WebExtAPIRef("webRequest.StreamFilter.onerror")}}</dt> + <dd>Gestionnaire d'événements qui est appelé lorsqu'une erreur s'est produite.</dd> + <dt>{{WebExtAPIRef("webRequest.StreamFilter.onstart")}}</dt> + <dd>Gestionnaire d'événements qui est appelé lorsque le flux est sur le point de commencer à recevoir des données.</dd> + <dt>{{WebExtAPIRef("webRequest.StreamFilter.onstop")}}</dt> + <dd>Gestionnaire d'événements qui est appelé lorsque le flux n'a plus de données à livrer et qu'il s'est fermé.</dd> + <dt>{{WebExtAPIRef("webRequest.StreamFilter.error")}}</dt> + <dd>Quand {{WebExtAPIRef("webRequest.StreamFilter.onerror")}} est appelé, cela décrira l'erreur.</dd> + <dt>{{WebExtAPIRef("webRequest.StreamFilter.status")}}</dt> + <dd>Décrit l'état actuel du flux.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.StreamFilter", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ce code écoute pour <code>onstart</code>, <code>ondata</code> et <code>onstop</code>. Il enregistre simplement ces événements et les données de réponse elles-mêmes :</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + + filter.onstart = event => { + console.log("started"); + } + + filter.ondata = event => { + console.log(event.data); + filter.write(event.data); + } + + filter.onstop = event => { + console.log("finished"); + filter.disconnect(); + } + + //return {}; // not needed +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.org/"], types: ["main_frame"]}, + ["blocking"] +);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/ondata/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/ondata/index.html new file mode 100644 index 0000000000..6a07feea5c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/ondata/index.html @@ -0,0 +1,197 @@ +--- +title: webRequest.StreamFilter.ondata +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/ondata +tags: + - API + - Add-ons + - Extensions + - Reference + - StreamFilter.ondata + - TextDecoder + - TextEncoder + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/ondata +--- +<div>{{AddonSidebar()}} +<p>Un gestionnaire d'événements qui sera appelé à plusieurs reprises lorsque les données de réponse sont disponibles. Le gestionnaire est passé un objet <code>event</code> qui contient une propriété de <code>data</code>, qui contient un morceau des données de réponse sous la forme d'un {{domxref("ArrayBuffer")}}.</p> +</div> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple ajoute un écouteur <code>ondata</code> qui remplace "Example" dans la réponse par "WebExtension Example".</p> + +<p>Notez que cet exemple ne fonctionne que pour les occurrences de "Example" qui sont entièrement contenues dans un bloc de données, et non celles qui chevauchent deux morceaux (ce qui peut arriver ~0.1% du temps pour les gros documents). De plus, il ne traite que les documents codés UTF-8. Une véritable mise en œuvre de ce projet devrait être plus complexe.</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + let decoder = new TextDecoder("utf-8"); + let encoder = new TextEncoder(); + + filter.ondata = event => { + let str = decoder.decode(event.data, {stream: true}); + // Just change any instance of Example in the HTTP response + // to WebExtension Example. + str = str.replace(/Example/g, 'WebExtension Example'); + filter.write(encoder.encode(str)); + // Doing filter.disconnect(); here would make us process only + // the first chunk, and let the rest through unchanged. Note + // that this would break multi-byte characters that occur on + // the chunk boundary! + } + + filter.onstop = event => { + filter.close(); + } + + //return {}; // not needed +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.com/*"], types: ["main_frame"]}, + ["blocking"] +);</pre> + +<p>Un autre exemple pour le traitement de documents volumineux :</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + let decoder = new TextDecoder("utf-8"); + let encoder = new TextEncoder(); + + let data = []; + filter.ondata = event => { + data.push(event.data); + }; + + filter.onstop = event => { + let str = ""; + if (data.length == 1) { + str = decoder.decode(data[0]); + } + else { + for (let i = 0; i < data.length; i++) { + let stream = (i == data.length - 1) ? false : true; + str += decoder.decode(data[i], {stream}); + } + } + // Just change any instance of Example in the HTTP response + // to WebExtension Example. + str = str.replace(/Example/g, 'WebExtension $&'); + filter.write(encoder.encode(str)); + filter.close(); + }; +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.com/"], types: ["main_frame"]}, + ["blocking"] +);</pre> + +<p>L'exemple ci-dessus peut aussi s'écrire ainsi :</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + let decoder = new TextDecoder("utf-8"); + let encoder = new TextEncoder(); + + let data = []; + filter.ondata = event => { + data.push(decoder.decode(event.data, {stream: true})); + }; + + filter.onstop = event => { + data.push(decoder.decode()); + + let str = data.join(""); + // Just change any instance of Example in the HTTP response + // to WebExtension Example. + str = str.replace(/Example/g, 'WebExtension $&'); + filter.write(encoder.encode(str)); + filter.close(); + }; +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.com/"], types: ["main_frame"]}, + ["blocking"] +);</pre> + +<p>Cet exemple utilise un {{domxref("Blob")}}:</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + let encoder = new TextEncoder(); + + let data = []; + filter.ondata = event => { + data.push(event.data); + }; + + filter.onstop = async event => { + let blob = new Blob(data, {type: 'text/html'}); + let str = await blob.text(); + + // Just change any instance of Example in the HTTP response + // to WebExtension Example. + str = str.replace(/Example/g, 'WebExtension $&'); + filter.write(encoder.encode(str)); + filter.close(); + }; +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.com/"], types: ["main_frame"]}, + ["blocking"] +);</pre> + +<p>Cet exemple combine tous les tampons en un simple tampon :</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + let decoder = new TextDecoder("utf-8"); + let encoder = new TextEncoder(); + + let data = []; + filter.ondata = event => { + data.push(new Uint8Array(event.data)); + }; + + filter.onstop = event => { + let combinedLength = 0; + for (let buffer of data) { + combinedLength += buffer.length; + } + let combinedArray = new Uint8Array(combinedLength); + let writeOffset = 0; + while (writeOffset < combinedLength) { + let buffer = data.shift(); + combinedArray.set(buffer, writeOffset); + writeOffset += buffer.length; + } + let str = decoder.decode(combinedArray); + // Just change any instance of Example in the HTTP response + // to WebExtension Example. + str = str.replace(/Example/g, 'WebExtension $&'); + filter.write(encoder.encode(str)); + filter.close(); + }; +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.com/"], types: ["main_frame"]}, + ["blocking"] +);</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.StreamFilter.ondata", 10)}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onerror/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onerror/index.html new file mode 100644 index 0000000000..265b58e215 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onerror/index.html @@ -0,0 +1,51 @@ +--- +title: webRequest.StreamFilter.onerror +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/onerror +tags: + - API + - Add-ons + - Extensions + - Reference + - StreamFilter.onerror + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/onerror +--- +<div>{{AddonSidebar()}}</div> + +<div> +<p>Un gestionnaire d'événements qui sera appelé lorsqu'une erreur se produit. C'est le plus souvent parce qu'un ID de requête invalide a été passé dans {{WebExtAPIRef("webRequest.filterResponseData()")}}.</p> + +<p>Après le déclenchement de cet événement, la propriété {{WebExtAPIRef("webRequest.StreamFilter.error")}} contiendra un message donnant plus d'informations sur l'erreur.</p> + +<p>Notez que cet événement n'est <em>pas</em> déclenché pour les erreurs réseau.</p> +</div> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.StreamFilter.onerror", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple ajoute un écouteur <code>onerror</code> qui enregistre la valeur de {{WebExtAPIRef("webRequest.StreamFilter.error")}}.</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData("12345"); + + filter.onerror = event => { + console.log(`Error: ${filter.error}`); + } + + //return {}; // not needed +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["<all_urls>"], types: ["main_frame"]}, + ["blocking"] +); +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstart/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstart/index.html new file mode 100644 index 0000000000..3fca5b7e06 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstart/index.html @@ -0,0 +1,47 @@ +--- +title: webRequest.StreamFilter.onstart +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/onstart +tags: + - API + - Add-ons + - Extensions + - Reference + - StreamFilter.onstart + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/onstart +--- +<div>{{AddonSidebar()}}</div> + +<div> +<p>Un gestionnaire d'événements qui sera appelé lorsque le flux est ouvert et est sur le point de commencer à livrer les données. A partir de ce point, l'extension peut utiliser des fonctions de filtrage telles que {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}}, {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}}, ou {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}}.</p> +</div> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.StreamFilter.onstart", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple remplacera le contenu de la page par "texte de remplacement" :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">listener</span><span class="punctuation token">(</span>details<span class="punctuation token">)</span> <span class="punctuation token">{</span> + <span class="keyword token">let</span> filter <span class="operator token">=</span> browser<span class="punctuation token">.</span>webRequest<span class="punctuation token">.</span><span class="function token">filterResponseData</span><span class="punctuation token">(</span>details<span class="punctuation token">.</span>requestId<span class="punctuation token">)</span><span class="punctuation token">;</span> + + filter<span class="punctuation token">.</span>onstart <span class="operator token">=</span> event <span class="operator token">=</span><span class="operator token">></span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="string token">"started"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="keyword token">let</span> encoder <span class="operator token">=</span> <span class="keyword token">new</span> <span class="class-name token">TextEncoder</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + filter<span class="punctuation token">.</span><span class="function token">write</span><span class="punctuation token">(</span>encoder<span class="punctuation token">.</span><span class="function token">encode</span><span class="punctuation token">(</span><span class="string token">"replacement content"</span><span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + filter<span class="punctuation token">.</span><span class="function token">close</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + <span class="punctuation token">}</span> +<span class="punctuation token">}</span> + +browser<span class="punctuation token">.</span>webRequest<span class="punctuation token">.</span>onBeforeRequest<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span> + listener<span class="punctuation token">,</span> + <span class="punctuation token">{</span>urls<span class="punctuation token">:</span> <span class="punctuation token">[</span><span class="string token">"https://example.org/"</span><span class="punctuation token">]</span><span class="punctuation token">,</span> types<span class="punctuation token">:</span> <span class="punctuation token">[</span><span class="string token">"main_frame"</span><span class="punctuation token">]</span><span class="punctuation token">}</span><span class="punctuation token">,</span> + <span class="punctuation token">[</span><span class="string token">"blocking"</span><span class="punctuation token">]</span> +<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstop/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstop/index.html new file mode 100644 index 0000000000..00de044ebf --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/onstop/index.html @@ -0,0 +1,51 @@ +--- +title: webRequest.StreamFilter.onstop +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/onstop +tags: + - API + - Add-ons + - Extensions + - Reference + - StreamFilter.onstop + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/onstop +--- +<div>{{AddonSidebar()}}</div> + +<div> +<p>Un gestionnaire d'événements qui sera appelé lorsque le flux n'a plus de données à livrer. IDans le gestionnaire d'événements, vous pouvez toujours appeler des fonctions de filtrage telles que {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}}, {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}}, ou {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}}.</p> +</div> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.StreamFilter.onstop", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple ajoutera des "extra stuff" à la réponse :</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + let encoder = new TextEncoder(); + + filter.ondata = event => { + // pass through all the response data + filter.write(event.data); + } + + filter.onstop = event => { + filter.write(encoder.encode("extra stuff")); + filter.disconnect(); + } +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.com/*"], types: ["main_frame"]}, + ["blocking"] +);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/resume/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/resume/index.html new file mode 100644 index 0000000000..e733df0d44 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/resume/index.html @@ -0,0 +1,63 @@ +--- +title: webRequest.StreamFilter.resume() +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/resume +tags: + - API + - Add-ons + - Extensions + - Reference + - StreamFilter.resume() + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/resume +--- +<div>{{AddonSidebar()}}</div> + +<p>Reprend une requête qui a été précédemment suspendue par un appel à {{WebExtAPIRef("webRequest.StreamFilter.suspend()", "suspend()")}}.</p> + +<p>Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">filter.suspend() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>None.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.StreamFilter.suspend", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple utilise la <em>suspend/resume</em> pour retarder une requête web</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + + filter.onstart = event => { + filter.suspend(); + + setTimeout(() => { + filter.resume(); + filter.disconnect(); + }, 1000); + + } +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.org/"], types: ["main_frame"]}, + ["blocking"] +);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/status/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/status/index.html new file mode 100644 index 0000000000..eaf6867663 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/status/index.html @@ -0,0 +1,72 @@ +--- +title: webRequest.StreamFilter.status +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/status +tags: + - API + - Add-ons + - Extensions + - Reference + - StreamFilter.status + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/status +--- +<div>{{AddonSidebar()}}</div> + +<div> +<p>Une chaîne de caractères qui décrit l'état actuel de la demande. Ce sera l'une des valeurs suivantes :</p> + +<dl> + <dt><code>"uninitialized"</code></dt> + <dd>Le filtre n'est pas entièrement initialisé. Aucune fonction de filtrage ne peut être appelée.</dd> + <dt><code>"transferringdata"</code></dt> + <dd>Le canal sous-jacent transfère actuellement des données qui seront acheminées vers l'extension dans un ou plusieurs événements {{WebExtAPIRef("webRequest.StreamFilter.ondata", "ondata")}}. L'extension peut appeler des fonctions de filtrage telles que {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}}, {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}}, ou {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}}.</dd> + <dt><code>"finishedtransferringdata"</code></dt> + <dd>Le canal sous-jacent a terminé le transfert des données. Dans cet état, l'extension peut toujours écrire des données de réponse en utilisant la fonction {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}} du filtre.</dd> + <dt><code>"suspended"</code></dt> + <dd> Le transfert de données est actuellement suspendu. Dans cet état, l'extension peut reprendre la requête en appelant la fonction {{WebExtAPIRef("webRequest.StreamFilter.resume()", "resume()")}} et peut écrire les données de réponse en utilisant la fonction {{WebExtAPIRef("webRequest.StreamFilter.write()", "write()")}} du filtre.</dd> + <dt><code>"closed"</code></dt> + <dd>L'extension a fermé la requête en appelant la fonction {{WebExtAPIRef("webRequest.StreamFilter.close()", "close()")}} du filtre. Le filtre ne déclenchera plus d'événements, et l'extension ne peut pas appeler de fonctions de filtrage.</dd> + <dt><code>"disconnected"</code></dt> + <dd> L'extension a déconnecté le filtre de la requête en appelant la fonction {{WebExtAPIRef("webRequest.StreamFilter.disconnect()", "disconnect()")}} du filtre. Toutes les autres données seront livrées directement, sans passer par le filtre. Le filtre ne déclenchera plus d'événements, et l'extension ne peut pas appeler de fonctions de filtrage.</dd> + <dt><code>"failed"</code></dt> + <dd>Une erreur s'est produite et le filtre a été déconnecté de la requête. L'extension peut trouver un message d'erreur dans {{WebExtAPIRef("webRequest.StreamFilter.error", "error")}}, et ne peut appeler aucune fonction de filtrage.</dd> +</dl> +</div> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.StreamFilter.status", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + console.log(filter.status); // uninitialized + + filter.onstart = event => { + console.log(filter.status); // transferringdata + } + + filter.ondata = event => { + console.log(filter.status); // transferringdata + // pass through the response data + filter.write(event.data); + } + + filter.onstop = event => { + console.log(filter.status); // finishedtransferringdata + filter.disconnect(); + console.log(filter.status); // disconnected + } +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.com/*"], types: ["main_frame"]}, + ["blocking"] +);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/suspend/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/suspend/index.html new file mode 100644 index 0000000000..fb5e40d299 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/suspend/index.html @@ -0,0 +1,63 @@ +--- +title: webRequest.StreamFilter.suspend() +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/suspend +tags: + - API + - Add-ons + - Extensions + - Reference + - StreamFilter.suspend() + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/suspend +--- +<div>{{AddonSidebar()}}</div> + +<p>Suspend une demande. Après cet appel, plus aucune donnée ne sera livrée jusqu'à ce que la requête soit reprise avec un appel à {{WebExtAPIRef("webRequest.StreamFilter.resume()", "resume()")}}.</p> + +<p>Vous ne pouvez pas appeler cette fonction avant que l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}} ne soit déclenché.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">filter.suspend() +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<p>None.</p> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>None.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.StreamFilter.suspend", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple utilise la <em>suspend/resume</em> pour retarder une requête web.</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + + filter.onstart = event => { + filter.suspend(); + + setTimeout(() => { + filter.resume(); + filter.disconnect(); + }, 1000); + + } +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.org/"], types: ["main_frame"]}, + ["blocking"] +);</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/write/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/write/index.html new file mode 100644 index 0000000000..b1a46ecce8 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/streamfilter/write/index.html @@ -0,0 +1,76 @@ +--- +title: webRequest.StreamFilter.write() +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/write +tags: + - API + - Add-ons + - Extensions + - Reference + - StreamFilter.write() + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/StreamFilter/write +--- +<div>{{AddonSidebar()}}</div> + +<div>Écrit quelques données de réponse dans le flux de sortie..</div> + +<div></div> + +<div>Vous ne pouvez appeler cette fonction qu'après le déclenchement de l'événement {{WebExtAPIRef("webRequest.StreamFilter.onstart", "onstart")}}.</div> + +<div></div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">filter.write( + data // ArrayBuffer or Uint8Array +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>data</code></dt> + <dd><code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Uint8Array">Uint8Array</a></code> ou <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/ArrayBuffer">ArrayBuffer</a></code>: tableau d'octets contenant les données à transmettre au moteur de rendu du navigateur.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>None.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.StreamFilter.write", 10)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple utilise <code>write()</code> pour remplacer "Example" dans la réponse par "WebExtension Example".</p> + +<pre class="brush: js">function listener(details) { + let filter = browser.webRequest.filterResponseData(details.requestId); + let decoder = new TextDecoder("utf-8"); + let encoder = new TextEncoder(); + + filter.ondata = event => { + let str = decoder.decode(event.data, {stream: true}); + // Just change any instance of Example in the HTTP response + // to WebExtension Example. + str = str.replace(/Example/g, 'WebExtension Example'); + filter.write(encoder.encode(str)); + filter.disconnect(); + } + + //return {}; // not needed +} + +browser.webRequest.onBeforeRequest.addListener( + listener, + {urls: ["https://example.com/*"], types: ["main_frame"]}, + ["blocking"] +); +</pre> + +<p>{{WebExtExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/api/webrequest/uploaddata/index.html b/files/fr/mozilla/add-ons/webextensions/api/webrequest/uploaddata/index.html new file mode 100644 index 0000000000..a5f366758e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/webrequest/uploaddata/index.html @@ -0,0 +1,75 @@ +--- +title: webRequest.UploadData +slug: Mozilla/Add-ons/WebExtensions/API/webRequest/UploadData +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Type + - UploadData + - WebExtensions + - webRequest +translation_of: Mozilla/Add-ons/WebExtensions/API/webRequest/UploadData +--- +<div>{{AddonSidebar()}}</div> + +<p>Contient les données téléchargées dans une requête URL..</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>bytes</code>{{optional_inline}}</dt> + <dd><code>any</code>. Un ArrayBuffer avec une copie des données.</dd> + <dt><code>file</code>{{optional_inline}}</dt> + <dd><code>string</code>. Une chaîne de caractères avec le chemin et le nom du fichier.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.webRequest.UploadData")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements :</strong> + +<p>Cette API est basée sur l'API Chromium <a href="https://developer.chrome.com/extensions/webRequest"><code>chrome.webRequest</code></a>. Cette documentation est dérivée de <a href="https://chromium.googlesource.com/chromium/src/+/master/extensions/common/api/web_request.json"><code>web_request.json</code></a> dans le code Chromium.</p> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/create/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/create/index.html new file mode 100644 index 0000000000..864690f912 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/create/index.html @@ -0,0 +1,192 @@ +--- +title: windows.create() +slug: Mozilla/Add-ons/WebExtensions/API/windows/create +tags: + - API + - Add-ons + - Create + - Extensions + - Fenêtre + - Méthode + - Non-standard + - WebExtensions + - Windows +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/create +--- +<div>{{AddonSidebar()}}</div> + +<p>Crée une nouvelle fenêtre.</p> + +<p>Lorsque vous créez la fenêtre, vous pouvez :</p> + +<ul> + <li>Chargez un ou plusieurs nouveaux onglets dans la fenêtre.</li> + <li>Déplacez un onglet d'une fenêtre existante dans la nouvelle fenêtre.</li> + <li>Réglez la taille et la position de la fenêtre.</li> + <li>Créez une fenêtre de style "panneau" qui, dans ce contexte, désigne une fenêtre sans l'interface utilisateur UI (barre d'adresse, barre d'outils, etc.).</li> + <li>Définissez différentes propriétés de la fenêtre, par exemple, qu'elle soit concentrée ou privée.</li> +</ul> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var creating = browser.windows.create( + createData // optional object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>createData</code>{{optional_inline}}</dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>allowScriptsToClose</code> {{optional_inline}}</dt> + <dd> + <p><code>boolean</code>. Lorsque la fenêtre est ouverte, elle contiendra un seul onglet, ou plus d'un onglet si <code>url</code> est donnée et comprendra un tableau contenant plus d'une URL. Par défaut, les scripts s'exécutant dans ces pages ne sont pas autorisés à fermer leur onglet en utilisant <code><a href="/fr/docs/Web/API/Window/close">window.close()</a></code>. Si vous incluez <code>allowScriptsToClose</code> et le mettez à <code>true</code> , alors ce comportement par défaut est modifié, de sorte que les scripts peuvent fermer leurs onglets. Notez cela :</p> + + <ul> + <li>Ceci ne s'applique qu'aux onglets qui ont été ouverts lors de la création de la fenêtre. Si l'utilisateur ouvre plus d'onglets dans cette fenêtre, les scripts ne pourront pas fermer ces nouveaux onglets.</li> + <li>Si la ou les url(s) donnée(s) dans <code>url</code> pointent vers les <a href="/fr/Add-ons/WebExtensions/user_interface/Bundled_web_pages">pages d'extension</a> (c'est-à-dire qu'il s'agit de pages incluses avec cette extension et chargées avec le protocole "moz-extension:") alors les scripts <em>sont</em> par défaut autorisés à fermer ces onglets.</li> + </ul> + </dd> + <dt><code>cookieStoreId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. S'il est présent, spécifie le <code>CookieStoreId</code> pour tous les onglets qui seront créés lorsque la fenêtre sera ouverte.</dd> + <dt><code>focused</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si c'est vrai, la nouvelle fenêtre sera concentrée. Si c'est <code>false</code>, la nouvelle fenêtre sera ouverte en arrière-plan et la fenêtre actuellement concentrée restera concentrée. Le paramètre par défaut est <code>true</code>.</dd> + <dt><code>height</code> {{optional_inline}}</dt> + <dd><code>integer</code>. Hauteur en pixels de la nouvelle fenêtre, y compris dans une frame. Si elle n'est pas spécifiée, par défaut une hauteur naturel.</dd> + <dt><code>incognito</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Que la nouvelle fenêtre soit une fenêtre privée. Notez que si vous spécifiez <code>incognito</code> et <code>tabId</code>, c'est-à-dire, vous ne pouvez pas déplacer un onglet privé dans une fenêtre privée.</dd> + <dt><code>left</code> {{optional_inline}}</dt> + <dd><code>integer</code>. Nombre de pixels pour positionner la nouvelle fenêtre à partir du bord gauche de l'écran. Si elle n'est pas spécifiée, la nouvelle fenêtre est décalée naturellement à partir de la dernière fenêtre ciblée. Cette valeur est ignorée pour les panneaux. (Dans Firefox, cette valeur est actuellement ignorée pour les popups (bug 1271047) mais peut être définie en utilisant browser.windows.update().)</dd> + <dt><code>state</code> {{optional_inline}}</dt> + <dd>Une valeur {{WebExtAPIRef('windows.WindowState')}}. L'état initial de la fenêtre. Les états minimisés, maximisés et plein écran ne peuvent pas être combinés avec la gauche, le haut, la largeur ou la hauteur.</dd> + <dt><code>tabId</code> {{optional_inline}}</dt> + <dd><code>integer</code>. Si inclus, déplace un onglet de l'ID spécifié d'une fenêtre existante dans la nouvelle fenêtre.</dd> + <dt><code>titlePreface</code> {{optional_inline}}</dt> + <dd><code>string</code>. Utilisez ceci pour ajouter une chaîne au début du titre de la fenêtre du navigateur. Selon le système d'exploitation sous-jacent, cela pourrait ne pas fonctionner sur les fenêtres du navigateur qui n'ont pas de titre (comme about:blank dans Firefox).</dd> + <dt><code>top</code> {{optional_inline}}</dt> + <dd><code>integer</code>. Le nombre de pixels pour positionner la nouvelle fenêtre à partir du bord supérieur de l'écran. Si elle n'est pas spécifiée, la nouvelle fenêtre est naturellement décalée à partir de la dernière fenêtre ciblée. Cette valeur est ignorée pour les panneaux. (Dans Firefox, cette valeur est actuellement ignorée pour les popups (bug 1271047) mais peut être définie en utilisant browser.windows.update().)</dd> + <dt><code>type</code> {{optional_inline}}</dt> + <dd>Une valeur {{WebExtAPIRef('windows.CreateType')}} spécifie le type de fenêtre du navigateur à créer. Spécifié le <code>panneau</code> ou la <code>fenêtre contextuelle</code> ici pour ouvrir une fenêtre sans l'interface utilisateur (barre d'adresse, barre d'outils, etc).</dd> + <dt><code>url</code> {{optional_inline}}</dt> + <dd><code><code>string</code></code> ou <code><code>array</code></code> of <code><code><code>string</code></code></code>s. Une URL ou un tableau d'URL à ouvrir comme onglets dans une fenêtre. Les URL hautement qualifiées doivent inclure un schéma (c'est à dire <code>http://www.google.com</code>, et non <code>www.google.com</code>). Les URL relatives seront relatives à la page actuelle dans l'extension. Par défaut, la nouvelle page d'onglet.</dd> + <dt><code>width</code> {{optional_inline}}</dt> + <dd><code>integer</code>. La largeur en pixels de la nouvelle fenêtre, y compris le cadre. Si elle n'est pas spécifiée par défaut, vous avez une largeur naturelle.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef('windows.Window')}} contenant les détails de la nouvelle fenêtre. Cet objet de fenêtre aura toujours son ensemble de propriétés d'onglets, contrairement aux objets de fenêtre retournés à partir de {{WebExtAPIRef("windows.get()")}} et d'API similaires, qui contiennent uniquement des onglets si l'option de remplissage est passée. Si une erreur survient, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Ouvrir une fenêtre contenant deux onglets :</p> + +<pre class="brush: js">function onCreated(windowInfo) { + console.log(`Created window: ${windowInfo.id}`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.browserAction.onClicked.addListener((tab) => { + var creating = browser.windows.create({ + url: ["https://developer.mozilla.org", + "https://addons.mozilla.org"] + }); + creating.then(onCreated, onError); +});</pre> + +<p>Ouvrez une fenêtre lorsque l'utilisateur clique sur une action du navigateur et déplacez l'onglet actif actuellement :</p> + +<pre class="brush: js">function onCreated(windowInfo) { + console.log(`Created window: ${windowInfo.id}`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.browserAction.onClicked.addListener((tab) => { + var creating = browser.windows.create({ + tabId: tab.id + }); + creating.then(onCreated, onError); +});</pre> + +<p>Ouvrez une petite fenêtre de style panneau et chargez-en un fichier local:</p> + +<pre class="brush: js">function onCreated(windowInfo) { + console.log(`Created window: ${windowInfo.id}`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.browserAction.onClicked.addListener((tab) => { + + var popupURL = browser.extension.getURL("popup/popup.html"); + + var creating = browser.windows.create({ + url: popupURL, + type: "popup", + height: 200, + width: 200 + }); + creating.then(onCreated, onError); + +});</pre> + +<p>{{WebExtExamples}}</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.windows.create", 10)}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/createtype/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/createtype/index.html new file mode 100644 index 0000000000..0dbfb64141 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/createtype/index.html @@ -0,0 +1,79 @@ +--- +title: windows.CreateType +slug: Mozilla/Add-ons/WebExtensions/API/windows/CreateType +tags: + - API + - Add-ons + - CreateType + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - Windows +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/CreateType +--- +<div>{{AddonSidebar()}}</div> + +<p>Spécifie le type de fenêtre du navigateur à créer.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets <code>strings</code>. Les valeurs possibles sont :</p> + +<ul> + <li><code>"normal"</code></li> + <li><code>"popup"</code></li> + <li><code>"panel"</code></li> + <li><code>"detached_panel"</code></li> +</ul> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.windows.CreateType")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/get/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/get/index.html new file mode 100644 index 0000000000..7c75f9d804 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/get/index.html @@ -0,0 +1,123 @@ +--- +title: windows.get() +slug: Mozilla/Add-ons/WebExtensions/API/windows/get +tags: + - API + - Add-ons + - Extensions + - Méthode + - Non-standard + - Référence(2) + - WebExtensions + - Windows + - get +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/get +--- +<div><span class="diff_add">{{AddonSidebar()}}</span></div> + +<p>Obtient les détails sur une fenêtre, compte tenu de son identifiant. Les détails sont transmis à un rappel.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoit une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var getting = browser.windows.get( + windowId, // integer + getInfo // optional object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. L'ID de l'objet de fenêtre souhaité est retourné.</dd> + <dt><code>getInfo</code>{{optional_inline}}</dt> + <dd><code>object</code>. Contient des options pour filtrer le type de fenêtre. + <dl class="reference-values"> + <dt><code>populate</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si c'est vrai, l'objet {{WebExtAPIRef('windows.Window')}} aura une propriété de tabulation qui contient une liste d'objets {{WebExtAPIRef('tabs.Tab')}} représentant les onglets ouverts dans la fenêtre. Les objets Tab ne contiennent que les propriétés <code>url</code>, <code>title</code> et <code>favIconUrl</code> i le fichier manifeste de l'extension comprend la permission <code>"tabs"</code>.</dd> + <dt><code>windowTypes</code>{{optional_inline}}</dt> + <dd><code>Ensemble d'objets</code> {{WebExtAPIRef('windows.WindowType')}}. Si défini, le retour de {{WebExtAPIRef('windows.Window')}} sera filtré en fonction de son type. Si désactivé, le filtre par défaut est réglé sur <code>['normal', 'panel', 'popup']</code>, avec des types de fenêtres <code>'panel'</code> qui sont limités aux propres fenêtres de l'extension.</dd> + </dl> + </dd> +</dl> + +<div class="note"><strong>Note:</strong> + +<p>Si fourni, le composant <code>windowTypes</code> de <code>getInfo</code> est ignoré. L'utilisation de <code>windowTypes</code> a été dépréciée à partir de Firefox 62.</p> +</div> + +<h3 id="Valeur_de_retour">Valeur de retour</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef('windows.Window')}} contenant les détails de la fenêtre. Si une erreur survient, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.windows.get",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Cet exemple obtient la fenêtre actuelle et enregistre les URL des onglets qu'il contient. Notez que vous aurez besoin des <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "onglets" pour accéder aux URL des onglets.</p> + +<div class="note"> +<p><strong>Note</strong>: Cet exemple est un peu irréaliste: dans cette situation, vous utiliserez probablement {{WebExtAPIRef("windows.getCurrent()")}}.</p> +</div> + +<pre class="brush: js">function logTabs(windowInfo) { + for (tabInfo of windowInfo.tabs) { + console.log(tabInfo.url); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.browserAction.onClicked.addListener((tab) => { + var getting = browser.windows.get(tab.windowId, {populate: true}); + getting.then(logTabs, onError); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/getall/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/getall/index.html new file mode 100644 index 0000000000..019e4ec500 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/getall/index.html @@ -0,0 +1,120 @@ +--- +title: windows.getAll() +slug: Mozilla/Add-ons/WebExtensions/API/windows/getAll +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - Windows + - getAll +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/getAll +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient des informations sur toutes les fenêtres ouvertes, en les passant dans un rappel.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingAll = browser.windows.getAll( + getInfo // optional object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>getInfo</code>{{optional_inline}}</dt> + <dd><code>object</code>. Cela contrôle ce que les objets {{WebExtAPIRef('windows.Window')}} sont récupérés.</dd> + <dd> + <dl class="reference-values"> + <dt><code>populate</code>{{optional_inline}}</dt> + <dd><code>boolean</code> Par défaut à <code>false</code>. S'il est défini sur <code>true</code>, chaque objet {{WebExtAPIRef('windows.Window')}} aura une propriété <code>tabs</code> qui contient une liste d'objets {{WebExtAPIRef('tabs.Tab')}} représentant les tabs de cette fenêtre. Les objets <code>Tab</code> contiendront les propriétés <code>url</code>, <code>title</code> et <code>favIconUrl</code> uniquement si le fichier manifest de l'extension contient les permissions <code>"tabs"</code>.</dd> + <dt><code>windowTypes</code>{{optional_inline}}</dt> + <dd><code>Un ensemble d'objets</code> {{WebExtAPIRef('windows.WindowType')}}. Si cette option est définie, les objets {{WebExtAPIRef('windows.Window')}} renvoyés seront filtrés en fonction de leur type. Si désactivé, le filtre par défaut est réglé sur <code>['normal', 'panel', 'popup']</code>, avec des types de fenêtres <code>'panel'</code> qui sont limités aux propres fenêtres de l'extension.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un ensemble d'objets {{WebExtAPIRef('windows.Window')}}, représentant toutes les fenêtres qui correspondent aux critères donnés. Si une erreur survient, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.windows.getAll")}}</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez les URL pour les onglets sur toutes les fenêtres de navigateur "normales". Notez que vous aurez besoin de <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "onglets" pour accéder aux URLs des onglets.</p> + +<pre class="brush: js">function logTabsForWindows(windowInfoArray) { + for (windowInfo of windowInfoArray) { + console.log(`Window: ${windowInfo.id}`); + console.log(windowInfo.tabs.map((tab) => {return tab.url})); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.browserAction.onClicked.addListener((tab) => { + var getting = browser.windows.getAll({ + populate: true, + windowTypes: ["normal"] + }); + getting.then(logTabsForWindows, onError); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/getcurrent/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/getcurrent/index.html new file mode 100644 index 0000000000..986ec1b0de --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/getcurrent/index.html @@ -0,0 +1,119 @@ +--- +title: windows.getCurrent() +slug: Mozilla/Add-ons/WebExtensions/API/windows/getCurrent +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - WebExtensions + - Windows + - getCurrent +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/getCurrent +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient la fenêtre actuelle du navigateur, en passant ses détails dans un rappel.</p> + +<p>La fenêtre "actuelle" n'est pas nécessairement la même que la fenêtre ayant actuellement le focus. Si cette fonction est appelée à partir d'un script en arrière-plan, elle renvoie la fenêtre ayant actuellement le focus. Mais s'il est appelé à partir d'un script dont le document est associé à une fenêtre de navigateur particulière, il retourne la fenêtre de ce navigateur. Par exemple, si le navigateur affiche une barre latérale, chaque fenêtre de navigateur possède sa propre instance du document de la barre latérale. Si un script exécuté dans le document de la barre latérale appelle <code>getCurrent()</code>, il renverra la fenêtre de ce document de la barre latérale.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingCurrent = browser.windows.getCurrent( + getInfo // optional object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>getInfo</code>{{optional_inline}}</dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>populate</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si c'est vrai, l'objet {{WebExtAPIRef('windows.Window')}} aura une propriété de tabulation contenant une liste d'objets {{WebExtAPIRef('tabs.Tab')}} représentant les onglets de la fenêtre. Les objets Tab ne contiennent que les propriétés <code>url</code>, <code>title</code> et <code>favIconUrl</code> si le fichier manifest de l'extension comprend la permission <code>"tabs"</code>.</dd> + <dt><code>windowTypes</code>{{optional_inline}}</dt> + <dd>Un ensemble d'objets <code>{{WebExtAPIRef('windows.WindowType')}}</code>. Si défini, le {{WebExtAPIRef('windows.Window')}} retourné sera filtré en fonction de son type. Si désactivé, le filtre par défaut est réglé sur <code>['normal', 'panel', 'popup']</code>, avec des types de fenêtres <code>'panneau'</code> qui sont limités aux propres fenêtres de l'extension.</dd> + </dl> + </dd> +</dl> + +<div class="note"><strong>Note:</strong> + +<p>Si fourni, le composant <code>windowTypes</code> de <code>getInfo</code> est ignoré. L'utilisation de <code>windowTypes</code> a été dépréciée à partir de Firefox 62.</p> +</div> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/windows/Window" title="Information about a browser window."><code>windows.Window</code></a> object contenant les détails de la fenêtre. Si une erreur survient, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.windows.getCurrent",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Lorsque l'utilisateur clique sur l'icône d'une action du navigateur, cet exemple obtient la fenêtre actuelle et enregistre les URL des onglets qu'elle contient. Notez que vous aurez besoin de la <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "tabs" pour accéder aux URL des onglets.</p> + +<pre class="brush: js">function logTabs(windowInfo) { + for (let tabInfo of windowInfo.tabs) { + console.log(tabInfo.url); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.browserAction.onClicked.addListener((tab) => { + var getting = browser.windows.getCurrent({populate: true}); + getting.then(logTabs, onError); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/getlastfocused/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/getlastfocused/index.html new file mode 100644 index 0000000000..fe798635ac --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/getlastfocused/index.html @@ -0,0 +1,117 @@ +--- +title: windows.getLastFocused() +slug: Mozilla/Add-ons/WebExtensions/API/windows/getLastFocused +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Referece + - WebExtensions + - Windows + - getLastFocused +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/getLastFocused +--- +<div>{{AddonSidebar()}}</div> + +<p>Obtient la fenêtre qui a été recentrée récemment — généralement la fenêtre 'en haut'.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var gettingWindow = browser.windows.getLastFocused( + getInfo // optional object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>getInfo</code>{{optional_inline}}</dt> + <dd><code>object</code>.</dd> + <dd> + <dl class="reference-values"> + <dt><code>populate</code>{{optional_inline}}</dt> + <dd><code>boolean</code>. Si c'est vrai, l'objet {{WebExtAPIRef('windows.Window')}} aura une propriété de tabulation contenant une liste d'objets {{WebExtAPIRef('tabs.Tab')}} représentant les onglets de la fenêtre. Les objets d'onglets ne contiennent que les propriétés <code>url</code>, <code>title</code> et <code>favIconUrl</code> si le fichier manifest de l'extension comprend la permission <code>"tabs"</code>.</dd> + <dt><code>windowTypes</code>{{optional_inline}}</dt> + <dd>Un ensemble d'objets {{WebExtAPIRef('windows.WindowType')}}. Si défini, le {{WebExtAPIRef('windows.Window')}} retourné sera filtré en fonction de son type. Si désactivé, le filtre par défaut est réglé sur <code>['normal', 'panel', 'popup']</code>, avec le type de fenêtre <code>'panel'</code> qui sont limités aux propres fenêtres de l'extension.</dd> + </dl> + </dd> +</dl> + +<div class="note"><strong>Note:</strong> + +<p>Si fourni, le composant <code>windowTypes</code> de <code>getInfo</code> est ignoré. L'utilisation de <code>windowTypes</code> a été dépréciée à partir de Firefox 62.</p> +</div> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p><code>Une <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef('windows.Window')}} contenant les détails de la dernière fenêtre ciblée. Si une erreur survient, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.windows.getLastFocused",2)}}</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Obtenez la dernière fenêtre ciblée et enregistrez les onglets qu'elle contient. Notez que vous aurez besoin de la <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "tabs" pour accéder aux URL des onglets.</p> + +<pre class="brush: js">function logTabs(windowInfo) { + for (tabInfo of windowInfo.tabs) { + console.log(tabInfo.url); + } +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.browserAction.onClicked.addListener((tab) => { + var getting = browser.windows.getLastFocused({populate: true}); + getting.then(logTabs, onError); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/index.html new file mode 100644 index 0000000000..2967f8e342 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/index.html @@ -0,0 +1,115 @@ +--- +title: windows +slug: Mozilla/Add-ons/WebExtensions/API/windows +tags: + - API + - Add-os + - Extensions + - Interface + - Non-standard + - Référence(2) + - WebExtensions + - Windows +translation_of: Mozilla/Add-ons/WebExtensions/API/windows +--- +<div>{{AddonSidebar}}</div> + +<p>Intéragissez avec les fenêtres du navigateur. Vous pouvez utiliser cette API pour obtenir des informations sur les fenêtres ouvertes et à ouvrir, modifiée et fermée les fenêtres. Vous pouvez également écouter la fenêtre ouverte, fermée, et activée les événements.</p> + +<h2 id="Types">Types</h2> + +<dl> + <dt>{{WebExtAPIRef("windows.WindowType")}}</dt> + <dd>Le type de fenêtre du navigateur ici.</dd> + <dt>{{WebExtAPIRef("windows.WindowState")}}</dt> + <dd>L'état de cette fenêtre du navigateur.</dd> + <dt>{{WebExtAPIRef("windows.Window")}}</dt> + <dd>Contient des informations sur une fenêtre de navigateur.</dd> + <dt>{{WebExtAPIRef("windows.CreateType")}}</dt> + <dd>Spécifie le type de fenêtre du navigateur à créer.</dd> +</dl> + +<h2 id="Constantes">Constantes</h2> + +<dl> + <dt>{{WebExtAPIRef("windows.WINDOW_ID_NONE")}}</dt> + <dd>La valeur <code>windowId</code> qui représente l'absence d'une fenêtre de navigateur.</dd> + <dt>{{WebExtAPIRef("windows.WINDOW_ID_CURRENT")}}</dt> + <dd>Une valeur qui peut être utilisée à la place d'un <code>windowId</code> dans certaines APIs pour représenter la fenêtre courante.</dd> +</dl> + +<h2 id="Méthodes">Méthodes</h2> + +<dl> + <dt>{{WebExtAPIRef("windows.get()")}}</dt> + <dd>Obtient les détails sur une fenêtre, compte tenu de son identifiant.</dd> + <dt>{{WebExtAPIRef("windows.getCurrent()")}}</dt> + <dd>Obtient les informations de la fenêtre courante.</dd> + <dt>{{WebExtAPIRef("windows.getLastFocused()")}}</dt> + <dd>Obtient la fenêtre qui a été recentrée plus récemment — généralement la fenêtre « en haut ».</dd> + <dt>{{WebExtAPIRef("windows.getAll()")}}</dt> + <dd>Obtient les informations de toutes les fenêtres</dd> + <dt>{{WebExtAPIRef("windows.create()")}}</dt> + <dd> + <p>Crée une nouvelle fenêtre.</p> + </dd> + <dt>{{WebExtAPIRef("windows.update()")}}</dt> + <dd>Mises à jour des propriétés d'une fenêtre. Utilisez ceci pour déplacer, redimensionner, et (un) se concentrer sur une fenêtre, etc.</dd> + <dt>{{WebExtAPIRef("windows.remove()")}}</dt> + <dd>Ferme une fenêtre et tous ses onglets.</dd> +</dl> + +<h2 id="Evénements">Evénements</h2> + +<dl> + <dt>{{WebExtAPIRef("windows.onCreated")}}</dt> + <dd>Lancé quand une fenêtre est créée.</dd> + <dt>{{WebExtAPIRef("windows.onRemoved")}}</dt> + <dd>Lancé quand une fenêtre est fermée.</dd> + <dt>{{WebExtAPIRef("windows.onFocusChanged")}}</dt> + <dd>Lancé quand la fenêtre courante change.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.api.windows")}}</p> + +<p>{{WebExtExamples("h2")}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/oncreated/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/oncreated/index.html new file mode 100644 index 0000000000..b45dfcf4a7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/oncreated/index.html @@ -0,0 +1,110 @@ +--- +title: windows.onCreated +slug: Mozilla/Add-ons/WebExtensions/API/windows/onCreated +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Référence(2) + - WebExtensions + - Windows + - onCreated +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/onCreated +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancer quand la fenêtre est créée</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.windows.onCreated.addListener(listener) +browser.windows.onCreated.removeListener(listener) +browser.windows.onCreated.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêter d'écouter cet événement. L'argument de l'auditeur est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si un auditeur est enregistré pour cet événement. Renvoie vrai si elle répond, Faux sinon.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lors de l'événement. La fonction passera les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>window</code></dt> + <dd>Un objet {{WebExtAPIRef('windows.Window')}} contenant les détails de la fenêtre qui a été créée.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.windows.onCreated")}}</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrez les ID des nouvelles fenêtres lorsqu'elles sont créées</p> + +<pre class="brush: js">browser.windows.onCreated.addListener((window) => { + console.log("New window: " + window.id); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/onfocuschanged/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/onfocuschanged/index.html new file mode 100644 index 0000000000..08c08a94aa --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/onfocuschanged/index.html @@ -0,0 +1,114 @@ +--- +title: windows.onFocusChanged +slug: Mozilla/Add-ons/WebExtensions/API/windows/onFocusChanged +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Reference + - WebExtensions + - Windows + - onFocusChanged +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/onFocusChanged +--- +<div>{{AddonSidebar()}}</div> + +<p>Attiré lorsque la fenêtre actuellement change. Sera {{WebExtAPIRef('windows.WINDOW_ID_NONE')}} si toutes les fenêtres du navigateur ont perdu le focus.</p> + +<div class="note"> +<p><strong>Note</strong>: Sur certains gestionnaires de fenêtres Linux, WINDOW_ID_NONE sera toujours envoyé immédiatement avant un passage d'une fenêtre de navigateur à l'autre.</p> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">browser.windows.onFocusChanged.addListener(listener) +browser.windows.onFocusChanged.removeListener(listener) +browser.windows.onFocusChanged.hasListener(listener) +</pre> + +<p>Les événements ont trois événements :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un auditeur à cet événement</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêtez d'écouter cet événement. L'argument de l'auditeur est l'auditeur à supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifiez si un auditeur est enregistré pour cet événement. Renvoie <strong>vrai</strong> si elle écoute, <strong>faux</strong> sinon..</dd> +</dl> + +<h2 id="syntaxe_addListener">syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lors de l'événement. La fonction passera les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. ID de la fenêtre nouvellement localisée.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.windows.onFocusChanged")}}</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Changements de mise au point du journal :</p> + +<pre class="brush: js">browser.windows.onFocusChanged.addListener((windowId) => { + console.log("Newly focused window: " + windowId); +});</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/onremoved/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/onremoved/index.html new file mode 100644 index 0000000000..ca48c390fb --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/onremoved/index.html @@ -0,0 +1,111 @@ +--- +title: windows.onRemoved +slug: Mozilla/Add-ons/WebExtensions/API/windows/onRemoved +tags: + - API + - Add-ons + - Event + - Extensions + - Non-standard + - Référence(2) + - WebExtensions + - Windows + - onRemoved +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/onRemoved +--- +<div>{{AddonSidebar()}}</div> + +<p>Lancer quand une fenêtre est fermée.</p> + +<h2 id="Syntax">Syntax</h2> + +<pre class="syntaxbox brush:js">browser.windows.onRemoved.addListener(listener) +browser.windows.onRemoved.removeListener(listener) +browser.windows.onRemoved.hasListener(listener) +</pre> + +<p>Les événements ont trois fonctions :</p> + +<dl> + <dt><code>addListener(callback)</code></dt> + <dd>Ajoute un auditeur à cet événement.</dd> + <dt><code>removeListener(listener)</code></dt> + <dd>Arrêter d'écouter cet événement. L'argument de l'auditeur est l'auditeur supprimer.</dd> + <dt><code>hasListener(listener)</code></dt> + <dd>Vérifie si un auditeur est enregistré pour cet événement. Renvoie vrai si elle écoute, faux sinon.</dd> +</dl> + +<h2 id="Syntaxe_addListener">Syntaxe addListener</h2> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>callback</code></dt> + <dd> + <p>Fonction qui sera appelée lors de l'événement. La fonction passera les arguments suivants :</p> + + <dl class="reference-values"> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. ID de la fenêtre fermée.</dd> + </dl> + </dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.windows.onRemoved")}}</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Enregistrer les identifiants de la fenêtre lorsqu'ils sont supprimés</p> + +<pre class="brush: js">browser.windows.onRemoved.addListener((windowId) => { + console.log("Closed window: " + windowId); +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/remove/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/remove/index.html new file mode 100644 index 0000000000..49cc7a2d71 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/remove/index.html @@ -0,0 +1,120 @@ +--- +title: windows.remove() +slug: Mozilla/Add-ons/WebExtensions/API/windows/remove +tags: + - API + - Add-ons + - Extensions + - Fenêtre + - Méthode + - Non-standard + - Référence(2) + - Suppression + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/remove +--- +<div>{{AddonSidebar()}}</div> + +<p>Ferme une fenêtre et tous les onglets à l'intérieur, compte tenu de l'ID de la fenêtre.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var removing = browser.windows.remove( + windowId // integer +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. ID of the window to close.</dd> +</dl> + +<h3 id="Valeur_retournée">Valeur retournée</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promesse</a></code> qui sera remplie sans arguments lorsque la fenêtre a été fermée. Si une erreur survient, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.windows.remove")}}</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Lorsque l'utilisateur clique sur l'icône d'une action du navigateur, fermez la fenêtre dans laquelle l'icône a été cliquée:</p> + +<pre class="brush: js">function onRemoved() { + console.log(`Removed window`); +} + +function onError(error) { + console.error(`Error:`, error); +} + +browser.browserAction.onClicked.addListener((tab) => { + + var removing = browser.windows.remove(tab.windowId); + removing.then(onRemoved, onError); + +});</pre> + +<p><br> + Fermez la fenêtre en cours, par exemple une fenêtre contextuelle, lorsque l'utilisateur clique sur un bouton de la page :</p> + +<pre class="brush: js">// in a script loaded by the page in the window +document.querySelector('#close').addEventListener(async ({ button, }) => { try { + if (button) return; // not a left click + const windowId = (await browser.windows.getCurrent()).id; + await browser.windows.remove(windowId); + // this point will never be reached, since the window is gone +} catch (error) { console.error('Closing failed:', error); } });</pre> + +<p>Dans Firefox, la même chose pourrait être réalisée avec la propriété de création de fenêtre <code>.allowScriptsToClose</code> et <code>window.close()</code>.</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/update/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/update/index.html new file mode 100644 index 0000000000..de597c8bc9 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/update/index.html @@ -0,0 +1,134 @@ +--- +title: windows.update() +slug: Mozilla/Add-ons/WebExtensions/API/windows/update +tags: + - API + - Add-ons + - Extensions + - Method + - Non-standard + - Reference + - Update + - WebExtensions + - Windows +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/update +--- +<div>{{AddonSidebar()}}</div> + +<p>Mises à jour des propriétés d'une fenêtre. Utilisez ceci pour déplacer, redimensionner, et (un) se concentrer sur une fenêtre, etc.</p> + +<p>Il s'agit d'une fonction asynchrone qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox brush:js">var updating = browser.windows.update( + windowId, // integer + updateInfo // object +) +</pre> + +<h3 id="Paramètres">Paramètres</h3> + +<dl> + <dt><code>windowId</code></dt> + <dd><code>integer</code>. ID de la fenêtre à mettre à jour.</dd> + <dt><code>updateInfo</code></dt> + <dd><code>object</code>. Objet contenant les propriétés de mise à jour.</dd> + <dd> + <dl class="reference-values"> + <dt><code>drawAttention</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. si cela est vrai, la fenêtre doit être affichée de manière à attirer l'attention de l'utilisateur sur la fenêtre, sans changer la fenêtre ciblée. L'effet dure jusqu'à ce que l'utilisateur change de focus sur la fenêtre. Cette option n'a aucun effet si la fenêtre a déjà un focus. Si cela est faux pour annuler la requête précéndete <code>drawAttention</code>.</dd> + <dt><code>focused</code> {{optional_inline}}</dt> + <dd><code>boolean</code>. Si c'est vrai, apporte la fenêtre à l'avant. Si c'est faux, apporte la fenêtre suivante dans le z-order de l'avant.</dd> + <dt><code>height</code> {{optional_inline}}</dt> + <dd><code>integer</code>. Hauteur pour redimensionner la fenêtre en pixels. Cette valeur est ignorée pour les panneaux.</dd> + <dt><code>left</code> {{optional_inline}}</dt> + <dd><code>integer</code>. Le décalage du bord gauche de l'écran pour déplacer la fenêtre en pixels. Cette valeur est ignorée pour les panneaux.</dd> + <dt><code>state</code>{{optional_inline}}</dt> + <dd>{{WebExtAPIRef('windows.WindowState')}}. Le nouvel état de la fenêtre. Les états minimisés, maximisés et en plein écran ne peuvent pas être combinés avec gauche, haut, largeur ou hauteur.</dd> + <dt><code>titlePreface</code> {{optional_inline}}</dt> + <dd><code>string</code>. Utilisez ceci pour ajouter une chaîne au début du titre de la fenêtre du navigateur. Selon le système d'exploitation sous-jacent, cela pourrait ne pas fonctionner sur les fenêtres du navigateur qui n'ont pas de titre (comme about:blank dans Firefox).</dd> + <dt><code>top</code> {{optional_inline}}</dt> + <dd><code>integer</code>. Le décallage du bord supérieur de l'écran pour déplacer la fenêtre en pixels. Cette valeur est ignorée pour les panneaux.</dd> + <dt><code>width</code> {{optional_inline}}</dt> + <dd><code>integer</code>. La largeur pour redimensionner la fenêtre en pixels. Cette valeur est ignorée pour les panneaux.</dd> + </dl> + </dd> +</dl> + +<h3 id="Valeur_de_retour">Valeur de retour</h3> + +<p>Une <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promise</a></code> qui sera remplie avec un objet {{WebExtAPIRef('windows.Window')}} contenant les détails de la fenêtre mise à jour. Si une erreur survient, la promesse sera rejetée avec un message d'erreur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.windows.update")}}</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Lorsque l'utilisateur clique sur l'icône d'une action du navigateur, déplacez la fenêtre vers le coin supérieur gauche:</p> + +<pre class="brush: js">function onUpdated(windowInfo) { + console.log(`Updated window: ${windowInfo.id}`); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +browser.browserAction.onClicked.addListener((tab) => { + + var updating = browser.windows.update(tab.windowId, { + left: 0, + top: 0 + }); + updating.then(onUpdated, onError); + +}); +</pre> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/window/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/window/index.html new file mode 100644 index 0000000000..7c4933b0bd --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/window/index.html @@ -0,0 +1,96 @@ +--- +title: windows.Window +slug: Mozilla/Add-ons/WebExtensions/API/windows/Window +tags: + - Fenêtre +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/Window +--- +<div>{{AddonSidebar()}}</div> + +<p>Informations sur une fenêtre du navigateur.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des objets. Ils contiennent les propriétés suivantes :</p> + +<dl class="reference-values"> + <dt><code>alwaysOnTop</code></dt> + <dd><code>boolean</code>. Que la fenêtre soit configurée pour toujours être sur le dessus.</dd> + <dt><code>focused</code></dt> + <dd><code>boolean</code>. Que la fenêtre soit actuellement la fenêtre ciblée.</dd> + <dt><code>height</code>{{optional_inline}}</dt> + <dd><code>integer</code>. La hauteur de la fenêtre, y compris le cadre, en pixels.</dd> +</dl> + +<dl class="reference-values"> + <dt><code>id</code>{{optional_inline}}</dt> + <dd><code>integer</code>. L'ID de la fenêtre. Les identifiants de fenêtre sont uniques dans une session de navigateur.</dd> + <dt><code>incognito</code></dt> + <dd><code>boolean</code>. Que la fenêtre soit incognito (privé).</dd> + <dt><code>left</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Le décalage de la fenêtre du bord gauche de l'écran en pixels.</dd> + <dt><code>sessionId</code>{{optional_inline}}</dt> + <dd><code>string</code>. L'ID de session utilisé pour identifier de manière unique une fenêtre obtenue à partir de l'API {{WebExtAPIRef ('sessions')}}.</dd> + <dt><code>state</code>{{optional_inline}}</dt> + <dd>Une valeur {{WebExtAPIRef('windows.WindowState')}} représentant l'état de cette fenêtre du navigateur - maximisé, minimisé, etc.</dd> + <dt><code>tabs</code>{{optional_inline}}</dt> + <dd>Tableau d'objets {{WebExtAPIRef('tabs.Tab')}} représentant les onglets courants dans la fenêtre.</dd> + <dt><code>title</code> {{optional_inline}}</dt> + <dd>Le titre de la fenêtre du navigateur. Nécessite la permission "tabs". Lecture seulement.</dd> + <dt><code>top</code>{{optional_inline}}</dt> + <dd><code>integer</code>. Le décalage de la fenêtre du bord supérieur de l'écran en pixels.</dd> + <dt><code>type</code>{{optional_inline}}</dt> + <dd>Une valeur {{WebExtAPIRef('windows.WindowType')}} représentant le type de fenêtre du navigateur, c'est-à-dire — fenêtre normale du navigateur, fenêtre contextuelle, etc.</dd> + <dt><code>width</code>{{optional_inline}}</dt> + <dd><code>integer</code>. La largeur de la fenêtre, y compris le cadre, en pixels.</dd> +</dl> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.windows.Window")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/window_id_current/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/window_id_current/index.html new file mode 100644 index 0000000000..a4b7def27d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/window_id_current/index.html @@ -0,0 +1,67 @@ +--- +title: windows.WINDOW_ID_CURRENT +slug: Mozilla/Add-ons/WebExtensions/API/windows/WINDOW_ID_CURRENT +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Propriété + - WINDOW_ID_CURRENT + - WebExtensions + - Windows +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/WINDOW_ID_CURRENT +--- +<div>{{AddonSidebar()}}</div> + +<p><code>browser.windows.WINDOW_ID_CURRENT</code> est une valeur qui peut être utilisée comme paramètre <code>windowId</code> dans certaines APIs pour représenter la fenêtre courante.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.windows.WINDOW_ID_CURRENT")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/window_id_none/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/window_id_none/index.html new file mode 100644 index 0000000000..87ea7e8467 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/window_id_none/index.html @@ -0,0 +1,68 @@ +--- +title: windows.WINDOW_ID_NONE +slug: Mozilla/Add-ons/WebExtensions/API/windows/WINDOW_ID_NONE +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Propriété + - Référence(2) + - WINDOWS_ID_NONE + - WebExtensions + - Windows +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/WINDOW_ID_NONE +--- +<div>{{AddonSidebar()}}</div> + +<p>La valeur <code>windowId</code> que représente l'absence d'une fenêtre du navigateur.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.windows.WINDOW_ID_NONE")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/windowstate/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/windowstate/index.html new file mode 100644 index 0000000000..5e7125577a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/windowstate/index.html @@ -0,0 +1,83 @@ +--- +title: windows.WindowState +slug: Mozilla/Add-ons/WebExtensions/API/windows/WindowState +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - WindowState + - Windows +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/WindowState +--- +<div>{{AddonSidebar()}}</div> + +<p>L'état de cette fenêtre du navigateur.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont:</p> + +<dl> + <dt><code>"normal"</code></dt> + <dd>La fenêtre est à la taille par défaut ou à la taille sélectionnée par l'utilisateur.</dd> + <dt><code>"minimized"</code></dt> + <dd>La fenêtre n'est visible que sous la forme d'une icône dans la barre des tâches ou .</dd> + <dt><code>"maximized"</code></dt> + <dd>La fenêtre remplit l'écran sur lequel elle est affichée sans inclure les zones d'écran réservées par le système d'exploitation.</dd> + <dt><code>"fullscreen"</code></dt> + <dd>La fenêtre s'exécute en plein écran ou le contenu d'un onglet utilise l'<a href="https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API">API Fullscreen</a></dd> + <dt><code>"docked"</code></dt> + <dd>Une fenêtre ancrée occupe une position fixe par rapport aux autres fenêtres appartenant à la même application.</dd> +</dl> + +<p>Compatibilité macOS : A partir de macOS 10.10, le comportement de maximisation par défaut pour les fenêtres a été modifié pour exécuter les applications en plein écran au lieu des fenêtres "zoomées". <code>fullscreen</code> fait référence à la fois au navigateur fonctionnant en plein écran et lorsque le contenu dans un onglet utilise l'API Fullscreen.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.api.windows.WindowState")}}</p> + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/api/windows/windowtype/index.html b/files/fr/mozilla/add-ons/webextensions/api/windows/windowtype/index.html new file mode 100644 index 0000000000..24709c8ab4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/api/windows/windowtype/index.html @@ -0,0 +1,79 @@ +--- +title: windows.WindowType +slug: Mozilla/Add-ons/WebExtensions/API/windows/WindowType +tags: + - API + - Add-ons + - Extensions + - Non-standard + - Reference + - Type + - WebExtensions + - WindowType + - Windows +translation_of: Mozilla/Add-ons/WebExtensions/API/windows/WindowType +--- +<div>{{AddonSidebar()}}</div> + +<p>Le type de la fenêtre du navigateur est comme çà.</p> + +<h2 id="Type">Type</h2> + +<p>Les valeurs de ce type sont des chaînes. Les valeurs possibles sont :</p> + +<ul> + <li><code>"normal"</code></li> + <li><code>"popup"</code></li> + <li><code>"panel"</code></li> + <li><code>"devtools"</code></li> +</ul> + +<h2 id="Browser_compatibility">Browser compatibility</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + + + +<p>{{Compat("webextensions.api.windows.WindowType")}}</p> + + + +<p>{{WebExtExamples}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Cette API est basée sur l'API de Chromnium <a href="https://developer.chrome.com/extensions/windows"><code>chrome.windows</code></a>. Cette documentation provient de <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/windows.json"><code>windows.json</code></a> dans le code de Chromium.</p> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<div class="hidden"> +<pre>// Copyright 2015 The Chromium Authors. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/bonnes_pratiques_pour_la_mise_a_jour_de_votre_extension/index.html b/files/fr/mozilla/add-ons/webextensions/bonnes_pratiques_pour_la_mise_a_jour_de_votre_extension/index.html new file mode 100644 index 0000000000..d8bff8eccc --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/bonnes_pratiques_pour_la_mise_a_jour_de_votre_extension/index.html @@ -0,0 +1,31 @@ +--- +title: Bonnes pratiques pour la mise à jour de votre extension +slug: >- + Mozilla/Add-ons/WebExtensions/bonnes_pratiques_pour_la_mise_a_jour_de_votre_extension +tags: + - Add-ons + - Extensions + - Guide + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Best_practices_for_updating_your_extension +--- +<p>{{AddonSidebar}}</p> + +<p>Presque toutes les extensions doivent être mises à jour de temps en temps, que ce soit pour corriger des bugs ou ajouter de nouvelles fonctionnalités. La mise à jour de votre extension vaut la peine d'être planifiée méthodiquement, non seulement pour assurer la qualité des changements, mais aussi pour maximiser les possibilités d'engagement ou de réengagement avec votre public.</p> + +<p>Pour vous aider à fournir les mises à jour les plus productives, voici quelques conseils de la communauté des développeurs d'extensions Firefox :</p> + +<ul> + <li>Créez une feuille de route des fonctionnalités que vous souhaitez ajouter à votre extension, en n'oubliant pas de la mettre à jour en fonction des commentaires des utilisateurs. Prévoyez également la sortie de nouvelles versions de navigateurs, pour confirmer que rien ne casse votre extension et pour profiter des nouvelles fonctionnalités. Si vous voulez rendre votre feuille de route publique, ne soyez pas trop précis quant aux dates de livraison, car le non-respect des délais pourrait réduire la confiance des utilisateurs dans votre extension.</li> + <li>Effectuez des mises à jour selon un cycle régulier, mensuel ou trimestriel, à moins que vous n'ayez besoin de corriger un bogue critique. Les utilisateurs peuvent trouver des mises à jour plus fréquentes (par exemple quotidiennes ou même hebdomadaires), en particulier celles qui affectent les fonctionnalités, les fonctions, le comportement ou l'apparence de l'extension, trop perturbatrices. Le maintien d'un cycle de mise à jour régulier peut aider à maintenir l'engagement des utilisateurs.</li> + <li>En plus de tester la version actuelle de Firefox, testez votre extension dans les versions Firefox Nightly et Beta pour vous assurer qu'aucun changement ne risque d'affecter votre extension.</li> + <li>Inclure une page d'intégration qui décrit les améliorations et les changements inclus dans la mise à niveau - ne pas simplement dire "corrections de bogues et améliorations". Pour plus d'informations, voir <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/onboarding_upboarding_offboarding_best_practices">Bonnes pratiques pour les utilisateurs d'embarquement, d'embarquement et de débarquement</a>.</li> + <li>Évitez de déplacer les fonctions "gratuites" derrière un mur payant, car la réaction des utilisateurs est susceptible d'être négative. (L'ajout de nouvelles fonctions payantes n'est généralement pas problématique. Cependant, l'ajout de fonctions payantes à une extension gratuite doit être manipulé avec précaution, pour éviter de donner l'impression que l'extension dans son ensemble doit maintenant être payée). Pour plus de détails, voir <a href="/fr/docs/Mozilla/Add-ons/Distribution/gagner_de_l_argent_avec_les_extensions_de_navigateur">Gagnez de l'argent avec les extensions de navigateur</a>.</li> + <li>Évitez de supprimer brusquement des fonctionnalités, pensez à prévoir une période d'obsolescence d'au moins un cycle de mise à niveau, en particulier lorsque vous n'avez pas de mesures pour l'utilisation de cette fonctionnalité. Le fait de prévoir une période d'amortissement permet aux utilisateurs de fournir une rétroaction sur les répercussions que vous n'avez peut-être pas prévues.</li> + <li>Fournir des instructions guidées pour les fonctions remplacées, telles que la conservation des anciens éléments de menu qui fournissent ensuite un message guidant l'utilisateur vers la nouvelle fonction.</li> + <li>Fournir une combinaison appropriée de corrections de bogues et de fonctionnalités nouvelles ou améliorées dans une mise à niveau. Les utilisateurs qui sont gênés par un bogue peuvent réagir négativement si vos mises à niveau ne semblent pas corriger les bogues. Cependant, si vous avez plusieurs correctifs techniques à apporter qui ont peu ou pas d'impact sur l'utilisateur, vous pouvez envisager de les inclure dans une version séparée, silencieuse (pas de page d'upboarding).</li> + <li>N'oubliez pas de mettre à jour la page de l'AMO de votre extension. Inclure vos notes de version dans la section dédiée. Mettez à jour la description pour couvrir les nouvelles fonctionnalités, remplacez ou ajoutez des captures d'écran, et pensez à modifier l'icône de votre extension pour mettre en évidence les modifications que vous avez apportées.</li> + <li>Inclure des nouvelles sur la mise à jour dans vos canaux tels que le site Web, les médias sociaux, les groupes d'utilisateurs, etc.</li> + <li>Après la publication de votre mise à jour, surveillez les évaluations et les commentaires, la rétroaction et les canaux de soutien pour vous assurer qu'il n'y a pas de réponses inattendues qui suggèrent des erreurs dans vos changements ou que les changements ne fonctionnent pas comme prévu.</li> + <li>Commencez à planifier votre prochaine mise à niveau !</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/browser_actions/index.html b/files/fr/mozilla/add-ons/webextensions/browser_actions/index.html new file mode 100644 index 0000000000..754cbc8cf5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/browser_actions/index.html @@ -0,0 +1,46 @@ +--- +title: Actions du navigateur +slug: Mozilla/Add-ons/WebExtensions/Browser_actions +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Browser_actions +--- +<div>{{AddonSidebar}}</div> + +<p>Une action du navigateur est un bouton que vous pouvez ajouter à la barre d'outils du navigateur. Les utilisateurs peuvent cliquer sur le bouton pour interagir avec votre extension.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/12966/browser-action.png" style="display: block; height: 387px; margin-left: auto; margin-right: auto; width: 782px;"></p> + +<p>Il existe deux façons de spécifier une action du navigateur : avec une <a href="/fr/Add-ons/WebExtensions/Popups">fenêtre contextuelle</a>, ou sans fenêtre contextuelle.</p> + +<p>Si vous ne spécifiez pas de popup, alors lorsque l'utilisateur clique sur le bouton, un événement est envoyé à l'extension, que vous pouvez écouter à l'aide de <a href="/fr/Add-ons/WebExtensions/API/BrowserAction/onClicked" title="Fired when a browser action icon is clicked. This event will not fire if the browser action has a popup."><code>browserAction.onClicked</code></a>:</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>Si vous spécifiez un popup, l'événement click n'est pas distribué : au lieu de cela, le popup sera affiché lorsque l'utilisateur clique sur le bouton. L'utilisateur pourra interagir avec le popup et il se fermera automatiquement lorsque l'utilisateur clique à l'extérieur.</p> + +<p>Notez que votre extension ne peut avoir qu'une seule action du navigateur.</p> + +<h2 id="Specification_de_l'action_de_navigateur">Specification de l'action de navigateur</h2> + +<p>Vous définissez les propriétés de l'action du navigateur - icône, titre, popup - en utilisant la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> dans manifest.json:</p> + +<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"browser_action":</span> <span class="punctuation token">{</span> + <span class="key token">"default_icon":</span> <span class="punctuation token">{</span> + <span class="key token">"19":</span> <span class="string token">"button/geo-19.png"</span><span class="punctuation token">,</span> + <span class="key token">"38":</span> <span class="string token">"button/geo-38.png"</span> + <span class="punctuation token">}</span><span class="punctuation token">,</span> + <span class="key token">"default_title":</span> <span class="string token">"Whereami?"</span><span class="punctuation token">,</span> + <span class="key token">"default_popup":</span> <span class="string token">"popup/geo.html"</span> +<span class="punctuation token">}</span></code></pre> + +<p>La seule clé obligatoire est <code>default_icon</code>. Vous pouvez changer n'importe laquelle de ces propriétés par programme à l'aide de l'API <code><a href="/fr/Add-ons/WebExtensions/API/browserAction">browserAction</a></code> .</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Le repo <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> sur GitHub contient plusieurs exemples d'extensions qui utilisent les actions du navigateur :</p> + +<ul> + <li><a href="https://github.com/mdn/webextensions-examples/blob/master/bookmark-it/">bookmark-it</a> utilise une action de navigateur sans popup</li> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/beastify">beastify</a> utilise une action de navigateur avec une fenêtre popup</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/browser_compatibility_for_manifest.json/index.html b/files/fr/mozilla/add-ons/webextensions/browser_compatibility_for_manifest.json/index.html new file mode 100644 index 0000000000..6609075b72 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/browser_compatibility_for_manifest.json/index.html @@ -0,0 +1,25 @@ +--- +title: Browser compatibility for manifest.json +slug: Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json +tags: + - Add-ons + - WebExtensions + - manifest.json +translation_of: Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json +--- +<div>{{AddonSidebar}}</div> + + + +<p>{{Compat("webextensions.manifest",2)}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Les données de compatibilité relatives à Microsoft Edge sont fournies par Microsoft Corporation et incluses ici sous la licence Creative Commons Attribution 3.0 pour les États-Unis.</p> +</div> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/Compatibilité_navigateurs_API_JavaScript">Prise en charge du navigateur pour les API JavaScript</a></li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/choisissez_une_version_firefox_pour_le_developpement_extensions_web/index.html b/files/fr/mozilla/add-ons/webextensions/choisissez_une_version_firefox_pour_le_developpement_extensions_web/index.html new file mode 100644 index 0000000000..69d23ee3ba --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/choisissez_une_version_firefox_pour_le_developpement_extensions_web/index.html @@ -0,0 +1,218 @@ +--- +title: Choisissez une version Firefox pour le développement d'extensions web +slug: >- + Mozilla/Add-ons/WebExtensions/choisissez_une_version_firefox_pour_le_developpement_extensions_web +tags: + - Add-ons + - Développement + - Extensions + - Guide + - Outils + - Tools +translation_of: >- + Mozilla/Add-ons/WebExtensions/Choose_a_Firefox_version_for_web_extension_develop +--- +<p>{{AddonSidebar}}</p> + +<p>Firefox propose plusieurs versions qui offrent différentes capacités pour le développement d'extensions web. Cet article donne un aperçu des différences entre ces versions de Firefox et recommande comment les utiliser dans le cycle de développement.</p> + +<p>Ce tableau résume les informations sur les éditions, les fonctionnalités de développement d'extension et fournit une recommandation pour chaque édition utilisée dans le développement d'extension.</p> + +<table> + <thead> + <tr> + <th scope="col"> + <p>Edition</p> + </th> + <th scope="col"> + <p>Version</p> + </th> + <th scope="col"> + <p>Stable</p> + </th> + <th scope="col"> + <p>Outils pour le développement de l'extension</p> + </th> + <th scope="col"> + <p>Installe les extensions non signées</p> + </th> + <th scope="col"> + <p>Utilisation recommandée pour le développement de l'extension</p> + </th> + </tr> + </thead> + <tbody> + <tr> + <td> + <p><a href="https://www.mozilla.org/fr/firefox/">Release</a></p> + </td> + <td> + <p>Courant</p> + </td> + <td> + <p>Oui</p> + </td> + <td> + <p>Oui</p> + </td> + <td> + <p>Non</p> + </td> + <td> + <p>Tests de régression</p> + + <p>Tests alpha et bêta par l'utilisateur</p> + </td> + </tr> + <tr> + <td> + <p><a href="https://beta.mozilla.org">Beta</a></p> + </td> + <td> + <p>Courant+1</p> + </td> + <td> + <p>Oui</p> + </td> + <td> + <p>Oui</p> + </td> + <td> + <p>Non</p> + </td> + <td> + <p>Tests de régression</p> + + <p>Tests alpha et bêta par l'utilisateur</p> + </td> + </tr> + <tr> + <td> + <p><a href="https://www.mozilla.org/fr/firefox/channel/desktop/#developer">Developer Edition</a></p> + </td> + <td> + <p>Courant +1</p> + </td> + <td> + <p>Oui</p> + </td> + <td> + <p>Oui</p> + </td> + <td> + <p>Oui</p> + </td> + <td> + <p>Développement de l'extension</p> + </td> + </tr> + <tr> + <td> + <p><a href="https://nightly.mozfr.org/">Nightly</a></p> + </td> + <td> + <p>Courant +2</p> + </td> + <td> + <p>Non</p> + </td> + <td> + <p>Oui</p> + </td> + <td> + <p>Oui</p> + </td> + <td> + <p>Accès anticipé à la dernière API WebExtension</p> + </td> + </tr> + <tr> + <td> + <p><a href="https://www.mozilla.org/fr/firefox/organizations/">ESR</a></p> + </td> + <td> + <p>Courant - >1</p> + </td> + <td> + <p>Oui</p> + </td> + <td> + <p>Oui</p> + </td> + <td> + <p>Oui</p> + </td> + <td> + <p>Développement de la vulgarisation au sein des entreprises</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="Firefox_version_and_their_web_extension_development_capabilities">Firefox version and their web extension development capabilities</h2> + +<h3 id="Finale">Finale</h3> + +<p>C'est la version de Firefox que la plupart des gens utilisent, c'est la version offerte quand quelqu'un visite la <a href="https://www.mozilla.org/fr/firefox/">page principale de téléchargement Firefox</a>.</p> + +<p>Vous chargez les extensions en cours de développement dans cette version de Firefox en utilisant <a href="/fr/docs/Outils/about:debugging">about:debugging</a> ou <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> et avez accès à la <a href="/fr/docs/Outils/Boîte_à_outils_du_navigateur">fenêtre de débogage de l'addon</a>. Cependant, vous ne pouvez pas installer des extensions non signées, ce qui limite votre capacité à tester des fonctionnalités telles que le comportement de redémarrage, les invites d'autorisation et les mises à niveau.</p> + +<p>Le développement d'extensions pour Firefox pour Android est entièrement supporté.</p> + +<p>Utilisation suggérée pour le développement : Vous pouvez installer et tester une copie signée de votre extension dans la version de publication pour effectuer un test de régression final. Vous pouvez également distribuer des copies signées de votre extension à d'autres personnes pour les aider à effectuer des tests alpha ou bêta.</p> + +<p><a href="https://www.mozilla.org/fr/firefox/">Téléchargement</a></p> + +<h3 id="Béta">Béta</h3> + +<p>Cette version de Firefox est généralement utilisée par les personnes intéressées à profiter des fonctionnalités de la prochaine version de Firefox.</p> + +<p>Vous chargez les extensions en cours de développement dans cette version de Firefox en utilisant <a href="/fr/docs/Outils/about:debugging">about:debugging</a> ou <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> et avez accès à la <a href="/fr/docs/Outils/Boîte_à_outils_du_navigateur">fenêtre de débogage de l'addon</a>. Cependant, vous ne pouvez pas installer des extensions non signées, ce qui limite votre capacité à tester des fonctionnalités telles que le comportement de redémarrage, les invites d'autorisation et les mises à niveau.</p> + +<p>Le développement d'extensions pour Firefox pour Android est entièrement supporté.</p> + +<p>Utilisation suggérée pour le développement : Vous pouvez installer et tester une copie signée de votre extension dans Beta pour effectuer un test de régression. De tels tests vous donneront une certaine certitude que votre extension continuera à fonctionner correctement dans la prochaine version de Firefox. Vous pouvez également distribuer des copies signées de votre extension à d'autres personnes pour les aider à effectuer des tests alpha ou bêta.</p> + +<p><a href="https://beta.mozilla.org">Téléchargement</a></p> + +<h3 id="Edition_développeur">Edition développeur</h3> + +<p>Cette version de Firefox est basée sur la version bêta de Firefox avec des fonctionnalités supplémentaires conçues pour aider au développement du Web et des extensions Web.</p> + +<p>Vous chargez les extensions en cours de développement dans cette version de Firefox en utilisant <a href="/fr/docs/Outils/about:debugging">about:debugging</a> ou <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> et avez accès à la <a href="/fr/docs/Outils/Boîte_à_outils_du_navigateur">fenêtre de débogage de l'addon</a>. Vous pouvez également installer des extensions non signées, après avoir ajusté ou paramétré certaines propriétés de about:config (généralement moins de changements que nécessaire pour réaliser les mêmes tâches dans Nightly). Cela vous permet de tester des fonctionnalités telles que le comportement de redémarrage, les invites d'autorisation et les mises à niveau.</p> + +<p>Le développement d'extensions pour Firefox pour Android est entièrement supporté.</p> + +<p>Utilisation suggérée pour le développement : Utilisez Developer Edition comme votre principale plate-forme de développement et de test d'extensions web.</p> + +<p><a href="https://www.mozilla.org/fr/firefox/channel/desktop/#developer">Téléchargement</a></p> + +<h3 id="Nightly">Nightly</h3> + +<p>Cette version de Firefox fournit une version qui est mise à jour tous les soirs avec les dernières fonctionnalités de développement pour la future version de Firefox. Il est généralement utilisé par les personnes intéressées à découvrir les toutes dernières fonctionnalités et à donner leur avis lorsqu'elles rencontrent des problèmes.</p> + +<p>Vous chargez les extensions en cours de développement dans cette version de Firefox en utilisant <a href="/fr/docs/Outils/about:debugging">about:debugging</a> our <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> et avez accès à la <a href="/fr/docs/Outils/Boîte_à_outils_du_navigateur">fenêtre de débogage de l'addon</a>. Vous pouvez également installer des extensions non signées, après avoir ajusté ou configuré certaines propriétés de about:config. Cela vous permet de tester des fonctionnalités telles que le comportement de redémarrage, les invites d'autorisation et les mises à niveau.</p> + +<p>Le développement d'extensions pour Firefox pour Android est entièrement supporté.</p> + +<p>Utilisation suggérée pour le développement : Nightly fournit un aperçu des futures fonctionnalités de Firefox, y compris les API WebExtension, qui sont en cours de développement. La stabilité des fonctionnalités n'est pas garantie, par conséquent, Nightly n'est pas recommandé comme plateforme de développement d'extension web principale. Vous pouvez, cependant, utiliser Nightly là où vous voulez profiter des fonctionnalités à venir ou tester pour vous donner la plus longue vue d'ensemble de la compatibilité de votre extension avec Firefox.</p> + +<p><a href="https://nightly.mozilla.org">Download</a></p> + +<h3 id="ESR">ESR</h3> + +<p>La version ESR (Extended Support Release) de Firefox offre des fonctionnalités permettant aux professionnels informatiques de configurer et de déployer Firefox dans leur organisation. Il fournit également aux entreprises une version de Firefox stable du point de vue des fonctionnalités pour une durée plus longue que celle du cycle de version normal. Ainsi, au moment d'écrire ces lignes, la version de sortie de Firefox était de 65 (avec Beta sur 66 et Nightly sur 67) la version ESR était de 60.</p> + +<p>Vous chargez les extensions en cours de développement dans cette version de Firefox en utilisant <a href="/fr/docs/Outils/about:debugging">about:debugging</a> ou <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> et avez accès à la <a href="/fr/docs/Outils/Boîte_à_outils_du_navigateur">fenêtre de débogage de l'addon</a>. Vous pouvez également installer des extensions non signées, après avoir ajusté ou défini certaines propriétés de about:config (cette fonctionnalité est fournie pour que les entreprises puissent installer des extensions qu'elles veulent garder privées et ne veulent pas soumettre à add-ons.mozilla.org pour signature).</p> + +<p>Le développement d'extensions pour Firefox pour Android est entièrement supporté.</p> + +<p>Utilisation suggérée pour le développement : Utilisez ESR comme principale plate-forme de développement et de test d'extensions Web lors du développement d'extensions pour une entreprise et vous souhaitez confirmer que l'ensemble des fonctionnalités de votre extension est compatible avec la version ESR.</p> + +<p><a href="https://www.mozilla.org/fr/firefox/organizations/">Téléchargement</a></p> + +<div class="SnapLinksContainer" style="margin-left: 0px; margin-top: 0px; display: none;"> +<div class="SL_SelectionRect"> +<div class="SL_SelectionLabel"></div> +</div> +<svg class="SnapLinksHighlighter" xmlns:xmlns="http://www.w3.org/2000/svg"> <rect height="0" width="0"></rect> </svg></div> diff --git a/files/fr/mozilla/add-ons/webextensions/comparaison_avec_le_sdk_add-on/index.html b/files/fr/mozilla/add-ons/webextensions/comparaison_avec_le_sdk_add-on/index.html new file mode 100644 index 0000000000..52ec132d64 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/comparaison_avec_le_sdk_add-on/index.html @@ -0,0 +1,746 @@ +--- +title: Comparaison avec le SDK Add-on +slug: Mozilla/Add-ons/WebExtensions/Comparaison_avec_le_SDK_Add-on +tags: + - Addon SDK + - AddonSDK + - SDK + - WebExtensions + - porting +translation_of: Mozilla/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK +--- +<div>{{AddonSidebar}}</div> + +<p>Cet article est une comparaison technique entre les add-ons construits avec le SDK et ceux construits avec la technologie WebExtensions. Il est destiné à aider les personnes maintenant un add-on SDK à le porter vers une WebExtension.</p> + +<div class="blockIndicator warning"> +<p>La prise en charge des extensions utilisant XUL/XPCOM ou le SDK Add-on a été supprimée dans Firefox 57, publié en novembre 2017. Comme il n'y a pas de version supportée de Firefox permettant ces technologies, cette page sera supprimée d'ici décembre 2020.</p> +</div> + +<p>Si vous souhaitez porter une <a href="/fr/docs/Archive/Add-ons/Overlay_Extensions">extension de surcouche</a> ou une <a href="/fr/docs/Mozilla/Add-ons/Bootstrapped_extensions">extension <em>bootstrappée</em></a>, consultez la page de <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions">comparaison des extensions XUL/XPCOM</a>.</p> + +<p>Les WebExtensions et add-ons SDK partagent les mêmes concepts et structures de base. Ces deux technologies utilisent :</p> + +<ul> + <li>Des <a href="/fr/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK#Manifest_files">fichiers de manifeste</a> qui définissent les métadonnées de l'extension et certains aspects de son comportement.</li> + <li>Des <a href="/fr/Add-ons/WebExtensions/Comparaison_avec_le_SDK_Add-on#Scripts_persistants">scripts persistants</a> qui accèdent à un ensemble d'API JavaScript privilégiées et qui restent chargés tant que l'extension est activée.</li> + <li>Des <a href="/fr/Add-ons/WebExtensions/Comparaison_avec_le_SDK_Add-on#Scripts_de_contenu">scripts de contenu</a> qui peuvent être injectés dans les pages web et qui peuvent communiquer avec les scripts persistants grâce à une API de messagerie asynchrone.</li> + <li><a href="/fr/Add-ons/WebExtensions/Comparaison_avec_le_SDK_Add-on#Éléments_d'interface_utilisateur">La possibilité d'ajouter des éléments d'interface utilisateur spécifiques</a>, tels que des boutons, au navigateur. Ces boutons peuvent ainsi donner accès à des fenêtres contextuelles définies en HTML, JavaScript et CSS.</li> + <li><a href="/fr/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK#JavaScript_APIs">Un ensemble d'API JavaScript privilégiées</a> pour interagir avec le Web ou avec le navigateur.</li> + <li><a href="/fr/Add-ons/WebExtensions/Comparaison_avec_le_SDK_Add-on#Outil_en_ligne_de_commande">Un outil en ligne de commande</a> que les développeurs peuvent utiliser afin de tester leurs extensions.</li> +</ul> + +<p>Au-delà de ces ressemblances, il existe de nombreuses différences énumérées ci-après.</p> + +<h2 id="Les_fichiers_de_manifeste">Les fichiers de manifeste</h2> + +<p>Pour ces deux technologies, on dispose d'un fichier manifeste en JSON situé dans le répertoire racine de l'extension. Dans le SDK, ce fichier est appelé <code><a href="/en-US/docs/Archive/Add-ons/Add-on_SDK/Tools/package_json">package.json</a></code> ; pour les WebExtensions, ce fichier s'intitule <code><a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a></code>. Les deux fichiers contiennent des métadonnées de base telles que le nom, la description et les icônes de l'extension.</p> + +<p>Cependant, <code>manifest.json</code> contient de nombreuses clés qui définissent certaines capacités et certains comportements de l'extension. Pour le SDK, certaines sont définies dans le code :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Fonctionnalité</th> + <th scope="col">SDK</th> + <th scope="col">WebExtensions</th> + </tr> + </thead> + <tbody> + <tr> + <td>Scripts de contenu correspondant aux modèles d'URL</td> + <td>API <code><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/page-mod">page-mod</a></code></td> + <td>Clé de manifeste <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code></td> + </tr> + <tr> + <td>Boutons de la barre d'outils</td> + <td>API <code><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_action">ui/button/action</a></code></td> + <td>Clé de manifeste <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code></td> + </tr> + <tr> + <td>Accéder aux API privilégiées</td> + <td>Fonction <code>require()</code></td> + <td>Clé de manifeste <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code></td> + </tr> + </tbody> +</table> + +<p>Les WebExtensions sont donc plus déclaratives et moins programmables que les add-ons construits avec le SDK.</p> + +<p>Pour le SDK, on utilisera généralement <code><a href="/fr/Add-ons/SDK/Tools/jpm#jpm_init">jpm init</a></code> afin de créer un nouveau <code>package.json</code>. La technologie WebExtensions n'a pas d'équivalent de <code>jpm init</code>, le fichier de manifeste sera probablement écrit à partir de zéro ou adapté d'un fichier existant.</p> + +<h3 id="En_savoir_plus">En savoir plus</h3> + +<ul> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json">Le fichier <code>manifest.json</code></a></li> +</ul> + +<h2 id="Scripts_persistants">Scripts persistants</h2> + +<p>Les deux technologies utilisent des scripts persistants qui restent chargés pendant que l'extension est active. Ces scripts accèdent à des API privilégiées et peuvent communiquer avec d'autres parties de l'extension telles que les scripts de contenu.</p> + +<p>Dans le SDK, par défaut, ce script est appelé <code>index.js</code> et il <a href="/en-US/docs/Archive/Add-ons/Add-on_SDK/Guides/Module_structure_of_the_SDK#Local_Modules">peut charger d'autres scripts à l'aide du chargeur de module</a>.</p> + +<p>Avec les WebExtensions, ces scripts sont appelés <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">scripts d'arrière-plan</a>. Vous pouvez définir un ensemble de scripts listés via la clé de manifeste <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/background">background</a></code> et tous seront chargés dans le même document (une page HTML vierge cachée et générée automatiquement). Vous pouvez également définir votre propre document personnalisé à l'aide de la clé <code>background</code>.</p> + +<p>Une différence importante est que les scripts d'arrière-plan ont accès à la variable globale <code><a href="/fr/docs/Web/API/Window">window</a></code> globale qui permet d'utiliser l'ensemble des objets DOM habituellement présents dans une fenêtre. De cette façon, l'écriture des extensions se rapproche de l'écriture de pages web avec un accès direct à l'ensemble des API Web classiques (par exemple <a href="/fr/docs/Web/API/XMLHttpRequest">XMLHttpRequest</a> ou <a href="/fr/docs/Web/API/API_IndexedDB">IndexedDB</a>).</p> + +<p>On notera également que, par défaut, les extensions ont une <a href="/fr/Add-ons/WebExtensions/Content_Security_Policy">politique de sécurité de contenu (CSP)</a> qui leur est appliquée. Vous pouvez spécifier votre propre politique, mais la politique par défaut, entre autres, interdit les pratiques potentiellement dangereuses telles que l'utilisation d'<code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/eval">eval()</a></code>.</p> + +<h3 id="En_savoir_plus_2">En savoir plus</h3> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">Scripts d'arrière-plan pour les extensions</a></li> +</ul> + +<h2 id="Scripts_de_contenus">Scripts de contenus</h2> + +<p>Pour les extensions SDK et les WebExtensions, les scripts persistants ne peuvent pas accéder directement au contenu des pages web. Au lieu de cela, les extensions peuvent ajouter des scripts de contenu aux pages web. Ces scripts :</p> + +<ul> + <li>accèdent directement au contenu web</li> + <li>n'accèdent pas aux API privilégiées</li> + <li>peuvent communiquer avec les scripts persistants avec une API de messagerie.</li> +</ul> + +<p>Pour les deux technologies, on dispose de deux façons pour ajouter des scripts de contenu : on peut rattacher un ensemble de scripts aux pages dont l'URL contient un motif donné ou on peut, via le code, ajouter un script à une page d'un onglet donné. Si ces mécanismes existent dans les deux technologies, ils sont exécutés différemment :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Opération</th> + <th scope="col">SDK</th> + <th scope="col">WebExtensions</th> + </tr> + </thead> + <tbody> + <tr> + <td>Attacher des scripts à des pages dont l'URL correspond à un motif</td> + <td>API <code><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/page-mod">page-mod</a></code></td> + <td>Clé de manifeste <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code></td> + </tr> + <tr> + <td>Attacher des scripts à des pages hébergées dans un onglet</td> + <td><code><a href="/fr/Add-ons/SDK/High-Level_APIs/tabs#Run_scripts_in_a_tab">tab.attach()</a></code></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript">tabs.executeScript()</a></code></td> + </tr> + </tbody> +</table> + +<p>Les motifs de correspondance utilisés pour les URL sont différentes :</p> + +<ul> + <li><a href="/fr/docs/Archive/Add-ons/Add-on_SDK/Low-Level_APIs/util_match-pattern">Motif de correspondance pour le SDK</a></li> + <li><a href="/fr/Add-ons/WebExtensions/match_patterns">Motif de correspondance pour les WebExtensions</a></li> +</ul> + +<p>Dans les deux technologies, on peut passer des options pour contrôler lorsque le script s'exécute et s'il sera attaché aux sous-trames. Les WebExtensions n'ont pas d'équivalent pour <code>contentScriptOptions</code> et, si on veut transmettre les options de configuration à un script de contenu, il faudra les envoyer via un message ou les stocker dans <code><a href="/fr/Add-ons/WebExtensions/API/storage/local">storage.local</a></code>.</p> + +<p>Dans les deux technologies, les scripts de contenu peuvent communiquer avec des scripts persistants grâce à une API de communication asynchrone :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Opération</th> + <th scope="col">SDK</th> + <th scope="col">WebExtensions</th> + </tr> + </thead> + <tbody> + <tr> + <td>Envoi de message</td> + <td><a href="/fr/Add-ons/SDK/Guides/Content_Scripts/port#emit()"><code>port.emit()</code></a></td> + <td><code><a href="/fr/Add-ons/WebExtensions/API/runtime/sendMessage">runtime.sendMessage()</a></code> / <code><a href="/fr/Add-ons/WebExtensions/API/tabs/sendMessage">tabs.sendMessage()</a></code></td> + </tr> + <tr> + <td>Réception de message</td> + <td><code><a href="/fr/Add-ons/SDK/Guides/Content_Scripts/port#on()">port.on()</a></code></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage">runtime.onMessage</a></code></td> + </tr> + </tbody> +</table> + +<ul> + <li><a href="/fr/Add-ons/SDK/Guides/Content_Scripts#Communicating_with_the_add-on">Communiquer avec des scripts persistants dans le SDK</a></li> + <li><a href="/fr/Add-ons/WebExtensions/Content_scripts#Communicating_with_background_scripts">Communiquer avec des scripts persistants dans les WebExtensions</a></li> +</ul> + +<p>Dans les deux cas, les scripts de contenus peuvent communiquer avec les scripts chargés par la page à l'aide de <code><a href="/fr/docs/Web/API/Window/postMessage">window.postMessage</a></code> et <code><a href="/fr/docs/Web/API/EventTarget/addEventListener">window.addEventListener</a></code>.</p> + +<p>Dans les deux cas, les scripts accèdent à une vue « propre » du DOM : cela signifie qu'ils ne voient pas les modifications apportées au DOM par les scripts chargés par la page.</p> + +<p>Dans le SDK, les scripts de contenu peuvent <a href="/fr/Add-ons/SDK/Guides/Content_Scripts/Interacting_with_page_scripts#Sharing_objects_with_page_scripts">partager des objets avec des scripts de page</a>, en utilisant des techniques comme <code>unsafeWindow</code> et <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.createObjectIn">createObjectIn</a></code>. Avec les WebExtensions, la <code>unsafeWindow</code> est disponible par l'intermédiaire de <code><a href="/fr/Add-ons/WebExtensions/Content_scripts#Accessing_page_script_objects_from_content_scripts">wrappedJSObject</a></code>. Toutes les fonctions d'aide à l'exportation sont également disponibles.</p> + +<h3 id="En_savoir_plus_3">En savoir plus</h3> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/Content_scripts">Scripts de contenu des WebExtensions</a></li> +</ul> + +<h2 id="Les_éléments_d'interface_utilisateur_(UI)">Les éléments d'interface utilisateur (<em>UI</em>)</h2> + +<p>Les deux technologies fournissent des API pour créer une interface utilisateur pour l'extension. Les options d'interface utilisateur pour les WebExtensions sont plus limitées.</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Elément d'interface</th> + <th scope="col">SDK</th> + <th scope="col">WebExtensions</th> + </tr> + </thead> + <tbody> + <tr> + <td>Bouton</td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_action">ui/button/action</a></code></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> / <code><a href="/fr/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code></td> + </tr> + <tr> + <td>Interrupteur / Bouton à bascule</td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">ui/button/toggle</a></code></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> / <code><a href="/fr/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code></td> + </tr> + <tr> + <td>Barre d'outils</td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_toolbar">ui/toolbar</a></code></td> + <td>Aucun</td> + </tr> + <tr> + <td>Barre latérale</td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_sidebar">ui/sidebar</a></code></td> + <td><code>sidebar_action</code></td> + </tr> + <tr> + <td>Panneau</td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/panel">panel</a></code></td> + <td><code>browser_action</code> / <code>page_action</code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Popups"> popup</a></td> + </tr> + <tr> + <td>Menu contextuel</td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/context-menu">context-menu</a></code></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/contextMenus">contextMenus</a></code></td> + </tr> + </tbody> +</table> + +<h3 id="Panneaux_et_fenêtres_contextuelles">Panneaux et fenêtres contextuelles</h3> + +<p>Les panneaux et les <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Popups">fenêtres contextuelles</a> sont des boites de dialogue transitoires définies à l'aide de HTML, CSS et JavaScript.</p> + +<p>Contrairement aux panneaux, les fenêtres contextuelles sont toujours attachées à un bouton (une action de navigateur ou une action de page) et ne peuvent pas être affichés par programmation : ils ne s'affichent que lorsque l'utilisateur clique sur le bouton.</p> + +<p>Aussi, contrairement aux panneaux, les scripts des fenêtres contextuelles ont accès aux mêmes API que les scripts d'arrière-plan. Ils peuvent même accéder directement à la page d'arrière-plan, via <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/runtime/getBackgroundPage">runtime.getBackgroundPage()</a></code>.</p> + +<h2 id="Paramètres">Paramètres</h2> + +<p>Les extensions SDK et les WebExtensions permettent toutes les deux de gérer des paramètres (aussi appelées options ou préférences).</p> + +<p>Avec le fichier SDK, il est possible d'indiquer des paramètres via la clé <code>preferences</code> dans le fichier <code>package.json</code>. L'utilisateur peut voir et modifier ces préférences via l'entrée du Gestionnaire de modules de l'extension. À l'inverse, l'extension peut écouter les changements de paramètres à l'aide de l'API <code><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/simple-prefs">simple-prefs</a></code>.</p> + +<p>Dans les WebExtensions, vous devrez implémenter votre propre interface utilisateur afin de présenter les paramètres et votre propre code pour les garder en mémoire pour votre extension. Pour cela, on écrira un fichier HTML qui présente les paramètres et qui peut inclure un script permettant de les sauvegarder. Le script a accès à toutes les API des WebExtensions et on utilisera généralement l'API <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/storage">storage</a></code> pour la mémorisation.</p> + +<p>L'URL du fichier HTML pour l'écran des paramètres doit être indiqué avec la clé <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code> du fichier <code>manifest.json</code>. La page de paramètres apparaît alors dans l'entrée de l'extension sous le Gestionnaire de modules des extensions. La page d'options peut également être ouverte via le code grâce à un appel à <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/runtime/openOptionsPage">browser.runtime.openOptionsPage</a></code>.</p> + +<p>On notera que les WebExtensions ne permettent pas d'accéder aux préférences du navigateur (c'est-à-dire les préférences exposées dans le SDK par <code><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/preferences_service">preferences/service</a></code>). Toutefois, il est possible de modifier certains paramètres du navigateur grâce aux API <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/privacy">privacy</a></code> et <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings">browserSettings</a></code>.</p> + +<h3 id="En_apprendre_plus">En apprendre plus</h3> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Options_pages">Introduction aux pages de paramètres</a></li> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/favourite-colour">Un exemple d'extension qui a une page d'options</a></li> +</ul> + +<h2 id="Internationalisation">Internationalisation</h2> + +<p>Le SDK et les WebExtensions contiennent tous les deux des outils de localisation pour traduire le texte qui sera visible par l'utilisateur. Ces deux outils offrent des fonctionnalités similaires :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Fonctionnalités</th> + <th scope="col">SDK</th> + <th scope="col">WebExtensions</th> + </tr> + </thead> + <tbody> + <tr> + <td>Chaînes dans les scripts d'arrière-plan</td> + <td>Oui</td> + <td>Oui</td> + </tr> + <tr> + <td>Chaînes dans les scripts de contenu</td> + <td>Non</td> + <td>Oui</td> + </tr> + <tr> + <td>Chaînes dans les fichiers HTML</td> + <td>Oui</td> + <td>Non</td> + </tr> + <tr> + <td>Chaînes dans les fichiers CSS</td> + <td>Non</td> + <td>Oui</td> + </tr> + <tr> + <td>Titre et descriptions</td> + <td>Oui</td> + <td>Oui</td> + </tr> + <tr> + <td>Gestion des formes plurielles</td> + <td>Oui</td> + <td>Non</td> + </tr> + <tr> + <td>Textes de substitution (<em>placeholders</em>)</td> + <td>Oui</td> + <td>Oui</td> + </tr> + </tbody> +</table> + +<p>Dans les deux systèmes, les chaînes traduites sont fournies via un ensemble de fichier : un pour chaque locale.</p> + +<p>Pour récupérer les chaînes localisées dans le code de l'extension, on peut utiliser l'API JavaScript <code><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/l10n">l10n</a></code> dans le SDK et l'API <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/i18n">i18n</a></code> pour les WebExtensions.</p> + +<p>Les WebExtensions ne gèrent pas nativement la localisation des chaînes présentes dans les fichiers HTML : il faut le faire soi-même en utilisant JavaScript pour récupérer des chaînes localisées et pour remplacer dynamiquement le contenu HTML par la version localisée.</p> + +<h3 id="En_savoir_plus_4">En savoir plus</h3> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/Internationalization">Le guide d'internationalisation des extensions.</a></li> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">Exemple d'extension internationalisée.</a></li> + <li><a href="https://gist.github.com/freaktechnik/4a72bc0711d9bc82cf3b075bcc292953">Exemple de script la traduction des documents HTML d'une extension WebExtensions à la façon du SDK</a></li> +</ul> + +<h2 id="Outil_en_ligne_de_commande">Outil en ligne de commande</h2> + +<p>Le SDK livré avec un outil en ligne de commande : <a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/jpm">jpm</a> qu'on peut utiliser pour tester et empaqueter les extensions. Il existe un outil équivalent pour les WebExtensions : <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a>. Web-ext ne prend pas en charge les mêmes commandes que jpm, mais gère <code><a href="/fr/Add-ons/WebExtensions/web-ext_command_reference#web-ext_run">run</a></code>, <code><a href="/fr/Add-ons/WebExtensions/web-ext_command_reference#web-ext_build">build</a></code> et <code><a href="/fr/Add-ons/WebExtensions/web-ext_command_reference#web-ext_sign">sign</a></code>.</p> + +<p>Il est maintenant possible d'installer (et de recharger) des extensions SDK et les extensions construites avec les API WebExtension dans Firefox à partir de leur répertoire source, sans avoir besoin de les empaqueter dans un fichier XPI. Voir <a href="/fr/Add-ons/WebExtensions/installation_temporaire_dans_Firefox">l'installation temporaire dans Firefox</a>.</p> + +<h3 id="En_savoir_plus_5">En savoir plus</h3> + +<ul> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">Tutoriel web-ext</a></li> + <li><a href="/fr/Add-ons/WebExtensions/web-ext_command_reference">Référence web-ext</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">Instalation temporaire dans Firefox</a></li> +</ul> + +<h2 id="Les_API_JavaScript">Les API JavaScript</h2> + +<p>Que ce soit pour le SDK et les WebExtensions, la puissance des extensions provient d'un ensemble d'API JavaScript dédiées. Pour la plupart des API SDK de haut niveau, il existe un équivalent WebExtensions.</p> + +<p>Une grande limitation de WebExtensions par rapport au SDK est que les modules complémentaires SDK peuvent utiliser <code>require("chrome")</code> pour accéder à la gamme complète des API XPCOM dans Firefox. Ceci n'est pas possible avec WebExtensions.</p> + +<p>Pour accéder aux API privilégiées dans le SDK, on utilise <code>require()</code> :</p> + +<pre class="brush: js">var tabs = require("sdk/tabs"); +tabs.open("https://developer.mozilla.org/");</pre> + +<p>Avec WebExtensions, la plupart des API sont déjà disponibles, sans avoir besoin de les importer :</p> + +<pre class="brush: js">browser.tabs.create({ + "url": "/" +});</pre> + +<p>Pour certaines API WebExtension, vous devez d'abord demander la permission, en utilisant la clé des <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> de manifest.json. Dans l'exemple ci-dessous, l'extension doit demander l'autorisation <code>"tabs"</code> si elle souhaite accéder à l'URL de l'onglet :</p> + +<p><code><strong>manifest.json</strong></code></p> + +<pre class="brush: json">... + +"permissions": [ + "tabs" + ] + +...</pre> + +<p><strong>Script d'arrière-plan</strong></p> + +<pre class="brush: js">function logUrl(tabs) { + console.log(tabs[0].url); +} + +var querying = browser.tabs.query( + {active: true, currentWindow: true} +); + +querying.then(logUrl); +</pre> + +<h3 id="Comparaison_des_API_SDK_WebExtension">Comparaison des API SDK / WebExtension</h3> + +<p>Les tableaux de cette section répertorient chaque API du SDK et indiquent l'API WebExtension équivalente si elle existe.</p> + +<p>Le premier tableau couvre les API SDK de haut niveau, le second couvre les API bas niveau.</p> + +<h4 id="API_haut_niveau">API haut niveau</h4> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">SDK</th> + <th scope="col">WebExtensions</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/addon-page">addon-page</a></td> + <td><code><a href="/fr/Add-ons/WebExtensions/API/tabs/create">tabs.create()</a></code> peut être utilisé pour charger des pages packagées avec l'add-on dans des onglets de navigateur.</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/base64">base64</a></td> + <td><a href="/fr/docs/Web/API/WindowBase64"><code>window.atob()</code> et <code>btoa()</code></a></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/clipboard">clipboard</a></td> + <td><code><a href="/fr/docs/Web/API/Document/execCommand">document.execCommand</a></code> sans <code>select()</code> sur la page d'arrière-plan.</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/context-menu">context-menu</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/contextMenus">contextMenus</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/hotkeys">hotkeys</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/commands">commands</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/indexed-db">indexed-db</a></td> + <td><code><a href="/fr/docs/Web/API/IndexedDB_API">window.indexedDB</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/l10n">l10n</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/i18n">i18n</a></code></td> + </tr> + <tr> + <td><a href="/fr/Add-ons/SDK/High-Level_APIs/notifications">notifications</a></td> + <td><code><a href="/fr/Add-ons/WebExtensions/API/notifications">notifications</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/page-mod">page-mod</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/page-worker">page-worker</a></td> + <td> + <p>Le portage n'est pas terminé et est décrit dans le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1318532">bug 1318532</a></p> + + <p>Les méthodes de contournement (qui peuvent avoir besoin de <code>webrequestBlocking</code> pour accéder à l'ensemble des pages [<a href="https://stackoverflow.com/questions/15532791/getting-around-x-frame-options-deny-in-a-chrome-extension">exemple</a>]) :</p> + + <ul> + <li>Utiliser la page d'arrière-plan</li> + <li>Charger des <em>iframes</em> distantes dans la page d'arrière-plan</li> + <li>Effectuer un appel <a href="/fr/docs/AJAX">XHR</a> pour obtenir les informations statiques de la page.</li> + </ul> + </td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/panel">panel</a></td> + <td>Voir la section <a href="/fr/Add-ons/WebExtensions/Porting_from_the_Add-on_SDK#UI_elements">sur les interfaces utilisateur</a>.</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/passwords">passwords</a></td> + <td><a href="https://github.com/web-ext-experiments/logins">L'API expérimentale <code>logins</code></a></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/private-browsing">private-browsing</a></td> + <td><code><a href="/fr/Add-ons/WebExtensions/API/Tabs/Tab">Tab.incognito</a></code> et <code><a href="/fr/Add-ons/WebExtensions/API/windows/Window">Window.incognito</a></code>.</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/querystring">querystring</a></td> + <td><code><a href="/fr/docs/Web/API/URLSearchParams">window.URLSearchParams</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/request">request</a></td> + <td><code><a href="/fr/docs/Web/API/Fetch_API">window.fetch</a></code> ou <code><a href="/fr/docs/Web/API/XMLHttpRequest">window.XMLHttpRequest</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/selection">selection</a></td> + <td>Utiliser un script de contenu qui envoie la donnée sélectionnée l'add-on. Sinon, si on peut utiliser un menu contextuel sur une sélection, celle-ci sera contenue dans <code>selectionText</code> (<code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/contextMenus/OnClickData">contextMenus.OnClickData</a></code>).</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/self">self</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/runtime/getManifest">runtime.getManifest()</a></code> et <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/extension/getURL">extension.getURL()</a></code> pour <code>data.url()</code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/simple-prefs">simple-prefs</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/storage">storage</a></code> et <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/simple-storage">simple-storage</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/storage">storage</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/system">system</a></td> + <td>Partiellement couvert par <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/runtime">runtime</a></code>.</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/tabs">tabs</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs">tabs</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/timers">timers</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/alarms">alarms</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/ui">ui</a></td> + <td>Voir la section <a href="/fr/Add-ons/WebExtensions/Porting_from_the_Add-on_SDK#UI_elements">sur les éléments d'interface.</a></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/url">url</a></td> + <td><code><a href="/fr/docs/Web/API/Window/URL">window.URL</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/widget">widget</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/windows">windows</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/windows">windows</a></code></td> + </tr> + </tbody> +</table> + +<h4 id="API_bas_niveau">API bas niveau</h4> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">SDK</th> + <th scope="col">WebExtensions</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/_loader">loader</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/chrome">chrome</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/console_plain-text">console/plain-text</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/console_traceback">console/traceback</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/content_content">content/content</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/content_loader">content/loader</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/content_mod">content/mod</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/content_symbiont">content/symbiont</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/content_worker">content/worker</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/core_heritage">core/heritage</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/core_namespace">core/namespace</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/core_promise">core/promise</a></td> + <td><code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/dev_panel">dev/panel</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/devtools.panels">devtools.panels</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/event_core">event/core</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/event_target">event/target</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/frame_hidden-frame">frame/hidden-frame</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/frame_utils">frame/utils</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/fs_path">fs/path</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/io_byte-streams">io/byte-streams</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/io_file">io/file</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/io_text-streams">io/text-streams</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/lang_functional">lang/functional</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/lang_type">lang/type</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/loader_cuddlefish">loader/cuddlefish</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/loader_sandbox">loader/sandbox</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/net_url">net/url</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/net_xhr">net/xhr</a></td> + <td><code><a href="/fr/docs/Web/API/Fetch_API">window.fetch</a></code> ou <code><a href="/fr/docs/Web/API/XMLHttpRequest">window.XMLHttpRequest</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/places_bookmarks">places/bookmarks</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks">bookmarks</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/places_favicon">places/favicon</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/places_history">places/history</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/history">history</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/platform_xpcom">platform/xpcom</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/preferences_event-target">preferences/event-target</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/preferences_service">preferences/service</a></td> + <td>Prise en charge partielle via les API <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/privacy">privacy</a></code> et <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings">browserSettings</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/remote_child">remote/child</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/remote_parent">remote/parent</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/stylesheet_style">stylesheet/style</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/stylesheet_utils">stylesheet/utils</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/system_child_process">system/child_process</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/runtime/connectNative">runtime.connectNative</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/system_environment">system/environment</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/system_events">system/events</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/system_runtime">system/runtime</a></td> + <td>Prise en charge partielle via <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/runtime/getPlatformInfo">runtime.getPlatformInfo</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/system_xul-app">system/xul-app</a></td> + <td>Prise en charge partielle via <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/runtime/getBrowserInfo">runtime.getBrowserInfo</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/tabs_utils">tabs/utils</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_action">ui/button/action</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> / <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">ui/button/toggle</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> / <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_frame">ui/frame</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_id">ui/id</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_sidebar">ui/sidebar</a></td> + <td><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction">sidebarAction</a></code></td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_toolbar">ui/toolbar</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/util_array">util/array</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/util_collection">util/collection</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/util_deprecate">util/deprecate</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/util_list">util/list</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/util_match-pattern">util/match-pattern</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/util_object">util/object</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/util_uuid">util/uuid</a></td> + <td>Aucun</td> + </tr> + <tr> + <td><a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/window_utils">window/utils</a></td> + <td>Aucun</td> + </tr> + </tbody> +</table> diff --git a/files/fr/mozilla/add-ons/webextensions/compatibilité_navigateurs_api_javascript/index.html b/files/fr/mozilla/add-ons/webextensions/compatibilité_navigateurs_api_javascript/index.html new file mode 100644 index 0000000000..d7d80b6988 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/compatibilité_navigateurs_api_javascript/index.html @@ -0,0 +1,24 @@ +--- +title: Compatibilité des navigateurs avec les API JavaScript WebExtensions +slug: Mozilla/Add-ons/WebExtensions/Compatibilité_navigateurs_API_JavaScript +tags: + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs +--- +<div>{{AddonSidebar}}</div> + + + +<p>{{WebExtAllCompatTables}}</p> + +<div class="note"><strong>Remerciements</strong> + +<p>Les données de compatibilité Microsoft Edge sont fournies par Microsoft Corporation et sont incluses ici sous la licence Creative Commons Attribution 3.0 United States.</p> +</div> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json">Compatibilité du navigateur pour manifest.json</a></li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/compte_developpeurs/index.html b/files/fr/mozilla/add-ons/webextensions/compte_developpeurs/index.html new file mode 100644 index 0000000000..7cd2470cf8 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/compte_developpeurs/index.html @@ -0,0 +1,26 @@ +--- +title: Comptes développeurs +slug: Mozilla/Add-ons/WebExtensions/Compte_developpeurs +tags: + - Développement + - Extensions + - publications +translation_of: Mozilla/Add-ons/WebExtensions/Developer_accounts +--- +<p>{{AddonSidebar}}</p> + +<p>Les comptes développeurs pour addons.mozilla.org sont intégrés aux <a href="https://accounts.firefox.com/signup">comptes Firefox</a>, ce qui vous permet d'accéder et de gérer plusieurs services Mozilla depuis un seul compte. Vous pouvez gérer votre compte Firefox à partir de <a href="https://accounts.firefox.com/settings">accounts.firefox.com/settings</a>.</p> + +<h3 id="Définition_dun_nom_daffichage">Définition d'un nom d'affichage</h3> + +<p>Il est important de définir un nom d'affichage sur votre <a href="https://addons.mozilla.org/firefox/users/edit">profil sur addons.mozilla.org </a>pour augmenter la transparence avec les utilisateurs, les évaluateurs et la communauté.</p> + +<div class="blockIndicator note"> +<p>Le nom d'affichage de votre compte Firefox ne sera pas synchronisé avec votre profil sur addons.mozilla.org. Vous devrez définir le nom d'affichage de votre compte développeur à partir de votre profil sur addons.mozilla.org</p> +</div> + +<h3 id="Comptes_bloqués">Comptes bloqués</h3> + +<p>Afin d'empêcher les acteurs malveillants de soumettre des spams à addons.mozilla.org, nous n'accepterons pas les soumissions provenant de comptes qui utilisent une adresse e-mail temporaire jetable, ou qui ont soumis plusieurs add-ons qui violent nos <a href="/en-US/docs/Mozilla/Add-ons/AMO/Policy/Reviews">Politiques de add-on</a>.</p> + +<p>Si vous pensez que votre compte a été bloqué par erreur, veuillez envoyer un email à amo-admins [at] mozilla [dot] com et inclure un lien vers votre profil développeur.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/construction_extension_cross_browser/index.html b/files/fr/mozilla/add-ons/webextensions/construction_extension_cross_browser/index.html new file mode 100644 index 0000000000..506822110d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/construction_extension_cross_browser/index.html @@ -0,0 +1,252 @@ +--- +title: Construction d'une extension cross-browser +slug: Mozilla/Add-ons/WebExtensions/construction_extension_cross_browser +tags: + - Add-ons + - Extensions + - Guide + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Build_a_cross_browser_extension +--- +<p>{{AddonSidebar()}}</p> + +<p>L'introduction de l'API d'extension de navigateur a créé un paysage plus uniforme pour le développement d'extensions des navigateurs. Cependant, parmi les navigateurs qui utilisent les API d'extensions (les principales étant Chrome, Firefox, Opera et Edge), vous verrez des différences à la fois dans l'implémentation de l'API et dans la portée de la couverture. Et puis, Safari utilise ses propres extensions Safari Extensions JS.</p> + +<p>Maximiser la portée de votre extension de navigateur signifie la développer pour au moins deux navigateurs différents, voire plus. Cet article examine six des principaux défis rencontrés lors de la création d'une extension multi-navigateurs, et dans chaque cas, suggère comment relever ce défi.</p> + +<p>Cet article ne traite pas de la création d'extensions de navigateur pour Safari. Il est possible de partager certaines ressources avec une extension Safari, comme des images et du contenu HTML. Cependant, le codage JavaScript doit être entrepris comme un projet de développement séparé, à moins que vous ne souhaitiez créer votre propre polyfill.</p> + +<h2 id="Obstacles_lors_du_codage_dextension_multiplateforme">Obstacles lors du codage d'extension multiplateforme</h2> + +<p>Il y a six domaines que vous devez aborder lorsque vous vous attaquez à une extension multiplateforme :</p> + +<ul> + <li>Espace de nommage de l'API</li> + <li>Gestion asynchrone des événements API</li> + <li>Couverture des fonctions API</li> + <li>Clés du Manifest</li> + <li>Package d'Extension</li> + <li>Publication</li> +</ul> + +<h3 id="Espace_de_nommage_de_lAPI">Espace de nommage de l'API</h3> + +<p>Deux espaces de noms API sont utilisés parmi les quatre principaux navigateurs :</p> + +<ul> + <li><code>browser.*</code>, le standard proposé pour l'API d'extensions, utilisé par Firefox et Edge.</li> + <li><code>chrome.*</code> utilisé par Chrome et Opera.</li> +</ul> + +<p>Firefox prend également en charge l'espace de noms <code>chrome.*</code> pour les API compatibles avec Chrome, principalement pour faciliter le <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension">portage</a>. Cependant, il est préférable d'utiliser l'espace de nommage <code>browser.*</code>. En plus d'être la norme proposée, <code>browser.*</code> utilise des promesses — un mécanisme moderne et pratique pour gérer les événements asynchrones.</p> + +<p>Ce n'est que dans les extensions les plus triviales que l'espace de nommage sera probablement le seul problème multiplateforme qui devra être traité. Il est donc rarement, voire jamais, utile d'essayer d'aborder cette question seul. La meilleure approche consiste à traiter ce problème avec une gestion asynchrone des événements.</p> + +<h3 id="Gestion_asynchrone_des_événements_API">Gestion asynchrone des événements API</h3> + +<p>Il existe deux approches pour gérer les événements asynchrones utilisées par les quatre principaux navigateurs :</p> + +<ul> + <li><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">Promises</a>, le standard proposé pour l'API d'extensions, utilisé par Firefox.</li> + <li>callbacks, utilisés par Chrome, Edge, et Opera.</li> +</ul> + +<p>Firefox prend également en charge les rappels pour les API qui prennent en charge l'espace de noms <code>chrome.*</code>. Cependant, il est recommandé d'utiliser des promesses (et l'espace de noms <code>browser.*</code> du navigateur). Des promesses ont été adoptées dans le cadre de la norme proposée. Il simplifie grandement la gestion asynchrone des événements, en particulier lorsque vous devez enchaîner des événements.</p> + +<p>Si vous n'êtes pas familier avec les différences entre ces deux méthodes, jetez un coup d'oeil à <a href="https://medium.com/codebuddies/getting-to-know-asynchronous-javascript-callbacks-promises-and-async-await-17e0673281ee">Apprendre à connaître le Javascript asynchrone : Rappels, promesses et synchronisation/attente</a> ou la page des <a href="/fr/docs/Web/JavaScript/Guide/Utiliser_les_promesses">promesses d'utilisation</a> de MDN.</p> + +<p>Alors, comment tirer profit des promesses facilement, alors que Firefox est le seul navigateur qui les supporte ? La solution est de coder pour Firefox en utilisant des promesses et d'utiliser le <a href="https://github.com/mozilla/webextension-polyfill/">navigateur WebExtension API Polyfill</a>. Cette polyfill prend en compte l'espace de nommage de l'API et la gestion asynchrone des événements dans Firefox, Chrome et Opera. Au moment de la rédaction du présent document (novembre 2018), le soutien pour Edge était en cours d'élaboration.</p> + +<p>Vous installez le navigateur WebExtension API Polyfill dans votre environnement de développement à l'aide de npm ou vous le téléchargez directement depuis les <a href="https://github.com/mozilla/webextension-polyfill/releases">versions de GitHub</a>. Vous référencerez alors <code>browser-polyfill.js</code> dans :</p> + +<ul> + <li><code>manifest.json</code>, pour mettre à disposition des scripts de fond et de contenu.</li> + <li>Documents HTML, tels que les popups <code>browserAction</code> ou les pages à onglet.</li> + <li>L'appel <code>executeScript</code> dans les scripts de contenu dynamiquement injectés chargés par <code>tabs.executeScript</code>, où il n'a pas été chargé en utilisant une déclaration <code>content_scripts</code> dans manifest.json.</li> +</ul> + +<p>Ainsi, par exemple, ce code <code>manifest.json</code> rend le polyfill disponible pour vos scripts d'arrière-plan :</p> + +<pre class="brush: json">{ + // ... + "background": { + "scripts": [ + "browser-polyfill.js", + "background.js" + ] + } +}</pre> + +<p>Votre but est de vous assurer que le polyfill s'exécute dans votre extension avant tout autre script qui attend le <code>browser.*</code> API namespace s'exécute.</p> + +<p>Pour plus de détails et d'informations sur l'utilisation du polyfill avec un module bundler, voir le <a href="https://github.com/mozilla/webextension-polyfill/blob/master/README.md">readme du projet sur GitHub.</a></p> + +<p>Il existe d'autres options de polyfill mais, au moment d'écrire ces lignes, aucune ne fournit la couverture de l'API Polyfill du navigateur WebExtension. Ainsi, lorsque vous n'avez pas choisi Firefox comme premier choix, vos options sont d'accepter les limitations des polyfills alternatifs, de porter sur Firefox et d'ajouter la prise en charge du cross-browser, ou de développer votre propre polyfill.</p> + +<h3 id="Couverture_des_fonctions_API">Couverture des fonctions API</h3> + +<p>Les différences dans les fonctions API offertes dans chacun des quatre principaux navigateurs se répartissent en trois grandes catégories :</p> + +<ul> + <li>Manque de soutien pour l'ensemble d'une fonction. Par exemple, au moment d'écrire ces lignes, Edge ne prenait pas en charge la fonction de <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/privacy#Browser_compatibility">vie privée</a>.</li> + <li>Variations in the support for features within a function. For example, at the time of writing, Firefox doesn’t support the notification function method <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/notifications/onButtonClicked#Browser_compatibility">onButtonClicked</a> while Firefox is the only browser that supports <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/notifications/onShown#Browser_compatibility">onShown</a>.</li> + <li>Proprietary functions, supporting browser specific features. For example, at the time of writing, containers was a Firefox-specific feature supported by the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities#Browser_compatibility">contextualIdentities</a> function.</li> +</ul> + +<p>You can find details about the support for the extension APIs among the four main browsers and Firefox for Android on the Mozilla Developer Network <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">Browser support for JavaScript APIs</a> page. Browser compatibility information is also included with each function and its methods, types, and events in the Mozilla Developer Network <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API">JavaScript APIs</a> reference pages.</p> + +<p>A simple approach to addressing these differences is to limit the functions used in your extension to functions that offer the same functionality across your range of targeted browsers. In practice, for most extensions, this approach is likely to be too restrictive.</p> + +<p>The approach you should take where there are differences among the APIs, is to offer either alternative implementations or fallback functionality. Remember that you may also need to do this to allow for differences in API support between versions of the same browser.</p> + +<p>The use of runtime checks on the availability of a function’s features is the recommended approach to implementing alternative or fallback functionality. The benefit of performing a runtime check is that if the function becomes available you don’t need to update and redistribute the extension to take advantage of it.</p> + +<p>The following code enables you to perform a runtime check:</p> + +<pre class="brush: js">if (typeof <function> === "function") { + // safe to use the function +}</pre> + +<h3 id="Manifest_keys">Manifest keys</h3> + +<p>The differences in the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json">manifest.json</a> file keys supported by the four main browsers fall broadly into three categories:</p> + +<ul> + <li>Extension information attributes. For example, at the time of writing, Firefox and Opera include the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/developer#Browser_compatibility">developer</a> key for details about the developer, as well as the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/author#Browser_compatibility">author</a>, of the extension.</li> + <li>Extension features. For example, at the time of writing, Edge did not support the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/commands#Browser_compatibility">commands</a> key that enables shortcut keys to be defined for an extension.</li> + <li>Key optionality. For example, at the time of writing, the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/author#Browser_compatibility">author</a> key is mandatory in Edge but optional in the other main browsers.</li> +</ul> + +<p>Browser compatibility information is included with each key in the Mozilla Developer Network <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json key reference pages</a>.</p> + +<p>As <code>manifest.json</code> files tend to change little—except for release numbers, which may be different between the various browsers—creating and editing a static version for each browser is usually the simplest approach.</p> + +<h3 id="Extension_packaging">Extension packaging</h3> + +<p>Packaging an extension for distribution through the browser extension stores is relatively straightforward. Firefox, Chrome, and Opera all use a simple zip format that requires the <code>manifest.json</code> file to be at the root of the zip package. However, submitting to the Microsoft store requires additional packaging of the extension file.</p> + +<p>For details on packaging, refer to the guidance on the respective extension’s developer portals.</p> + +<h3 id="Publishing">Publishing</h3> + +<p>Each of the four major browsers maintains browser extension stores. As a consequence, you need to approach adding and updating your extension in each separately. In some cases you can upload your extension using a utility. Each of the stores also performs a review of your extension to check for security vulnerabilities. The table below summarizes the approach and features of each store:</p> + +<table> + <tbody> + <tr> + <td></td> + <td> + <p>Registration fee</p> + </td> + <td> + <p>Upload utility</p> + </td> + <td> + <p>Pre-publication review process</p> + </td> + <td> + <p>Account two factor authentication</p> + </td> + </tr> + <tr> + <td> + <p>Firefox</p> + </td> + <td> + <p>No</p> + </td> + <td> + <p><a href="/en-US/Add-ons/WebExtensions/web-ext_command_reference">web-ext</a></p> + </td> + <td> + <p>Automatic, a few seconds<sup>1</sup></p> + </td> + <td> + <p>No</p> + </td> + </tr> + <tr> + <td> + <p>Chrome</p> + </td> + <td> + <p>Yes</p> + </td> + <td> + <p>Yes</p> + </td> + <td> + <p>Automatic, less than an hour</p> + </td> + <td> + <p>Yes</p> + </td> + </tr> + <tr> + <td> + <p>Opera</p> + </td> + <td> + <p>No</p> + </td> + <td> + <p>No</p> + </td> + <td> + <p>Manual, no SLA provided</p> + </td> + <td> + <p>No</p> + </td> + </tr> + <tr> + <td> + <p>Edge</p> + </td> + <td> + <p>Yes</p> + </td> + <td> + <p>No</p> + </td> + <td> + <p>Manual, up to 72 hours<sup>2</sup></p> + </td> + <td> + <p>Yes</p> + </td> + </tr> + </tbody> +</table> + +<p>1) A manual review of the extension takes place after publication, which may result in the extension being suspended where issues that need fixing are found.</p> + +<p>2) At the time of writing, Microsoft was only allowing publication of preapproved extensions.</p> + +<h3 id="Other_considerations">Other considerations</h3> + +<h4 id="Extension_naming">Extension naming</h4> + +<p>Microsoft requires that extensions have unique names and provides a process for claiming one or more names for your extension through the Windows Dev Center. It may therefore be prudent to reserve an extension name with Microsoft, even if you’re not intending to support Edge immediately. None of the other stores apply name restrictions.</p> + +<h4 id="Version_numbering">Version numbering</h4> + +<p>The Firefox and Chrome stores require that each uploaded version has a separate version number. This means that you cannot revert to an earlier version number, if you come across issues in a release.</p> + +<h4 id="Share_content">Share content</h4> + +<p>Even when you include developing extensions for Safari, there are a number of assets you can potentially share across all of your implementations. These include:</p> + +<ul> + <li>Images</li> + <li>HTML</li> + <li>CSS</li> +</ul> + +<h2 id="Conclusion">Conclusion</h2> + +<p>When approaching a cross-platform extension development, addressing the fundamental differences between extension API implementations can be addressed by targeting Firefox and using the <a href="https://github.com/mozilla/webextension-polyfill/">WebExtension browser API Polyfill</a>. Following this approach you benefit from using API features that are closely aligned with the proposed extensions API standard and offer you the simplicity of promises for asynchronous event handling.</p> + +<p>The bulk of your cross-platform work is likely to focus on handling variations among the API features supported by the main browsers. Creating your <code>manifest.json</code> files should be relatively straightforward and something you can do manually. You will then need to account for the variations in extension packaging and the processes for submitting to each of the extension stores.</p> + +<p>Following the advice in this article, you should be able to create an extension that works well on all of the four main browsers, enabling you to deliver your extension features to more people.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/content_scripts/index.html b/files/fr/mozilla/add-ons/webextensions/content_scripts/index.html new file mode 100644 index 0000000000..293dd44785 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/content_scripts/index.html @@ -0,0 +1,474 @@ +--- +title: Scripts de contenu +slug: Mozilla/Add-ons/WebExtensions/Content_scripts +tags: + - Add-ons + - JavaScript + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Content_scripts +--- +<div>{{AddonSidebar}}</div> + +<p>Un script de contenu (<em>content script</em> en anglais) est une partie de votre extension qui s’exécute dans le contexte d’une page web donnée (par opposition aux scripts d’arrière-plan qui font partie de l'extension, ou aux scripts qui font partie du site Web lui-même, tels que ceux chargés en utilisant l'élément {{HTMLElement("script")}}).</p> + +<p>Les <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">scripts d'arrière-plan</a> peuvent accéder à l'ensemble des <a href="/fr/Add-ons/WebExtensions/API">API WebExtension</a> mais ils ne peuvent pas accéder directement au contenu des pages web. Aussi, si votre extension doit manipuler le contenu des pages web, vous devrez utiliser les scripts de contenu.</p> + +<p>Tout comme les scripts habituellement chargés par les pages web classiques, les scripts de contenu peuvent lire et modifier le contenu de leurs pages en utilisant les API DOM standard.</p> + +<p>Les scripts de contenu ne peuvent accéder qu'à <a href="#API WebExtensions">un sous-ensemble des API WebExtension</a>, mais ils peuvent <a href="#communication_background">communiquer avec les scripts d'arrière-plan</a> grâce à un système de messages et ainsi accéder indirectement aux API WebExtension.</p> + +<div class="note"> +<p>Notez que les scripts de contenu sont bloqués sur les domaines suivants :</p> + +<ul style="display: grid;"> + <li>accounts-static.cdn.mozilla.net</li> + <li>accounts.firefox.com</li> + <li>addons.cdn.mozilla.net</li> + <li>addons.mozilla.org</li> + <li>api.accounts.firefox.com</li> + <li>content.cdn.mozilla.net</li> + <li>content.cdn.mozilla.net</li> + <li>discovery.addons.mozilla.org</li> + <li>input.mozilla.org</li> + <li>install.mozilla.org</li> + <li>oauth.accounts.firefox.com</li> + <li>profile.accounts.firefox.com</li> + <li>support.mozilla.org</li> + <li>sync.services.mozilla.com</li> + <li>testpilot.firefox.com</li> +</ul> + +<p>If you try to inject a content script into a page in these domains, it will fail and the page will log a <a href="/en-US/docs/Web/HTTP/CSP">CSP</a> error.</p> + +<p>Because these restrictions include addons.mozilla.org, users may attempt to use your extension immediately after installation—only to find that it doesn't work! You may want to add an appropriate warning, or an <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/onboarding_upboarding_offboarding_best_practices">onboarding page</a> to move users away from addons.mozilla.org.</p> +</div> + +<div class="note"> +<p>Les valeurs ajoutées à la portée globale d'un script de contenu avec <code>var foo</code> ou <code>window.foo = "bar"</code> peuvent disparaître à cause du bogue <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1408996">1408996</a>.</p> +</div> + +<h2 id="Charger_des_scripts_de_contenu">Charger des scripts de contenu</h2> + +<p>Il est possible de charger un script de contenu dans une page web de trois manières différentes :</p> + +<ol> + <li><strong>Lors de la phase d'installation, pour les pages qui correspondent à certains motifs d'URL :</strong> en utilisant la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> dans le fichier <code>manifest.json</code>, vous pouvez demander au navigateur de charger un script de contenu chaque fois que le navigateur charge une page dont l'URL <a href="/fr/Add-ons/WebExtensions/Match_patterns">correspond à un motif donné</a>.</li> + <li><strong>Lors de l'exécution, pour les pages qui correspondent à certains motifs d'URL :</strong> en utilisant l'API {{WebExtAPIRef("contentScripts")}}, vous pouvez demander au navigateur de charger un script de contenu chaque fois que le navigateur charge une page dont l'URL <a href="/fr/Add-ons/WebExtensions/Match_patterns">correspond à un motif donné</a>. Cette méthode est la version dynamique de la première méthode.</li> + <li><strong>Lors de l'exécution, pour certains onglets spécifiques :</strong> en utilisant la méthode <code><a href="/fr/Add-ons/WebExtensions/API/Tabs/executeScript">tabs.executeScript()</a></code>, vous pouvez charger un script de contenu dans un onglet spécifique quand vous le souhaitez (par exemple lorsqu'un utilisateur clique sur un <a href="/fr/Add-ons/WebExtensions/Browser_action">bouton d'action du navigateur</a>).</li> +</ol> + +<p>Il n'y a qu'une seule portée globale pour chaque <em>frame</em> et pour chaque extension. Cela signifie que les variables d'un script de contenu peuvent être accédées directement par un autre script de contenu, indépendamment de la manière dont le script de contenu a été chargé.</p> + +<p>À l'aide des méthodes (1) et (2), vous ne pouvez charger des scripts que dans des pages dont les URL peuvent être représentées par un <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">motif de correspondance</a>.</p> + +<p>En utilisant la méthode (3), vous pouvez également charger des scripts dans des pages packagées avec votre extension, mais vous ne pouvez pas charger des scripts dans des pages privilégiées du navigateur (comme <code><a>about:debugging</a></code> ou <code><a>about:addons</a></code>).</p> + +<h2 id="Environnement_des_scripts_de_contenu">Environnement des scripts de contenu</h2> + +<h3 id="Accès_au_DOM">Accès au DOM</h3> + +<p>Les scripts de contenu peuvent accéder et modifier le DOM de la page à la manière des scripts classique. Ils peuvent également observer tout changement du DOM effectué par les scripts de la page.</p> + +<p>Cependant, les scripts de contenu reçoivent une « vue propre du DOM ». Cela signifie que :</p> + +<ul> + <li>Les scripts de contenu ne peuvent pas accéder aux variables JavaScript définies par les scripts de la page.</li> + <li>Si un script de page redéfinit une propriété intrinsèque du DOM, le script de contenu verra la version originale de cette propriété et non la version redéfinie.</li> +</ul> + +<p>Dans Firefox, ce comportement s'appelle <a href="/fr/docs/Mozilla/Tech/Xray_vision">Vision Xray</a>.</p> + +<p>Prenons par exemple la page web suivante :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> + <head> + <meta http-equiv="content-type" content="text/html; charset=utf-8" /> + </head> + + <body> + <script src="page-scripts/page-script.js"></script> + </body> +</html></pre> + +<p>Le script « page-script.js » est écrit ci-dessous :</p> + +<pre class="brush: js">// page-script.js + +// ajouter un élément au DOM +var p = document.createElement("p"); +p.textContent = "Ce paragraphe a été ajouté par un script de la page."; +p.setAttribute("id", "page-script-para"); +document.body.appendChild(p); + +// définition d’une nouvelle propriété pour la fenêtre +window.toto = "Cette variable globale a été ajoutée par un script de la page."; + +// redéfinition de la fonction intégrée window.confirm() +window.confirm = function() { + alert("Ce script de page peut aussi redéfinir ’confirm’."); +}</pre> + +<p>Et maintenant une extension injecte ce script de contenu dans la page :</p> + +<pre class="brush: js">// content-script.js + +// peut accéder au DOM et le modifier +var pageScriptPara = document.getElementById("page-script-para"); +pageScriptPara.style.backgroundColor = "blue"; + +// ne peut pas voir les propriétés ajoutées par un script de la page +console.log(window.toto); // non défini + +// voit la forme originale des propriétés redéfinies +window.confirm("Êtes-vous sûr ?"); // appelle la méthode window.confirm() originale</pre> + +<p>L'inverse est également vrai : les scripts de la page ne peuvent pas voir les propriétés JavaScript ajoutées par les scripts de contenu.</p> + +<p>Ceci signifie que le script de contenu peut compter sur un comportement prévisible des propriétés du DOM et n'a pas à se soucier d'un éventuel conflit entre les variables qu'il définit et celles des scripts de page.</p> + +<p>Une des conséquences pratiques de ce comportement est que les scripts de contenu n’ont accès à aucune des bibliothèques JavaScript chargées par la page. Par exemple, si la page inclut jQuery, le script de contenu ne pourra pas le voir.</p> + +<p>Si un script de contenu veut utiliser une bibliothèque JavaScript, alors la bibliothèque doit être injectée en tant que script de contenu aux côtés du script de contenu qui veut l’utiliser.</p> + +<pre class="brush: json">"content_scripts": [ + { + "matches": ["*://*.mozilla.org/*"], + "js": ["jquery.js", "content-script.js"] + } +]</pre> + +<div class="blockIndicator note"> +<p><strong>Note:</strong> Firefox <em>fournis</em> certaines API qui permettent aux scripts de contenu d'accéder aux objets JavaScript créés par les scripts de page et d'exposer leurs propres objets JavaScript aux scripts de page.</p> + +<p>Voir <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Sharing_objects_with_page_scripts">Partage d'objets avec des scripts de page</a> pour plus de détails.***</p> +</div> + +<h3 id="Les_API_WebExtension_accessibles"><a id="API WebExtensions" name="API WebExtensions">Les API WebExtension accessibles</a></h3> + +<p>En plus des API standard du DOM, les scripts de contenu peuvent utiliser les API WebExtension suivantes :</p> + +<p>Depuis l'API <code><a href="/fr/Add-ons/WebExtensions/API/extension">extension</a></code> :</p> + +<ul> + <li><code><a href="/fr/Add-ons/WebExtensions/API/extension#getURL()">getURL()</a></code></li> + <li><code><a href="/fr/Add-ons/WebExtensions/API/extension#inIncognitoContext">inIncognitoContext</a></code></li> +</ul> + +<p>Depuis l'API <code><a href="/fr/Add-ons/WebExtensions/API/runtime">runtime</a></code> :</p> + +<ul> + <li><code><a href="/fr/Add-ons/WebExtensions/API/runtime#connect()">connect()</a></code></li> + <li><code><a href="/fr/Add-ons/WebExtensions/API/runtime#getManifest()">getManifest()</a></code></li> + <li><code><a href="/fr/Add-ons/WebExtensions/API/runtime#getURL()">getURL()</a></code></li> + <li><code><a href="/fr/Add-ons/WebExtensions/API/runtime#onConnect">onConnect</a></code></li> + <li><code><a href="/fr/Add-ons/WebExtensions/API/runtime#onMessage">onMessage</a></code></li> + <li><code><a href="/fr/Add-ons/WebExtensions/API/runtime#sendMessage()">sendMessage()</a></code></li> +</ul> + +<p>Depuis l'API <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/i18n">i18n</a></code> :</p> + +<ul> + <li><code><a href="/fr/Add-ons/WebExtensions/API/i18n/getMessagee">getMessage()</a></code></li> + <li><code><a href="/fr/Add-ons/WebExtensions/API/i18n/getAcceptLanguages">getAcceptLanguages()</a></code></li> + <li><code><a href="/fr/Add-ons/WebExtensions/API/i18n/getUILanguage">getUILanguage()</a></code></li> + <li><code><a href="/fr/Add-ons/WebExtensions/API/i18n/detectLanguage">detectLanguage()</a></code></li> +</ul> + +<p>A partir des <code><a href="/fr/Add-ons/WebExtensions/API/menus">menus</a></code>:</p> + +<ul> + <li><code><a href="/fr/Add-ons/WebExtensions/API/menus/getTargetElement">getTargetElement</a></code></li> +</ul> + +<p>L'ensemble des propriétés et méthodes de l'API <code><a href="/fr/Add-ons/WebExtensions/API/storage">storage</a></code>.</p> + +<h3 id="XHR_et_Fetch">XHR et Fetch</h3> + +<p>Les scripts de contenu peuvent effectuer des requêtes en utilisant les API classiques <code><a href="/fr/docs/Web/API/XMLHttpRequest">window.XMLHttpRequest</a></code> et <code><a href="/fr/docs/Web/API/Fetch_API">window.fetch()</a></code>.</p> + +<p>Les scripts de contenu obtiennent les mêmes privilèges interdomaines que le reste de l'extension : si l'extension a demandé un accès interdomaine pour un domaine à l'aide de la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> dans le fichier <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a></code>, ses scripts de contenu auront également accès à ce domaine.</p> + +<p>Ceci est accompli en exposant des instances XHR et <em>fetch</em> privilégiées dans le script de contenu. Cela a pour effet secondaire de ne pas définir les en-têtes <code><a href="/fr/docs/Web/HTTP/Headers/Origin">Origin</a></code> et <code><a href="/fr/docs/Web/HTTP/Headers/Referer">Referer</a></code> tels que la page elle-même l'aurait fait. Cela est souvent préférable afin d'éviter que la requête révèle la différence d'origine. À partir de Firefox 58, les extensions qui doivent exécuter des requêtes se comportant comme si elles étaient envoyées par le contenu lui-même peuvent utiliser <code>content.XMLHttpRequest</code> et <code>content.fetch()</code>. Pour les extensions visant une compatibilité entre les navigateurs, il est nécessaire de vérifier la présence de ces API avant de les utiliser.</p> + +<h2 id="Communication_avec_les_scripts_darrière-plan"><a id="communication_background" name="communication_background">Communication avec les scripts d'arrière-plan</a></h2> + +<p>Bien que les scripts de contenu ne puissent pas utiliser la totalité des API WebExtension, ils peuvent communiquer avec les scripts d'arrière-plan de l'extension via l'API de messagerie et ont donc indirectement accès aux mêmes API que ces derniers.</p> + +<p>Par défault, il existe deux moyens de communication entre les scripts d'arrière-plan et les scripts de contenu : vous pouvez envoyer des messages un par un, avec des réponses optionelles, ou vous pouvez établir une connexion continue entre les scripts, et utiliser cette connexion pour échanger des messages.</p> + +<h3 id="Un_message_à_la_fois">Un message à la fois</h3> + +<p>Pour envoyer un message à la fois, vous pouvez utiliser les API suivantes :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="row"></th> + <th scope="col">Dans le script de contenu</th> + <th scope="col">Dans les scripts d'arrière-plan</th> + </tr> + </thead> + <tbody> + <tr> + <th scope="row">Envoyer un message</th> + <td><code><a href="/fr/Add-ons/WebExtensions/API/runtime#sendMessage()">browser.runtime.sendMessage()</a></code></td> + <td><code><a href="/fr/Add-ons/WebExtensions/API/Tabs/sendMessage">browser.tabs.sendMessage()</a></code></td> + </tr> + <tr> + <th scope="row">Recevoir un message</th> + <td><code><a href="/fr/Add-ons/WebExtensions/API/runtime/onMessage">browser.runtime.onMessage</a></code></td> + <td><code><a href="/fr/Add-ons/WebExtensions/API/runtime#onMessage">browser.runtime.onMessage</a></code></td> + </tr> + </tbody> +</table> + +<p>Par exemple, voici un script de contenu qui écoute les évènements de clic sur une page web. Si le clic était sur un lien, il envoie un message à la page d'arrière-plan avec l'URL cible :</p> + +<pre class="brush: js">// content-script.js + +window.addEventListener("click", notifyExtension); + +function notifyExtension(e) { + if (e.target.tagName != "A") { + return; + } + browser.runtime.sendMessage({"url": e.target.href}); +}</pre> + +<p>Le script d'arrière-plan écoute les messages et affiche une notification en utilisant l'API <code><a href="/fr/Add-ons/WebExtensions/API/notifications">notification</a></code> :</p> + +<pre class="brush: js">// background-script.js + +browser.runtime.onMessage.addListener(notify); + +function notify(message) { + browser.notifications.create({ + "type": "basic", + "iconUrl": browser.extension.getURL("link.png"), + "title": "Vous avez cliqué sur un lien !", + "message": message.url + }); +} +</pre> + +<p>Ce code d'exemple est légèrement dérivé de l'exemple <a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a> sur GitHub.</p> + +<h3 id="Les_messages_en_flux_continu">Les messages en flux continu</h3> + +<p>L'envoi de messages distincts peut vite devenir lourd si de nombreux messages sont envoyés entre les scripts d'arrière plan et les scripts de contenu.</p> + +<p>L'une des alternatives possibles est d'établir une connexion longue durée entre les deux scripts et d'utiliser cette connexion afin d'échanger des messages.</p> + +<p>De chaque côté (contenu d'une part, arrière-plan d'autre part), les scripts possèdent un objet <code><a href="/fr/Add-ons/WebExtensions/API/runtime/Port">runtime.Port</a></code> dont ils peuvent se servir pour échanger des messages.</p> + +<p>Pour créer la connexion :</p> + +<ul> + <li>L'un des côtés se tient à l'écoute des connexions avec <a href="/fr/Add-ons/WebExtensions/API/runtime/onConnect"> </a><code><a href="/fr/Add-ons/WebExtensions/API/runtime/onConnect">runtime.onConnect</a></code>.</li> + <li>L'autre côté appelle <code><a href="/fr/Add-ons/WebExtensions/API/tabs/connect">tabs.connect()</a></code> (pour se connecter à un script de contenu) ou <code><a href="/fr/Add-ons/WebExtensions/API/runtime/connect">runtime.connect()</a></code> (pour se connecter à un script d'arrière plan). Ces deux méthodes renvoient un objet <code><a href="/fr/Add-ons/WebExtensions/API/runtime/Port">runtime.Port</a></code>.</li> + <li>Le gestionnaire d'évènement <code><a href="/fr/Add-ons/WebExtensions/API/runtime/onConnect">runtime.onConnect</a></code> reçoit alors en argument un objet <code><a href="/fr/Add-ons/WebExtensions/API/runtime/Port">runtime.Port</a></code> qui lui est propre.</li> +</ul> + +<p>Une fois que chaque côté possède son propre port, ils peuvent échanger en utilisant <code>runtime.Port.postMessage()</code> pour envoyer des message et <code>runtime.Port.onMessage</code> pour en recevoir.</p> + +<p>Par exemple, dès le chargement, ce script de contenu :</p> + +<ul> + <li>se connecte au script d'arrière plan et stocke l'objet <code>Port</code> dans une variable <code>myPort</code></li> + <li>écoute des messages sur <code>myPort</code>, et les enregistre.</li> + <li>envoie des messages au script d'arrière plan via <code>myPort</code>, quand l'utlisateur clique sur le document.</li> +</ul> + +<pre class="brush: js">// content-script.js + +var myPort = browser.runtime.connect({name:"port-from-cs"}); +myPort.postMessage({greeting: "ici le script de contenu"}); + +myPort.onMessage.addListener(function(m) { + console.log("Dans le script de contenu, réception d'un message du script d'arrière-plan"); + console.log(m.greeting); +}); + +document.body.addEventListener("click", function() { + myPort.postMessage({greeting: "clic sur la page !"}); +});</pre> + +<p>Le script d'arrière plan qui correspond ·</p> + +<ul> + <li>Écoute les tentatives de connexion depuis le script de contenu.</li> + <li>Quand il reçoit une tentative de connexion : + <ul> + <li>Enregistre le port dans une variable nommée <code>portFromCS</code></li> + <li>Envoie un message au script de contenu en utilisant le port</li> + <li>Commence à écouter les messages reçus sur le port et les enregistre.</li> + </ul> + </li> + <li>Envoie des messages au script de contenu en utilisant <code>portFromCS</code>, quand l'utilisateur clique sur l'action navigateur de l'add-on</li> +</ul> + +<pre class="brush: js">// background-script.js + +var portFromCS; + +function connected(p) { + portFromCS = p; + portFromCS.postMessage({greeting: "salut, script de contenu !"}); + portFromCS.onMessage.addListener(function(m) { + console.log("Dans le script d'arrière-plan, réception d'un message du script de contenu.") + console.log(m.greeting); + }); +} + +browser.runtime.onConnect.addListener(connected); + +browser.browserAction.onClicked.addListener(function() { + portFromCS.postMessage({greeting: "clic sur le bouton !"}); +}); +</pre> + +<h4 id="Scripts_de_contenu_multiples">Scripts de contenu multiples</h4> + +<p>Si plusieurs scripts de contenu communiquent en même temps, vous pouvez stocker chaque connexion dans un tableau.</p> + +<ul> +</ul> + +<pre class="brush: js">// background-script.js + +var ports = []; + +function connected(p) { + ports[p.sender.tab.id] = p; + //... +} + +browser.runtime.onConnect.addListener(connected) + +browser.browserAction.onClicked.addListener(function() { + ports.forEach(p => { + p.postMessage({greeting: "clic sur le bouton !"}) + }) +});</pre> + +<ul> +</ul> + +<h2 id="Communiquer_avec_la_page_web">Communiquer avec la page web</h2> + +<p>Bien que les scripts de contenu ne puissent (par défaut) accéder aux objets créés par les scripts de page, ils peuvent cependant communiquer avec les scripts de page en utilisant les API <code><a href="/fr/docs/Web/API/Window/postMessage">window.postMessage</a></code> et <code><a href="/fr/docs/Web/API/EventTarget/addEventListener">window.addEventListener</a></code> du DOM.</p> + +<p>Par exemple :</p> + +<pre class="brush: js">// page-script.js + +var messenger = document.getElementById("from-page-script"); + +messenger.addEventListener("click", messageContentScript); + +function messageContentScript() { + window.postMessage({ + direction: "from-page-script", + message: "Message de la page" + }, "*");</pre> + +<pre class="brush: js">// content-script.js + +window.addEventListener("message", function(event) { + if (event.source == window && + event.data && + event.data.direction == "from-page-script") { + alert("Le script de contenu a reçu ce message : \"" + event.data.message + "\""); + } +});</pre> + +<p>Pour un exemple complet et fonctionnel, <a href="https://mdn.github.io/webextensions-examples/content-script-page-script-messaging.html">visitez la page de démo sur Github</a> et suivez les instructions.</p> + +<div class="warning"> +<p>Notez que vous devez être très prudent lorsque vous interagissez avec du contenu Web non fiable de cette manière. Les extensions sont du code privilégié qui peut avoir de puissantes capacités et les pages Web hostiles peuvent facilement les amener à accéder à ces capacités.</p> + +<p>Pour donner un exemple trivial, supposons que le code du script de contenu qui reçoit le message ressemble à ceci :</p> + +<pre class="brush: js">// content-script.js + +window.addEventListener("message", function(event) { + if (event.source == window && + event.data.direction && + event.data.direction == "from-page-script") { + eval(event.data.message); + } +});</pre> + +<p>Maintenant, le script de page peut exécuter n'importe quel code avec tous les privilèges du script de contenu.</p> +</div> + +<h2 id="Utilisation_de_eval_dans_les_scripts_de_contenu">Utilisation de <code>eval()</code> dans les scripts de contenu</h2> + +<p>Dans Chrome, {{jsxref("Objets_globaux/eval","eval()")}} exécute toujours le code dans le contexte du script de contenu et pas dans le contexte de la page.</p> + +<p>Dans Firefox :</p> + +<ul> + <li>Si vous appelez <code>eval()</code>, le code est exécuté dans le contexte du <strong>script de contenu</strong></li> + <li>Si vous appelez <code>window.eval()</code>, le code est exécute dans le contexte de la <strong>page</strong>.</li> +</ul> + +<p>Par exemple, considérons un script de contenu comme ceci :</p> + +<pre class="brush: js">// content-script.js + +window.eval('window.x = 1;'); +eval('window.y = 2'); + +console.log(`Dans le script de contenu, window.x: ${window.x}`); +console.log(`Dans le script de contenu, window.y: ${window.y}`); + +window.postMessage({ + message: "check" +}, "*");</pre> + +<p>Ce code crée simplement des variables x et y en utilisant <code>window.eval()</code> et <code>eval()</code> puis enregistre leurs valeurs et envoie un message à la page.</p> + +<p>À la réception du message, le script de page enregistre les mêmes variables :</p> + +<pre class="brush: js">window.addEventListener("message", function(event) { + if (event.source === window && event.data && event.data.message === "check") { + console.log(`Dans le script de la page, window.x: ${window.x}`); + console.log(`Dans le script de la page, window.y: ${window.y}`); + } +});</pre> + +<p>Dans Chrome, cela produira le résultat suivant :</p> + +<pre>Dans le script de contenu, window.x: 1 +Dans le script de contenu, window.y: 2 +Dans le script de la page, window.x: undefined +Dans le script de la page, window.y: undefined</pre> + +<p>Dans Firefox, on aura le résultat suivant :</p> + +<pre>Dans le script de contenu, window.x: undefined +Dans le script de contenu, window.y: 2 +Dans le script de la page, window.x: 1 +Dans le script de la page, window.y: undefined</pre> + +<p>La même chose s'applique pour <code><a href="/fr/docs/Web/API/WindowTimers/setTimeout">setTimeout()</a></code>, <code><a href="/fr/docs/Web/API/WindowTimers/setInterval">setInterval()</a></code>, et <code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Function">Function()</a></code>.</p> + +<div class="blockIndicator warning"> +<p><span id="result_box" lang="fr"><span>Lorsque vous exécutez du code dans le contexte de la page, l'avertissement précédent reste nécessaire </span></span>: <span id="result_box" lang="fr"><span>l'environnement de la page est contrôlé par des pages web potentiellement malveillantes qui peuvent redéfinir les objets avec lesquels vous interagissez</span> </span>:</p> + +<pre class="brush: js">// page.js redéfinit console.log + +var original = console.log; + +console.log = function() { + original(true); +} +</pre> + +<pre class="brush: js">// content-script.js appelle la version redéfinie + +window.eval('console.log(false)'); +</pre> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/content_security_policy/index.html b/files/fr/mozilla/add-ons/webextensions/content_security_policy/index.html new file mode 100644 index 0000000000..b6501d5a7a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/content_security_policy/index.html @@ -0,0 +1,96 @@ +--- +title: Content Security Policy +slug: Mozilla/Add-ons/WebExtensions/Content_Security_Policy +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Content_Security_Policy +--- +<div>{{AddonSidebar}}</div> + +<div class="summary"> +<p>Les extensions développées avec les API WebExtension ont une politique de sécurité du contenu (CSP) qui leur est appliquée par défaut. Cela limite les sources à partir desquelles les extensions peuvent charger les ressources provenant d'élément {{HTMLElement("script")}} et {{HTMLElement("object")}} et interdit les pratiques potentiellement dangereuses comme l'utilisation de {{jsxref("Objets_globaux/eval","eval()")}}.</p> +Cet article explique brièvement ce qu'est une CSP, quelle est la politique par défaut, ce que cela signifie pour une extension et comment une extension peut changer la CSP par défaut.</div> + +<p>La <a href="/fr/docs/Web/HTTP/CSP">Politique de sécurité de contenu</a> (ou <em>Content Security Policy</em> en anglais, abrégé en CSP) est un mécanisme permettant d'empêcher les sites Web d'exécuter involontairement du contenu malveillant. Un site web définit une CSP via un en-tête HTTP envoyé par le serveur. Le rôle de la CSP consiste principalement à indiquer les sources légitimes pour les différents types de contenu (tels que les scripts ou les plugins). Par exemple, un site web peut utiliser une CSP pour indiquer que le navigateur ne doit exécuter que du JavaScript provenant du site web lui-même et non d'autres sources. Une CSP peut également ordonner au navigateur d'interdire les pratiques potentiellement dangereuses telles que l'utilisation de {{jsxref("Objets_globaux/eval","eval()")}}.</p> + +<p>Comme les sites web, les extensions peuvent charger du contenu provenant de différentes sources. Ainsi, une popup sera définie comme un document HTML et pourra inclure du code JavaScript et CSS provenant de différentes sources, comme une page web normale :</p> + +<pre class="brush: html"><!DOCTYPE html> + +<html> + <head> + <meta charset="utf-8"> + </head> + <body> + + <!--Du contenu HTML--> + + <!-- + On intègre ici un script provenant d'une source tierce + Voir aussi https://developer.mozilla.org/fr/docs/Web/Security/Subresource_Integrity. + --> + <script> + src="https://code.jquery.com/jquery-2.2.4.js" + integrity="sha256-iT6Q9iMJYuQiMWNd9lDyBUStIq/8PuOW33aOqmvFpqI=" + crossorigin="anonymous"> + </script> + + <!-- On ajoute le script pour la pop-up--> + <script src="popup.js"></script> + </body> + +</html></pre> + +<p>À la différence d'un site web, les extensions accèdent à certains API privilégiées supplémentaires. Par conséquent, si elles sont compromises par du code malveillant, les risques sont plus grands. Pour cette raison :</p> + +<ul> + <li>Une politique de sécurité du contenu par défaut assez stricte est appliquée aux extensions. Voir la <a href="#Default">politique de sécurité du contenu par défaut</a>.</li> + <li>L'auteur de l'extension peut modifier la stratégie par défaut à l'aide de la clé <code>content_security_policy</code> du fichier de manifeste (<code>manifest.json</code>) mais il existe certaines restrictions sur les règles autorisées. Voir <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_security_policy">content_security_policy</a></code>.</li> +</ul> + +<h2 id="Politique_de_sécurité_du_contenu_par_défaut"><a id="Default" name="Default">Politique de sécurité du contenu par défaut</a></h2> + +<p>La politique de sécurité du contenu par défaut pour les extensions est la suivante :</p> + +<pre>"script-src 'self'; object-src 'self';"</pre> + +<p>Celle-ci sera appliquée à toute extension qui n'a pas explicitement défini sa propre politique via la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_security_policy">content_security_policy</a></code> du manifeste. Cela a les conséquences suivantes :</p> + +<ul> + <li><a href="#script_ressources">Seules les ressources <code><script></code> et <code><object></code> locales à l'extension peuvent être chargées</a></li> + <li><a href="#eval">L'extension n'est pas autorisée à évaluer les chaines en JavaScript.</a></li> + <li><a href="/fr/Add-ons/WebExtensions/Content_Security_Policy#Inline_JavaScript">Le code JavaScript « <em>inline</em> » (écrit au sein du document HTML) n'est pas éxécuté.</a></li> +</ul> + +<h3 id="Emplacement_des_ressources_pour_<script>_et_<objet>"><a id="script_ressources" name="script_ressources">Emplacement des ressources pour <code><script></code> et <code><objet></code></a></h3> + +<p>Avec la CSP par défaut, les éléments {{HTMLElement("script")}} et {{HTMLElement("object")}} peuvent uniquement charger des ressources qui sont locales à l'extension. Aussi, si on considère cette ligne dans un document HTML d'une extension :</p> + +<pre class="brush: html"> <script src="https://code.jquery.com/jquery-2.2.4.js"></script></pre> + +<p>La ressource jQuery demandée ne sera pas récupérée et la récupération échouera silencieusement. Deux méthodes permettent de résoudre ce problème :</p> + +<ul> + <li>Téléchargez la ressource cible puis empaquetez-la dans votre extension et faites ensuite référence à cette version locale.</li> + <li>Utilisez la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_security_policy">content_security_policy</a></code> afin d'autoriser l'origine distante dont vous avez besoin.</li> +</ul> + +<h3 id="eval_et_autres_équivalents"><a id="eval" name="eval"><code>eval()</code> et autres équivalents</a></h3> + +<p>Avec la CSP par défaut, il n'est pas possible d'évaluer les chaînes de caractères représentant du code JavaScript. Cela signifie que les formes suivantes ne sont pas autorisés :</p> + +<pre class="brush: js">eval("console.log('un résultat');");</pre> + +<pre class="brush: js">window.setTimeout("alert('Coucou monde!');", 500);</pre> + +<pre class="brush: js">var f = new Function("console.log('toto');");</pre> + +<h3 id="JavaScript_écrit_dans_le_HTML_inline"><a id="inline_js" name="inline_js">JavaScript écrit dans le HTML (<em>inline</em>)</a></h3> + +<p>Avec la CSP par défaut, le code JavaScript écrit au sein d'un document HTML n'est pas exécuté. Cela concerne le JavaScript écrit dans les balises <code><script></code> ainsi que les gestionnaires d'évènement intégrés dans les attributs. Autrement dit, les formes suivantes ne sont pas autorisées :</p> + +<pre class="brush: html"><script>console.log("toto");</script></pre> + +<pre class="brush: html"><div onclick="console.log('clic')">Cliquez sur ce texte !</div></pre> + +<p>Si votre document HTML utilise une forme comme <code><body onload="main()"></code>, privilégiez plutôt l'ajout d'un gestionnaire d'évènement sur <code><a href="/fr/docs/Web/Events/DOMContentLoaded">DOMContentLoaded</a></code> ou <code><a href="/fr/docs/Web/Events/load">load</a></code>.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/debogage_(avant_firefox_50)/index.html b/files/fr/mozilla/add-ons/webextensions/debogage_(avant_firefox_50)/index.html new file mode 100644 index 0000000000..ecdc2a6849 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/debogage_(avant_firefox_50)/index.html @@ -0,0 +1,236 @@ +--- +title: Débogage (avant Firefox 50) +slug: Mozilla/Add-ons/WebExtensions/Debogage_(avant_Firefox_50) +tags: + - Debugging + - Firefox + - Guide + - Mozilla + - Obsolete + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Debugging_(before_Firefox_50) +--- +<div>{{AddonSidebar}}</div> + +<div class="blockIndicator note"> +<p>Cet article explique comment vous pouvez déboguer des extensions à l'aide des API WebExtension sur des versions de Firefox antérieures à la version 50.</p> + +<p>Si vous utilisez Firefox 50 ou version ultérieure, consultez l'<a href="/fr/Add-ons/WebExtensions/Debugging">article principal sur les extensions de débogage</a>.</p> +</div> + +<p>Cet article explique comment utiliser les outils de développement Firefox intégrés pour déboguer les extensions développées avec les API WebExtension. Si vous essayez de déboguer un module développé avec le Kit de développement logiciel complémentaire, consultez le guide du <a href="/fr/Add-ons/Add-on_Debugger">débogueur de module complémentaire</a>.</p> + +<ul> +</ul> + +<h2 id="Un_exemple_simple_notify-link-clicks-i18n">Un exemple simple : notify-link-clicks-i18n</h2> + +<p>Pour montrer comment connecter les outils de débogage, nous utiliserons une simple extension d'exemple appelée "notify-link-clicks-i18n". Le code est dans <a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">dépôt d'exemples d'extensions sur GitHub</a>.</p> + +<p>L'extension se compose de :</p> + +<ul> + <li>un script de fond, "background-script.js"</li> + <li>un script de contenu, "content-script.js", qui est injecté dans toutes les pages.</li> +</ul> + +<p>Le script de contenu écoute les clics sur les liens dans la page : lorsqu'un clic sur un lien se produit, le script de contenu envoie un message au script d'arrière-plan contenant la référence du lien.</p> + +<p>Lorsque le script d'arrière-plan reçoit le message, il affiche une notification contenant la href.</p> + +<p>Voici "content-script.js":</p> + +<pre class="brush: js">/* +If the click was on a link, send a message to the background page. +The message contains the link's URL. +*/ +function notifyExtension(e) { + var target = e.target; + while ((target.tagName != "A" || !target.href) && target.parentNode) { + target = target.parentNode; + } + if (target.tagName != "A") + return; + + console.log("content script sending message"); + chrome.runtime.sendMessage({"url": target.href}); +} + +/* +Add notifyExtension() as a listener to click events. +*/ +window.addEventListener("click", notifyExtension); +</pre> + +<p>Voici "background-script.js":</p> + +<pre class="brush: js">/* +Log that we received the message. +Then display a notification. The notification contains the URL, +which we read from the message. +*/ +function notify(message) { + console.log("background script received message"); + var title = chrome.i18n.getMessage("notificationTitle"); + var content = chrome.i18n.getMessage("notificationContent", message.url); + chrome.notifications.create({ + "type": "basic", + "iconUrl": chrome.extension.getURL("icons/link-48.png"), + "title": title, + "message": content + }); +} + +/* +Assign `notify()` as a listener to messages from the content script. +*/ +chrome.runtime.onMessage.addListener(notify); +</pre> + +<p>Si vous voulez suivre, clonez le référentiel <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a>, puis <a href="/fr/Add-ons/WebExtensions/Packaging_and_installation">package et installez</a> "notify-link-clicks-i18n".</p> + +<h2 id="La_boite_à_outils_du_navigateur">La boite à outils du navigateur</h2> + +<p>Nous utiliserons la boîte à outils du navigateur pour déboguer l'extension.</p> + +<h3 id="Conditions_préalables">Conditions préalables</h3> + +<p>Avant de pouvoir utiliser la boîte à outils du navigateur, vous devez être configuré.</p> + +<ul> + <li>ouvrir les outils de développement Firefox</li> + <li>ouvrir les <a href="/fr/docs/Tools/Settings">paramètres</a> des outils</li> + <li>sous Paramètres avancés, assurez-vous que les deux paramètres suivants sont vérifiés : + <ul> + <li><em>Activer le chrome du navigateur et les boîtes à outils de débogage supplémentaires</em></li> + <li><em>Activer le débogage à distance</em></li> + </ul> + </li> +</ul> + +<p>{{EmbedYouTube("LJAM2vXJ790")}}</p> + +<h3 id="Ouverture_de_la_boîte_à_outils_du_navigateur">Ouverture de la boîte à outils du navigateur</h3> + +<p>Ensuite, nous ouvrirons la boîte à outils du navigateur..</p> + +<ul> + <li>ouvrez le menu Web Developer dans Firefox, et sélectionnez "Browser Toolbox" (note : <em>pas</em> "Browser Console").</li> + <li>une boîte de dialogue d'avertissement s'affiche : cliquez sur OK.</li> +</ul> + +<p>La boîte à outils du navigateur s'ouvrira alors dans une nouvelle fenêtre. La fenêtre principale de Firefox passera au premier plan, vous devrez donc cliquer sur la boîte à outils du navigateur pour la ramener devant vous :</p> + +<p>{{EmbedYouTube("fZ492zAAy3o")}}</p> + +<p>Dans Firefox, une "Toolbox" est le nom d'une fenêtre séparée contenant un ensemble d'outils dans une interface à onglets, comme ceci :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/11873/browser-toolbox.png" style="display: block; height: 458px; margin-left: auto; margin-right: auto; width: 900px;">La boîte à outils ci-dessus contient cinq outils, que vous pouvez commuter entre les onglets en haut de la fenêtre : "Inspecteur", "Console", "Debugger", "Style Editor" et "Scratchpad". Nous n'utiliserons que deux de ces outils : "Console" et "Debugger".</p> + +<h3 id="Affichage_de_la_sortie_du_journal">Affichage de la sortie du journal</h3> + +<p>Nous pouvons utiliser la console pour voir la sortie des journaux : Cela inclus les messages de :</p> + +<ul> + <li>scripts d'arrière plan</li> + <li>scripts s'exécutant dans des popups</li> + <li>les scripts de contenu.</li> +</ul> + +<p>Il inclut les messages de vos journaux de code à l'aide de l'<a href="/fr/docs/Web/API/Console">API de console</a> que les messages d'erreur enregistrés par le moteur JavaScript lors de l'exécution de votre code.</p> + +<p>Essayons avec l'exemple ci-dessus : sélectionnez l'onglet Console dans la boîte à outils du navigateur, ouvrez une page Web et cliquez sur un lien pour voir les messages enregistrés à partir du script de contenu et du script d'arrière-plan :</p> + +<p>{{EmbedYouTube("Qpx0n8gP3Qw")}}</p> + +<p>Un problème ici est que la console vous montre les messages de l'ensemble du navigateur, donc il peut y avoir beaucoup de bruit. Lisez <a href="/fr/docs/Tools/Web_Console/Console_messages#Filtering_and_searching">comment filtrer les messages de journal</a> pour obtenir de l'aide à ce sujet.</p> + +<h3 id="Débogage_JavaScript">Débogage JavaScript</h3> + +<p>Avec la Toolbox du navigateur, vous pouvez utiliser le débogueur JavaScript pour définir des points d'arrêt dans les scripts d'arrière-plan et les scripts s'exécutant dans le navigateur ou les fenêtres contextuelles d'action de page.</p> + +<p>Les scripts en arrière-plan sont toujours disponibles dans le débogueur si l'extension est installée et activée. Les scripts popup ne deviennent visibles que lorsque le popup est ouvert. Si vous avez besoin d'accéder aux scripts popup dès qu'ils se chargent, essayez d'ajouter un <code><a href="/fr/docs/Web/JavaScript/Reference/Statements/debugger">debogueur</a></code> ; instruction au début du script.</p> + +<p>Pour utiliser le débogueur JavaScript, sélectionnez l'onglet Débogueur dans la boîte à outils du navigateur. Le travail suivant est donc de trouver le code de votre extension : pour ce faire <a href="/fr/docs/Tools/Debugger/How_to/Search_and_filter">cliquez dans la boite de recherche et tapez le nom de la source</a>.</p> + +<p>Une fois que vous avez trouvé votre source, vous pouvez définir des points d'arrêt, passer en revue le code et faire <a href="/fr/docs/Tools/Debugger">tout ce que vous vous attendez à pouvoir faire dans un débogueur</a>.</p> + +<p>{{EmbedYouTube("3edeJiG38ZA")}}</p> + +<h3 id="Interpréteur_en_ligne_de_commande_JavaScript">Interpréteur en ligne de commande JavaScript</h3> + +<p>La console comprend un <a href="/fr/docs/Tools/Web_Console/The_command_line_interpreter">interpréteur de ligne de commande</a> que vous pouvez utiliser pour interroger et manipuler l'état d'un programme en cours d'exécution. Cette fonctionnalité est couramment utilisée lorsque la console est attachée à une page Web, mais elle est généralement difficile à utiliser avec la Toolbox du navigateur, parce que la portée de cette console est le navigateur entier plutôt que l'extension spécifique que vous essayez de déboguer.</p> + +<p>Cependant, il y a un truc qui peut vous aider : pendant que le débogueur soit mis en pause à un point d'arrêt, la portée de la Console est la portée au point du programme dans lequel le débogueur est mis en pause. Ainsi, si vous avez atteint un point d'arrêt dans le code de votre extension, vous pouvez interagir directement avec votre extension : vous pouvez appeler des fonctions d'extension, réassigner des valeurs de variables, etc.</p> + +<p>Cette fonction est particulièrement utile en combinaison avec une autre fonction : la <a href="/fr/docs/Tools/Web_Console/Split_console">console split</a>. Cela vous permet de diviser la boîte à outils en deux : une moitié contient la console et l'autre moitié contient un outil différent (dans ce cas, le débogueur JavaScript) :</p> + +<p>{{EmbedYouTube("xprf58qOtLY")}}</p> + +<h3 id="Débogage_des_scripts_de_contenus">Débogage des scripts de contenus</h3> + +<p>Une grande limitation de la Browser Toolbox est la suivante : si vous développez avec <a href="/fr/docs/Mozilla/Firefox/Multiprocess_Firefox">firefox multiprocessus</a>, vous ne pouvez pas utiliser la Toolbox du navigateur pour attacher le débogueur JavaScript aux scripts de contenu.</p> + +<p>Dans Firefox multiprocessus, le navigateur est divisé en (au moins) deux processus : un pour exécuter l'interface utilisateur et le code système du navigateur, et un (ou plusieurs) processus de contenu, qui exécutent des scripts chargés à partir de pages Web. La ToolBox du navigateur s'attache au premier de ces processus : mais les scripts de contenu s'exécutent dans les processus de contenu, de sorte qu'ils n'apparaissent pas dans la liste des sources de la ToolBox du navigateur.</p> + +<p>Pour déboguer les scripts de contenu dans Firefox multiprocessus, vous devrez utiliser le contenu de la boite à outils du navigateur. Le contenu de la boite à outils du navigateur est tout comme la Toolbox de navigateur, sauf qu'elle attache les outils de développement au processus de contenu du navigateur, de sorte que les scripts de contenu sont visibles..</p> + +<p>Notez que les scripts de contenu n'apparaîtront pas dans la liste des sources jusqu'à ce qu'ils soient chargés. Si vous avez besoin d'y accéder dès qu'ils se chargent, essayez d'ajouter un <code><a href="/fr/docs/Web/JavaScript/Reference/Statements/debugger">debuggueur</a></code> ; instruction au début de votre script.</p> + +<div class="blockIndicator note"> +<p>Note : vous n'avez besoin et ne pouvez accéder à la Browser Content Toolbox que si vous développez contre Firefox multiprocessus.</p> +</div> + +<div class="blockIndicator warning"> +<p>L'activation du débogage des travailleurs dans les Options de la boîte à outils désactivera le débogage de la boîte à outils du contenu du navigateur, le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1236892">Bug 1236892</a> devrait régler ce problème..</p> +</div> + +<p>{{EmbedYouTube("xAt3Q0PgJP4")}}</p> + +<h3 id="Débogage_des_fenêtres_contextuelles">Débogage des fenêtres contextuelles</h3> + +<div class="blockIndicator geckoVersionNote">Nouveau dans Firefox 47</div> + +<p>A partir de Firefox 47, vous pouvez utiliser la Browser Toolbox pour déboguer le contenu des popups. Il s'agit d'un processus en trois étapes :</p> + +<ul> + <li>désactiver l'autohide pour les panneaux</li> + <li>ouvrir la fenêtre contextuelle</li> + <li>sélectionner le document contenant le popup</li> +</ul> + +<p>{{EmbedYouTube("EEU4NeAS1s4")}}</p> + +<h4 id="Désactiver_l'autohide">Désactiver l'autohide</h4> + +<p>Le problème avec les panneaux de débogage en général est qu'ils sont cachés lorsque vous cliquez en dehors d'eux. La première étape consiste donc à désactiver ce comportement. Dans la boîte à outils du navigateur, cliquez sur l'icône qui ressemble à quatre petits carrés :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/12622/disable-autohide.png" style="display: block; height: 417px; margin-left: auto; margin-right: auto; width: 877px;">Maintenant, lorsque vous ouvrez un panneau dans Firefox, il restera ouvert jusqu'à ce que vous appuyiez sur Escape.</p> + +<div class="blockIndicator note"> +<p>Notez que ce changement s'applique aux <a href="/fr/docs/Tools/Browser_Toolbox#Debugging_popups">fenêtre contextuelles intégrés au navigateur</a>, cpùùe le menu Hamburger (<img alt="" src="https://mdn.mozillademos.org/files/12712/hamburger.png" style="height: 20px; width: 22px;">), ainsi qu'aux fenêtres contextuelles d'extension.</p> + +<p>Notez également que le changement est persistant, même si le navigateur redémarre. Nous travaillons à résoudre ce problème dans le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1251658">bug 1251658</a>, mais d'ici là, vous préférerez peut-être réactiver la fonction Autohide en cliquant à nouveau sur le bouton avant de fermer la boîte à outils du navigateur.</p> + +<p>En interne, ce bouton bascule juste la préférence <code>ui.popup.disable_autohide</code> que vous pouvez basculer manuellement en utilisant using about:config.</p> +</div> + +<h4 id="Ouvrir_la_fenêtre_contextuelle">Ouvrir la fenêtre contextuelle</h4> + +<p>Ensuite, ouvrez le popup. Vous pouvez ensuite revenir à la boîte à outils du navigateur, et le panneau restera ouvert.</p> + +<h4 id="Sélectionner_le_cadre_de_la_fenêtre_popup">Sélectionner le cadre de la fenêtre popup</h4> + +<p>Le popup est chargé dans son propre cadre. Ensuite, sélectionnez le document de votre popup à l'aide du <a href="/fr/docs/Tools/Browser_Toolbox#Targeting_a_document">bouton sélection de cadre </a>boîte à outils du navigateur :<img alt="" src="https://mdn.mozillademos.org/files/12624/frame-selection.png" style="display: block; height: 417px; margin-left: auto; margin-right: auto; width: 877px;">Le document s'appellera quelque chose comme</p> + +<pre>moz-extension://<some-uuid>/path/to/your-popup.html</pre> + +<p>{{EmbedYouTube("/9jdHDCKIN-U")}}</p> + +<p>Maintenant, le champ d'application de la boîte à outils est le popup. Dans l'Inspecteur, vous pouvez examiner et modifier le HTML et le CSS du popup. Dans le Debugger, vous pouvez rechercher tous les scripts chargés dans le popup et définir des points d'arrêt.</p> + +<h2 id="Qu'en_est-il_de_l'Add-on_Deboguer">Qu'en est-il de l'Add-on Deboguer ?</h2> + +<p>Le <a href="/fr/Add-ons/Add-on_Debugger">deboguer des modules complémentaires</a> est destiné à être l'évanir du débogage des add-on dans Firefox.</p> + +<p>Son grand avantage par rapport à la Browser Toolbox est qu'il ne montre que les fichiers de votre extension, donc il est beaucoup plus facile de trouver votre code. Cependant, pour le moment, vous ne pouvez pas voir les messages de console de votre extension dans l'Add-on Debugger, donc la Browser Toolbox est plus fonctionnelle.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/demander_les_bonnes_permissions/index.html b/files/fr/mozilla/add-ons/webextensions/demander_les_bonnes_permissions/index.html new file mode 100644 index 0000000000..e0c9a4ef04 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/demander_les_bonnes_permissions/index.html @@ -0,0 +1,367 @@ +--- +title: Demander les bonnes permissions +slug: Mozilla/Add-ons/WebExtensions/demander_les_bonnes_permissions +tags: + - Add-ons + - Comment + - Débutant + - Extensions + - Hox-to + - Intermédiaire + - Permissions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Request_the_right_permissions +--- +<p>{{AddonSidebar}}</p> + +<p>Ou comment éviter les permissions décourageant les utilisateurs d'installer vos extensions.</p> + +<h2 id="Introduction">Introduction</h2> + +<p>Avec l'introduction de Firefox Quantum (57), la gestion des permissions lors de l'installation d'une extension a changé. Auparavant, les permissions étaient accordées silencieusement aux extensions. Cependant, les utilisateurs sont maintenant informés des permissions demandées par une extension lors de son installation, avec un message comme celui-ci:</p> + +<p><img alt="Example of the permissions messages from the Gesturefy extension" src="https://mdn.mozillademos.org/files/15736/General_permissions_message_example.png" style="height: 287px; width: 411px;"></p> + +<p>En outre, si une mise à jour d'extension nécessite des permissions supplémentaires, l'utilisateur est invité à approuver les permissions avant l'installation de la version mise à jour :</p> + +<p><img alt="Example of the message displayed when an extension update requests additional permissions" src="https://mdn.mozillademos.org/files/15737/Permissions_update.png" style="height: 336px; width: 357px;"></p> + +<p>Si l'utilisateur choisit de ne pas approuver les permissions et annule la mise à jour, la version précédente reste installée et disponible.</p> + +<p>L'affichage des messages de permission améliore le modèle de sécurité de l'extension en sensibilisant les utilisateurs à l'impact potentiel de l'installation d'une extension. Il met également Firefox en ligne avec les autres principaux navigateurs, où les utilisateurs ont été informés des demandes de permission des extensions pour un certain temps.</p> + +<p>Étant donné que les utilisateurs de Firefox n'ont pas vu les demandes de permissions au cours de l'installation auparavant, cette modification pourrait décourager certains d'entre eux d'installer votre extension, car les messages pourraient suggérer qu'elle fait quelque chose d'effrayant. Nous fournissons aux utilisateurs avec une <a href="https://support.mozilla.org/kb/permission-request-messages-explained">explication de ces messages de permissions</a> et des conseils sur <a href="https://support.mozilla.org/kb/tips-assessing-safety-extension">comment juger s'ils sont appropriés</a>. Cependant, il y a plusieurs choses que vous pouvez faire pour réduire la probabilité que les utilisateurs abandonnent l'installation de votre extension à cause de ces messages :</p> + +<ul> + <li>Assurez-vous que vous ne demandez pas de permissions inutiles.</li> + <li>Demander des permissions à l'exécution, ce qui vous permet de demander les permissionss en contexte et de proposer une option de repli si l'utilisateur ne les accorde pas.</li> + <li>Décrivez pourquoi votre extension demande ses permissions dans sa description AMO.</li> +</ul> + +<p>Conseil: Les avertissements d'autorisation ne sont pas émis <a href="/fr/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">lorsque vous chargez une extension décompressée</a>. Pour plus d'informations sur l'affichage du flux d'autorisations d'exécution standard, voir <a href="/fr/Add-ons/WebExtensions/Test_permission_requests">Test de demandes de permission</a>.</p> + +<h2 id="Permissions_conseillées">Permissions conseillées</h2> + +<p>Toutes les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permissions</a> ne donnent pas de conseils à l'utilisateur. Les permissions qui déclenchent l'affichage d'un message et les messages qu'ils déclenchent sont :</p> + +<table class="standard-table"> + <tbody> + <tr> + <td><strong>Permission</strong></td> + <td><strong>Permissions messages</strong></td> + </tr> + <tr> + <td> + <p>Host permissions</p> + </td> + <td> + <p style="margin-bottom: 0px;">Accédez à vos données pour tous les sites Web<br> + Accédez à vos données pour les sites du domaine[named].<br> + Accédez à vos données dans # d'autres domaines<br> + Accédez à vos données pour[site nommé].<br> + Accédez à vos données sur # autres sites".</p> + </td> + </tr> + <tr> + <td>API permissions:</td> + <td></td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>bookmarks</code></li> + </ul> + </td> + <td style="padding: 0px, 0px;">Lire et modifier les marques pages</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li style="margin-bottom: 0px;"><code>browserSettings</code></li> + </ul> + </td> + <td style="margin-bottom: 0px; padding: 0px, 0px;">Lire et modifier les paramètres du navigateur</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li style="margin-bottom: 0px;"><code>browsingData</code></li> + </ul> + </td> + <td style="margin-bottom: 0px; padding: 0px, 0px;">Effacer l'historique de navigation récent, les cookies et les données associées.</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>downloads</code></li> + </ul> + </td> + <td>Télécharger des fichiers et lire et modifier l'historique des téléchargements du navigateur.</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>downloads.open</code></li> + </ul> + </td> + <td style="padding: 0px, 0px;">Ouvrir les fichiers téléchargés sur votre ordinateur</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>find</code></li> + </ul> + </td> + <td style="padding: 0px, 0px;">Lire le texte de tous les onglets ouverts</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>geolocation</code></li> + </ul> + </td> + <td style="padding: 0px, 0px;">Accédez à votre localisation</td> + </tr> + <tr> + <td> + <ul style="margin-bottom: 0px;"> + <li><code>history</code></li> + </ul> + </td> + <td style="padding: 0px, 0px;">Historique de navigation</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>management</code></li> + </ul> + </td> + <td>Surveiller l'utilisation des extensions et gérer les thèmes</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>nativeMessaging</code></li> + </ul> + </td> + <td>Échanger des messages avec des programmes autres que Firefox</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>notifications</code></li> + </ul> + </td> + <td style="padding: 0px, 0px;">Afficher les notifications qui vous sont destinées</td> + </tr> + <tr> + <td> + <ul style="margin-bottom: 0px;"> + <li><code>pkcs11</code></li> + </ul> + </td> + <td>Fournir des services d'authentification cryptographique</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>privacy</code></li> + </ul> + </td> + <td style="padding: 0px, 0px;">Lire et modifier les paramètres de confidentialité</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>proxy</code></li> + </ul> + </td> + <td style="padding: 0px, 0px;">Contrôler les paramètres de proxy du navigateur</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>sessions</code></li> + </ul> + </td> + <td style="padding: 0px, 0px;">Accéder aux onglets récemment fermés</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>tabs</code></li> + </ul> + </td> + <td style="padding: 0px, 0px;">Onglets du navigateur d'accès</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>topSites</code></li> + </ul> + </td> + <td style="padding: 0px, 0px;">Historique de navigation</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>webNavigation</code></li> + </ul> + </td> + <td style="padding: 0px, 0px;">Accéder à l'activité du navigateur pendant la navigation</td> + </tr> + <tr> + <td>Clipboard access</td> + <td></td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>clipboardWrite</code></li> + </ul> + </td> + <td style="padding: 0px, 0px;">Saisie des données dans le presse-papiers</td> + </tr> + <tr> + <td style="padding: 0px, 0px;"> + <ul style="margin-bottom: 0px;"> + <li><code>clipboardRead</code></li> + </ul> + </td> + <td>Obtenir les données du presse-papiers</td> + </tr> + <tr> + <td><code>unlimitedStorage</code></td> + <td>Stocker un nombre illimité de données côté client</td> + </tr> + <tr> + <td>The manifest key <a href="/fr/Add-ons/WebExtensions/manifest.json/devtools_page">"devtools_page"</a></td> + <td>Étendre les outils de développement pour accéder à vos données dans des onglets ouverts.</td> + </tr> + </tbody> +</table> + +<div class="blockIndicator note"> + + +<p>Les permissions qui affichent les messages et les messages qu'ils affichent peuvent être différentes dans d'autres navigateurs. Pour plus d'informations sur l'affichage du message d'autorisation dans Chrome, voir <a href="https://developer.chrome.com/apps/permission_warnings#view_warnings" rel="noreferrer nofollow">Affichage des avertissements.</a></p> + + +</div> + +<p>Les permissions suivantes ne sont pas alertées aux utilisateurs :</p> + +<ul> + <li>API permissions + <ul> + <li><code>alarms</code></li> + <li><code>contextMenus</code></li> + <li><code>contextualIdentities</code></li> + <li><code>cookies</code></li> + <li><code>identity</code></li> + <li><code>idle</code></li> + <li><code>menus</code></li> + <li><code>storage</code></li> + <li><code>theme</code></li> + <li><code>webRequest</code></li> + <li><code>webRequestBlocking</code></li> + </ul> + </li> + <li><code>activeTab</code></li> +</ul> + +<h2 id="Évitez_les_permissions_inutiles">Évitez les permissions inutiles</h2> + +<p>Cette section examine les situations dans lesquelles vous pourriez demander plus de permissions que vos besoins d'extension et ce que vous devez faire à leur sujet.</p> + +<h3 id="Ne_demandez_que_les_permissions_que_votre_extension_utilise">Ne demandez que les permissions que votre extension utilise</h3> + +<p>Cela peut sembler évident, mais si vous créez une extension en utilisant un exemple précédent en tant que modèle ou si vous supprimez une fonctionnalité au cours du développement ou du test, vous demandez peut-être des permissions dont votre extension n'a pas besoin. En adressant ceci est un cas de faire une vérification manuelle de votre code contre les permissions (<code>"permissions"</code> et <a href="/fr/Add-ons/WebExtensions/manifest.json/optional_permissions">"optional_permissions"</a>) que vous demandez dans le manifest.json de l'extension.</p> + +<h3 id="Utilisez_activeTab_plutôt_que_tabs_et_permissions_d'hôte">Utilisez "activeTab" plutôt que "tabs" et permissions d'hôte</h3> + +<p>Prenez une extension que vous développez pour aider les utilisateurs mal-voyants. À la demande de l'utilisateur, vous allez rechercher et mettre à jour CSS dans une page Web pour remplacer les couleurs que l'utilisateur peut avoir du mal à distinguer avec des couleurs sûres. Vous avez évidemment besoin d'accéder et de mettre à jour CSS sur chaque page que votre utilisateur visite. Vous pouvez le faire en demandant la permission <code>"tabs"</code> et la permission d'hôte <code>"<all_urls>"</code>.</p> + +<pre class="brush: json">"permissions": [ + "<all_urls>", + "tabs" +]</pre> + +<p>Demander ces permissions, permet à l'utilisateur d'obtenir ce conseil :</p> + +<p><img alt='Example of the "Access your data for all websites" permission message' src="https://mdn.mozillademos.org/files/15738/All_Websites_permissions.png" style="height: 142px; width: 357px;"></p> + +<p>L'alternative est de demander <code>"activeTab"</code>. Cette permission fournit à votre extension les mêmes fonctionnalités mais uniquement pour l'onglet actif et uniquement lorsqu'elle est exécutée à partir de l'interface utilisateur de l'extension (depuis un bouton de barre d'outils, un bouton de barre de navigation, un menu contextuel ou une touche de raccourci).</p> + +<p>Fait important, <code>"activeTab"</code> n'entraîne pas l'affichage d'un message de permission lors de l'installation de l'extension.</p> + +<h3 id="Evitez_la_permission_d'hôte_<all_urls>_si_vous_pouvez">Evitez la permission d'hôte "<all_urls>" si vous pouvez</h3> + +<p>Comme indiqué dans l'exemple précédent, demander la permission d'hôte <code>"<all_urls>"</code> entraîne le message de demande d'accès Access à vos données pour tous les sites Webs. Si votre extension est conçue pour fonctionner avec un ou plusieurs sites Web ou domaines, affinez la requête. Lors de l'installation, les utilisateurs recevront des informations sur les quatre premiers sites Web ou les domaines auxquels vous demandez l'accès.</p> + +<p><img alt="Example of the permissions message when host permission for four websites as requested" src="https://mdn.mozillademos.org/files/15739/Permissions_host_four.png"></p> + +<p>Si vous demandez l'accès à plus de quatre sites Web ou domaines, le message liste les trois premiers et indique le nombre d'autres demandes.</p> + +<p><img alt="Example of the permissions message when hosts permission for 5 or more website is requested" src="https://mdn.mozillademos.org/files/15740/Permissions_host_four_plus.png" style="height: 194px; width: 357px;"></p> + +<h3 id="Evitez_la_permission_unlimitedStorage">Evitez la permission "unlimitedStorage"</h3> + +<p>Ne demandez la permission <code>"unlimitedStorage"</code> que si vous estimez que le stockage de données local de votre extension dépasse 5MB s'il ne dépasse pas ce montant, ne le demandez pas.</p> + +<p><img alt="Example of the permission message when requesting access to unlimited client-side data storage" src="https://mdn.mozillademos.org/files/15741/Permissions_unlimiteddata.png" style="height: 143px; width: 357px;"></p> + +<p>Remarque: Firefox ne limite pas actuellement la taille du stockage local, bien qu'il demande aux utilisateurs d'approuver cette demande de permission si vous le faites. Firefox peut ajouter une restriction à l'avenir. Si cela se produit, il est peu probable que la limite soit inférieure à la restriction actuelle de 5 Mo de Chrome.</p> + +<h2 id="Demander_les_permissions_à_éxécuter">Demander les permissions à éxécuter</h2> + +<p>Les utilisateurs peuvent ne pas comprendre le contexte des permissions demandées lors de l'installation. L'approche alternative consiste à demander les permissions au besoin, à l'aide de l'<a href="/fr/Add-ons/WebExtensions/API/permissions">API permissions</a>, et à fournir ainsi un contexte à l'utilisateur.</p> + +<p>Un scénario typique pour utiliser cette approche est la permission <code>"geoLocation"</code>. Supposons que vous avez écrit une extension de prise de notes qui inclut la possibilité d'ajouter une mini-carte de l'emplacement des preneurs de notes. Demander l'accès à l'emplacement pendant l'installation peut laisser l'utilisateur incertain de la raison pour laquelle l'extension doit accéder à l'emplacement, de sorte qu'ils ne l'installeront peut-être pas. Toutefois, si la permission d'utiliser l'emplacement est demandée lorsque l'utilisateur tente d'abord d'ajouter une minicarte, il comprend mieux pourquoi la permission est nécessaire et a plus de chances de l'accorder. Et s'ils choisissent de ne pas accorder la permission, l'extension peut offrir un retour en arrière gracieux — dans cet exemple, sans ajouter la minicarte — mais le résultat important de cette approche est que l'utilisateur a installé et utilisé votre extension.</p> + +<p><img alt="Example of an additional or runtime permission request message" src="https://mdn.mozillademos.org/files/15742/Permissions_optional_request.png" style="height: 155px; width: 357px;"></p> + +<p>Faire une demande de permission d'exécution est simple. Incluez les permissions que vous souhaitez demander sous la clé manifest.json <code>"<a href="/fr/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a>"</code>. Passez ensuite les autorisations que vous souhaitez accorder à {{WebExtAPIRef("permissions.request")}}, qui invite l'utilisateur à accorder les permissions. true est renvoyé si l'utilisateur accorde la requête, false si ce n'est pas le cas.</p> + +<p>Vous ne pouvez pas demander toutes les permissions disponibles aux <code>"permissions"</code> en utilisant des permissions facultatives. Vous ne pouvez pas demander les permissions d'API suivantes:</p> + +<ul> + <li><code>alarms</code></li> + <li><code>background</code></li> + <li><code>browsingData</code></li> + <li><code>contentSettings</code></li> + <li><code>contextualIdentities</code></li> + <li><code>debugger</code></li> + <li><code>downloads</code></li> + <li><code>downloads.open</code></li> + <li><code>find</code></li> + <li><code>identity</code></li> + <li><code>menus</code></li> + <li><code>nativeMessaging</code></li> + <li><code>pageCapture </code></li> + <li><code>pkcs11</code></li> + <li><code>privacy</code></li> + <li><code>proxy</code></li> + <li><code>sessions</code></li> + <li><code>storage</code></li> + <li><code>theme</code></li> +</ul> + +<p>Il y a un certain nombre de choses à noter :</p> + +<ul> + <li>Vous pouvez uniquement demander des permissions dans le gestionnaire pour une action utilisateur, par exemple à partir d'un bouton de barre d'outils (action du navigateur), d'un élément de menu contextuel ou similaire.</li> + <li>Si vous demandez plusieurs permissions à la fois, elles sont toutes accordées ou toutes refusées, l'utilisateur ne peut pas choisir d'en accorder certaines et pas d'autres</li> +</ul> + +<p>Pour plus d'informations sur les permissions facultatives, consultez <a href="/fr/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a> et l'exemple <a href="https://github.com/mdn/webextensions-examples/tree/master/permissions">permissions</a>.</p> + +<h2 id="Ajouter_des_informations_sur_les_permissions_à_vos_extensions_page_AMO">Ajouter des informations sur les permissions à vos extensions page AMO</h2> + +<p>Les messages de permissions sont plus susceptibles d'empêcher un utilisateur d'installer votre extension, car ils ne comprennent pas pourquoi les permissions sont demandées. Bien que l'utilisateur puisse obtenir des conseils généraux sur l'impact d'une permission, il peut ne pas être suffisant pour lui de comprendre pourquoi une permission est demandée dans votre extension.</p> + +<p>Pour résoudre ce problème, fournissez des informations dans la description AMO de votre extension qui explique les permissions demandées par votre extension et pourquoi.</p> + +<p>Un bon exemple de cette approche est <a href="https://addons.mozilla.org/en-US/firefox/addon/gesturefy/">Gesturefy</a>, qui offre aux utilisateurs les conseils suivants :</p> + +<p><img alt="Extract from Gesturefy's AMO description providing information on thepermissions requested by this extension" src="https://mdn.mozillademos.org/files/15743/gesturefy_permissions_explanation.png" style="height: 520px; width: 866px;"></p> diff --git a/files/fr/mozilla/add-ons/webextensions/demandes_de_permission/index.html b/files/fr/mozilla/add-ons/webextensions/demandes_de_permission/index.html new file mode 100644 index 0000000000..815653592d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/demandes_de_permission/index.html @@ -0,0 +1,134 @@ +--- +title: Demandes de permission +slug: Mozilla/Add-ons/WebExtensions/demandes_de_permission +tags: + - Add-ons + - Extensions + - Guide + - Permissions + - Testing + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Test_permission_requests +--- +<p>{{AddonSidebar}}</p> + +<p>Votre extension peut contenir deux types de demandes de permission : les demandes de temps d'installation et les demandes de permission d'exécution. Cette page explique comment vous pouvez tester la façon dont vos utilisateurs verront les demandes de ces permissions.</p> + +<h2 id="Comportement_de_l'octroi_de_la_permission_pendant_le_test"><strong>Comportement de l'octroi de la permission pendant le test</strong></h2> + +<p>Lorsque vous testez avec une extension non compressée utilisant <a href="/fr/docs/Tools/about:debugging"><kbd>about:debugging</kbd></a> ou <a href="/fr/Add-ons/WebExtensions/web-ext_command_reference">web-ext</a> et les permissions d'installation et d'exécution sont traitées comme suit :</p> + +<ul> + <li>Les demandes de permission de temps d'installation sont accordées en silence. Vous ne voyez pas les avertissements de permission que les utilisateurs verraient.</li> + <li><span class="tlid-translation translation"><span title="">L</span></span>es demandes d'autorisation d'exécution affichent la demande d'accrochecomme d'habitude. Ces permissions restent en place jusqu'à ce qu'elles soient révoquées programmatiquement par l'extension, l'extension est supprimée en utilisant <kbd>about:debugging</kbd> ou redémarrer Firefox.</li> +</ul> + +<h2 id="Observeer_ou_vérifier_des_demandes_de_permissions_lors_de_l'installation"><strong>Observeer ou vérifier des demandes de permissions lors de l'installation</strong></h2> + +<p>Vous suivez différents processus selon que vous souhaitez observer les demandes de permissions associées à une installation ou à une mise à niveau.</p> + +<h3 id="Demandes_de_permission_pour_l'installation_d'extensions"><strong>Demandes de permission pour l'installation d'extensions</strong></h3> + +<p>Pour afficher les avertissements de permission de temps d'installation que les utilisateurs voient lors de l'installation de votre extension et retester les demandes d'autorisation d'exécution, installez l'extension depuis son fichier *.xpi ou *.zip.</p> + +<p>Pour ce faire, vous devez utiliser un fichier *.xpi ou *.zip non signé :</p> + +<ul> + <li>donnez un identifiant à votre extension à l'aide de la clé d'<a href="/fr/docs/applications">applications</a> application.</li> + <li>exécuter les versions <a href="https://nightly.mozilla.org/"> Nightly</a> ou<a href="https://www.mozilla.org/firefox/developer/"> Developer Edition</a> de Firefox.</li> + <li>Définissez la préférence <kbd>about:config</kbd> <code>xpinstall</code><code>.signatures.required</code> à <code>false</code>.</li> +</ul> + +<p>Installez ensuite l'extension à l'aide de l'option <strong>Installer Add-on à partir du fichier</strong> dans le gestionnaire de modules complémentaires (<kbd>about:addons</kbd>). Au fur et à mesure que l'extension s'installe, la demande d'octroi des permissions s'affiche lors de l'installation, comme ceci :</p> + +<p><img alt="Example of the doorhanger displayed when installing an extension through about:addons" src="https://mdn.mozillademos.org/files/16538/installing_unpackaged_extension.png" style="height: 256px; width: 378px;"></p> + +<p>Notez que le message d'avertissement concerne une extension non signée ; ce message ne s'affiche pas pendant l'installation depuis <a href="http://addons.mozilla.org">addons.mozilla.org</a>.</p> + +<h3 id="Demande_de_permission_pour_la_mise_à_niveau_de_l'extension"><strong>Demande de permission pour la mise à niveau de l'extension</strong></h3> + +<div class="blockIndicator note"> +<p>Pour plus de détails sur la façon de fournir des mises à jour d'extension Web lorsque vous hébergez vous-même votre extension, voir <a href="/fr/Add-ons/Updates">Mises à jour</a>.</p> +</div> + +<p>Pour afficher les avertissements d'autorisation de temps d'installation que les utilisateurs voient lorsque votre extension est mise à niveau par Firefox et retester les demandes d'autorisation d'exécution, vous installez l'extension depuis son fichier.xpi posté sur un serveur HTTP ou HTTPS.</p> + +<p>Vous pouvez utiliser un serveur HTTP (tel qu'un simple <a href="/fr/docs/Apprendre/Common_questions/configurer_un_serveur_de_test_local">serveur localhost python</a>) ou un serveur HTTPS. Cependant, votre serveur HTTPS doit avoir un certificat vérifiable, que Firefox peut accepter automatiquement ; vous ne pouvez pas utiliser un certificat auto-signé. Si vous voulez tester à partir d'un serveur HTTPS mais n'en avez pas, les pages GitHub sont une option que vous pouvez utiliser.</p> + +<p>Pour effectuer le test, vous devrez :</p> + +<ul> + <li>déterminer l'adresse du serveur HTTP ou HTTPS où vous pouvez héberger les fichiers.</li> + <li>utilisez la clé des <a href="/fr/docs/applications">applications</a> manifest.json pour : + <ul> + <li>donnez un identifiant à votre poste, si vous ne l'avez pas déjà fait.</li> + <li>définir l'URL de mise à jour où vous hébergerez votre <a href="/fr/Add-ons/Updates">manifest de mise à jour</a>. Par exemple : + <pre class="brush: json">… +"applications": { + "gecko": { + "strict_min_version": "54.0a1", + "update_url": "<a href="https://your-account.github.io/webextensions/upgrade.json">https://your-account.github.io/webextensions/upgrade.json</a>", + "id": "<a href="mailto:test@your-address.com">test@your-address.com</a>" + } +}, +…</pre> + </li> + </ul> + </li> + <li>si nécessaire, <a href="/fr/Add-ons/WebExtensions/Package_your_extension_">créez un paquet</a> contenant votre extension originale.</li> + <li>mettre à jour votre extension et ajouter les détails des nouvelles permissions requises au fichier manifest.json, sans oublier de mettre à jour le numéro de version. Créez un paquet contenant votre extension mise à jour. + <div class="blockIndicator warning">Si les paquets ont été générés avec des extensions.zip, changez-les en.xpi, sinon votre navigateur pourrait essayer de télécharger plutôt que d'installer l'extension.</div> + </li> +</ul> + +<ul> + <li>Créer la <a href="/fr/Add-ons/Updates">mise à jour du manifest</a> avec les détails des deux versions d'extension, qui devrait être similaire à celui-ci : + + <pre class="brush: json">{ + "addons": { + "test@your-address.com": { + "updates": [ + { "version": "n.0", "update_link": "https://your-account.github.io/webextensions/your-extension-1.0.xpi" }, + { "version": "n+1.0", "update_link": "https://your-account.github.io/webextensions/your-extension-2.0.xpi" } + ] + } + } +}</pre> + </li> + <li>télécharger les deux paquets d'extension et les mises à jour manifestes sur votre serveur HTTP ou HTTPS.</li> + <li>exécuter les versions <a href="https://nightly.mozilla.org/">Nightly</a> ou<a href="https://www.mozilla.org/firefox/developer/"> Developer Edition</a> de Firefox.</li> + <li>dans <kbd>about:config</kbd> : + <ul> + <li>Définissez la préférence <code>xpinstall.signatures.required</code> à <code>false</code>.</li> + <li>Si vous utilisez <a href="https://nightly.mozilla.org/">Nightly</a> et hébergez votre mise à jour sur un serveur HTTP, créez et définissez les préférences <code>extensions.checkUpdateSecurity</code> et <code>extensions.install.requireSecureOrigin</code> à <code>false</code>. Pour faire ceci : + <ul> + <li>entrez le nom de la préférence dans la zone de recherche.</li> + <li>cliquez sur<strong> Ajouter</strong>.<br> + <img alt="Create a new about:config item in Nightly" src="https://mdn.mozillademos.org/files/16541/preference_create_2.png"></li> + <li>basculez la préférence pour la mettre à false.<br> + <img alt="Toggle the boolean value of a about:config item in Nightly" src="https://mdn.mozillademos.org/files/16542/preference_toggle_2.png" style="height: 147px; width: 987px;"></li> + </ul> + </li> + </ul> + </li> + <li>ouvrez le lien vers le premier fichier XPI pour l'installer.</li> + <li>Ouvrez <kbd>about:addons</kbd>, cliquez sur l'icône cranter et cliquez sur <strong>Check for Updates</strong>.</li> + <li>vous obtiendrez un message d'avertissement de permission, similaire à celui ci-dessous, détaillant les permissions supplémentaires demandées :<br> + <img alt="Example of the doorhanger displayed when testing permission requests for an extension upgrade" src="https://mdn.mozillademos.org/files/16545/upgrade_install_2.png" style="height: 215px; width: 376px;"></li> +</ul> + +<div class="blockIndicator note"> +<p>Si la mise à niveau n'a pas lieu, recherchez dans les logs <code>addons.update-checker</code> de la <a href="/en-US/docs/Tools/Browser_Console">console du navigateur</a>. Toute erreur rencontrée au cours du processus de mise à niveau sera signalée dans le journal de logs.</p> +</div> + +<h2 id="Re-tester_les_permissions_d'éxécution_octroyées"><strong>Re-tester les permissions d'éxécution octroyées</strong></h2> + +<p>Pour tester à nouveau les permissions d'exécution de votre extension et son comportement post-installation, vous avez deux choix :</p> + +<ul> + <li>supprimez l'extension en utilisant <kbd>about:debugging</kbd> et réinstallez-la, ou redémarrez Firefox.<br> + <img alt="Highlights the location of the remove option for a web extension in about:debugging" src="https://mdn.mozillademos.org/files/16563/reload_to_retest.png" style="height: 403px; width: 1229px;"></li> + <li>si vous utilisez <a href="https://nightly.mozilla.org/">Nightly</a> ou<a href="https://www.mozilla.org/firefox/developer/"> Developer Edition</a>, utilisez l'extension web des <a href="https://github.com/rpl/dev-webext-permissions-manager">extensions permission Manager</a> pour supprimer les permissions.</li> +</ul> + +<p>Vous pouvez ensuite réexécuter l'extension et toutes les demandes de permissions d'exécution seront affichées comme si l'extension était exécutée pour la première fois.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/developing_webextensions_for_thunderbird/index.html b/files/fr/mozilla/add-ons/webextensions/developing_webextensions_for_thunderbird/index.html new file mode 100644 index 0000000000..250adae1c1 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/developing_webextensions_for_thunderbird/index.html @@ -0,0 +1,24 @@ +--- +title: Développer des WebExtensions pour Thunderbird +slug: Mozilla/Add-ons/WebExtensions/Developing_WebExtensions_for_Thunderbird +translation_of: Mozilla/Add-ons/WebExtensions/Developing_WebExtensions_for_Thunderbird +--- +<p>{{AddonSidebar}}{{Draft}}</p> + +<p class="summary"><span class="seoSummary">Vous aborderez le codage d'une extension pour Thunderbird de la même manière que pour une extension Firefox ; en utilisant un éditeur de texte ou un outil de votre choix pour écrire le code.</span></p> + +<h2 id="Différences_des_API">Différences des API</h2> + +<div class="blockIndicator note"> +<p>Voir la documentation de l'API WebExtension de <a href="https://thunderbird-webextensions.readthedocs.io/en/latest/">ReadTheDocs</a> pour Thunderbird.</p> +</div> + +<p>Étant tous deux basés sur Gecko, Thunderbird supporte plusieurs des APIs que Firefox supporte, avec quelques différences, voir la <a href="/fr/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json">compatibilité du navigateur pour manifest.json</a> et le <a href="/fr/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">support du navigateur pour les APIs JavaScript</a> pour les détails.</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://thunderbird-webextensions.readthedocs.io/en/latest/">Thunderbird specific WebExtension API documentation</a></li> + <li><a href="/fr/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">Browser support for JavaScript APIs</a></li> + <li><a href="/fr/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json">Browser compatibility for manifest.json</a></li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/differences_entre_les_implementations_api/index.html b/files/fr/mozilla/add-ons/webextensions/differences_entre_les_implementations_api/index.html new file mode 100644 index 0000000000..60656f891e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/differences_entre_les_implementations_api/index.html @@ -0,0 +1,77 @@ +--- +title: Différences entre les implémentations d'API +slug: Mozilla/Add-ons/WebExtensions/Differences_entre_les_implementations_api +tags: + - Guide + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Differences_between_API_implementations +--- +<div>{{AddonSidebar}}</div> + +<p>L'API d'extension de navigateur est encore un <a href="https://browserext.github.io/browserext/">standard emergent</a>. Par conséquent, bien qu'il soit pris en charge par la plupart des principaux navigateurs, dont Firefox, Chrome, Edge et Opera, il existe des différences entre les différentes implémentations. Cela signifie que certaines modifications peuvent être nécessaires pour implémenter votre extension pour plusieurs navigateurs</p> + +<p>Parmi les différents navigateurs supportant l'API d'extension, Firefox est le plus conforme à la norme émergente, et est donc votre meilleur point de départ pour développer des extensions de navigateur.</p> + +<p>Les différences entre les implémentations d'API d'extensions de navigateurs se répartissent en quatre domaines : l'espace de noms, la gestion asynchrone des événements, la couverture API et les clés de manifest.</p> + +<h2 id="Espace_de_nommage">Espace de nommage</h2> + +<p>Vous faites référence à toutes les fonctions de l'API des extensions en utilisant un espace de noms, par exemple, <code>browser.alarms.create({delayInMinutes});</code> créerait une alarme dans Firefox qui se déclenche après le temps spécifié dans <code>delayInMinutes</code>.</p> + +<p>Deux espaces de noms API sont utilisés :</p> + +<ul> + <li> + <p><code>chrome</code> utilisé dans Chrome et Opera.</p> + </li> + <li> + <p><code>browser</code> utilisé dans Firefox et Edge.</p> + </li> +</ul> + +<h2 id="Traitement_asynchrone_des_événements">Traitement asynchrone des événements</h2> + +<p>JavaScript fournit plusieurs façons de gérer les événements asynchrones. La norme API d'extensions proposée est d'utiliser des promises. L'approche des promises offre des avantages significatifs lorsqu'il s'agit d'appels d'événements asynchrones en chaîne</p> + +<p>Si vous n'êtes pas familier avec la façon dont JavaScript peut gérer les événements asynchrones ou les promesses, jetez un coup d'oeil sur <a href="https://medium.com/codebuddies/getting-to-know-asynchronous-javascript-callbacks-promises-and-async-await-17e0673281ee">Apprendre à connaître Javascript Asynchrone : Callbacks, Promises et Async/Await</a> ou la page des <a href="/fr/docs/Web/JavaScript/Guide/Utiliser_les_promesses">promises d'utilisation</a> de MDN.</p> + +<p>Firefox est le seul navigateur majeur à avoir implémenté des promises pour les extensions API. Tous les autres navigateurs utilisent des callbacks.</p> + +<h2 id="Couverture_API">Couverture API</h2> + +<p>Les différences dans l'implémentation des fonctions de l'API d'extension entre les navigateurs se répartissent en trois grandes catégories :</p> + +<ul> + <li> + <p>Manque de soutien pour l'ensemble d'une fonction. Par exemple, au moment d'écrire ces lignes, Edge ne prend pas en charge la fonction de <code><a href="/fra/Add-ons/WebExtensions/API/privacy">vide privée</a></code>.</p> + </li> + <li> + <p>Variations dans la prise en charge des fonctions au sein d'une fonction. Par exemple, au moment d'écrire ces lignes, Firefox ne supporte pas la fonction de <code><a href="/fr/Add-ons/WebExtensions/API/notifications">notification</a></code> <a href="/fr/Add-ons/WebExtensions/API/notifications/onButtonClicked">onButtonClicked</a> alors que Firefox est le seul navigateur qui supporte <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/notifications/onShown">onShown</a>.</p> + </li> + <li> + <p>Fonctions propriétaires, supportant des fonctions spécifiques au navigateur. Par exemple, au moment d'écrire ces lignes, containers est une fonctionnalité spécifique à Firefox supportée par la fonction <a href="/fr/Add-ons/WebExtensions/API/contextualIdentities">contextualIdentities</a>.</p> + </li> +</ul> + +<h2 id="Touches_Manifest">Touches Manifest</h2> + +<p>Les différences entre les clés <a href="/fr/Add-ons/WebExtensions/manifest.json">clés manifest.json</a> prises en charge par les navigateurs se répartissent en deux grandes catégories :</p> + +<ul> + <li> + <p>Attributs d'information sur les extensions. Par exemple, au moment d'écrire ces lignes, Firefox et Opera incluent la clé de <a href="/fr/Add-ons/WebExtensions/manifest.json/developer">développent</a> permettant d'ajouter des détails sur le développeur de l'extension, ainsi que sur l'auteur, à enregistrer.</p> + </li> + <li> + <p>Fonctions d'extension. Par exemple, au moment d'écrire ces lignes, Edge ne prenait pas en charge les clés de <a href="/fr/Add-ons/WebExtensions/manifest.json/commands">commande</a> qui permettent de définir des raccourcis clavier pour une extension.</p> + </li> +</ul> + +<h2 id="Plus_d'information">Plus d'information</h2> + +<p>Vous trouverez des informations plus détaillées sur les différences entre les extensions de navigateur prises en charge par les fonctionnalités API dans le domaine :</p> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/Chrome_incompatibilities">Incompatibilités Chrome</a></li> + <li><a href="/fr/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">Prise en charge des API Javascript par le navigateur</a></li> + <li><a href="/fr/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json">Compatibilité du navigateur pour manifest.json</a></li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/embedded_webextensions/index.html b/files/fr/mozilla/add-ons/webextensions/embedded_webextensions/index.html new file mode 100644 index 0000000000..7a80ac75e7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/embedded_webextensions/index.html @@ -0,0 +1,219 @@ +--- +title: WebExtensions intégrées +slug: Mozilla/Add-ons/WebExtensions/Embedded_WebExtensions +translation_of: Archive/Add-ons/Embedded_WebExtensions +--- +<div>{{AddonSidebar}}</div> + +<div class="warning"> +<p>À partir de Firefox 57 (sorti en novembre 2017), la prise en charge des types d'extensions héritées a été supprimée, y compris les extensions héritées qui intègrent les WebExtensions.</p> + +<p>A partir de Firefox 64 (sortie en décembre 2018), la prise en charge des extensions bootstrapped sera supprimée, y compris la prise en charge des extensions bootstrapped qui intègrent des WebExtensions.</p> +</div> + +<p>A partir de Firefox 51, vous pouvez intégrer une WebExtension dans une <a href="/fr/docs/Mozilla/Add-ons/Bootstrapped_extensions">extension bootstrapped</a> classique ou dans une extension dans le <a href="/fr/docs/Mozilla/Add-ons/SDK">SDK des extensions</a>.</p> + +<p>Les fichiers de WebExtension intégrés sont packagés dans les modules complémentaires existant. La WebExtension intégrée ne partage pas directement son champ d'application avec l'ajout d'un complément hérité, mais ils peuvent échanger des messages à l'aide des fonctions de messagerie définies dans l'API {{WebExtAPIRef("runtime")}}.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13895/embedded-we.png" style="display: block; height: 522px; margin-left: auto; margin-right: auto; width: 429px;"></p> + +<p>Cela signifie que vous pouvez migrer un add-on existant vers WebExtensions une pièce à la fois, et disposer d'un add-on entièrement fonctionnel à chaque étape. En particulier, il vous permet de <a href="/en-US/Add-ons/WebExtensions/Embedded_WebExtensions#Migrating_data_from_legacy_add-ons">migrer des données stockées</a> à partir d'un add-on existant vers une WebExtension, en écrivant un add-on hybride intermédiaire qui lit les données à l'aide des API existantes (par exemple, <a href="/en-US/docs/Mozilla/Add-ons/SDK/High-Level_APIs/simple-prefs">simple-prefs</a> ou le <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm">service</a> de préférence) et les écrit en utilisant les APIs WebExtension (par exemple, {{WebExtAPIRef("storage")}}).</p> + +<p>Avec ce guide, nous avons écrit deux exemples montrant comment utiliser les WebExtensions embarquées pour faciliter la migration à partir d'un type d'add-on existant. L'un montre <a href="https://github.com/mdn/webextensions-examples/tree/master/embedded-webextension-bootstrapped">comment porter à partir d'un add-on amorcé</a>, et l'autre montre <a href="https://github.com/mdn/webextensions-examples/tree/master/embedded-webextension-sdk">comment porter à partir d'un add-on sdk</a>.</p> + +<p>Pour intégrer une WebExtension, vous aurez besoin de Firefox 51 ou ultérieur. Pour intégrer une WebExtension dans un add-on SDK, vous aurez également besoin de <a href="https://www.npmjs.com/package/jpm">jpm 1.2.0</a>.</p> + +<div class="note"> +<p>Firefox 57 laisse tomber la prise en charge des types d'add-on hérités. Si vous maintenez actuellement un add-on au format de l'ancien add-on et que vous souhaitez migrer des données, publiez une mise à jour contenant une WebExtension intégrée le plus tôt possible. Si la mise à jour est publiée près de la <a href="https://wiki.mozilla.org/RapidRelease/Calendar">date de sortie de Firefox 57</a>, les données stockées dans votre add-on seront perdues si l'utilisateur met à jour Firefox avant de recevoir votre mise à jour du add-on.</p> +</div> + +<h2 id="Incorporation_d'une_WebExtension">Incorporation d'une WebExtension</h2> + +<p>Si l'extension héritée est une extension bootstrap avec un <a href="/fr/Add-ons/Install_Manifests">install.rdf</a>, incluez la propriété "hasEmbeddedWebExtension" dans le RDF, contenant la valeur "true":</p> + +<pre><<span class="pl-ent">em</span><span class="pl-ent">:</span><span class="pl-ent">hasEmbeddedWebExtension</span>>true</<span class="pl-ent">em</span><span class="pl-ent">:</span><span class="pl-ent">hasEmbeddedWebExtension</span>></pre> + +<div>Si le complément hérité est une SDK add-on, incluez la clé "hasEmbeddedWebExtension" dans le package.json, définissez sur true:</div> + +<div> </div> + +<pre class="brush: json"><span class="pl-s"><span class="pl-pds">"</span>hasEmbeddedWebExtension<span class="pl-pds">"</span></span>: <span class="pl-c1">true</span> +</pre> + +<div>La WebExtension elle-même vit dans un dossier de niveau supérieur appelé "webextension" dans l'add-on. Par exemple:</div> + +<div> </div> + +<pre>my-boostrapped-addon/ + chrome/ + webextension/ + manifest.json + background.js + ... + bootstrap.js + chrome.manifest + install.rdf</pre> + +<div> </div> + +<div> +<pre>my-sdk-addon/ + index.js + package.json + webextension/ + manifest.json + background.js + ...</pre> +</div> + +<p>Notez que la WebExtension intégrée doit se trouver directement dans le répertoire <code>webextension/</code>. Il ne peut pas être dans un sous-répertoire. Cela signifie également que vous ne pouvez pas intégrer plus d'une WebExtension.</p> + +<p>Firefox ne traite pas les WebExtensions intégrées comme une extension indépendante. Pour cette raison, vous ne devez pas spécifier une <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">identification d'extension</a> pour elle. Si vous le faites, il sera simplement ignoré.</p> + +<p>Toutefois, lorsque vous avez terminé la migration de l'add-on et supprimé le code d'intégration existant, vous devez inclure une clé d'<a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications">application</a> pour l'identifiant soit identique à un ID d'extension original. De cette façon, <a href="https://addons.mozilla.org/fr/firefox/">addons.mozilla.org</a> reconnaîtra que WebExtension est une mise à jour de l'extension existante.</p> + +<h2 id="Démarré_la_WebExtension">Démarré la WebExtension</h2> + +<p>La WebExtension intégrée doit être explicitement démarré par l'extension d'intégration.</p> + +<p>Si l'extension d'intégration est un add-on bootstrap, l'argument de données passé à la fonction de <code><a href="/fr/Add-ons/Bootstrapped_extensions#startup">startup()</a></code> obtiendra une propriété supplémentaire à la <code>webExtension</code> :</p> + +<pre class="brush: js">// bootstrapped add-on + +<span class="pl-k">function</span> <span class="pl-en">startup</span>({webExtension}) { + +...</pre> + +<p>Si l'add-on d'intégration est une extension SDK, il pourra accéder à un objet WebExtension à l'aide du module <code>sdk/webextension</code> :</p> + +<pre class="brush: js"><span class="pl-k">// SDK add-on + +const</span> <span class="pl-c1">webExtension</span> <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">"</span>sdk/webextension<span class="pl-pds">"</span></span>);</pre> + +<p>Quoi qu'il en soit, cet objet a une seule fonction, <code>startup()</code>, qui renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>. La promesse résolue à un objet avec un seul navigateur de propriétés : il contient les API {{WebExtAPIRef("runtime")}} que le complément d'intégration peut utiliser pour échanger des messages avec le WebExtension intégré :</p> + +<ul> + <li>{{WebExtAPIRef("runtime.onConnect")}}</li> + <li>{{WebExtAPIRef("runtime.onMessage")}}</li> +</ul> + +<p>Pour exemple:</p> + +<pre class="brush: js">// bootstrapped add-on + +function startup({webExtension}) { + webExtension.startup().then(api => { + const {browser} = api; + browser.runtime.onMessage.addListener(handleMessage); + }); +}</pre> + +<pre class="brush: js"><span class="pl-k">// SDK add-on</span> + +const webExtension = require("sdk/webextension"); + +webExtension.startup().then(api => { + const {browser} = api; + browser.runtime.onMessage.addListener(handleMessage); +}); +</pre> + +<p>Notez que l'ajout d'un module d'extension intégré ne peut pas démarrer les communications: il peut recevoir (et éventuellement à répondre) des messages ponctuels, en utilisant <code>onMessage</code>, et peut accepter des requêtes de connexion en utilisant <code>onConnect</code>.</p> + +<p>La promesse est rejetée si le WebExtension intégré manque un manifeste ou si le manifeste est invalide. Dans ce cas, vous verrez plus de détails dans la <a href="/fr/Add-ons/WebExtensions/Debugging_(before_Firefox_50)#Viewing_log_output">boite à outils de la console du navigateur</a>.</p> + +<h2 id="Echange_des_messages">Echange des messages</h2> + +<p>Une fois que la WebExtension intégré est en cours d'exécution, elle peut échanger des messages avec l'add-on hérité en utilisant le sous-ensemble des APIs {{WebExtAPIRef("runtime")}} :</p> + +<ul> + <li>Il peut envoyer des messages uniques en utilisant {{WebExtAPIRef("runtime.sendMessage()")}}.</li> + <li>Il peut configurer une connexion en utilisant {{WebExtAPIRef("runtime.connect()")}}.</li> +</ul> + +<h3 id="Messagerie_sans_connexion">Messagerie sans connexion</h3> + +<p>Pour envoyer un message unique, la WebExtension peut utiliser {{WebExtAPIRef("runtime.sendMessage()")}}. Vous pouvez omettre l'argument extensionId, car le navigateur considère la WebExtension intégrée comme faisant partie intégrante de l'add-on :</p> + +<pre class="brush: js">browser.runtime.sendMessage("message-from-webextension").then(reply => { + if (reply) { + console.log("response from legacy add-on: " + reply.content); + } +});</pre> + +<p>L'add-on d'intégration peut recevoir (et répondre facultativement) ce message en utilisant l'objet {{WebExtAPIRef("runtime.onMessage")}} :</p> + +<pre class="brush: js">// bootstrapped add-on + +function startup({webExtension}) { + // Start the embedded webextension. + webExtension.startup().then(api => { + const {browser} = api; + browser.runtime.onMessage.addListener((msg, sender, sendReply) => { + if (msg == "message-from-webextension") { + sendReply({ + content: "reply from legacy add-on" + }); + } + }); + }); +}</pre> + +<h3 id="Messagerie_orientée_connexion">Messagerie orientée connexion</h3> + +<p>Pour configurer une connexion plus longue entre la WebExtension et l'extension héritée, la WebExtension peut utiliser {{WebExtAPIRef("runtime.connect()")}}.</p> + +<pre class="brush: js">var port = browser.runtime.connect({name: "connection-to-legacy"}); + +port.onMessage.addListener(function(message) { + console.log("Message from legacy add-on: " + message.content); +}); +</pre> + +<p>L'extension héritée peut écouter les tentatives de connexion à l'aide de {{WebExtAPIRef("runtime.onConnect")}}, et les deux côtés peuvent alors utiliser {{webExtAPIRef("runtime.Port")}} pour échanger des messages :</p> + +<pre class="brush: js">function startup({webExtension}) { + // Start the embedded webextension. + webExtension.startup().then(api => { + const {browser} = api; + browser.runtime.onConnect.addListener((port) => { + port.postMessage({ + content: "content from legacy add-on" + }); + }); + }); +}</pre> + +<h2 id="Migration_de_données_à_partir_d'extensions_existantes">Migration de données à partir d'extensions existantes</h2> + +<p>Une utilisation majeure pour les WebExtensions intégrées sont de migrer les données stockées d'une extension.</p> + +<p>Les données stockées sont un problème pour les personnes qui essaient de migrer à partir de types d'extension existants, car les extensions existantes ne peuvent pas utiliser les API de stockage WebExtension, alors que les WebExtensions ne peuvent pas utiliser les API de stockage existantes. Par exemple, si une extension du SDK utilise l'API <a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/simple-prefs">simple-prefs</a> pour stocker les préférences, la version WebExtension ne pourra pas accéder à ces données.</p> + +<p>Avec les WebExtensions intégrées, vous pouvez migrer des données en créant une version intermédiaire de l'extension qui intègre une WebExtension. Cette version intermédiaire lit les données stockées à l'aide des API existantes et écrit les données à l'aide des API des WebExtensions.</p> + +<ul> + <li>Dans la version initiale, un add-on basé sur le SDK lit et écrit les préférences de l'add-on utilisé par l'API <a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/simple-prefs">simple-prefs</a>.</li> + <li>Dans la version intermédiaire, le complément SDK démarre la WebExtension intégrée. La WebExtension demande ensuite le complément SDK pour récupérer les données stockées à partir de simples prefs. La WebExtension stocke ensuite les données à l'aide de l'API {{WebExtAPIRef("storage")}}.</li> + <li>Dans la version finale, l'extension est juste une WebExtension et utilise seulement que l'API de stockage.</li> +</ul> + +<p>Nous avons fourni deux exemples illustrant ce modèle : <a href="https://github.com/mdn/webextensions-examples/tree/master/embedded-webextension-bootstrapped">"embedded-webextension-bootstrapped"</a> montre la migration à partir d'un add-on bootstrap, tandis que <a href="https://github.com/mdn/webextensions-examples/tree/master/embedded-webextension-sdk">"embedded-webextension-sdk"</a> montre la migration à partir du SDK de l'extension.</p> + +<h3 id="Préférences">Préférences</h3> + +<p>Une extension qui contient une WebExtension intégré peut définir des préférences dans l'extension d'héritage (en utilisant, par exemple, <a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/simple-prefs">simple-prefs</a> ou le <a href="/fr/docs/Mozilla/JavaScript_code_modules/Services.jsm">service</a> des préférences) ou dans la WebExtension intégrée (en utilisant <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a>).</p> + +<p>Si les deux parties définissent les préférences, que les préférences de la WebExtension intégrée annuleront les anciennes.</p> + +<p>Si la diffusion de la WebExtension intégrée définit les préférences, elles ne seront initialisées qu'après la WebExtension intégré a <a href="/fr/Add-ons/WebExtensions/Embedded_WebExtensions#Starting_the_WebExtension">commencée</a>. Jusque-là, le bouton "Préférences" dans "about:addons" ne sera pas affiché pour l'add-on, et le navigateur enregistrera une erreur dans la <a href="/fr/docs/Tools/Browser_Console">console du navigateur</a> lorsque "about:addons" is ouvert.</p> + +<p>Pour cette raison, c'est important que l'extension d'intégration démarre immédiatement le démarrage WebExtension intégré lors du démarrage. Pour une extension bootstrap, cela signifie que vous devez appeler <code>webExtension.startup()</code> dans le <a href="/fr/Add-ons/Bootstrapped_extensions#startup">bootstrap de démarrage</a>. Pour une extension SDK supplémentaire, cela signifie que vous devez appeler <code>webExtension.startup()</code> dans le point d'entrée de l'add-on (par défaut, index.js).</p> + +<p>Si la page "about:addons" est déjà ouverte dans un onglet lorsque le WebExtension intégré est démarré, le bouton Préférences ne sera visible qu'après la prochaine recharge de la page "about:addons".</p> + +<h2 id="Limitations">Limitations</h2> + +<h3 id="Debogage">Debogage</h3> + +<p>Si vous avez un add-on hérité qui intègre une WebExtension, vous ne pouvez pas utiliser le nouveau débogueur add-on pour le déboguer. Vous devrez utiliser l'<a href="/fr/Add-ons/WebExtensions/Debugging_(before_Firefox_50)">ancien flux de travail de débogage</a>, basé sur la boite d'outils du navigateur.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/exemples/index.html b/files/fr/mozilla/add-ons/webextensions/exemples/index.html new file mode 100644 index 0000000000..7a96c1adae --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/exemples/index.html @@ -0,0 +1,33 @@ +--- +title: Exemples de WebExtensions +slug: Mozilla/Add-ons/WebExtensions/Exemples +tags: + - Interface + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Examples +--- +<div>{{AddonSidebar}}</div> + +<p>Pour illustrer la manière d'utiliser les API WebExtension, nous disposons d'un répertoire d'exemples d'extensions sur le site <a href="https://github.com/mdn/webextensions-examples" style="outline: 1px dotted currentcolor; outline-offset: 0px;">https://github.com/mdn/webextensions-examples</a>. Cet article décrit comment exécuter ces exemples et énumère les exemples ainsi que les API WebExtension qu'ils illustrent.</p> + +<p>Ces exemples fonctionnent dans Firefox Nightly : la plupart travaillent dans les versions antérieures de Firefox, mais vérifiez la version minimum <a href="/fr/Add-ons/WebExtensions/manifest.json/applications">strict_min_version</a> dans le fichier manifest.json de l'extension pour en être sur.</p> + +<div class="blockIndicator warning"> +<p>Certains exemples ne fonctionnent que sur des domaines ou des pages spécifiques. Les détails des restrictions éventuelles sont fournis dans le fichier "readme" de chaque exemple. Aucun des exemples ne fonctionne par défaut dans les fenêtres de navigation privée, voir <a href="https://support.mozilla.org/en-US/kb/extensions-private-browsing#w_enabling-or-disabling-extensions-in-private-windows">Extensions dans la navigation privée</a> pour plus de détails.</p> +</div> + +<p>Pour essayer ces exemples, clonez ensuite le dépôt :</p> + +<ol> + <li>Charger l'extension à partir de son dossier source en utilisant la fonction <a href="/fr/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">Charger temporairement l'extension</a>. L'extension reste chargée jusqu'à ce que vous redémarriez Firefox.</li> + <li>Couvrir le dossier source de l'extension en ligne de commande et utiliser le <a href="/fr/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> pour exécuter l'extension. L'extension reste chargée jusqu'à ce que vous redémarriez Firefox.</li> + <li>Dans Firefox utilisez <strong>File</strong> > <strong>Open File</strong> et trouvez l'exemple dans le dossier de <code><a href="https://github.com/mdn/webextensions-examples/tree/master/build">build</a></code>. Le dossier <code>build</code> contient les versions construites et signées de tous les exemples. L'exemple est ainsi installé de façon permanente.</li> +</ol> + +<div class="warning"> +<p><strong>Important</strong>: Veuillez ne pas soumettre ces exemples de WebExtension à AMO (addons.mozilla.org), vous n'avez pas besoin de signer l'add-on pour exécuter les exemples de WebExtension. Il suffit de suivre les étapes ci-dessus.</p> +</div> + +<p>Si vous souhaitez contribuer au dépôt, <a href="https://github.com/mdn/webextensions-examples/blob/master/CONTRIBUTING.md">envoyez-nous une demande</a></p> + +<p>{{WebExtAllExamples}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/experience_utilisateur_bonnes_pratiques/index.html b/files/fr/mozilla/add-ons/webextensions/experience_utilisateur_bonnes_pratiques/index.html new file mode 100644 index 0000000000..bab0b4a22a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/experience_utilisateur_bonnes_pratiques/index.html @@ -0,0 +1,190 @@ +--- +title: Expérience utilisateur bonnes pratiques +slug: Mozilla/Add-ons/WebExtensions/Experience_utilisateur_bonnes_pratiques +tags: + - Add-ons + - Extensions + - Guide + - UI + - UX +translation_of: Mozilla/Add-ons/WebExtensions/User_experience_best_practices +--- +<div>{{AddonSidebar()}}</div> + +<p>Vous voudrez vous assurer que vos utilisateurs ont une excellente expérience en utilisant votre extension—quand vous le ferez, les bonnes critiques et évaluations suivront sur <a href="https://addons.mozilla.org">addons.mozilla.org</a> (AMO).</p> + +<p dir="ltr">Si vous êtes nouveau sur le sujet de rendre un logiciel utilisable. un bon point de départ pour démarrer est l'<a href="https://en.wikipedia.org/wiki/Heuristic_evaluation#Nielsen">Heuristique d'usabilité</a> de Jakob Nielsen. Nous vous recommandons, que vous soyez nouveau pour le développement d'extension ou pour un professionnel expérimenté, en utilisant les Heuristiques de Nielsen comme une liste de contrôle du <a href="#Test_test_and_then_test_again">test de votre expérience utilisateur (UX)</a>.</p> + +<p>Nous présentons ici les six étapes à suivre pour créer des fonctionnalités Firefox et UX spécifiques afin que vous puissiez créer une extension qui séduise, informe, enchante et fidélise vos utilisateurs.</p> + +<p>En plus des étapes décrites ici, votre extension doit suivre les règles d'<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/AMO/Policy/Reviews">Add-on Policies</a>, qui incluent la transparence avec les utilisateurs sur la sécurité, la confidentialité et le contrôle de l'utilisateur.</p> + +<h2 id="1._Gardez_le_cap">1. Gardez le cap</h2> + +<p dir="ltr">Les meilleures extensions Firefox offrent aux utilisateurs une nouvelle fonctionnalité ou capacité qui répond à un besoin, qu'il soit plus intelligent, plus efficace ou plus agréable de navigation. Idéalement, votre extension permet à l'utilisateur d'économiser du temps, de l'argent ou de la frustration.</p> + +<p>Une extension est meilleure lorsqu'elle est centrée autour d'un cas d'utilisation principal et qu'elle s'adresse à ce cas d'utilisation aussi bien que possible pour le public cible :</p> + +<ul> + <li>Il doit ajouter une fonction ou un ensemble de fonctions étroitement liées au navigateur, modifier une fonction du navigateur ou modifier des pages Web.</li> + <li>Déterminez si vous y êtes parvenu en demandant si vous pouvez facilement communiquer les caractéristiques et le but de la prolongation en trois phrases (courtes) ou moins.</li> +</ul> + +<h2 id="2._Donner_aux_utilisateurs_ce_dont_ils_ont_besoin_là_où_ils_en_ont_besoin">2. Donner aux utilisateurs ce dont ils ont besoin, là où ils en ont besoin</h2> + +<p dir="ltr">Choisir la bonne façon, ou la combinaison de plusieurs façons, de rendre la fonctionnalité de votre extension disponible pour l'utilisateur peut avoir un effet significatif sur la convivialité. Poser quelques questions simples sur les fonctionnalités de votre poste peut vous guider rapidement vers les bons choix :</p> + +<h3 dir="ltr" id="Est-ce_que_mon_extension_fonctionne_sur_la_plupart_des_sites_et_pages_web">Est-ce que mon extension fonctionne sur la plupart des sites et pages web ?</h3> + +<p dir="ltr">Si votre extension fournit à l'utilisateur des fonctionnalités qu'il peut utiliser sur presque tous les sites Web ou pages, donnez-lui accès à partir d'un <strong><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/user_interface/Browser_action">bouton de la barre d'outils</a> </strong><strong>en utilisant <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">l'action du navigateur.</a></strong></p> + +<ul dir="ltr"> + <li>Cela peut inclure l'accès à votre éditeur d'images ou l'ouverture d'une page de votre site Web.</li> +</ul> + +<p dir="ltr"><img alt="" src="https://mdn.mozillademos.org/files/12966/browser-action.png" style="display: block; height: 387px; margin-left: auto; margin-right: auto; width: 782px;"></p> + +<p dir="ltr">Lorsque vous voulez donner l'accès à l'utilisateur à plusieurs fonctions, vous pouvez ajouter <a href="/en-US/Add-ons/WebExtensions/Popups">popup</a> au bouton (un popup apparaît comme un crochet de porte qui s'ouvre lorsque l'utilisateur sélectionne le bouton d'action du navigateur).</p> + +<h3 dir="ltr" id="Est-ce_que_mon_extension_ne_fonctionne_que_pour_certains_sites_et_pages_web">Est-ce que mon extension ne fonctionne que pour certains sites et pages web ?</h3> + +<p dir="ltr"> </p> + +<p dir="ltr">Si votre extension fournit à l'utilisateur des fonctionnalités qu'il peut utiliser sur presque tous les sites Web ou pages, donnez-lui accès à partir d'un <strong><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/user_interface/Browser_action">bouton de la barre d'outils</a> </strong><strong>en utilisant <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">l'action du navigateur.</a></strong></p> + +<ul dir="ltr"> + <li>Cela peut inclure l'accès à votre éditeur d'images ou l'ouverture d'une page de votre site Web.</li> +</ul> + +<p dir="ltr"> </p> + +<p dir="ltr"><img alt="" src="https://mdn.mozillademos.org/files/12960/page-action.png" style="display: block; height: 262px; margin-left: auto; margin-right: auto; width: 850px;"></p> + +<p dir="ltr">Lorsque vous souhaitez donner accès à plusieurs fonctions à l'utilisateur, vous pouvez ajouter une fenêtre contextuelle au bouton.</p> + +<h3 dir="ltr" id="Mon_extension_doit-elle_afficher_des_informations_ou_proposer_des_actions_en_parallèle_avec_des_pages_web">Mon extension doit-elle afficher des informations ou proposer des actions en parallèle avec des pages web ?</h3> + +<p dir="ltr">Si votre extension contient des informations ou des actions auxquelles un utilisateur souhaite accéder immédiatement lorsqu'il consulte une page Web, <strong>utilisez une <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars">barre latérale</a></strong>.</p> + +<ul dir="ltr"> + <li>Il peut s'agir de notes que l'utilisateur peut faire sur le contenu d'une page ou d'une fonction offrant diverses substitutions de polices pour améliorer la lisibilité.</li> +</ul> + +<p dir="ltr"><img alt="" src="https://mdn.mozillademos.org/files/14825/bookmarks-sidebar.png" style="display: block; height: 761px; margin-left: auto; margin-right: auto; width: 728px;"></p> + +<h3 dir="ltr" id="Mon_extension_offre-t-elle_des_fonctionnalités_spécifiques_au_contenu_de_la_page_ou_à_d'autres_fonctions_du_navigateur">Mon extension offre-t-elle des fonctionnalités spécifiques au contenu de la page ou à d'autres fonctions du navigateur ?</h3> + +<p dir="ltr">Si votre extension offre des fonctionnalités auxquelles l'utilisateur peut vouloir accéder en contexte, <strong>ajoutez-les à un <a href="/en-US/Add-ons/WebExtensions/user_interface/Context_menu_items">menu contextuel</a></strong> approprié.</p> + +<ul dir="ltr"> + <li>Cela peut inclure l'accès à un éditeur d'image dans le menu contextuel de l'image ou des fonctions de copie étendues dans le menu contextuel pour le contenu de la page sélectionnée.</li> +</ul> + +<p dir="ltr"><img alt="Example of content menu items added by a WebExtension, from the context-menu-demo example" src="https://mdn.mozillademos.org/files/15051/context_menu_example.png" style="display: block; height: 587px; margin-left: auto; margin-right: auto; width: 573px;"></p> + +<h3 dir="ltr" id="Est-ce_que_mon_poste_possède_des_paramètres_que_l'utilisateur_peut_régler">Est-ce que mon poste possède des paramètres que l'utilisateur peut régler ?</h3> + +<p dir="ltr">Si votre extension permet à l'utilisateur de modifier et d'enregistrer les paramètres qui affectent le comportement de l'extension, utilisez une <strong><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages">page d'options</a> pour fournir un lien Préférences standard vers les paramètres </strong>du gestionnaire des extensions</p> + +<p dir="ltr"><img alt="Typical preferences button, to access an extension's settings, from the Add-on Manager" src="https://mdn.mozillademos.org/files/15271/add-on-manager-preferences-button.png" style="display: block; height: 80px; margin-left: auto; margin-right: auto; width: 732px;"></p> + +<div class="note"> +<p dir="ltr">Dans le système d'exploitation Windows, le bouton "Préférences" est appelé "Options".</p> +</div> + +<h3 dir="ltr" id="Est-ce_que_mon_extension_a_besoin_de_collecter_beaucoup_d'informations_ou_d'afficher_du_contenu_en_plus_des_onglets_actuels">Est-ce que mon extension a besoin de collecter beaucoup d'informations ou d'afficher du contenu en plus des onglets actuels ?</h3> + +<p dir="ltr">Lorsque votre extension a besoin de rassembler ou d'afficher des quantités importantes d'informations (plus qu'il n'est nécessaire pour une <a href="/en-US/docs/Web/API/Window/alert">alerte</a> ou qu'un formatage supplémentaire serait avantageux) <strong>utilisez <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Bundled_web_pages">pages webs groupées</a> pour fournir des formulaires et un contenu similaire.</strong></p> + +<p dir="ltr"><img alt="Example of a simple bundled page displayed as a detached panel." src="https://mdn.mozillademos.org/files/15073/bundled_page_as_panel.png" style="display: block; height: 445px; margin-left: auto; margin-right: auto; width: 680px;"></p> + +<h3 dir="ltr" id="Est-ce_que_mon_extension_essaie_d'aider_l'utilisateur_à_trouver_des_pages_web_ou_du_contenu">Est-ce que mon extension essaie d'aider l'utilisateur à trouver des pages web ou du contenu ?</h3> + +<p dir="ltr">Si votre extension inclut une fonctionnalité permettant de localiser des pages Web ou du contenu, par exemple en proposant une recherche spécifique à un site, utilisez les <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Omnibox">suggessions de la barre d'adresse</a> pour fournir ces recommandations.</p> + +<p dir="ltr"><img alt="Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions." src="https://mdn.mozillademos.org/files/15075/omnibox_example_full.png" style="display: block; height: 325px; margin-left: auto; margin-right: auto; width: 679px;"></p> + +<h3 dir="ltr" id="Mon_extension_offre-t-elle_des_outils_pour_les_développeurs">Mon extension offre-t-elle des outils pour les développeurs ?</h3> + +<p dir="ltr">Si vous fournissez des outils pour les développeurs, ajoutez-les aux outils de développement Firefox en utilisant les <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/devtools_panels">panneaux des outils de développement</a>.</p> + +<h2 dir="ltr" id="3._Tenir_l'utilisateur_informé">3. Tenir l'utilisateur informé</h2> + +<p dir="ltr">S'assurer que l'utilisateur sait ce qui va se passer, ce qui se passe et ce qui s'est passé dans votre extension est un élément essentiel pour établir la confiance et assurer un utilisateur heureux.</p> + +<h3 dir="ltr" id="Dites_à_l'utilisateur_ce_qui_va_se_passer_avant_qu'il_ne_se_produise.">Dites à l'utilisateur ce qui va se passer, avant qu'il ne se produise.</h3> + +<p dir="ltr">Les utilisateurs doivent comprendre ce qui se passe lorsqu'ils cliquent sur un bouton :</p> + +<ul dir="ltr"> + <li>Fournissez une étiquette de bouton significative et descriptive.</li> + <li>Fournissez des infobulles qui décrivent l'action que le bouton va effectuer..</li> + <li>Ne mettez <strong>pas</strong> le nom de l'extension seul dans l'infobulle, à moins qu'il ne soit descriptif de l'action que le bouton va effectuer..</li> + <li><strong>N'</strong>utilisez <strong>pas</strong> l'infobulle pour d'autres types d'informations telles que des statistiques détaillées sur votre extension. Gardez le contenu de l'infobulle simple et concentrez-vous sur ce qui se passera lorsque l'utilisateur clique sur le bouton.</li> +</ul> + +<h3 dir="ltr" id="Si_quelque_chose_est_vraiment_important_et_que_l'utilisateur_n'en_est_pas_conscient_informez-le.">Si quelque chose est <em>vraiment</em> important et que l'utilisateur n'en est pas conscient, informez-le.</h3> + +<p>Si votre extension a terminé une tâche d'arrière-plan critique et de longue durée, utilisez les <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Notifications">notifications</a> natives du système d'exploitation pour mettre à jour l'utilisateur lorsque la tâche est terminée. Ceci peut être utile lorsque l'utilisateur ne se concentre pas sur l'extension ou le navigateur, une fois la tâche terminée.</p> + +<p>Toutefois, utilisez les avis avec parcimonie. S'il suffit que l'utilisateur découvre qu'un processus est terminé lorsqu'il revient au navigateur ou à l'extension, <strong>n'</strong>utilisez pas de notifications.</p> + +<p dir="ltr"><img alt="" src="https://mdn.mozillademos.org/files/14043/notify-shadowed.png" style="display: block; height: 334px; margin-left: auto; margin-right: auto; width: 700px;"></p> + +<h3 dir="ltr" id="Utiliser_les_badges_browserAction_avec_parcimonie">Utiliser les badges browserAction avec parcimonie</h3> + +<p>Pour informer les utilisateurs des événements importants, vous pouvez <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserAction/setBadgeText">ajouter un badge</a> au dessus de l'icône de la barre <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">browserAction</a>. Faites-le avec parcimonie - n'utilisez pas de badges pour fournir des mises à jour régulières ou persistantes de l'état.</p> + +<p>Lorsqu'il s'agit de <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserAction/setBadgeBackgroundColor">coloriser un badge</a>, il est recommandé d'utiliser l'une des quatre couleurs pour les notifications de gravité différente :</p> + +<ul> + <li>Décontracté : bleu</li> + <li>Succès : vert</li> + <li>Attention : jaune</li> + <li>Erreur : rouge</li> +</ul> + +<div class="note"> +<p dir="ltr">L'utilisation des couleurs Firefox est suggérée, pour plus de détails voir <a href="http://design.firefox.com/photon/visuals/color.html">Firefox Colors</a>. Cependant, pour des raisons de compatibilité avec <a href="https://developer.chrome.com/extensions/browserAction#icon">Chrome</a> et Opera, nous prenons en charge toutes les couleurs que vous souhaitez utiliser.</p> +</div> + +<h2 dir="ltr" id="4._Soyez_Firefoxy_dans_l'apparence_et_la_convivialité">4. Soyez Firefoxy dans l'apparence et la convivialité</h2> + +<p>Vos utilisateurs ont choisi Firefox pour une raison, peut-être pour plusieurs raisons, alors faites correspondre l'apparence de votre extension à celle de Firefox en utilisant le <a href="http://design.firefox.com/photon">Firefox Photon Design System</a>.</p> + +<p>En suivant Photon, vous vous assurerez que votre extension s'intègre à l'expérience Firefox et la rendra plus facile à utiliser pour les utilisateurs.</p> + +<h2 dir="ltr" id="5._Grande_expérience_d'intégration">5. Grande expérience d'intégration</h2> + +<p dir="ltr">Les premières minutes après l'installation de votre extension peuvent être cruciales pour son succès. Votre nouvel utilisateur doit savoir par où commencer et comment utiliser les fonctions de l'extension de votre navigateur.</p> + +<p dir="ltr">Fournir une page d'accueil qui donne aux utilisateurs les informations essentielles dont ils ont besoin pour commencer. Rédigez des informations brèves et précises et proposez des options de configuration simples, le cas échéant. Pour plus d'informations sur la création d'une page d'embarquement, voir <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/onboarding_upboarding_offboarding_best_practices">Bonnes pratiques pour les utilisateurs d'embarquement, d'embarquement, et de débarquement</a>.</p> + +<p dir="ltr">Si l'utilisateur saute la page d'embarquement, assurez-vous que votre poste est prêt à être utilisé immédiatement après l'installation. Il devrait être optimisé pour son cas d'utilisation principal et fonctionner comme prévu pour la plupart des utilisateurs sans avoir besoin de personnalisation.</p> + +<h2 dir="ltr" id="6._Testez_testez_puis_testez_à_nouveau">6. Testez, testez, puis testez à nouveau</h2> + +<p>Le test est une partie essentielle de la création d'un UX exceptionnel pour votre extension. Il y a deux aspects clés du test de votre UX:</p> + +<ol> + <li>Effectuez des tests sur plusieurs appareils et plates-formes pour vous assurer que votre extension fonctionne et qu'elle fonctionne correctement dans le plus grand nombre d'endroits possible. Cela inclut la prise en compte de facteurs tels que la taille de l'écran et la résolution de l'utilisateur —simplement parce que votre extension est bonne et facile à utiliser sur votre écran de bureau ne signifie pas qu'elle fonctionne aussi bien sur un écran d'ordinateur portable, ou, effectivement, vice et versa.</li> + <li>Testez avec autant d'utilisateurs que possible. Ne supposez pas que vous connaissez votre auditoire, car les antécédents et l'expérience des gens peuvent faire une énorme différence dans la façon dont ils interagissent avec votre extension. Ainsi, permettre les tests utilisateur dans le cadre du développement de votre extension.</li> +</ol> + +<p dir="ltr">Conseils de test :</p> + +<ul> + <li>Dans AMO, vous avez la possibilité d'<a href="/fr/Add-ons/Distribution/Submitting_an_add-on#Listing_on_AMO">identifier votre extension comme expérimentale</a> ou publier une <a href="/fr/Add-ons/Distribution#Beta_versions">version beta ou une autre version non finale</a>. + + <ul> + <li>Si vous marquez votre extension comme expérimentale, elle est listée dans AMO, mais avec un profil plus bas. Lorsque l'extension est prête pour un public plus large, vous pouvez désactiver le drapeau expérimental dans AMO.</li> + <li>Si vous avez une extension publiée, vous pouvez utiliser le canal Développement pour proposer une version alpha ou bêta à tester. Vous devrez diriger vos testeurs vers le canal de développement de la liste de votre extension ou indiquer à vos testeurs le lien à utiliser pour installer votre extension.<br> + <img alt="The development channel section of an extension's listing page, offering access to alpha and beta versions for testing." src="https://mdn.mozillademos.org/files/15273/extensions-development-channel.png" style="display: block; height: 262px; margin-left: auto; margin-right: auto; width: 751px;"><br> + Lorsque vous êtes satisfait de votre mise à jour, vous pouvez la publier comme la nouvelle version de votre extension.</li> + </ul> + </li> + <li>Si vous souhaitez distribuer votre extension à des utilisateurs extérieurs à AMO, vous trouverez les instructions pour le faire, ainsi que les instructions d'installation que vous devez fournir aux utilisateurs, dans l'article sur les <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Alternative_distribution_options/Sideloading_add-ons">extensions de chargement latéral.</a> N'oubliez pas que, contrairement à la distribution par l'entremise d'AMO, vous devrez envoyer aux utilisateurs toute version mise à jour de votre extension à mesure que vous apporterez des améliorations.</li> + <li>Utilisez le <a href="https://developer.mozilla.org/en-US/docs/Tools/Responsive_Design_Mode">mode design réactif</a> pour tester le comportement de votre extension sur d'autres tailles d'écran et types d'appareils.</li> +</ul> + +<p><strong>Créer une grande extension est un processus itératif. Bien que nous ayons décrit les six étapes ici, vous y reviendrez probablement au fur et à mesure que vous apprendrez ce qui fonctionne et ce qui ne fonctionne pas grâce aux commentaires des utilisateurs, aux tests et au temps. </strong></p> diff --git a/files/fr/mozilla/add-ons/webextensions/extension_des_outils_de_developpement/index.html b/files/fr/mozilla/add-ons/webextensions/extension_des_outils_de_developpement/index.html new file mode 100644 index 0000000000..8b5695b9e3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/extension_des_outils_de_developpement/index.html @@ -0,0 +1,166 @@ +--- +title: Extension des outils de développement +slug: Mozilla/Add-ons/WebExtensions/extension_des_outils_de_developpement +tags: + - Add-ons + - DevTools + - Extensions + - Guide + - Needs Privileges + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools +--- +<div>{{AddonSidebar}}</div> + +<div class="note"> +<p>Cette page décrit les API de devtools telles qu'elles existent dans Firefox 55. Bien que les API soient basées sur les <a href="https://developer.chrome.com/extensions/devtools">API devtools de chrome</a>, il existe encore de nombreuses fonctionnalités qui ne sont pas encore implémentées dans Firefox et ne sont donc pas documentées ici. Pour voir quelles fonctionnalités sont actuellement manquantes, voir les <a href="/fr/Add-ons/WebExtensions/Using_the_devtools_APIs#Limitations_of_the_devtools_APIs">Limitations des APIs devtools</a>.</p> +</div> + +<p><span class="seoSummary">Vous pouvez utiliser les API WebExtensions pour étendre les outils de développement intégrés du navigateur.</span> Pour créer une extension devtools, incluez la clé "<a href="/fr/Add-ons/WebExtensions/manifest.json/devtools_page">devtools_page</a>" dans <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a>:</p> + +<pre class="brush: json">"devtools_page": "devtools/devtools-page.html"</pre> + +<p>La valeur de cette clé est une URL indiquant un fichier HTML qui a été regroupé avec votre extension. L'URL doit être relative au fichier manifest.json lui-même.</p> + +<p>Le fichier HTML définit une page spéciale dans l'extension, appelée la page devtools.</p> + +<h2 id="La_page_devtools">La page devtools</h2> + +<p>La page Devtools est chargée lorsque les devtools du navigateur sont ouverts et déchargés lorsqu'ils sont fermés. Notez que, parce que la fenêtre devtools est associée avec un seul onglet, il est possible que plus d'une fenêtre devtools - donc plus d'une page devtools - existe en même temps.</p> + +<p>La page devtools n'a pas de DOM visible, mais peut inclure des sources JavaScript en utilisant les balises <code><a href="/fr/docs/Web/HTML/Element/script"><script></a></code>. Les sources doivent être regroupées avec l'extension. Les sources ont accès à :</p> + +<ul> + <li>Les API DOM normales accessibles via l'objet <code><a href="/fr/docs/Web/API/Window">window</a></code> globale</li> + <li>Les mêmes <a href="/fr/Add-ons/WebExtensions/Content_scripts#WebExtension_APIs">API WebExtension que dans les Scripts de contenu</a></li> + <li>Les APIs devtools : + <ul> + <li><code><a href="/fr/Add-ons/WebExtensions/API/devtools.inspectedWindow">devtools.inspectedWindow</a></code></li> + <li><code><a href="/fr/Add-ons/WebExtensions/API/devtools.network">devtools.network</a></code></li> + <li><code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels">devtools.panels</a></code></li> + </ul> + </li> +</ul> + +<p>Notez que la page devtools n'accède à aucune autre API WebExtension, et que la page d'arrière-plan n'a pas accès aux API devtools. Au lieu de cela, la page devtools et la page d'arrière-plan doivent communiquer à l'aide des API messageries d'<code>éxécution</code>. Voici un exemple :</p> + +<pre class="brush: html"><!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + </head> + <body> + <script src="devtools.js"></script> + </body> +</html></pre> + +<p>Le fichier devtools.js contiendra le code réel créant vos extensions d'outils de développement.</p> + +<h2 id="Creations_de_panneaux">Creations de panneaux</h2> + +<p>La fenêtre devtools héberge un certain nombre d'outils distincts: le débogueur JavaScript, le moniteur réseau, etc. Une rangée d'onglets sur le haut permet à l'utilisateur de basculer entre les différents outils. La fenêtre hébergeant l'interface utilisateur de chaque outil s'appelle un "panneau".</p> + +<p>A l'aide de l'API <code>devtools.panel.create()</code>, vous pouvez créer votre propre panneau dans la fenêtre devtools :</p> + +<pre class="brush: js">browser.devtools.panels.create( + "My Panel", // title + "icons/star.png", // icon + "devtools/panel/panel.html" // content +).then((newPanel) => { + newPanel.onShown.addListener(initialisePanel); + newPanel.onHidden.addListener(unInitialisePanel); +});</pre> + +<p>Cela nécessite trois arguments obligatoires: le titre, l'icône et le contenu du panneau. Il renvoie une <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/Promise">promesse</a></code> qui résout un objet <code>devtools.panels.ExtensionPanel</code> représentant le nouveau panneau.</p> + +<h2 id="Interaction_avec_la_fenêtre_cible">Interaction avec la fenêtre cible</h2> + +<p>Les outils de développement sont toujours attachés à un onglet de navigateur particulier. Ceci est appelé "target" pour les outils de développement, ou la "fenêtre inspectée". Vous pouvez interagir avec la fenêtre inspectée en utilisant l'API <code><a href="/fr/Add-ons/WebExtensions/API/devtools.inspectedWindow">devtools.inspectedWindow</a></code>.</p> + +<h3 id="Code_d'exécution_dans_la_fenêtre_cible">Code d'exécution dans la fenêtre cible</h3> + +<p>la fonction <code><a href="/fr/Add-ons/WebExtensions/API/devtools.inspectedWindow/eval">devtools.inspectedWindow.eval()</a></code> fournit une façon d'exécuter le code dans la fenêtre inspectée.</p> + +<p>C'est un peu comme utiliser {{WebExtAPIRef("tabs.executeScript()")}} pour injecter un script de contenu, mais avec une différence importante :</p> + +<ul> + <li>Contrairement aux scripts de contenu, les scripts chargés à partir de <code>devtools.inspectedWindow.eval()</code><strong> </strong><strong>n'obtiennent pas</strong> <a href="/fr/Add-ons/WebExtensions/Content_scripts#DOM_access">une "vue nette du DOM" </a>: c'est-à-dire qu'ils peuvent voir des modifications apportées à la page par les scripts de page.</li> +</ul> + +<div class="note"> +<p>Notez qu'une vue propre du DOM est une fonction de sécurité destinée à empêcher les pages hostiles de tromper WebExtensions en redéfinissant le comportement des fonctions DOM natives. Cela signifie que vous devez être très prudent en utilisant eval () et utiliser un script de contenu normal si vous le pouvez.</p> +</div> + +<p>Les scripts chargés à l'aide de <code>devtools.inspectedWindow.eval()</code> ne voient pas non plus de variables JavaScript définies par les scripts de contenu.</p> + +<h3 id="Travailler_avec_les_scripts_de_contenus">Travailler avec les scripts de contenus</h3> + +<p>Un document devtools n'a pas d'accès direct à {{WebExtAPIRef("tabs.executeScript()")}}, donc, si vous devez injecter un script de contenu, le document devtools doit envoyer un message au script en arrière-plan en lui demandant d'injecter le script. La fonction <code><a href="/fr/Add-ons/WebExtensions/API/devtools.inspectedWindow/tabId">devtools.inspectedWindow.tabId</a></code> fournit l'ID de l'onglet cible: le document devtools peut passer le script en arrière-plan, et le script de fond peut à son tour passer dans {{WebExtAPIRef("tabs.executeScript()")}}:</p> + +<pre class="brush: js">// devtools-panel.js + +const scriptToAttach = "document.body.innerHTML = 'Hi from the devtools';"; + +window.addEventListener("click", () => { + browser.runtime.sendMessage({ + tabId: browser.devtools.inspectedWindow.tabId, + script: scriptToAttach + }); +});</pre> + +<pre class="brush: js">// background.js + +function handleMessage(request, sender, sendResponse) { + browser.tabs.executeScript(request.tabId, { + code: request.script + }); +} + +browser.runtime.onMessage.addListener(handleMessage);</pre> + +<p>Si vous avez besoin d'échanger des messages entre les scripts de contenu exécutés dans la fenêtre cible et un document de developpement, il est judicieux d'utiliser {{WebExtAPIRef("runtime.connect()")}} et {{WebExtAPIRef("runtime.onConnect")}} pour configurer une connexion entre la page d'arrière-plan et le document devtools. La page d'arrière-plan peut alors maintenir un mappage entre les ID de l'onglet et les objets {{WebExtAPIRef("runtime.Port")}}, et utilisez-le pour acheminer les messages entre les deux champs.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/14923/devtools-content-scripts.png" style="display: block; height: 416px; margin-left: auto; margin-right: auto; width: 600px;"></p> + +<h2 id="Limitations_des_API_des_devtools">Limitations des API des devtools</h2> + +<p>Ces API sont basées sur les API devtools de Chrome, mais de nombreuses fonctionnalités sont encore manquantes par rapport à Chrome. Cette section répertorie les fonctionnalités qui ne sont pas encore implémentées, à partir de Firefox 54. Notez que les API de devtools sont en cours de développement et nous espérons ajouter de l'aide pour la plupart d'entre elles dans les versions ultérieures.</p> + +<h3 id="devtools.inspectedWindow">devtools.inspectedWindow</h3> + +<p>Les éléments suivants ne sont pas pris en charge :</p> + +<ul> + <li><code>inspectedWindow.getResources()</code></li> + <li><code>inspectedWindow.onResourceAdded</code></li> + <li><code>inspectedWindow.onResourceContentCommitted</code></li> +</ul> + +<p>Aucune des options à <code>inspectedWindow.eval()</code> n'est prise en charge.</p> + +<p>Les scripts injectés à l'aide de <code>inspectedWindow.eval()</code> ne peuvent pas utiliser toutes les fonctions d'assistance en ligne de commande de la console, mais <code>$0</code> et <code>inspect(...)</code> sont tous deux pris en charge (à partir de Firefox 55).</p> + +<h3 id="devtools.panels">devtools.panels</h3> + +<p>Les éléments suivants ne sont pas pris en charge :</p> + +<ul> + <li><code>panels.elements</code></li> + <li><code>panels.sources</code></li> + <li><code>panels.setOpenResourceHandler()</code></li> + <li><code>panels.openResource()</code></li> + <li><code>panels.ExtensionPanel.createStatusBarButton()</code></li> + <li><code>panels.Button</code></li> + <li><code>panels.ElementsPanel</code></li> + <li><code>panels.SourcesPanel</code></li> +</ul> + +<h2 id="Examples">Examples</h2> + +<p>The <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> repo on GitHub contains several examples of WebExtensions that use devtools panels:</p> + +<ul> + <li> + <p><a href="https://github.com/mdn/webextensions-examples/blob/master/devtools-panels/">devtools-panels</a> use devtools panels:</p> + </li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/firefox_differentiators/index.html b/files/fr/mozilla/add-ons/webextensions/firefox_differentiators/index.html new file mode 100644 index 0000000000..f8651beac6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/firefox_differentiators/index.html @@ -0,0 +1,90 @@ +--- +title: Différenciateurs Firefox +slug: Mozilla/Add-ons/WebExtensions/Firefox_differentiators +tags: + - Add-ons + - Extensions + - Firefox + - NeedMarkupWork + - Themes + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Firefox_differentiators +--- +<p>{{AddonSidebar}}</p> + +<p>Firefox est un excellent endroit pour commencer le développement de votre extension de navigateur. Pour commencer, vous obtenez la conformité la plus élevée avec l'API d'extension de navigateur proposée, y compris l'utilisation de l'espace de noms <code>browser.*</code> et les promesses pour la gestion des événements asynchrones. Ensuite, il y a une communauté de développeurs de vulgarisation très solidaire, prêts à vous aider.</p> + +<p>Firefox offre également des fonctionnalités uniques que vous pouvez utiliser pour créer des extensions plus sûres, plus faciles à utiliser et plus attrayantes visuellement. Jetez un coup d’œil à ce qui est disponible:</p> + +<table> + <tbody> + <tr> + <td> + <p>Aider les utilisateurs à séparer les activités de leur navigateur avec les <a href="/fr/Add-ons/WebExtensions/API/contextualIdentities">identités contextuelles</a> (Contextual Identities ou Containers). Donner aux groupes d'onglets leur propre stockage de navigateur local : stockage de cookies et données locales dans localStorage et indexedDB. Ainsi, les détails tels que les préférences du site, les sessions ouvertes et les données de suivi des publicités restent confidentiels dans les onglets.</p> + </td> + <td><img alt="Illustration of the containers menu" src="https://mdn.mozillademos.org/files/16299/Containers.png" style="height: 354px; width: 742px;"></td> + </tr> + <tr> + <td> + <p>Enregistrez et affichez des informations supplémentaires ou complémentaires sur une page Web à l'aide du composant de l'interface utilisation <a href="/fr/Add-ons/WebExtensions/user_interface/Sidebars">Sidebar</a>, un panneau situé à côté des pages Web.</p> + </td> + <td><img alt="Illustration of the annotation example sidebar sitting alongside a webpage" src="https://mdn.mozillademos.org/files/16300/Sidebar.png"></td> + </tr> + <tr> + <td> + <p>Mieux intégrer votre extension avec le navigateur en utilisant la possibilité de choisir le style du navigateur dans les actions des pages et du navigateur ainsi que dans la barre latérale de l'interface utilisateur. Définissez, dans le fichier <code>manifest.json</code>, les URLs où une action de page est affichée ou masquée, et choisissez où placer l'icône d'action du navigateur.</p> + </td> + <td><img alt="Illustration of a browser action icon placed in the menu panel" src="https://mdn.mozillademos.org/files/16296/Icon_placement.png" style="height: 348px; width: 922px;"></td> + </tr> + <tr> + <td> + <p>Aidez les utilisateurs à localiser le contenu qui les intéresse dans une page web, avec la possibilité de <a href="/fr/Add-ons/WebExtensions/API/find">trouver et mettre en surbrillance le texte dans une page web</a>.</p> + </td> + <td><img alt="Illustration of find highlighting text in page content" src="https://mdn.mozillademos.org/files/16298/Find.png" style="height: 540px; width: 1180px;"></td> + </tr> + <tr> + <td> + <p>Effectuez des recherches directement à partir de votre extension, avec des fonctions pour <a href="/fr/Add-ons/WebExtensions/API/search">obtenir des détails sur les moteurs de recherche et effectuer une recherche</a>.</p> + </td> + <td><img alt='Wikipedia page showing the results of the search for "extension"' src="https://mdn.mozillademos.org/files/16295/search_extension.png" style="height: 246px; width: 640px;"></td> + </tr> + <tr> + <td> + <p>Ajoutez une dimension supplémentaire à vos thèmes en <a href="/fr/Add-ons/WebExtensions/API/theme">mettant à jour le thème du navigateur au moment de l'exécution</a>. Avec cette fonction, vous pouvez alterner les thèmes par heure de la journée, appliquer un thème différent lorsque les utilisateurs naviguent sur votre site Web, refléter les actions des utilisateurs dans votre extension, et plus encore.</p> + </td> + <td><img alt="Illustration suggesting the theme is changing by time" src="https://mdn.mozillademos.org/files/16294/Dynamic_theme.png" style="height: 366px; width: 1152px;"></td> + </tr> + <tr> + <td> + <p>Effectuez des recherches directement à partir de votre extension, avec des fonctions pour obtenir les détails avec la <a href="/fr/Add-ons/WebExtensions/API/browserSettings">possibilité de modifier (certains) paramètres globaux du navigateur</a>.</p> + </td> + <td><img alt="Example of a Firefox setting showing that it is being controlled by an extension" src="https://mdn.mozillademos.org/files/16293/extension_controlling_settings.png" style="height: 1172px; width: 2084px;"></td> + </tr> + <tr> + <td> + <p>Permettez aux utilisateurs d'ajouter de manière fiable les fonctionnalités de votre extension à de nouvelles pages et de nouveaux sites, avec la possibilité <a href="/fr/Add-ons/WebExtensions/API/contentScripts">enregistrer et de désinscrire des scripts de contenu au moment de l'exécution</a>.</p> + </td> + <td><img alt="Illustration of example code used to inject a content script on demand" src="https://mdn.mozillademos.org/files/16290/script_inject.png" style="height: 261px; width: 943px;"></td> + </tr> + <tr> + <td> + <p>Profitez des services externes pour gérer les protocoles ou les types de contenu en enregistrant les <a href="/fr/Add-ons/WebExtensions/manifest.json/protocol_handlers">gestionnaires de protocole</a> dans le <code>manifest.json</code>.</p> + </td> + <td><img alt="Illustration of code setting a protocol handler" src="https://mdn.mozillademos.org/files/16297/Protocol.png" style="height: 167px; width: 741px;"></td> + </tr> + <tr> + <td> + <p>Effectuer des tâches Web supplémentaires telles que la <a href="/fr/Add-ons/WebExtensions/API/dns">résolution des noms de domaines </a>et <a href="/fr/Add-ons/WebExtensions/API/proxy">proxying des requêtes web</a>.</p> + </td> + <td><img alt="Example of Firefox proxy settings" src="https://mdn.mozillademos.org/files/16292/Proxy_settings.png"></td> + </tr> + <tr> + <td> + <p>Ajoutez des fonctionnalités de sécurité avancées à l'aide des <a href="/fr/Add-ons/WebExtensions/API/pkcs11">modules de sécurités PKCS #11 aux clés et certificats source</a>.</p> + </td> + <td style="text-align: center;"><img alt="Illustration of the certificate and key" src="https://mdn.mozillademos.org/files/16291/certificate_key.png" style="height: 133px; width: 200px;"></td> + </tr> + </tbody> +</table> + +<p>Icônes de <a href="https://www.icons8.com">icon8</a></p> diff --git a/files/fr/mozilla/add-ons/webextensions/firefox_workflow_overview/index.html b/files/fr/mozilla/add-ons/webextensions/firefox_workflow_overview/index.html new file mode 100644 index 0000000000..62e475453e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/firefox_workflow_overview/index.html @@ -0,0 +1,74 @@ +--- +title: Aperçu du flux de travail Firefox +slug: Mozilla/Add-ons/WebExtensions/Firefox_workflow_overview +tags: + - Add-ons + - Code + - Extensions + - Firefox + - WebExtensions + - enhance + - prepare + - publish + - retire + - workflow +translation_of: Mozilla/Add-ons/WebExtensions/Firefox_workflow_overview +--- +<p>{{AddonSidebar}}</p> + +<table> + <tbody> + <tr> + <td style="width: 200px; text-align: center;"><img alt="Firefox workflow prepare step graphic" src="https://mdn.mozillademos.org/files/16324/firefox_workflow_prepare.png" style="height: 97px; width: 145px;"></td> + <td style="width: 200px; text-align: center;"><img alt="Firefox workflow code step graphic" src="https://mdn.mozillademos.org/files/16325/firefox_workflow_code.png" style="height: 97px; width: 145px;"></td> + <td style="width: 200px; text-align: center;"><img alt="Firefox workflow publish step graphic" src="https://mdn.mozillademos.org/files/16326/firefox_workflow_publish.png" style="height: 97px; width: 145px;"></td> + <td style="width: 200px; text-align: center;"><img alt="Firefox workflow enhance step graphic" src="https://mdn.mozillademos.org/files/16327/firefox_workflow_enhance.png" style="height: 97px; width: 145px;"></td> + <td style="width: 200px; text-align: center;"><img alt="Firefox workflow retire step graphic" src="https://mdn.mozillademos.org/files/16328/firefox_workflow_retire.png" style="height: 97px; width: 145px;"></td> + </tr> + <tr> + <td> + <ul> + <li><a href="/fr/Add-ons/WebExtensions/choisissez_une_version_firefox_pour_le_developpement_extensions_web">Choisissez une version Firefox pour le développement d'extensions web</a></li> + <li>Choisissez votre IDE ou votre éditeur de code</li> + <li><a href="/fr/Add-ons/WebExtensions/Getting_started_with_web-ext">Installer web-ext</a></li> + <li><a href="https://webextensions.in/">Créer votre échanfaudage d'extension</a></li> + <li>Familiarisez-vous avec les <a href="/fr/Add-ons/AMO/Règles">apolitiques des extensions et l'accord du développeur</a></li> + </ul> + </td> + <td> + <ul> + <li><a href="/fr/Add-ons/WebExtensions/Your_first_WebExtension">Codez your extension</a></li> + <li>Testez votre extension avec le <a href="/fr/Add-ons/WebExtensions/Getting_started_with_web-ext#Testing_out_an_extension">lanceur web-ext</a> ou <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">about: debugging</a>)</li> + <li><a href="/fr/Add-ons/WebExtensions/Testing_persistent_and_restart_features">Tester les fonctions persistantes et redémarrer</a></li> + <li>Déboguer avec la <a href="/fr/docs/Outils/Boîte_à_outils_du_navigateur">fenêtre de débogage de votre extension</a></li> + </ul> + </td> + <td> + <ul> + <li>Packager votre extension avec la <a href="/fr/Add-ons/WebExtensions/Getting_started_with_web-ext#Packaging_your_extension"> brique web-ext</a></li> + <li>Créer un compte <a href="https://addons.moztilla.org">addons.mozilla.org</a></li> + <li><a href="/fr/Add-ons/Distribution/Submitting_an_add-on">Soumettre votre extension</a></li> + <li><a href="/fr/Add-ons/Source_Code_Submission">Soumettre votre code source</a> (si nécessaire)</li> + <li><a href="/fr/Add-ons/Listing">Créer une liste attrayante</a></li> + </ul> + </td> + <td> + <ul> + <li>Répondu à l'examen de l'extension de Mozilla</li> + <li>Promouvoir votre extension</li> + <li><a href="/fr/Add-ons/AMO/Policy/Featured">Proposez votre extensions pour qu'elle soit mise en avant</a></li> + <li>Mettre à jour et améliorer votre extension</li> + </ul> + </td> + <td> + <ul> + <li><a href="/fr/Add-ons/Distribution/Retiring_your_extension">Retirez votre extension</a></li> + </ul> + </td> + </tr> + </tbody> +</table> + +<p>* Ou distribuez votre extension pour le <a href="/fr/Add-ons/WebExtensions/Alternative_distribution_options/Sideloading_add-ons">chargement latéral</a>, les <a href="/fr/Add-ons/WebExtensions/Alternative_distribution_options/Add-ons_for_desktop_apps">applications de bureaux</a>, ou <a href="/fr/Add-ons/WebExtensions/Alternative_distribution_options/Add-ons_in_the_enterprise">dans une enteprise</a>.</p> + +<p><strong>Vous avez une extension que vous souhaitez porter à Firefox?</strong> Nous fournissons des conseils, des directives et des outils pour vous aider à rendre le portage simple. Pour commencer, visitez <a href="/fr/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension">Portage d'une extension Google Chrome</a>.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/incompatibilités_chrome/index.html b/files/fr/mozilla/add-ons/webextensions/incompatibilités_chrome/index.html new file mode 100644 index 0000000000..71d20cc62b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/incompatibilités_chrome/index.html @@ -0,0 +1,179 @@ +--- +title: Incompatibilités avec Chrome +slug: Mozilla/Add-ons/WebExtensions/Incompatibilités_Chrome +tags: + - Guide + - WebExtensions + - google chrome +translation_of: Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities +--- +<p>{{AddonSidebar}}</p> + +<p>Les extensions construites à l'aide des API WebExtension sont conçues afin d'être compatibles avec les extensions Chrome et Opera. Les extensions écrites dans ces navigateurs devraient fonctionner, autant que possible, avec très peu de changement dans Firefox.</p> + +<p>Toutefois, il existe certaines différences significatives entre Chrome, Firefox et Edge et notamment :</p> + +<ul> + <li>La prise en charge des API JavaScript est hétérogène entre les navigateurs. Voir la page <a href="/fr/Add-ons/WebExtensions/Compatibilité_navigateurs_API_JavaScript">Compatibilité des navigateurs avec les API JavaScript WebExtension</a> pour plus de détails.</li> + <li>La prise en charge des clés du fichier <code>manifest.json</code> varie entre les navigateurs. Pour plus de détails, voir la section <a href="/fr/Add-ons/WebExtensions/manifest.json#Compatibilité_des_navigateurs">Compatibilité des navigateurs de la page manifest.json</a>.</li> + <li>Pour Chrome, les API JavaScript sont accessibles sous l'espace de noms <code>chrome</code>. Pour Firefox et Edge, elles sont accessibles sous l'espace de noms <code>browser</code>. (cf. <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=798169">bug Chrome 798169</a>)</li> + <li>Pour Chrome et Edge, les API asynchrones sont implémentées avec des <em>callbacks</em>. Pour Firefox, les API asynchrones sont implémentées avec des <a href="/fr/docs/Web/JavaScript/Guide/Utiliser_les_promesses">promises</a>. (cf.<a href="https://bugs.chromium.org/p/chromium/issues/detail?id=328932">bug Chrome 328932</a>)</li> +</ul> + +<p>La suite de cette page détaille ces problèmes ainsi que d'autres points d'incompatibilité.</p> + +<h2 id="Les_API_JavaScript">Les API JavaScript</h2> + +<h3 id="Les_callbacks_et_lespace_de_noms_chrome.*">Les <em>callbacks</em> et l'espace de noms chrome.*</h3> + +<p>Dans Chrome, les extensions peuvent accéder aux API JavaScript privilégiées à l'aide de l'espace de noms <code>chrome</code> :</p> + +<pre class="brush: js">chrome.browserAction.setIcon({path: "path/to/icon.png"});</pre> + +<p>Les WebExtensions accèdent aux API équivalentes à l'aide de l'espace de noms <code>browser</code> :</p> + +<pre class="brush: js">browser.browserAction.setIcon({path: "path/to/icon.png"}); +</pre> + +<p>Beaucoup d'API sont asynchrones. Dans Chrome, les API asynchrones utilisent des fonctions de rappel (<em>callback</em>) pour renvoyer des valeurs et {{WebExtAPIRef("runtime.lastError")}} pour communiquer les erreurs :</p> + +<pre class="brush: js">function logCookie(c) { + if (chrome.extension.lastError) { + console.error(chrome.extension.lastError); + } else { + console.log(c); + } +} + +chrome.cookies.set( + {url: "https://developer.mozilla.org/"}, + logCookie +);</pre> + +<p>Les API WebExtensions équivalentes utilisent plutôt <a href="/fr/docs/Web/JavaScript/Guide/Utiliser_les_promesses">les promesses</a> :</p> + +<pre class="brush: js">function logCookie(c) { + console.log(c); +} + +function logError(e) { + console.error(e); +} + +var setCookie = browser.cookies.set( + {url: "https://developer.mozilla.org/"} +); +setCookie.then(logCookie, logError); +</pre> + +<h3 id="Firefox_les_espaces_de_noms_chrome_et_browser">Firefox : les espaces de noms <code>chrome</code> et <code>browser</code></h3> + +<p>Afin d'aider au portage, l'implémentation de Firefox des WebExtensions prend en charge l'espace de noms <code>chrome</code>, l'utilisation des <em>callbacks</em>, l'espace de noms <code>browser</code> et l'utilisation des promesses. Cela signifie que de nombreuses extensions Chrome fonctionneront simplement dans Firefox sans aucune modification. Cependant, cela ne fait pas partie de la norme WebExtension et peut ne pas être pris en charge par l'ensemble des navigateurs compatibles.</p> + +<p>Si vous écrivez votre extension en utilisant <code>browser</code> et les promesses, l'équipe de Firefox a également développé une prothèse (<em>polyfill</em>) qui lui permettra de fonctionner sur Chrome : <a href="https://github.com/mozilla/webextension-polyfill">https://github.com/mozilla/webextension-polyfill</a>.</p> + +<h3 id="Les_API_partiellement_prises_en_charge">Les API partiellement prises en charge</h3> + +<p>La page sur la <a href="/fr/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs"> compatibilité des navigateurs pour les API JavaScript WebExtension</a> inclut l'ensemble des tableaux de compatibilité. Lorsqu'il existe des réserves autour du support d'un élément d'API donné, ceci est indiqué dans ces tableaux avec un astérisque "*". Ces réserves sont détaillées la page de documentation respective de l'API.</p> + +<p>Ces tableaux sont générés à partir des données de compatibilité stockées en tant que <a href="https://github.com/mdn/browser-compat-data">fichiers JSON dans GitHub</a>.</p> + +<p>Le reste de cette section décrit les problèmes de compatibilité qui ne sont pas encore pris en compte dans ces tableaux.</p> + +<h4 id="notifications"><a href="/fr/Add-ons/WebExtensions/API/notifications" id="notifications_incompatibilities" name="notifications_incompatibilities">notifications</a></h4> + +<ul> + <li>Pour <code>notifications.create()</code>, lorsqu'on utilise le <a href="/fr/Add-ons/WebExtensions/API/notifications/TemplateType">type</a> <code>"basic"</code>, l'icône <code>iconUrl</code> est optionnelle dans Firefox mais obligatoire dans Chrome.</li> + <li>Les notifications sont effacées immédiatement lorsque l'utilisateur clique dessus. Ce n'est pas le cas dans Chrome.</li> + <li> + <p>Si vous appelez <code>notifications.create()</code> plusieurs fois et rapidement, Firefox peut finir par ne pas afficher de notification du tout. Attendre de faire d'autres appels dans le <em>callback</em> <code>chrome.notifications.create()</code> ne suffit pas (le délai n'est pas suffisamment long).</p> + </li> +</ul> + +<h4 id="proxy"><a href="/fr/Add-ons/WebExtensions/API/proxy" id="proxy_incompatibilities" name="proxy_incompatibilities">proxy</a></h4> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/API/proxy" id="proxy_incompatibilities" name="proxy_incompatibilities">Cette API est complètement différente de celle conçue par Chrome. Avec l'API de Chrome, une extension peut enregistrer un fichier PAC, mais peut également définir des règles de proxy explicites. Comme cela est également possible en utilisant les fichiers PAC étendus, cette API ne prend en charge que l'approche de fichier PAC. Étant donné que cette API est incompatible avec l'API <code>proxy</code> de Chrome, cette API est uniquement disponible via l'espace de nom <code>browser</code>.</a></li> +</ul> + +<h4 id="tabs"><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs" id="tabs_incompatibilities" name="tabs_incompatibilities">tabs</a></h4> + +<ul> + <li> + <p>Dans Firefox, les URL relatives passées à <code>tabs.executeScript()</code> ou <code>tabs.insertCSS()</code> sont résolues par rapport à l'URL de la page actuelle. Dans Chrome, ces URL sont résolues par rapport à l'URL de base de l'extension. Pour travailler pour l'ensemble des navigateurs, il est donc nécessaire d'indiquer le chemin comme URL absolue, en commençant par la racine de l'extension, comme ceci:</p> + + <pre>/chemin/vers/script.json +</pre> + </li> + <li>Dans Firefox, interroger les onglets avec des URL avec <code>tabs.query()</code> nécessitent une permission <code>"tabs"</code>. Dans Chrome, il est possible de le faire sans la permission <code>"tabs"</code> mais cela limitera les résultats aux onglets dont les URL correspondent aux permissions de l'hôte.</li> + <li>Dans Firefox, la promesse <code>tabs.remove()</code> est tenue après l'évènement <code>beforeunload</code> alors que pour Chrome, le <em>callback</em> n'attend pas <code>beforeunload</code>.</li> +</ul> + +<h4 id="webRequest"><a href="/en-US/Add-ons/WebExtensions/API/webRequest" id="webRequest_incompatibilities" name="webRequest_incompatibilities">webRequest</a></h4> + +<ul> + <li>Dans Firefox, les requêtes ne peuvent être redirigées que si l'URL originale utilise le schéma <code>http:</code> ou <code>https:</code>.</li> + <li>Dans Firefox, les évènements ne sont pas déclenchés pour les requêtes système (mise à jour d'extensions, suggestions dans la barre de recherche). À partir de Firefox 57, Firefox fait une exception pour les extensions qui doivent intercepter {{WebExtAPIRef("webRequest.onAuthRequired")}} afin d'autoriser le proxy. Pour plus d'informations, voir la page {{WebExtAPIRef("webRequest.onAuthRequired")}}.</li> + <li>Dans Firefox, si une extension souhaite rediriger une URL publique vers <a href="/fr/Add-ons/WebExtensions/user_interface/pages_web_incluses">une page d'extension</a>, le fichier <code>manifest.json</code> de l'extension doit contenir une clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a></code> qui indique l'URL de la page de l'extension. On notera que n'importe quel site pourra alors lier ou rediriger vers cette URL et que les extensions doivent considérer n'importe quelle entrée (données provenant d'une requête POST par exemple) comme potentiellement dangereuse.</li> + <li>Dans Firefox, à partir de Firefox 52, certaines API <code>browser.webRequest.*</code> renvoient des promesses qui résolvent <code>webRequest.BlockingResponse</code> de façon asynchrone. Pour Chrome, seule <code>webRequest.onAuthRequired</code> prend en charge une gestion asynchrone de <code>webRequest.BlockingResponse</code> avec <code>'asyncBlocking'</code>.</li> +</ul> + +<h4 id="windows"><a href="/fr/Add-ons/WebExtensions/API/windows" id="windows_incompatibilities" name="windows_incompatibilities">windows</a></h4> + +<ul> + <li>Dans Firefox, <code>onFocusChanged</code> sera déclenché plusieurs fois pour un changement de focus donné.</li> +</ul> + +<h3 id="API_non_prises_en_charge">API non prises en charge</h3> + +<h4 id="declarativeContent"><a href="https://developer.chrome.com/extensions/declarativeContent" id="declarativeContent_incompatibilities" name="dec">declarativeContent</a></h4> + +<p>l'API <code>declarativeContent</code> de Chrome <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1435864">n'a pas encore été implémentée</a> in Firefox.</p> + +<p>Firefox <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1323433#c16">ne supportera pas</a> l'API <code>declarativeContent.RequestContentScript</code>, qui est rarement utilisée et n'est pas disponible dans les versions stables de Chrome.</p> + +<h3 id="Incompatibilités_diverses">Incompatibilités diverses</h3> + +<h4 id="Gestion_des_URL_dans_CSS">Gestion des URL dans CSS</h4> + +<p>Firefox résout les URL dans les fichiers CSS injectés par rapport au fichier CSS lui-même, plutôt que dans la page dans laquelle il est injecté.</p> + +<h4 id="Incompatibilités_supplémentaires">Incompatibilités supplémentaires</h4> + +<p>Firefox ne prend pas en charge <code><a href="/fr/docs/Web/API/Window/alert">alert()</a></code>, <code><a href="/fr/docs/Web/API/Window/confirm">confirm()</a></code> ou <code><a href="/fr/docs/Web/API/Window/prompt">prompt()</a></code> à partir des pages d'arrière-plan.</p> + +<h4 id="web_accessible_resources">web_accessible_resources</h4> + +<p>Dans Chrome, lorsqu'une ressource est répertoriée dans <code>web_accessible_resources</code>, elle est accessible via <code>chrome-extension://<id-de-l-extension>/<chemin/vers/la/ressource></code>. L'identifiant de l'extension est fixé pour une extension donnée.</p> + +<p>Firefox l'implémente différemment en utilisant un UUID aléatoire qui change pour chaque instance de Firefox : <code>moz-extension://<UUID-aleatoire>/<chemin/vers/la/ressource></code>. Cette façon aléatoire peut empêcher certaines choses, comme ajouter l'URL de votre extension spécifique à la politique CSP d'un autre domaine.</p> + +<h4 id="La_propriété_key_du_manifeste">La propriété <code>key</code> du manifeste</h4> + +<p>Lorsque vous travaillez avec une extension décompressée, Chrome permet d'ajouter une <a href="https://developer.chrome.com/extensions/manifest/key">propriété <code>key</code></a> au manifeste afin de fixer l'identifiant de l'extension sur différentes machines. Ceci s'avère notamment utile lorsqu'on travaille avec <code>web_accessible_resources</code>. Puisque Firefox utilise des UUID aléatoires pour les <code>web_accessible_resources</code>, cette propriété n'est pas prise en charge.</p> + +<h4 id="Les_requêtes_sont_relatives_au_contexte_de_lextension_et_pas_à_celui_du_contenu_de_la_page">Les requêtes sont relatives au contexte de l'extension et pas à celui du contenu de la page</h4> + +<p>Dans Chrome, lorsque la requête est appelée (par exemple, en utilisant <code><a href="/fr/docs/Web/API/Fetch_API/Using_Fetch">fetch()</a></code>) pour une URL relative comme <code>/api</code> du script de contenu, elle sera envoyée à <code>https://example.com/api</code>. Dans Firefox, vous devez fournir des URL absolues.</p> + +<h2 id="Les_clés_de_manifest.json">Les clés de <code>manifest.json</code></h2> + +<p>La page relative à <code><a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a></code> contient un tableau décrivant la compatibilité des navigateurs pour les différentes clés du fichier. Lorsqu'il y a des mises en garde concernant le support d'une clé donnée, ceci est indiqué dans le tableau avec un astérisque "*" et de plus amples informations sont fournies dans la page décrivant la clé.</p> + +<p>Ces tables sont générées à partir des données de compatibilité stockées en tant que <a href="https://github.com/mdn/browser-compat-data">fichiers JSON dans GitHub</a>.</p> + +<h2 id="Communication_avec_le_système_natif">Communication avec le système natif</h2> + +<h3 id="Arguments_de_messagerie_basée_sur_la_connexion">Arguments de messagerie basée sur la connexion</h3> + +<p>Sur Linux et Mac, Chrome passe un argument sur l'application natif, qui est l'origine de l'extension qui l'a lancée, sous la forme : <code>chrome-extension://[extensionID]</code>. Cela permet à l'application d'identifier l'extension.</p> + +<p>Sur Windows, Chrome passe deux arguments: le premier est l'origine de l'extension, et le second est un handle de la fenêtre native de Chrome qui a démarré l'application.</p> + +<h3 id="allowed_extensions">allowed_extensions</h3> + +<p>Dans Chrome, la clé de manifeste <code>allowed_extensions</code> s'appelle <code>allowed_origins</code>.</p> + +<h3 id="Emplacement_du_fichier_de_manifeste_dapplication">Emplacement du fichier de manifeste d'application</h3> + +<p>Chrome s'attend à trouver le manifeste de l'application dans un autre endroit. Se référer à la documentation Chrome pour <a href="https://developer.chrome.com/extensions/nativeMessaging#native-messaging-host-location">l'emplacement de l'hôte de messagerie natif</a>.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/index.html b/files/fr/mozilla/add-ons/webextensions/index.html new file mode 100644 index 0000000000..ff9e2748b2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/index.html @@ -0,0 +1,80 @@ +--- +title: WebExtensions +slug: Mozilla/Add-ons/WebExtensions +tags: + - Add-ons + - Landing + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions +--- +<div>{{AddonSidebar}}</div> + +<p><span class="seoSummary">Les extensions, ou modules complémentaires, peuvent étendre et modifier les fonctionnalités d'un navigateur. Les extensions Firefox sont construites en utilisant la technologie de compatibilité multi-navigateurs de l'API WebExtensions.</span></p> + +<p>La technologie d'extensions Firefox est, en grande partie, compatible avec l'<a href="https://developer.chrome.com/extensions">API d'extension</a> supportée par les navigateurs Chromium tels que Google Chrome, Microsoft Edge et Opera. Dans la plupart des cas, les extensions écrites dans ces navigateurs fonctionnent sur Firefox avec <a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Porting_from_Google_Chrome">seulement quelques modifications</a>.</p> + +<section class="cleared" id="sect1"> +<ul class="card-grid"> + <li><span>Guides</span> + + <p>Que vous soyez débutant ou à la recherche de conseils plus avancés, renseignez-vous sur comment fonctionnent les extensions et comment utilisez l'API WebExtensions grâce à notre large variété de <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions">tutoriels et guides</a>.</p> + </li> + <li><span>Références</span> + <p>Obtenez des détails complets sur les méthodes, les propriétés, les types et les événements des <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Compatibilité_navigateurs_API_JavaScript">API WebExtensions</a> et des informations détaillées sur les <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json">clefs du manifest</a>.</p> + </li> + <li><span>Flux de travail Firefox</span> + <p>Découvrez comment créer et publier des extensions qui marche sur Firefox : obtenez de l'information fiable sur le fonctionnement des outils de développement, de la publication et de la distribution, et du portage avec l'<a href="https://extensionworkshop.com/">atelier extension</a>.</p> + </li> +</ul> + +<p>Si vous avez des idées ou des questions ou si vous avez besoin d'aide, vous pouvez nous contacter sur la mailing-liste<a href="https://mail.mozilla.org/listinfo/dev-addons"> dev-addons</a> ou sur la <a href="https://matrix.to/#/!CuzZVoCbeoDHsxMCVJ:mozilla.org?via=mozilla.org&via=matrix.org&via=humanoids.be">room Add-ons </a>sur <a href="https://wiki.mozilla.org/Matrix">Matrix</a>.</p> + +<div class="row topicpage-table"> +<div class="section"> +<h2 id="Premiers_pas">Premiers pas</h2> + +<p>Découvrez<a href="/fr/Add-ons/WebExtensions/What_are_WebExtensions"> ce que peuvent faire les extensions Firefox </a>avant d'en faire <a href="/fr/Add-ons/WebExtensions/Your_first_WebExtension">une</a>. Découvrez comment est structurée <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">une extension</a> et obtenez un aperçu du processus de <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Firefox_workflow_overview">développement et de publication d'extension, style Firefox</a>. Explorez un peu plus en profondeur leurs fonctionnements avec une sélection exhaustif d'<a href="/fr/Add-ons/WebExtensions/Examples">exemples d'extensions</a> que vous pouvez exécuter directement sur Firefox.</p> + +<h2 id="Concepts">Concepts</h2> + +<p>Obtenez des informations détaillées sur les concepts fondamentaux des extensions <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API">à l'aide d'une vue d'ensemble de l'API Javascript</a>, en passant par les <a href="/fr/Add-ons/WebExtensions/Content_scripts">scripts de contenu</a><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">,</a> les <a href="/fr/Add-ons/WebExtensions/Match_patterns">Motifs (Match patterns)</a>, <a href="/fr/Add-ons/WebExtensions/Working_with_files">le travail avec les fichiers</a>, <a href="/fr/Add-ons/WebExtensions/Internationalization">l'internationalisation</a>, et <a href="/fr/Add-ons/WebExtensions/securite_bonne_pratique">les bonnes pratiques de sécurité</a>, jusqu'à des sujets plus avancés tels que les <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Native_messaging">messages natifs</a>, <a href="/fr/Add-ons/WebExtensions/extension_des_outils_de_developpement">l'utilisation d'APIs d'outils de dévelopment</a>, et <a href="/fr/Add-ons/WebExtensions/manifests_native">des Manifests Natif</a>s.</p> + +<h2 id="Interface_utilisatrice">Interface utilisatrice</h2> + +<p>Découvrez tous les composants possibles d'une <a href="/fr/Add-ons/WebExtensions/User_experience_best_practices">interface utilisatrice</a> que vous pouvez utiliser dans vos extensions, avec des exemples contenant des astuces et leur code.</p> + +<h2 id="Tutoriels">Tutoriels</h2> + +<p>Vous trouverez une série de tutoriels pour vous aider à commencer couvrant des modèles que vous utiliserez régulièrement, tels que le <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Travailler_avec_l_API_Tabs">travail avec l'API Tabs</a> et l'<a href="/fr/Add-ons/WebExtensions/Ajouter_un_bouton_a_la_barre_d_outils">ajout d'un bouton à la barre d'outils</a> ainsi que des sujets plus avancés tels que comment <a href="/fr/Add-ons/WebExtensions/Intercepter_requêtes_HTTP">Intercepter les requêtes HTTP</a> et comment <a href="/fr/Add-ons/WebExtensions/travailler_avec_des_identites_contextuelles">travailler avec les identités contextuelles</a>,</p> + +<h2 id="Méthode_de_travail_Firefox">Méthode de travail Firefox</h2> + +<p>Lorsque vous êtes prêt à créer votre extension Firefox ou à faire un portage de votre extension de Chrome à Firefox, dirigez-vous vers l'<a href="https://extensionworkshop.com/">atelier d'extension</a>. Vous trouverez ici des détails sur :</p> + +<ul> + <li>La méthode de travail Firefox, comme l'<a href="https://extensionworkshop.com/documentation/develop/temporary-installation-in-firefox/">installation temporaire d'extensions pendant le développement</a>, le <a href="https://extensionworkshop.com/documentation/develop/debugging/">débogage</a>, la <a href="https://extensionworkshop.com/documentation/develop/request-the-right-permissions/">demande des bonnes autorisations</a>, et encore plus.</li> + <li>L'outil de développement <a href="https://extensionworkshop.com/documentation/develop/getting-started-with-web-ext/">web-ext</a>.</li> + <li>Le <a href="https://extensionworkshop.com/documentation/develop/porting-a-google-chrome-extension/">portage d'une extension de Google Chrome à Firefox</a>, les <a href="https://extensionworkshop.com/documentation/develop/differences-between-desktop-and-android-extensions/">differences entre les extensions Desktop et Android</a>, et encore plus.</li> + <li>Une <a href="https://extensionworkshop.com/documentation/publish/">vue d'ensemble de la publication, de la distribution</a> et de la <a href="https://extensionworkshop.com/documentation/publish/promoting-your-extension/">promotion de votre extension</a>, les <a href="https://extensionworkshop.com/documentation/manage/">bonnes pratiques en matière de cycle de vie des extensions</a>, et encore plus.</li> +</ul> +</div> + +<div class="section"> +<h2 id="Références">Références</h2> + +<h3 id="JavaScript_APIs">JavaScript APIs</h3> + +<p>Obtenez des détails complets sur les méthodes, les propriétés, les types et les événements pour toutes les <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API">API Javascript</a>. Vous trouverez également des informations détaillées sur la compatibilité de chaque API avec les principaux navigateurs. La plupart des pages de référence comprennent également des exemples de codage et des liens vers les exemples d'extension qui utilisent l'API.</p> + +<h3 id="Clés_de_Manifest">Clés de Manifest</h3> + +<p>Obtenez tous les détails sur les <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json">clés du manifeste</a>, y compris toutes leurs propriétés et paramètres. Vous y trouverez également des informations détaillées sur la <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json">compatibilité</a> de chaque clé avec les principaux navigateurs</p> +</div> +</div> + +<div class="SnapLinksContainer" style="margin-left: 0px; margin-top: 0px; display: none;"> +<div class="SL_SelectionRect"> +<div class="SL_SelectionLabel"></div> +</div> +</div> +</section> diff --git a/files/fr/mozilla/add-ons/webextensions/index/index.html b/files/fr/mozilla/add-ons/webextensions/index/index.html new file mode 100644 index 0000000000..da125dd49f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/index/index.html @@ -0,0 +1,12 @@ +--- +title: Index +slug: Mozilla/Add-ons/WebExtensions/Index +tags: + - Add-ons + - Index + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Index +--- +<div>{{AddonSidebar}}</div> + +<div style="overflow: auto;">{{Index("/fr/Add-ons/WebExtensions")}}</div> diff --git a/files/fr/mozilla/add-ons/webextensions/inserer_en_toute_securite_du_contenu_externe_dans_une_page/index.html b/files/fr/mozilla/add-ons/webextensions/inserer_en_toute_securite_du_contenu_externe_dans_une_page/index.html new file mode 100644 index 0000000000..2365874169 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/inserer_en_toute_securite_du_contenu_externe_dans_une_page/index.html @@ -0,0 +1,103 @@ +--- +title: Insérer en toute sécurité du contenu externe dans une page +slug: >- + Mozilla/Add-ons/WebExtensions/inserer_en_toute_securite_du_contenu_externe_dans_une_page +tags: + - Add-ons + - Comment + - Débutant + - Extensions + - How-to + - Sécurité + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Safely_inserting_external_content_into_a_page +--- +<p>{{AddonSidebar}}</p> + +<p>Il y a des moments où vous pourriez vouloir ou devez inclure du contenu d'une source externe dans votre extension. Cependant, il existe un risque que des scripts malveillants soient intégrés à la source, soit par le développeur de la source, soit par une tierce partie malveillante.</p> + +<p>Prenez un lecteur RSS à titre d'exemple. Vous ne savez pas quels flux RSS votre extension va ouvrir et n'ont aucun contrôle sur le contenu de ces flux RSS. Ainsi, il est possible que l'utilisateur puisse s'abonner à un flux où, par exemple, le titre d'un élément de fil inclut un script. Cela pourrait être quelque chose d'aussi simple que d'inclure du code JavaScript dans les balises <code><script></script></code>. Si vous deviez extraire le titre, supposer qu'il s'agissait d'un texte brut et l'ajouter au DOM d'une page créée par votre extension, votre script a maintenant un script inconnu dans son navigateur. Par conséquent, il faut prendre soin d'éviter d'évaluer du texte arbitraire au format HTML.</p> + +<p>Vous devez également vous souvenir que les extensions ont des contextes privilégiés, par exemple dans les scripts d'arrière-plan et les scripts de contenu. Dans le pire des cas, un script incorporé peut s'exécuter dans l'un de ces contextes, une situation connue sous le nom d'escalade de privilèges. Cette situation peut laisser le navigateur d'un utilisateur ouvert à une attaque à distance en permettant au site Web qui a injecté le code d'accéder à des données utilisateur critiques, telles que des mots de passe, l'historique du navigateur ou le comportement de navigation.</p> + +<p>Cet article examine comment travailler en toute sécurité avec des données distantes et l'ajouter à un DOM.</p> + +<h2 id="Travailler_avec_des_chaînes_arbitraires">Travailler avec des chaînes arbitraires</h2> + +<p>Lorsque vous travaillez avec des chaînes, il existe quelques options recommandées pour les ajouter en toute sécurité à une page : les méthodes de création de nœuds DOM standard ou jQuery.</p> + +<h3 id="Méthodes_de_création_de_noeud_DOM">Méthodes de création de noeud DOM</h3> + +<p>Une approche légère pour insérer des chaînes dans une page consiste à utiliser les méthodes de manipulation DOM natives : <a href="/fr/docs/Web/API/Document/createElement"><code>document.createElement</code></a>, <a href="/fr/docs/Web/API/Element/setAttribute"><code>Element.setAttribute</code></a>, et <a href="/fr/docs/Web/API/Node/textContent"><code>Node.textContent</code></a>. L'approche sécurisée consiste à créer les nœuds séparément et à affecter leur contenu à l'aide de textContent :</p> + +<pre class="brush: js example-good">var data = JSON.parse(responseText); +var div = document.createElement("div"); +div.className = data.className; +div.textContent = "Your favorite color is now " + data.color; +addonElement.appendChild(div);</pre> + +<p>Cette approche est sûre car l'utilisation de <code>.textContent</code> échappe automatiquement à tout code HTML distant dans <code>data.color</code>.</p> + +<p>Cependant, attention, vous pouvez utiliser des méthodes natives qui ne sont pas sécurisées. Prenez le code suivant :</p> + +<pre class="brush: js example-bad">var data = JSON.parse(responseText); +addonElement.innerHTML = "<div class='" + data.className + "'>" + + "Your favorite color is now " + data.color + + "</div>";</pre> + +<p>Ici, le contenu de <code>data.className</code> ou de <code>data.color</code> peut contenir du HTML qui peut fermer le tag plus tôt, insérer du contenu HTML arbitraire, puis ouvrir une autre balise.</p> + +<h3 id="jQuery">jQuery</h3> + +<p>Lors de l'utilisation de jQuery, des fonctions telles que <code>attr()</code> et <code>text()</code> échappent au contenu lorsqu'il est ajouté à un DOM. Ainsi, l'exemple de "couleur préférée" ci-dessus, implémenté dans jQuery, ressemblerait à ceci:</p> + +<pre class="brush: js example-good">var node = $("</div>"); +node.addClass(data.className); +node.text("Your favorite color is now " + data.color); </pre> + +<h2 id="Travailler_avec_du_contenu_HTML">Travailler avec du contenu HTML</h2> + +<p>Lorsque vous travaillez avec du contenu de source externe dont vous savez qu'il s'agit du code HTML, il est essentiel de nettoyer le code HTML avant de l'ajouter à une page. La meilleure pratique pour désinfecter le code HTML consiste à utiliser une bibliothèque de nettoyage HTML ou un moteur de modèle avec des fonctionnalités de nettoyage HTML. Dans cette section, nous examinons certains outils appropriés et comment les utiliser.</p> + +<h3 id="Désinfection_HTML">Désinfection HTML</h3> + +<p>Une bibliothèque de nettoyage HTML désactive tout ce qui pourrait conduire à l'exécution de scripts à partir du HTML, de sorte que vous pouvez injecter en toute sécurité des ensembles complets de nœuds HTML à partir d'une source distante dans votre DOM. <a href="https://github.com/cure53/DOMPurify">DOMPurify</a>, qui a été examiné par divers experts en sécurité, est une bibliothèque appropriée pour cette tâche dans les extensions.</p> + +<p>Pour l'utilisation en production, <a href="https://github.com/cure53/DOMPurify">DOMPurify</a> cest disponible en version minifiée : purify.min.js. Vous pouvez utiliser ce script de la manière qui convient le mieux à votre extension. Par exemple, vous pouvez l'ajouter en tant que script de contenu :</p> + +<pre class="brush: json">"content_scripts": [ + { + "matches" : ["<all_urls>"], + "js": ["purify.min.js", "myinjectionscript.js"] + } +]</pre> + +<p>Ensuite, dans myinjectionscript.js, vous pouvez lire le code HTML externe, le désinfecter et l'ajouter au DOM d'une page :</p> + +<pre class="brush: js">var elem = document.createElement("div"); +var cleanHTML = DOMPurify.sanitize(externalHTML); +elem.innerHTML = cleanHTML;</pre> + +<p>Vous pouvez utiliser n'importe quelle méthode pour ajouter le HTML aseptisé à votre DOM, par exemple la fonction <code>.html()</code> de jQuery’s. Souvenez-vous cependant que le drapeau <code>SAFE_FOR_JQUERY</code> doit être utilisé dans ce cas :</p> + +<pre class="brush: js">var elem = $("<div/>"); +var cleanHTML = DOMPurify.sanitize(externalHTML, { SAFE_FOR_JQUERY: true }); +elem.html(cleanHTML);</pre> + +<h3 id="Moteur_de_modèle">Moteur de modèle</h3> + +<p>Un autre modèle courant consiste à créer un modèle HTML local pour une page et à utiliser des valeurs distantes pour remplir les blancs. Bien que cette approche soit généralement acceptable, il faut éviter d'utiliser des constructions qui permettraient l'insertion de code exécutable. Cela peut se produire lorsque le moteur de création de modèles utilise des constructions qui insèrent du code HTML brut dans le document. Si la variable utilisée pour insérer le code HTML brut est une source distante, elle est soumise au même risque de sécurité mentionné dans l'introduction.</p> + +<p>Par exemple, lorsque vous utilisez des <a href="https://mustache.github.io/">modèles moustache</a>, vous devez utiliser la double moustache, <code>\{{variable}}</code>, qui échappe à tout code HTML. L'utilisation de la triple moustache, <code>\{\{{variable}}}</code>, doit être évitée car cela injecte une chaîne HTML brute et pourrait ajouter du code exécutable à votre modèle. <a href="http://handlebarsjs.com/">Handlebars</a> fonctionne d'une manière similaire, avec des variables dans le double guidon, <code>\{{variable}}</code>, étant échappé. Considérant que, les variables dans le guidon triple sont laissées crues et doivent être évitées. De même, si vous créez une aide Handlebars à l'aide de <code>Handlebars.SafeString</code> utilisez <code>Handlebars.escapeExpression()</code> pour échapper tous les paramètres dynamiques transmis à l'assistant. C'est une exigence car la variable résultante de <code>Handlebars.SafeString</code> est considérée comme sûre et elle n'est pas échappée lorsqu'elle est insérée avec des guidons doubles.</p> + +<p>Il existe des concepts similaires dans d'autres systèmes de modélisation qui doivent être abordés avec le même niveau de soin.</p> + +<h2 id="Lecture_supplémentaire">Lecture supplémentaire</h2> + +<p>Pour plus d'informations sur ce sujet, consultez les articles suivants :</p> + +<ul> + <li> + <p><a href="https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet">XSS (Cross Site Scripting) Prévention Cheat Sheet</a></p> + </li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/installation_temporaire_dans_firefox/index.html b/files/fr/mozilla/add-ons/webextensions/installation_temporaire_dans_firefox/index.html new file mode 100644 index 0000000000..26f97b3cac --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/installation_temporaire_dans_firefox/index.html @@ -0,0 +1,56 @@ +--- +title: Installation temporaire dans Firefox +slug: Mozilla/Add-ons/WebExtensions/installation_temporaire_dans_Firefox +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Temporary_Installation_in_Firefox +--- +<div>{{AddonSidebar}}</div> + +<p>Cet article décrit comment une extension<em> </em>développée peut être temporairement installée dans Firefox pour la tester et la déboguer. L'extension restera installée jusqu'à ce que vous redémarriez Firefox. Vous pouvez utiliser cette méthode avec tout type d'extension ne nécessitant pas de redémarrage, y compris les <a href="/fr/docs/Mozilla/Add-ons/Bootstrapped_extensions">extensions bootstrap</a> et les <a href="/fr/docs/Mozilla/Add-ons/SDK">extensions utilisant le SDK des Add-ons</a>.</p> + +<p>Notez que les utilisateurs <em>ne devraient pas</em> utiliser cette méthode pour installer des extensions dans Firefox. Les utilisateurs installeront des extensions en téléchargeant et en ouvrant des extensions packagées qui ont été signées par Mozilla. Pour savoir comment un développeur d'extension peut faire packager et signer son extension, consultez <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension">Publier votre extension</a>.</p> + +<p>Pour installer une extension temporairement :</p> + +<ul> + <li>Ouvrez Firefox</li> + <li>Entrez "about:debugging" dans la barre de l'URL</li> + <li>Cliquez sur "Charger un module temporaire"</li> + <li>Ouvrez le répertoire de l'extension et sélectionnez n'importe quel fichier à l'intérieur de l'extension.</li> +</ul> + +<p>L'extension sera installée et restera installée jusqu'à ce que vous redémarriez Firefox.</p> + +<p>{{EmbedYouTube("cer9EUKegG4")}}</p> + +<h2 id="Recharger_une_extension_temporaire">Recharger une extension temporaire</h2> + +<p>À partir de Firefox 48, il y a un nouveau bouton appelé "Recharger" à côté du nom de l'extension dans about:debugging :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13462/reload.png" style="display: block; height: 544px; margin-left: auto; margin-right: auto; width: 848px;">Il fait ce qu'il dit :</p> + +<ul> + <li>Recharger les scripts persistants, tels que les <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">scripts de fond d'écran</a></li> + <li>Analyser le fichier <code>manifest.json</code> de nouveau, pour prendre en compte les changements de <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code>, <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>, <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> ou d'autres clefs.</li> +</ul> + +<p>{{EmbedYouTube("NuajE60jfGY")}}</p> + +<div class="note"> +<p>Notez que dans Firefox 48 uniquement, "Recharger" ne met pas à jour le nom et la description de l'extension qui sont affichés dans about:debugging et about:addons. Ceci a été corrigé dans Firefox 49.</p> +</div> + +<h2 id="Utilisation_de_la_ligne_de_commande">Utilisation de la ligne de commande</h2> + +<p>Si vous utilisez déjà la ligne de commande pour le développement, consultez l'outil <a href="/fr/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a>. Il automatise temporairement l'installation et recharge automatiquement votre extension quand le code source a changé.</p> + +<h2 id="Détection_d'installation_temporaire">Détection d'installation temporaire</h2> + +<p>Votre extension peut détecter si elle a été installée depuis about:debugging au lieu d'avoir été téléchargée comme une extension packagée et signée depuis <a href="https://addons.mozilla.org">addons.mozilla.org</a>. Écoutez l'événement {{WebExtAPIRef("runtime.onInstalled")}} et vérifiez la valeur de <code>details.temporary</code>.</p> + +<h2 id="Limitations">Limitations</h2> + +<p>L'installation temporaire d'une extension n'imite pas complètement le comportement d'une extension signée. Par exemple, si l'extension fait des demandes d'autorisation de temps d'installation, celles-ci ne sont pas affichées dans le cadre du processus d'installation temporaire. De plus, des fonctions, comme le stockage local, persistent même si l'extension est supprimée et que le navigateur redémarre.</p> + +<p>Pour plus d'informations sur la façon de traiter ces situations, voir les <a href="/fr/Add-ons/WebExtensions/Test_permission_requests">demandes de permissions</a> et <a href="/fr/Add-ons/WebExtensions/Testing_persistent_and_restart_features">Test des fonctionnalités persistantes et de redémarrage</a>.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/interagir_avec_le_presse_papier/index.html b/files/fr/mozilla/add-ons/webextensions/interagir_avec_le_presse_papier/index.html new file mode 100644 index 0000000000..fe7b69e3a3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/interagir_avec_le_presse_papier/index.html @@ -0,0 +1,189 @@ +--- +title: Interagir avec le presse-papier +slug: Mozilla/Add-ons/WebExtensions/interagir_avec_le_presse_papier +tags: + - Add-ons + - Clip + - Clipboard + - Cut + - Editing + - Extensions + - Text + - WebExtensions + - coller + - copier + - copy + - couper + - paste +translation_of: Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard +--- +<div>{{AddonSidebar}}</div> + +<p>ll y a deux façons dont les extensions de navigateur peuvent interagir avec le presse-papiers système : la méthode {{domxref("Document.execCommand()")}} et l'asynchrone moderne de l'<a href="/fr/docs/Web/API/Clipboard_API">API Presse-papiers</a>.</p> + +<p>La méthode {{domxref("Document.execCommand()")}} peut être utilisée, en spécifiant la commande désirée :</p> + +<ul> + <li><code>document.execCommand("copy")</code></li> + <li><code>document.execCommand("cut")</code></li> + <li><code>document.execCommand("paste")</code></li> +</ul> + +<p>L'API Presse-papiers fournit un accès asynchrone pour lire et écrire directement le contenu du presse-papiers. Par exemple, pour lire le texte du presse-papiers :</p> + +<pre class="brush: js">navigator.clipboard.readText().then(text => outputElem.innerText = text);</pre> + +<p>Ceci demande le contenu du presse-papiers et, lorsque la réponse est reçue, stocke le texte du presse-papiers dans le {{domxref("Node.innerText", "innerText")}} d'un élément.</p> + +<div class="note"> +<p><strong>Note:</strong> Les méthodes asynchrones de l'API Clipboard sont un ajout récent à la spécification et peuvent ne pas être entièrement implémentées dans tous les navigateurs. Assurez-vous de passer en revue les tableaux de compatibilité pour chaque méthode avant de les utiliser, afin de vous assurer que le support est suffisamment large pour vos besoins.</p> +</div> + +<h2 id="Ecrire_dans_le_presse-papiers">Ecrire dans le presse-papiers</h2> + +<p>Il y a deux façons d'écrire dans le presse-papiers. Vous pouvez utiliser les actions {{domxref("Document.execCommand", "document.execCommand()")}} pour déclencher les actions "couper" et "copier", qui remplace le contenu actuel du presse-papiers par les données actuellement sélectionnées. L'autre option est d'utiliser la méthode {{domxref("Clipboard.writeText()")}} ou {{domxref("Clipboard.write()")}} de l'API Presse-papiers pour remplacer le contenu du presse-papiers par des données spécifiques.</p> + +<h3 id="Utiliser_execCommand()">Utiliser execCommand()</h3> + +<p>Les commandes {{domxref("Document.execCommand", "document.execCommand()")}} de la méthode <code>"couper"</code> et <code>"copier"</code> peuvent être utilisées pour remplacer le contenu actuel du presse-papiers par le matériel sélectionné. Ces commandes peuvent être utilisées sans permission spéciale si vous les utilisez dans un gestionnaire d'événements de courte durée pour une action utilisateur (par exemple, un gestionnaire de clics).</p> + +<p>Par exemple, supposons que vous ayez un popup qui inclut le HTML suivant :</p> + +<pre class="brush: html"><input id="input" type="text"/> +<button id="copy">Copy</button> +</pre> + +<p>Pour que le bouton <code>"copier"</code> copie le contenu de l'élément {{HTMLElement("input")}}, vous pouvez utiliser du code comme ceci :</p> + +<pre class="brush: js">function copy() { + var copyText = document.querySelector("#input"); + copyText.select(); + document.execCommand("copy"); +} + +document.querySelector("#copy").addEventListener("click", copy);</pre> + +<p>Parce que l'appel <code>execCommand()</code> se trouve à l'intérieur d'un gestionnaire d'événements click, vous n'avez pas besoin de permissions spéciales ici.</p> + +<p>Cependant, disons que vous déclenchez plutôt la copie à partir d'une alarme :</p> + +<pre class="brush: js">function copy() { + var copyText = document.querySelector("#input"); + copyText.select(); + document.execCommand("copy"); +} + +browser.alarms.create({ + delayInMinutes: 0.1 +}); + +browser.alarms.onAlarm.addListener(copy);</pre> + +<p>Selon le navigateur, cela peut ne pas fonctionner. Sur Firefox, cela ne fonctionnera pas, et vous verrez un message comme celui-ci dans votre console :</p> + +<pre>document.execCommand(‘cut’/‘copy’) was denied because it was not called from inside a short running user-generated event handler.</pre> + +<p>Pour activer ce cas d'utilisation, vous devez demander <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"clipboardWrite"</code>. Alors : <code>"clipboardWrite"</code> vous permet d'écrire dans le presse-papiers en dehors d'un gestionnaire d'événements de courte durée pour une action utilisateur.</p> + +<h3 id="Utilisation_de_l'API_Presse-papiers">Utilisation de l'API Presse-papiers</h3> + +<p>L'API Presse-papiers ajoute une plus grande flexibilité, en ce sens que vous n'êtes pas limité à copier simplement la sélection courante dans le presse-papiers, mais vous pouvez spécifier directement quelles informations placer dans le presse-papiers.</p> + +<p>L'utilisation de l'API nécessite que vous ayez les permissons de l'API <code>"clipboard-write"</code>. Vous pouvez vérifier cette permission en utilisant {{domxref("Permissions.query", "navigator.permissions.query()")}}:</p> + +<pre class="brush: js">navigator.permissions.query({name: "clipboard-write"}).then(result => { + if (result.state == "granted" || result.state == "prompt") { + /* write to the clipboard now */ + } +}); +</pre> + +<p>Cette fonction prend une chaîne de caractères comme entrée et met à jour le presse-papiers pour contenir cette chaîne :</p> + +<pre class="brush: js">function updateClipboard(newClip) { + navigator.clipboard.writeText(newClip).then(function() { + /* clipboard successfully set */ + }, function() { + /* clipboard write failed */ + }); +} +</pre> + +<div class="blockIndicator note"> +<p><strong>Note</strong>: Le nom de la permission <code>clipboard-write</code> n'est pas supporté actuellement dans Firefox - seulement les navigateurs Chromium.</p> +</div> + +<h3 id="***Considérations_spécifiques_du_navigateur">***Considérations spécifiques du navigateur</h3> + +<p>Le presse-papiers et les autres API impliquées ici évoluent rapidement, de sorte qu'il y a des variations entre les navigateurs quant à leur mode de fonctionnement.</p> + +<p>Dans Chrome:</p> + +<ul> + <li>Vous pouvez écrire dans le presse-papiers comme ceci dans tous les contextes d'exécution - pages d'arrière-plan, scripts de contenu, pages d'options et popups.</li> + <li>Vous n'avez pas besoin de <code>"clipboardWrite"</code>, même pour écrire dans le presse-papiers en dehors d'un gestionnaire d'événements généré par l'utilisateur.</li> +</ul> + +<p>Dans Firefox:</p> + +<ul> + <li>Vous pouvez écrire dans le presse-papiers comme ceci dans tous les contextes d'exécution <em>à l'exception des pages d'arrière-plan</em>. Dans Firefox, vous ne pouvez pas sélectionner du texte ou mettre au point un champ de saisie dans les pages d'arrière-plan, de sorte que vous ne pouvez pas écrire dans le presse-papiers à partir d'une page d'arrière-plan.</li> + <li>A partir de la version 57, vous pouvez copier des images dans le presse-papiers à l'aide de l'API <code><a href="/fr/Add-ons/WebExtensions/API/clipboard/setImageData">clipboard.setImageData()</a></code>.</li> + <li>Le support de l'API Clipboard {{domxref("Clipboard.writeText", "navigator.clipboard.writeText()")}} a été ajouté dans Firefox 63.</li> + <li>Lors de l'utilisation de scripts de contenu, l'API Clipboard n'est disponible que pour les pages HTTPS. Comme solution de contournement, utilisez la messagerie entre vos scripts de contenu et le script d'arrière-plan.</li> +</ul> + +<div class="blockIndicator note"> +<p>L'API <code>execCommand('copy')</code> n'est pas supporté dans <strong>Safari</strong></p> +</div> + + + +<h2 id="Lecture_à_partir_du_presse-papiers">Lecture à partir du presse-papiers</h2> + +<p>La méthode <code>execCommand()</code> fournit la commande <code>"coller"</code>, qui vous permet de coller le contenu actuel du presse-papiers au point d'insertion dans un contrôle modifiable. Vous pouvez gagner en flexibilité en utilisant les méthodes {{domxref("Clipboard.read()")}} et {{domxref("Clipboard.readText()")}}.</p> + +<h3 id="Utilisation_de_execCommand()">Utilisation de execCommand()</h3> + +<p>Tout d'abord, vous devez avoir la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"clipboardRead"</code> établie pour votre extension. C'est le cas même si vous utilisez la commande <code>"coller"</code> à partir d'un gestionnaire d'événements généré par l'utilisateur tel que {{event("click")}} ou {{event("keypress")}}.</p> + +<p>Considérez le HTML qui inclut quelque chose comme ceci :</p> + +<pre class="brush: html"><textarea id="output"></textarea> +<button id="paste">Paste</button> +</pre> + +<p>Pour définir le contenu de l'élément {{HTMLElement("textarea")}} avec l'ID <code>"output"</code> du presse-papiers lorsque l'utilisateur clique sur le {{HTMLElement("button")}} <code>"coller"</code>, vous pouvez utiliser du code comme ceci :</p> + +<pre class="brush: js">function paste() { + var pasteText = document.querySelector("#output"); + pasteText.focus(); + document.execCommand("paste"); + console.log(pasteText.textContent); +} + +document.querySelector("#paste").addEventListener("click", paste);</pre> + +<h3 id="Utilisation_de_l'API_Presse-papiers_2">Utilisation de l'API Presse-papiers</h3> + +<p>Les méthodes {{domxref("Clipboard.readText", "navigator.clipboard.readText()")}} et {{domxref("Clipboard.read", "navigator.clipboard.read()")}} de l'API Presse-papiers vous permettent de lire du texte arbitraire ou des données binaires à partir du presse-papiers. Cela vous permet d'accéder aux données du presse-papiers sans simplement les coller dans un élément modifiable.</p> + +<p>Une fois que vous avez la permission <code>"clipboard-read"</code> de l'<a href="/fr/docs/Web/API/Permissions_API">API permissions</a>, vous pouvez lire facilement à partir du presse-papiers :</p> + +<pre class="brush: js">navigator.clipboard.readText().then(clipText => + document.getElementById("outbox").innerText = clipText);</pre> + +<p>Cet extrait de code récupère le texte du presse-papiers et remplace le contenu actuel de l'élément par l'ID <code>"outbox"</code> avec ce texte.</p> + +<h3 id="Considérations_spécifiques_au_navigateur">Considérations spécifiques au navigateur</h3> + +<p>Firefox supporte la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> <code>"clipboardRead" à partir de la version</code> 54, mais ne supporte pas que le collage dans les élements en <a href="/fr/docs/Web/Guide/HTML/Editable_content">mode édition de contenu</a>, qui pour les scripts de contenu ne fonctionne qu'avec un {{HTMLElement("textarea")}}. Pour les scripts d'arrière-plan, n'importe quel élément peut être mis en mode contenu modifiable.</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="/fr/docs/Web/API/Clipboard_API">Clipboard API</a></li> + <li><a href="/fr/docs/Web/API/Permissions_API">Permissions API</a></li> + <li><a href="/fr/docs/Web/Guide/HTML/Editable_content">Making content editable</a></li> + <li>{{htmlattrxref("contenteditable")}}</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/intercepter_requêtes_http/index.html b/files/fr/mozilla/add-ons/webextensions/intercepter_requêtes_http/index.html new file mode 100644 index 0000000000..f534b57be1 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/intercepter_requêtes_http/index.html @@ -0,0 +1,160 @@ +--- +title: Intercepter les requêtes HTTP +slug: Mozilla/Add-ons/WebExtensions/Intercepter_requêtes_HTTP +tags: + - Extensions + - Modules complémentaires + - Tutoriel + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests +--- +<div>{{AddonSidebar}}</div> + +<p>Utilisez l’API {{WebExtAPIRef("webRequest")}} pour intercepter les requêtes HTTP. Avec cette API, vous pouvez ajouter des écouteurs à différents stades d’exécution d’une requête HTTP. Avec les écouteurs, vous pouvez :</p> + +<ul> + <li>accéder aux en-têtes et aux corps, et des en-têtes de réponses ;</li> + <li>annuler et rediriger les requêtes ;</li> + <li>modifier les en-têtes de requête et de réponse.</li> +</ul> + +<p>Cet article décrit trois utilisations possibles du module <code>webRequest</code> :</p> + +<ul> + <li>La journalisation des URL de requête à mesure de leur exécution.</li> + <li>La redirection des requêtes.</li> + <li>La modification des en-têtes de requête.</li> +</ul> + +<h2 id="Journalisation_des_URL_de_requête">Journalisation des URL de requête</h2> + +<p>Créez un nouveau répertoire et nommez-le "requests". Dans ce répertoire, créez le fichier "manifest.json", avec le contenu suivant :</p> + +<pre class="brush: json">{ + "description": "Démonstration du module webRequests", + "manifest_version": 2, + "name": "webRequest-demo", + "version": "1.0", + + "permissions": [ + "webRequest", + "<all_urls>" + ], + + "background": { + "scripts": ["background.js"] + } +}</pre> + +<p>Ensuite, créez un fichier nommé "background.js", avec le contenu suivant :</p> + +<pre class="brush: js">function logURL(requestDetails) { + console.log("Chargement : " + requestDetails.url); +} + +browser.webRequest.onBeforeRequest.addListener( + logURL, + {urls: ["<all_urls>"]} +); + +</pre> + +<p>Ici, nous utilisons l’écouteur {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} pour appeler la fonction <code>logURL()</code> juste avant de démarrer la requête. La fonction <code>logURL()</code> récupère l’URL de la requête dans l’objet d’évènement et la journalise dans la console du navigateur. Le <a href="/fr/Add-ons/WebExtensions/Match_patterns">modèle</a> <code>{urls: ["<all_urls>"]} </code>permet d’intercepter les requêtes HTTP vers toutes les URL.</p> + +<p>Pour tester ce module, <a href="/fr/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">installez l'extension</a>, <a href="/fr/docs/Tools/Browser_Console">ouvrez la console du navigateur</a> et accédez à quelques pages web. Dans la console du navigateur, les URL de toutes les ressources ayant fait l’objet d’une requête de navigateur devraient s’afficher :</p> + +<p>{{EmbedYouTube("X3rMgkRkB1Q")}}</p> + +<h2 id="Redirection_des_requêtes">Redirection des requêtes</h2> + +<p>Utilisons maintenant <code>webRequest</code> pour rediriger les requêtes HTTP. Commençons par modifier le fichier manifest.json comme suit :</p> + +<pre class="brush: json">{ + + "description": "Demonstrating webRequests", + "manifest_version": 2, + "name": "webRequest-demo", + "version": "1.0", + + "permissions": [ + "webRequest", + "webRequestBlocking", + "https://developer.mozilla.org/", + "https://mdn.mozillademos.org/" + ], + + "background": { + "scripts": ["background.js"] + } + +}</pre> + +<p>Ici, il s’agit simplement d’ajouter la <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a></code> <code>"webRequestBlocking"</code>. Cette permission supplémentaire est requise lors de toute modification active d’une requête.</p> + +<p>Modifions ensuite le fichier « background.js » comme suit :</p> + +<pre class="brush: js">var pattern = "https://mdn.mozillademos.org/*"; + +function redirect(requestDetails) { + console.log("Redirection : " + requestDetails.url); + return { + redirectUrl: "https://38.media.tumblr.com/tumblr_ldbj01lZiP1qe0eclo1_500.gif" + }; +} + +browser.webRequest.onBeforeRequest.addListener( + redirect, + {urls:[pattern], types:["image"]}, + ["blocking"] +);</pre> + +<p>Encore une fois, nous utilisons l’écouteur d’évènement {{WebExtAPIRef("webRequest.onBeforeRequest", "onBeforeRequest")}} pour exécuter une fonction juste avant le démarrage de chaque requête. Cette fonction remplace l’URL cible par l’URL de redirection <code>redirectUrl</code> spécifiée dans la fonction.</p> + +<p>Cette fois-ci, toutes les requêtes ne sont pas interceptées. L’option <code>{urls:[pattern], types:["image"]}</code> indique qu’il ne faut intercepter que les requêtes (1) vers des URL résidant sous "https://mdn.mozillademos.org/" (2) pour les ressources d’images. Consultez la documentation {{WebExtAPIRef("webRequest.RequestFilter")}} pour en savoir plus.</p> + +<p>À noter également le passage de l’option <code>"blocking"</code>: passez cette option dès que vous souhaitez modifier la requête. La fonction d’écouteur bloque la requête réseau. Le navigateur attend alors que l’écouteur renvoie un résultat avant de continuer. Consultez la documentation {{WebExtAPIRef("webRequest.onBeforeRequest")}} pour en savoir plus sur l’option <code>"blocking"</code>.</p> + +<p>Pour tester ce module, ouvrez une page MDN contenant beaucoup d’images (par exemple <a href="https://developer.mozilla.org/fr/docs/Tools/Network_Monitor">https://developer.mozilla.org/fr/docs/Tools/Network_Monitor</a>), <a href="/fr/Add-ons/WebExtensions/Temporary_Installation_in_Firefox#Reloading_a_temporary_add-on">rechargez l'extension</a>, puis rechargez la page MDN :</p> + +<p>{{EmbedYouTube("ix5RrXGr0wA")}}</p> + +<h2 id="Modification_des_en-têtes_de_requête">Modification des en-têtes de requête</h2> + +<p>Enfin, nous pouvons utiliser le module <code>webRequest</code> pour modifier les en-têtes de requête. Dans cet exemple, nous allons modifier l’en-tête "User-Agent" afin que le navigateur s’identifie lui-même comme Opera 12.16, mais uniquement en cas de consultation des pages sous http://useragentstring.com/".</p> + +<p>Il n’est pas nécessaire de modifier le fichier "manifest.json" par rapport à l’exemple précédent.</p> + +<p>Modifiez le code du fichier "background.js" comme suit :</p> + +<pre class="brush: js">var targetPage = "http://useragentstring.com/*"; + +var ua = "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16"; + +function rewriteUserAgentHeader(e) { + e.requestHeaders.forEach(function(header){ + if (header.name.toLowerCase() == "user-agent") { + header.value = ua; + } + }); + return {requestHeaders: e.requestHeaders}; +} + +browser.webRequest.onBeforeSendHeaders.addListener( + rewriteUserAgentHeader, + {urls: [targetPage]}, + ["blocking", "requestHeaders"] +);</pre> + +<p>Ici, nous utilisons l’écouteur d’évènement {{WebExtAPIRef("webRequest.onBeforeSendHeaders", "onBeforeSendHeaders")}} pour exécuter une fonction juste avant l’envoi des en-têtes de requête.</p> + +<p>La fonction d’écouteur n’est appelée qu’en cas de requête vers des URL correspondant au <a href="/fr /Add-ons/WebExtensions/Match_patterns">modèle</a> <code>targetPage</code>. Notez aussi le nouveau passage de l’option <code>"blocking"</code>. Nous avons également passé <code>"requestHeaders"</code>, qui indique que l’écouteur reçoit une liste contenant les en-têtes de requête à envoyer. Consultez la documentation {{WebExtAPIRef("webRequest.onBeforeSendHeaders")}} pour en savoir plus sur ces options.</p> + +<p>La fonction d’écouteur recherche l’en-tête "User-Agent" dans la liste, remplace sa valeur par celle de la variable <code>ua</code> et renvoie la liste modifiée. Cette dernière est ensuite envoyée au serveur.</p> + +<p>Pour tester ce module, accédez à <a href="http://useragentstring.com/">useragentstring.com</a> et vérifiez que le navigateur identifié est Firefox. Rechargez ensuite l'extension, rechargez <a href="http://useragentstring.com/">useragentstring.com</a> et vérifiez que Firefox a été remplacé par Opera :</p> + +<p>{{EmbedYouTube("SrSNS1-FIx0")}}</p> + +<h2 id="En_savoir_plus">En savoir plus</h2> + +<p>Pour en apprendre davantage sur toutes les possibilités de l’API <code>webRequest</code>, consultez la <a href="/fr/Add-ons/WebExtensions/API/WebRequest">documentation de référence</a> correspondante.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/internationalization/index.html b/files/fr/mozilla/add-ons/webextensions/internationalization/index.html new file mode 100644 index 0000000000..92643e4619 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/internationalization/index.html @@ -0,0 +1,410 @@ +--- +title: Internationalization +slug: Mozilla/Add-ons/WebExtensions/Internationalization +tags: + - Article + - Guide + - Internationalization + - Localization + - WebExtensions + - i18n + - messages.json + - placeholders + - predefined +translation_of: Mozilla/Add-ons/WebExtensions/Internationalization +--- +<div>{{AddonSidebar}}</div> + +<p>L'API <a href="/fr/Add-ons/WebExtensions">WebExtensions</a> dispose d'un module assez pratique pour l'internationalisation des extensions — <a href="/fr/Add-ons/WebExtensions/API/i18n">i18n</a>. Dans cet article, nous allons explorer ses fonctionnalités et fournir un exemple pratique de son fonctionnement. Le système i18n pour les extensions construites à l'aide des APIs WebExtension est similaire aux bibliothèques JavaScript courantes pour i18n telles que <a href="http://i18njs.com/">i18n.js</a>.</p> + +<div class="note"> +<p>L'exemple d'extension présenté dans cet article — <a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a> — est disponible sur GitHub. Suivez avec le code source que vous parcourez les sections ci-dessous.</p> +</div> + +<h2 id="Anatomie_dune_extension_internationnalisée">Anatomie d'une extension internationnalisée</h2> + +<p>Une extension internationnalisée peut contenir les mêmes caractéristiques que n'importe quelle autre extension — <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">scripts d'arrière-plan</a>, <a href="/fr/Add-ons/WebExtensions/Content_scripts">scripts de contenu</a>, etc. — mais elle a également des parties supplémentaires pour lui permettre de basculer entre différentes locales. Ceux-ci sont résumés dans l'arborescence suivante :</p> + +<ul class="directory-tree"> + <li>extension-root-directory/ + <ul> + <li>_locales + <ul> + <li>en + <ul> + <li>messages.json + <ul> + <li>English messages (strings)</li> + </ul> + </li> + </ul> + </li> + <li>de + <ul> + <li>messages.json + <ul> + <li>German messages (strings)</li> + </ul> + </li> + </ul> + </li> + <li>etc.</li> + </ul> + </li> + <li>manifest.json + <ul> + <li>locale-dependent metadata</li> + </ul> + </li> + <li>myJavascript.js + <ul> + <li>JavaScript for retrieving browser locale, locale-specific messages, etc.</li> + </ul> + </li> + <li>myStyles.css + <ul> + <li>locale-dependent CSS</li> + </ul> + </li> + </ul> + </li> +</ul> + +<p>Examinons chacune des nouvelles fonctionnalités à tour de rôle — chacune des sections ci-dessous représente une étape à suivre lors de l'internationalisation de votre extension.</p> + +<h2 id="Fourniture_de_chaînes_localisées_dans__locales">Fourniture de chaînes localisées dans _locales</h2> + +<div class="pull-aside"> +<div class="moreinfo">Vous pouvez rechercher des sous-étiquettes de langue à l'aide de l'outil de <em>Recherche</em>r de la <a href="http://r12a.github.io/apps/subtags/">page de recherche sous-étiquette de langue</a>. Notez que vous devez rechercher le nom anglais de la langue.</div> +</div> + +<p>Chaque système i18n nécessite la fourniture de chaînes traduites dans tous les différents environnements que vous souhaitez prendre en charge. Dans les extensions, elles sont contenues dans un répertoire appelé <code>_locales</code>, placé dans la racine de l'extension. Chaque environnement local a ses chaînes (appelées messages) contenues dans un fichier appelé <code>messages.json</code>, qui est placé dans un sous-répertoire de <code>_locales</code>, nommé en utilisant la sous-étiquette de langue pour la langue de ce local.</p> + +<p>Notez que si la sous-étiquette inclut une langue de base plus une variante régionale, la langue et la variante sont classiquement séparées en utilisant un trait d'union: par exemple, "en-US". Cependant, dans les répertoires sous <code>_locales</code>, <strong>le séparateur doit être un trait de soulignement</strong> : "en_US".</p> + +<p><a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n/_locales">Par exemple, dans notre exemple d'application</a> nous avons des répertoires pour "en" (anglais), "de" (allemand), "nl" (néerlandais), et "ja" (Japonais). Chaque d'entre eux a un fichier <code>messages.json</code> à l'intérieur.</p> + +<p>Regardons maintenant la structure de l'un de ces fichiers (<a href="https://github.com/mdn/webextensions-examples/blob/master/notify-link-clicks-i18n/_locales/en/messages.json">_locales/en/messages.json</a>):</p> + +<pre class="brush: json">{ + "extensionName": { + "message": "Notify link clicks i18n", + "description": "Name of the extension." + }, + + "extensionDescription": { + "message": "Shows a notification when the user clicks on links.", + "description": "Description of the extension." + }, + + "notificationTitle": { + "message": "Click notification", + "description": "Title of the click notification." + }, + + "notificationContent": { + "message": "You clicked $URL$.", + "description": "Tells the user which link they clicked.", + "placeholders": { + "url" : { + "content" : "$1", + "example" : "https://developer.mozilla.org" + } + } + } +}</pre> + +<p>Ce fichier est un JSON standard — chacun de ses membres est un objet avec un nom, qui contient un <code>message</code> et une <code>description</code>. Tous ces éléments sont des chaînes ; <code>$URL$</code> est un espace réservé, qui est remplacé par une sous-chaîne au moment où le membre <code>notificationContent</code> est appelé par l'extension. Vous apprendrez à le faire dans la section {{anch("Récupération des chaînes de messages de JavaScript")}}.</p> + +<div class="note"> +<p><strong>Remarque </strong>: Vous pouvez trouver beaucoup plus d'informations sur le contenu des fichiers <code>messages.json</code> dans notre <a href="/fr/Add-ons/WebExtensions/API/i18n/Locale-Specific_Message_reference">référence spécifique aux paramètres régionaux</a>.</p> +</div> + +<h2 id="Internationaliser_manifest.json">Internationaliser manifest.json</h2> + +<p>Il y a plusieurs tâches à accomplir pour internationaliser votre manifest.json.</p> + +<h3 id="Récupération_des_chaînes_localisées_dans_le_manifest">Récupération des chaînes localisées dans le manifest</h3> + +<p>Votre <a href="https://github.com/mdn/webextensions-examples/blob/master/notify-link-clicks-i18n/manifest.json">manifest.json</a> inclut des chaînes qui sont affichées à l'utilisateur, telles que le nom et la description de l'extension. Si vous internationalisez ces chaînes et en mettez les traductions appropriées dans messages.json, la traduction correcte de la chaine sera affichée à l'utilisateur, en fonction des paramètres régionaux actuels, comme cela.</p> + +<p>Pour internationaliser les chaînes, spécifiez-les comme ceci :</p> + +<pre class="brush: json">"name": "__MSG_extensionName__", +"description": "__MSG_extensionDescription__",</pre> + +<p>Ici, nous récupérons des chaînes de message en fonction des paramètres régionaux du navigateur, plutôt que d'inclure uniquement des chaînes statiques.</p> + +<p>Pour appeler une chaîne de message comme celle-ci, vous devez le spécifier comme ceci :</p> + +<ol> + <li>Deux underscores, suivi de</li> + <li>La chaîne "MSG", suivi de</li> + <li>Un trait de soulignement, suivi de</li> + <li>Le nom du message que vous souhaitez appeler tel que défini dans <code>messages.json</code>, suivi de</li> + <li>Deux underscores</li> +</ol> + +<pre><strong>__MSG_</strong> + <em>messageName</em> + <strong>__</strong></pre> + +<h3 id="Spécification_dun_paramètre_régional_par_défaut">Spécification d'un paramètre régional par défaut</h3> + +<p>Un autre champ que vous devez spécifier dans votre fichier manifest.json est <a href="/fr/Add-ons/WebExtensions/manifest.json/default_locale">default_locale</a>:</p> + +<pre class="brush: json">"default_locale": "en"</pre> + +<p>Cela spécifie un paramètre régional par défaut à utiliser si l'extension n'inclut pas de chaîne localisée pour les paramètres régionaux actuels du navigateur. Toutes les chaînes de message qui ne sont pas disponibles dans les paramètres régionaux du navigateur proviennent des paramètres régionaux par défaut. Il y a d'autres détails à connaître en termes de la façon dont le navigateur sélectionne les chaînes — voir {{anch("Localized string selection")}}.</p> + +<h2 id="CSS_dépendant_des_paramètres_régionaux">CSS dépendant des paramètres régionaux</h2> + +<p>Notez que vous pouvez également récupérer des chaînes localisées à partir de fichiers CSS dans l'extension. Par exemple, vous pouvez créer une règle CSS dépendante des paramètres régionaux, comme ceci :</p> + +<pre class="brush: css">header { + background-image: url(../images/__MSG_extensionName__/header.png); +}</pre> + +<p>Ceci est utile, bien que vous fassiez mieux de gérer une telle situation en utilisant {{anch("Predefined messages")}}.</p> + +<h2 id="Récupération_des_chaînes_de_messages_de_JavaScript">Récupération des chaînes de messages de JavaScript</h2> + +<p>Donc, vous avez configuré vos chaînes de message et votre manifest. Maintenant, Il vous suffit de commencer à appeler vos chaînes de message à partir de JavaScript pour que votre extension puisse parler le plus possible la bonne langue. L' <a href="/fr/Add-ons/WebExtensions/API/i18n">API i18n</a> est assez simple, contenant seulement quatre méthodes principales :</p> + +<ul> + <li>Vous utiliserez probablement {{WebExtAPIRef("i18n.getMessage()")}} le plus souvent — c'est la méthode que vous utilisez pour récupérer une chaîne de langue spécifique, comme mentionné ci-dessus. Nous verrons des exemples d'utilisation spécifiques ci-dessous.</li> + <li>Les méthodes {{WebExtAPIRef("i18n.getAcceptLanguages()")}} et {{WebExtAPIRef("i18n.getUILanguage()")}} peuvent être utilisées si vous avez besoin de personnaliser l'interface utilisateur en fonction des paramètres régionaux — peut-être que vous souhaitez pour afficher les préférences spécifiques aux langues préférées des utilisateurs plus haut dans une liste de préférences, ou afficher des informations culturelles pertinentes uniquement pour une certaine langue, ou formater les dates affichées de manière appropriée selon les paramètres régionaux du navigateur.</li> + <li>La méthode {{WebExtAPIRef("i18n.detectLanguage()")}} peut être utilisée pour détecter la langue du contenu soumis par l'utilisateur et la formater de manière appropriée.</li> +</ul> + +<p>Dans notre exemple <a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a>, le<a href="https://github.com/mdn/webextensions-examples/blob/master/notify-link-clicks-i18n/background-script.js"> script d'arrière plan</a> contient les lignes suivantes :</p> + +<pre class="brush: js">var title = browser.i18n.getMessage("notificationTitle"); +var content = browser.i18n.getMessage("notificationContent", message.url);</pre> + +<p>La première récupère juste le <code>message</code> du champ <code>notificationTitle </code>du fichier <code>messages.json</code> le plus approprié pour les paramètres régionaux actuels du navigateur. Le second est similaire, mais il est passé une URL en tant que deuxième paramètre. Ce qui donne? C'est ainsi que vous spécifiez le contenu pour remplacer l'espace réservé <code>$URL$</code> que nous voyons dans le champ <code>message</code> du champ <code>notificationContent</code> :</p> + +<pre class="brush: json">"notificationContent": { + "message": "You clicked $URL$.", + "description": "Tells the user which link they clicked.", + "placeholders": { + "url" : { + "content" : "$1", + "example" : "https://developer.mozilla.org" + } + } +} +</pre> + +<p>Le membre <code>"placeholders"</code> définit tous les espaces réservés et d'où ils sont extraits. L'espace réservé <code>"url"</code> spécifie que son contenu est pris à partir de $1, qui est la première valeur donnée dans le second paramètre de <code>getMessage()</code>. Puisque l'espace réservé est appelé <code>"url"</code>, nous utilisons <code>$URL$</code> pour l'appeler dans la chaîne de message (pour <code>"name"</code> vous utiliserez <code>$NAME$</code>, etc.) Si vous avez plusieurs espaces réservés, vous pouvez les fournir à l'intérieur un tableau qui est donné à {{WebExtAPIRef("i18n.getMessage()")}} en tant que deuxième paramètre — <code>[a, b, c]</code> sera disponible en <code>$1</code>, <code>$2</code>, et <code>$3</code>, et ainsi de suite, à l'intérieur des <code>messages.json</code>.</p> + +<p>Parcourons un exemple: la chaîne originale du message <code>notificationContent</code> dans le fichier <code>en/messages.json</code> est</p> + +<pre>You clicked $URL$.</pre> + +<p>Disons que le lien a été cliqué sur <code>https://developer.mozilla.org</code>. Après l'appel {{WebExtAPIRef("i18n.getMessage()")}} , le contenu du deuxième paramètre est mis à disposition dans messages.json sous la forme <code>$1</code>, qui remplace l'espace réservé <code>$URL$</code> tel qu'il est défini dans l'espace réservé <code>"url"</code>. Donc, la chaîne de message final est</p> + +<pre>You clicked https://developer.mozilla.org.</pre> + +<h3 id="Utilisation_de_lespace_réservé_direct">Utilisation de l'espace réservé direct</h3> + +<p>Il est possible d'insérer vos variables (<code>$1</code>, <code>$2</code>, <code>$3</code>, etc.) directement dans les chaînes de message, par exemple nous pourrions réécrire le membre <code>"notificationContent"</code> comme ceci :</p> + +<pre class="brush: json">"notificationContent": { + "message": "You clicked $1.", + "description": "Tells the user which link they clicked." +}</pre> + +<p>Cela peut sembler plus rapide et moins complexe, mais l'inverse (en utilisant <code>"placeholders"</code>) est considéré comme la meilleure pratique. En effet, avoir le nom de l'espace réservé (par exemple <code>"url"</code>) et l'exemple vous aide à vous souvenir de l'espace réservé pour l'espace réservé — une semaine après avoir écrit votre code, vous oublierez probablement ce que <code>$1</code>–<code>$8</code> , plus susceptibles de savoir à quoi correspondent les noms de vos espaces réservés.</p> + +<h3 id="Substitution_codée_en_dur">Substitution codée en dur</h3> + +<p>Il est également possible d'inclure des chaînes codées en dur dans des espaces réservés, de sorte que la même valeur soit utilisée à chaque fois, au lieu d'obtenir la valeur d'une variable dans votre code. Par exemple :</p> + +<pre class="brush: json">"mdn_banner": { + "message": "For more information on web technologies, go to $MDN$.", + "description": "Tell the user about MDN", + "placeholders": { + "mdn": { + "content": "https://developer.mozilla.org/" + } + } +}</pre> + +<p>Dans ce cas, nous ne faisons que coder en dur le contenu de l'espace réservé, plutôt que de l'obtenir à partir d'une valeur de variable comme <code>$1</code>. Cela peut parfois être utile lorsque votre fichier de message est très complexe et que vous souhaitez séparer différentes valeurs pour rendre les chaînes plus lisibles dans le fichier. De plus, ces valeurs peuvent être accédées par programmation.</p> + +<p>En outre, vous pouvez utiliser ces substitutions pour spécifier les parties de la chaîne que vous ne souhaitez pas traduire, telles que les noms de personne ou d'entreprise.</p> + +<h2 id="Sélection_de_chaîne_localisée">Sélection de chaîne localisée</h2> + +<p>Les paramètres régionaux peuvent être spécifiés en utilisant uniquement un code de langue, comme <code>fr</code> ou <code>en</code>, ou ils peuvent être qualifiés avec un code de région, comme <code>en_US</code> ou <code>en_GB</code>, qui décrit une variante régionale du même langage de base. Lorsque vous demandez au système i18n une chaîne, il sélectionne une chaîne en utilisant l'algorithme suivant:</p> + +<ol> + <li>S'il existe un fichier <code>messages.json</code> pour l'environnement local actuel exact et qu'il contient la chaîne, renvoyez-le.</li> + <li>Sinon, si l'environnement local actuel est qualifié avec une région (par exemple <code>en_US</code>) et qu'il existe un fichier <code>messages.json</code> pour la version sans région de cet environnement local (par exemple <code>en</code>), et que ce fichier contient la chaîne, renvoyez-le.</li> + <li>Sinon, s'il existe un fichier <code>messages.json</code> pour l'argument <code>default_locale</code> défini dans <code>manifest.json</code>, et qu'il contient la chaîne, renvoyez-le.</li> + <li>Sinon, renvoyez une chaîne vide.</li> +</ol> + +<p>Prenons l'exemple suivant :</p> + +<ul class="directory-tree"> + <li>extension-root-directory/ + <ul> + <li>_locales + <ul> + <li>en_GB + <ul> + <li>messages.json + <ul> + <li><code>{ "colorLocalised": { "message": "colour", "description": "Color." }, ... }</code></li> + </ul> + </li> + </ul> + en + + <ul> + <li>messages.json + <ul> + <li><code>{ "colorLocalised": { "message": "color", "description": "Color." }, ... }</code></li> + </ul> + </li> + </ul> + </li> + <li>fr + <ul> + <li>messages.json + <ul> + <li><code>{ "colorLocalised": { "message": "<span lang="fr">couleur</span>", "description": "Color." }, ...}</code></li> + </ul> + </li> + </ul> + </li> + </ul> + </li> + </ul> + </li> +</ul> + +<p>Supposons que <code>default_locale</code> soit défini sur <code>fr</code>, et que les paramètres régionaux actuels du navigateur soient <code>en_GB</code> :</p> + +<ul> + <li>Si l'extension appelle <code>getMessage("colorLocalised")</code>, elle retournera "couleur".</li> + <li>Si "colorLocalised" n'était pas présent dans <code>en_GB</code>, alors <code>getMessage("colorLocalised")</code>, retournerait "color", pas "couleur".</li> +</ul> + +<h2 id="Messages_prédéfinis">Messages prédéfinis</h2> + +<p>Le module i18n nous fournit des messages prédéfinis, que nous pouvons appeler de la manière que nous l'avons vu précédemment dans {{anch("Calling message strings from manifests and extension CSS")}}. Par exemple :</p> + +<pre>__MSG_extensionName__</pre> + +<p>Les messages prédéfinis utilisent exactement la même syntaxe, sauf avec <code>@@</code> avant le nom du message, par exemple</p> + +<pre>__MSG_@@ui_locale__</pre> + +<p>Le tableau suivant montre les différents messages prédéfinis disponibles :</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Nom du message</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>@@extension_id</code></td> + <td> + <p>L'UUID généré en interne de l'extension. Vous pouvez utiliser cette chaîne pour créer des URL pour les ressources à l'intérieur de l'extension. Même les extensions non localisées peuvent utiliser ce message.</p> + + <p>Vous ne pouvez pas utiliser ce message dans un fichier manifest.</p> + + <p>Notez également que cet ID n'est pas l'ID de module complémentaire renvoyé par {{WebExtAPIRef("runtime.id")}}. Il peut être défini à l'aide de la clé <a href="/fr/Add-ons/WebExtensions/manifest.json/applications">applications</a> dans le fichier manifest.json. C'est l'UUID généré qui apparaît dans l'URL de l'add-on. Cela signifie que vous ne pouvez pas utiliser cette valeur comme paramètre <code>extensionId</code> pour {{WebExtAPIRef("runtime.sendMessage()")}}, et que vous ne pouvez pas l'utiliser pour vérifier la propriété id d'un objet {{WebExtAPIRef("runtime.MessageSender")}}.</p> + </td> + </tr> + <tr> + <td><code>@@ui_locale</code></td> + <td>Les paramètres régionaux actuels vous pouvez utiliser cette chaîne pour créer des URL spécifiques aux paramètres régionaux.</td> + </tr> + <tr> + <td><code>@@bidi_dir</code></td> + <td>La direction du texte pour les paramètres régionaux actuels, soit "ltr" pour les langues de gauche à droite telles que l'anglais ou "rtl" pour les langues de droite à gauche telles que l'arabe.</td> + </tr> + <tr> + <td><code>@@bidi_reversed_dir</code></td> + <td>Si le <code>@@bidi_dir</code> est "ltr", alors il s'agit de "rtl"; sinon, c'est "ltr".</td> + </tr> + <tr> + <td><code>@@bidi_start_edge</code></td> + <td>Si le <code>@@bidi_dir</code> est "ltr", alors c'est "gauche"; sinon, c'est "droite".</td> + </tr> + <tr> + <td><code>@@bidi_end_edge</code></td> + <td>Si le <code>@@bidi_dir</code> est "ltr", alors c'est "droite"; sinon, c'est "gauche".</td> + </tr> + </tbody> +</table> + +<p>Pour en revenir à notre exemple, il serait plus logique de l'écrire comme ceci :</p> + +<pre class="brush: css">header { + background-image: url(../images/__MSG_@@ui_locale__/header.png); +}</pre> + +<p>Maintenant, nous pouvons simplement stocker nos images locales spécifiques dans des répertoires qui correspondent aux différentes locales que nous soutenons — en, de, etc. — ce qui est beaucoup plus logique.</p> + +<p>Regardons un exemple d'utilisation des messages <code>@@bidi_*</code> dans un fichier CSS :</p> + +<pre class="brush: css">body { + direction: __MSG_@@bidi_dir__; +} + +div#header { + margin-bottom: 1.05em; + overflow: hidden; + padding-bottom: 1.5em; + padding-__MSG_@@bidi_start_edge__: 0; + padding-__MSG_@@bidi_end_edge__: 1.5em; + position: relative; +}</pre> + +<p>Pour les langues de gauche à droite telles que l'anglais, les déclarations CSS impliquant les messages prédéfinis ci-dessus se traduiraient par les lignes de code définitives suivantes :</p> + +<pre class="brush: css">direction: ltr; +padding-left: 0; +padding-right: 1.5em; +</pre> + +<p>Pour une langue de droite à gauche comme l'arabe, vous obtiendrez :</p> + +<pre class="brush: css">direction: rtl; +padding-right: 0; +padding-left: 1.5em;</pre> + +<h2 id="Tester_votre_extension">Tester votre extension</h2> + +<p>Depuis Firefox 45, vous pouvez installer temporairement des extensions à partir du disque — voir <a href="/fr/Add-ons/WebExtensions/Packaging_and_installation#Loading_from_disk">Chargement depuis le disque</a>. Pour ce faire, puis essayez de tester notre extension <a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a>. Accédez à l'un de vos sites Web préférés et cliquez sur un lien pour voir si une notification s'affiche indiquant l'URL du lien cliqué.</p> + +<p>Ensuite, changez les paramètres régionaux de Firefox en un supporté dans l'extension que vous voulez tester.</p> + +<ol> + <li>Ouvrez "about:config" dans Firefox, et recherchez la préférence <code>intl.locale.requested</code> (gardez à l'esprit qu'avant Firefox 59, cette préférence s'appellait <code>general.useragent.locale</code>).</li> + <li>Double-cliquez sur la préférence (ou appuyez sur Retour/Entrée) pour le sélectionner, entrez le code de langue pour les paramètres régionaux que vous voulez tester, puis cliquez sur "OK" (ou appuyez sur Retour/Entrée). Par exemple, dans notre exemple d'extension, "en" (anglais), "de" (allemand), "nl" (néérlandais), et "ja" (Japonais) sont pris en charge.</li> + <li>Recherchez <code>intl.locale.matchOS</code> et double-cliquez sur la préférence pour qu'elle soit définie sur <code>false</code>.</li> + <li>Redémarrez votre navigateur pour terminer la modification.</li> +</ol> + +<div class="note"> +<p><strong>Remarque </strong>: Cela fonctionne pour modifier les paramètres régionaux du navigateur, même si vous n'avez pas installé le <a href="/fr/firefox/language-tools/">pack de language</a> pour cette langue. Vous obtiendrez simplement l'interface du navigateur dans votre langue par défaut si c'est le cas.</p> +</div> + +<ol> +</ol> + +<p>Chargez l'extension temporairement à partir du disque, puis testez vos nouveaux paramètres régionaux:</p> + +<ul> + <li>Visitez à nouveau "about:addons" — vous devriez maintenant voir l'extension listée, avec son icône, plus son nom et sa description dans la langue choisie.</li> + <li>Testez votre extension à nouveau. Dans notre exemple, vous allez sur un autre site Web et cliquez sur un lien, pour voir si la notification apparaît maintenant dans la langue choisie.</li> +</ul> + +<p>{{EmbedYouTube("R7--fp5pPGg")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/arriere-plan/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/arriere-plan/index.html new file mode 100644 index 0000000000..4181a9e841 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/arriere-plan/index.html @@ -0,0 +1,93 @@ +--- +title: background +slug: Mozilla/Add-ons/WebExtensions/manifest.json/arriere-plan +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/background +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Object</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>No</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"background": { + "scripts": ["background.js"] +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>Utilisez la clé <font face="Consolas">background</font> pour inclure un ou plusieurs scripts d'arrière-plan, et éventuellement une page d'arrière-plan dans votre extension.</p> + +<p>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.</p> + +<p>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 <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permissions</a> nécessaires.</p> + +<p>Voir la section "Pages arrière-plan" dans <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_pages">l'anatomie d'une WebExtension</a> pour plus de détails.</p> + +<p>La clé <font face="Consolas">background</font> est un objet qui peut avoir l'une des deux propriétés suivantes, toutes deux facultatives :</p> + +<table class="standard-table"> + <tbody> + <tr> + <td><code>"scripts"</code></td> + <td> + <p>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.</p> + + <p>Les scripts partagent la même fenêtre globale.</p> + + <p>Les scripts sont chargés dans l'ordre où 'ils apparaissent dans le tableau.</p> + + <p><strong>Notez qu'il y a un bug affectant les versions de Firefox antérieures à la version 50 </strong>: 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.</p> + </td> + </tr> + <tr> + <td><code>"page"</code></td> + <td> + <div class="note"> + <p><strong>Note </strong>: 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é <code><a href="https://developer.mozilla.org/fr/Add-ons/WebExtensions/manifest.json/content_security_policy">content_security_policy</a></code> dans le fichier manifest.json de votre extension.</p> + </div> + + <p>Si vous spécifiez des "scripts", une page vide sera créée pour que vos scripts s'exécutent.</p> + + <p>Si vous avez besoin de contenu particulier dans la page, vous pouvez définir votre propre page en utilisant l'option "page".</p> + + <p>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.</p> + </td> + </tr> + </tbody> +</table> + +<h2 class="brush: json no-line-numbers" id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers"> "background": { + "scripts": ["jquery.js", "my-background.js"] + }</pre> + +<p>Chargez deux scripts de fond.</p> + +<pre class="brush: json"> "background": { + "page": "my-background.html" + }</pre> + +<p><span class="short_text" id="result_box" lang="fr"><span>Chargez une page d'arrière-plan personnalisée.</span></span></p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.background", 10)}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/auteur/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/auteur/index.html new file mode 100644 index 0000000000..a00c7dab33 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/auteur/index.html @@ -0,0 +1,44 @@ +--- +title: author +slug: Mozilla/Add-ons/WebExtensions/manifest.json/auteur +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/author +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><font face="Consolas">chaîne de caractères</font></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"author": "Walt Whitman"</pre> + </td> + </tr> + </tbody> +</table> + +<p>L'auteur de l'extension, destiné à être visualisé dans l'interface utilisateur du navigateur. Si la clé du <a href="https://developer.mozilla.org/fr/Add-ons/WebExtensions/manifest.json/developer">developpeur</a> est fournie et qu'elle contient la propriété "nom", elle remplacera la clé de l'auteur. Il n'y a aucun moyen de spécifier plusieurs auteurs.</p> + +<p>Notez que Firefox ne supporte cette clé qu'à partir de la version 52 et que cette clé est obligatoire dans Microsoft Edge.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"author": "Walt Whitman"</pre> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.author")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/browser_action/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/browser_action/index.html new file mode 100644 index 0000000000..1b452dc9b8 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/browser_action/index.html @@ -0,0 +1,254 @@ +--- +title: browser_action +slug: Mozilla/Add-ons/WebExtensions/manifest.json/browser_action +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/browser_action +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Object</code></td> + </tr> + <tr> + <th scope="row">Mandatory</th> + <td>No</td> + </tr> + <tr> + <th scope="row">Example</th> + <td> + <pre class="brush: json no-line-numbers"> +"browser_action": { + "browser_style": true, + "default_icon": { + "16": "button/geo-16.png", + "32": "button/geo-32.png" + }, + "default_title": "Whereami?", + "default_popup": "popup/geo.html", + "theme_icons": [{ + "light": "icons/geo-16-light.png", + "dark": "icons/geo-16.png", + "size": 16 + }, { + "light": "icons/geo-32-light.png", + "dark": "icons/geo-32.png", + "size": 32 + }] +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>Une action de navigateur est un bouton que votre extension ajoute à la barre d'outils du navigateur. Le bouton comporte une icône et peut éventuellement avoir une fenêtre contextuelle dont le contenu est spécifié à l'aide de HTML, CSS et JavaScript.</p> + +<p>Si vous fournissez une fenêtre contextuelle, la fenêtre contextuelle est ouverte lorsque l'utilisateur clique sur le bouton, et votre JavaScript s'exécute dans la fenêtre contextuelle permettant l'interaction de l'utilisateur avec elle. Si vous ne fournissez pas de popup, un événement de clic est envoyé aux <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">scripts d'arrière-plan</a> de votre extension lorsque l'utilisateur clique sur le bouton.</p> + +<p>Vous pouvez également créer et manipuler des actions de navigateur de manière programmée à l'aide de l'<a href="/fr/Add-ons/WebExtensions/API/browserAction">API browserAction</a>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<p>La clé <code>browser_action</code> est un objet qui peut avoir l'une des propriétés suivantes, toutes optionnelles :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>browser_style</code></td> + <td><code>Booléen</code></td> + <td> + <p>Facultatif, par défaut à <code>false</code>.</p> + + <p>Utilisez-le pour inclure une feuille de style dans votre popup qui le rendra cohérent avec l'interface utilisateur du navigateur et avec d'autres extensions qui utilisent la propriété <code>browser_style</code>. Bien que cette touche par défaut soit <code>false</code>, il est recommandé de l'inclure et de la mettre à <code>true</code> afin de rendre vos fenêtres contextuelles cohérentes avec l'apparence du reste de l'interface utilisateur du navigateur.</p> + + <p>Dans Firefox, la feuille de style peut être vue à chrome://browser/content/extension.css, ou chrome://browser/content/extension-mac.css sur OS X. Lorsque vous définissez les dimensions, sachez que cette feuille de style définit actuellement <code>box-sizing: border-box</code> (voir <a href="https://developer.mozilla.org/docs/Web/CSS/box-sizing">box-sizing</a>).</p> + + <p>Les <a href="/fr/Add-ons/WebExtensions/user_interface/Browser_styles">Browser styles</a> décrivent les classes que vous pouvez appliquer aux éléments dans le popup afin d'obtenir des styles particuliers.</p> + + <p>L'extension de l'exemple <a href="https://github.com/mdn/webextensions-examples/tree/master/latest-download">latest-download</a> utilise <code>browser_style</code> dans son popup.</p> + </td> + </tr> + <tr> + <td><code>default_area</code></td> + <td><font face="Consolas">Chaîne de caractères</font></td> + <td> + <div class="blockIndicator geckoVersionNote">Nouveau dans Firefox 54</div> + + <p>Définit la partie du navigateur dans laquelle le bouton est initialement placé. Il s'agit d'une chaîne qui peut prendre l'une des quatre valeurs suivantes:</p> + + <ul> + <li>"navbar" : le bouton est placé dans la barre d'outils principale du navigateur, à côté de la barre d'URL.</li> + <li>"menupanel" : le bouton est placé dans un panneau contextuel.</li> + <li>"tabstrip" : le bouton est placé dans la barre d'outils qui contient les onglets du navigateur.</li> + <li>"personaltoolbar" : le bouton est placé dans la barre d'outils des signets</li> + </ul> + + <p>Cette propriété est seulement supportée dans Firefox.</p> + + <p>Cett propriété est facultative, et defaut à "navbar".</p> + + <p>Firefox se souvient des paramètres <code>default_area</code> d'une extension, même si cette extension est désinstallée et réinstallée par la suite. Pour forcer le navigateur à reconnaître une nouvelle valeur pour <code>default_area</code>, l'identifiant de l'extension doit être modifié.</p> + + <p>Une extension ne peut pas changer l'emplacement du bouton après son installation, mais l'utilisateur doit pouvoir déplacer le bouton en utilisant le mécanisme de personnalisation du navigateur.</p> + </td> + </tr> + <tr> + <td><code>default_icon</code></td> + <td><code>Objet</code> ou <font face="Consolas">chaîne de caractères</font></td> + <td> + <p>Utilisez cette option pour spécifier une ou plusieurs icônes pour le bouton d'action du navigateur. L'icône est affichée dans la barre d'outils du navigateur par défaut.</p> + + <p>Les icônes sont spécifiées comme des URL relatives dans le fichier manifest.json lui-même.</p> + + <p>Vous pouvez spécifier un seul fichier d'icône en fournissant une chaîne ici:</p> + + <pre class="brush: json no-line-numbers"> +"default_icon": "path/to/geo.svg"</pre> + + <p>Pour spécifier plusieurs icônes dans différentes tailles, spécifiez ici un objet. Le nom de chaque propriété est la hauteur de l'icône en pixels et doit être converti en un nombre entier. La valeur est l'URL. Par exemple:</p> + + <pre class="brush: json no-line-numbers"> + "default_icon": { + "16": "path/to/geo-16.png", + "32": "path/to/geo-32.png" + }</pre> + + <p>Vous ne pouvez pas spécifier plusieurs icônes de la même taille.</p> + + <p>Voir <a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action#Choosing_icon_sizes">Choisir les tailles des icones</a> pour plus de conseils à ce sujet.</p> + </td> + </tr> + <tr> + <td><code>default_popup</code></td> + <td><font face="Consolas">chaîne de caractères</font></td> + <td> + <p>Le chemin d'accès à un fichier HTML contenant la spécification de la fenêtre contextuelle.</p> + + <p>Le fichier HTML peut inclure des fichiers CSS et JavaScript en utilisant des éléments <code><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link"><link></a></code> et <code><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script"><script></a></code>, tout comme une page Web normale. Cependant, <code><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script"><script></a></code> doit avoir l'attribut <code><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script">src</a></code> pour charger un fichier. N'utilisez pas <code><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script"><script></a></code> avec du code intégré, car vous obtiendrez une erreur de politique de violation de contenu confuse.</p> + + <p>Contrairement à une page Web normale, JavaScript en cours d'exécution dans la fenêtre contextuelle peut accéder à toutes les <a href="/fr/Add-ons/WebExtensions/API">APIs WebExtension</a> (soumis, bien sûr, à l'extension possédant les <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a> appropriées).</p> + + <p>Ceci est une <a href="/fr/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">propriété localisable</a>.</p> + </td> + </tr> + <tr> + <td><code>default_title</code></td> + <td><font face="Consolas">chaîne de caractères</font></td> + <td> + <p>Info-bulle pour le bouton, affichée lorsque l'utilisateur passe sa souris dessus.</p> + + <p>Ceci est une <a href="/fr/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">propriété localisable</a>.</p> + </td> + </tr> + <tr> + <td><code>theme_icons</code></td> + <td><code>Tableau</code></td> + <td> + <p>Cette propriété vous permet de spécifier différentes icônes pour les thèmes selon que Firefox détecte que le thème utilise du texte sombre ou clair.</p> + + <p>Si cette propriété est présente, il s'agit d'un tableau contenant au moins un objet <code>ThemeIcons</code>. Un objet <code>ThemeIcons</code> contient trois propriétés obligatoires :</p> + + <dl> + <dt><code>"dark"</code></dt> + <dd>Une URL pointant vers une icône. Cette icône s'affiche lorsqu'un thème utilisant du texte sombre est actif (tel que, le thème Light de Firefox et le thème Default si default_icon n'est pas spécifié).</dd> + <dt><code>"light"</code></dt> + <dd>Une URL pointant vers une icône. Cette icône s'affiche lorsqu'un thème utilisant du texte clair est actif (tel que, le thème sombre de Firefox).</dd> + <dt><code>"size"</code></dt> + <dd>La taille des deux icônes en pixels.</dd> + </dl> + + <p>Les icônes sont spécifiées en tant qu'URL par rapport au fichier manifest.json lui-même.</p> + + <p>Vous devez fournir un <code>ThemeIcons</code> en taille 16x16 et un en taille 32x32 (pour l'affichage de la rétine).</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="Choisir_les_tailles_des_icônes">Choisir les tailles des icônes</h2> + +<p>L'icône de l'action du navigateur peut devoir être affichée dans différentes tailles dans différents contextes:</p> + +<ul> + <li>L'icône est affichée par défaut dans la barre d'outils du navigateur, mais l'utilisateur peut la déplacer dans le panneau de menu du navigateur (le panneau qui s'ouvre lorsque l'utilisateur clique sur l'icône "hamburger"). L'icône dans la barre d'outils est plus petite que l'icône dans le panneau de menu.</li> + <li>Sur un écran haute densité comme un écran Retina, les icônes doivent être deux fois plus grandes.</li> +</ul> + +<p>Si le navigateur ne peut pas trouver une icône de la bonne taille dans une situation donnée, il choisira la meilleure correspondance et la mettra à l'échelle. Cette correction peut donner une apparence floue à l'icône, il est donc important de choisir attentivement les tailles d'icône.</p> + +<p>Il y a deux approches principales pour cela. Vous pouvez fournir une seule icône en tant que fichier SVG, et elle sera mise à l'échelle correctement :</p> + +<pre class="brush: json no-line-numbers">"default_icon": "path/to/geo.svg"</pre> + +<p>Ou vous pouvez fournir plusieurs icônes dans différentes tailles, et le navigateur choisira la meilleure.</p> + +<p>Dans Firefox:</p> + +<ul> + <li>La hauteur par défaut des icônes dans la barre d'outils est 16 * <code><a href="/fr/docs/Web/API/Window/devicePixelRatio">window.devicePixelRatio</a></code>.</li> + <li>La hauteur par défaut pour les icônes dans le panneau de menu est 32 * <code><a href="/fr/docs/Web/API/Window/devicePixelRatio">window.devicePixelRatio</a></code>.</li> +</ul> + +<p>Vous pouvez donc spécifier des icônes qui correspondent exactement, à la fois aux affichages normaux et à Retina, en fournissant trois fichiers d'icônes et en les spécifiant comme suit:</p> + +<pre class="brush: json no-line-numbers"> "default_icon": { + "16": "path/to/geo-16.png", + "32": "path/to/geo-32.png", + "64": "path/to/geo-64.png" + }</pre> + +<p> </p> + +<p>Si Firefox ne peut pas trouver une correspondance exacte pour la taille qu'il veut, alors il choisira l'icône la plus petite spécifiée qui est plus grande que la taille idéale. Si toutes les icônes sont plus petites que la taille idéale, elle choisira la plus grande icône spécifiée.</p> + +<p> </p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"browser_action": { + "default_icon": { + "16": "button/geo-16.png", + "32": "button/geo-32.png" + } +}</pre> + +<p>Une action de navigateur avec juste une icône, spécifiée en 2 tailles différentes. Les scripts d'arrière-plan de l'extension peuvent recevoir des événements de clic lorsque l'utilisateur clique sur l'icône en utilisant un code comme celui-ci :</p> + +<pre class="brush: js no-line-numbers"> browser.browserAction.onClicked.addListener(handleClick);</pre> + +<pre class="brush: json">"browser_action": { + "default_icon": { + "16": "button/geo-16.png", + "32": "button/geo-32.png" + }, + "default_title": "Whereami?", + "default_popup": "popup/geo.html" +}</pre> + +<p>Une action de navigateur avec une icône, un titre et une fenêtre contextuelle. Celle-ci s'affiche lorsque l'utilisateur clique sur le bouton.</p> + +<p>Pour une extension simple, mais complète, qui utilise une action de navigateur, consultez le <a href="/fr/Add-ons/WebExtensions/Your_second_WebExtension">tutoriel pas à pas</a>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>{{Compat("webextensions.manifest.browser_action", 10)}}</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><code><a href="/fr/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code></li> + <li><code><a href="/fr/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></code></li> + <li><a href="/fr/Add-ons/WebExtensions/user_interface/Browser_styles">Browser styles</a></li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html new file mode 100644 index 0000000000..073caeeb6b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/browser_specific_settings/index.html @@ -0,0 +1,117 @@ +--- +title: browser_specific_settings +slug: Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings +tags: + - Add-ons + - Extensions + - WebExtensions + - browser_specific_settings +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Object</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td> + <p>Habituellement, non (mais voir aussi <a href="https://developer.mozilla.org/fr/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID#When_do_you_need_an_Add-on_ID">Quand avec-vous besoin d'une ID Complémentaire</a><a href="https://developer.mozilla.org/fr/Add-ons/WebExtensions/manifest.json/applications#When_do_I_need_the_applications_key">?</a>). Obligatoire avant Firefox 48 (desktop) et Firefox pour Android.</p> + </td> + </tr> + <tr> + <th scope="row">Example</th> + <td> + <pre class="brush: json; no-line-numbers"> +"browser_specific_settings": { + "gecko": { + "id": "addon@example.com", + "strict_min_version": "42.0" + } +} +</pre> + </td> + </tr> + </tbody> +</table> + +<h2 id="Description">Description</h2> + +<p>La clé <code>browser_specific_settings</code> contient des clés qui sont spécifiques à certaines applications hôtes.</p> + +<h3 id="Propriétés_Gecko_Firefox">Propriétés (Gecko) Firefox</h3> + +<p>Actuellement, elle contient uniquement une clé, <code>gecko</code>, qui est structurée ainsi :</p> + +<ul> + <li><code>id</code> est l'ID de l'extension. Facultatif à partir de Firefox 48, obligatoire avant Firefox 48. Voir les <a href="/fr/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">WebExtensions et l'ID des extensions</a> pour voir quand vous devez spécifier un identifiant complémentaire.</li> + <li><code>strict_min_version </code>: la version minimum de Gecko supportée. Les versions contenant un "*" ne sont pas valides dans ce domaine. Par défaut, c'est "42a1".</li> + <li><code>strict_max_version</code> : la version maximum de Gecko supportée. Si la version de Firefox sur laquelle l'extension est en cours d'installation ou d'exécution est au-dessus de cette version, l'extension sera désactivée ou ne sera pas autorisée à être installée. Par défaut, c'est "*", qui désactive la vérification d'une version maximale.</li> + <li> + <p><code>update_url</code> est lien vers un <a href="https://developer.mozilla.org/fr-FR/Add-ons/Install_Manifests#updateURL">manifeste de mise à jour personnalisé</a>. Notez que le lien doit commencer par "https". Cette clé consiste à gérer vous-même les mises à jour d'extension (c'est-à-dire pas via AMO).</p> + </li> +</ul> + +<p>Vois la liste des <a href="https://addons.mozilla.org/en-US/firefox/pages/appversions/">versions Gecko valides</a>.</p> + +<h4 id="Format_dID_dextension">Format d'ID d'extension</h4> + +<p>L'ID d'extension doit être l'un des suivants :</p> + +<ul> + <li><a href="https://en.wikipedia.org/wiki/Universally_unique_identifier" title="Generating_GUIDs">GUID</a></li> + <li>Une chaîne formatée comme une adresse e-mail : <code class="plain">extensionname@example.org</code></li> +</ul> + +<p>Ce dernier format est plus facile à générer et à manipuler. Sachez que l'utilisation d'une véritable adresse e-mail ici peut attirer des spams.</p> + +<p>Par exemple :</p> + +<pre class="brush: json; auto-links: false; no-line-numbers">"id": "extensionname@example.org"</pre> + +<pre class="brush: json; auto-links: false; no-line-numbers">"id": "{daf44bf7-a45e-4450-979c-91cf07434c3d}"</pre> + +<h3 id="Propriétés_Microsoft_Edge">Propriétés Microsoft Edge</h3> + +<div class="blockIndicator warning"> +<p>Avertissement : L'ajout de propriétés spécifiques à Edge au manifeste a causé une erreur avant Firefox 69 qui peut empêcher l'extension de s'installer.</p> +</div> + +<p>Microsoft Edge stocke les paramètres spécifiques à son navigateur dans la sous-clé <code>edge</code>, qui possède les propriétés suivantes :</p> + +<dl> + <dt><code>browser_action_next_to_addressbar</code></dt> + <dd> + <p>Propriété booléenne qui contrôle le placement de l'<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_actions">action du navigateur</a>.</p> + + <ul> + <li><code>true</code> est équivalent à la définition <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action#Syntax">browser_action.default_area</a></code> à <code>navbar</code>.</li> + <li><code>false</code> is équivalent à la définition <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action#Syntax">browser_action.default_area</a></code> à <code>menupanel</code>.</li> + </ul> + </dd> +</dl> + +<h2 id="Exemples">Exemples</h2> + +<p>Exemple avec toutes les clés possibles. Notez que vous n'incluez normalement ni une version <code>strict_max_version</code> ni une clé <code>update_url</code>.</p> + +<pre class="brush: json; auto-links: false; no-line-numbers">"browser_specific_settings": { + "gecko": { + "id": "addon@example.com", + "strict_min_version": "42.0", + "strict_max_version": "50.*", + "update_url": "https://example.com/updates.json" + }, + "edge": { + "browser_action_next_to_addressbar": true + } +}</pre> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + + + +<p>{{Compat("webextensions.manifest.browser_specific_settings")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/chrome_settings_overrides/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/chrome_settings_overrides/index.html new file mode 100644 index 0000000000..a421830363 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/chrome_settings_overrides/index.html @@ -0,0 +1,136 @@ +--- +title: chrome_settings_overrides +slug: Mozilla/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides +tags: + - Add-ons + - Extensions + - WebExtensions + - chrome_settings_overrides + - manifest.json +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides +--- +<div>{{AddonSidebar}}</div> + +<p>Utilisez la clé <code>chrome_settings_overrides</code> pour remplacer certains paramètres du navigateur. Deux paramètres sont disponibles :</p> + +<ul> + <li><code>"homepage"</code>, qui vous permet de remplacer la page d'accueil du navigateur.</li> + <li><code>"search_provider"</code>, qui vous permet d'ajouter un nouveau moteur de recherche.</li> +</ul> + +<pre class="brush: json no-line-numbers">"chrome_settings_overrides" : { + "homepage": "https://developer.mozilla.org/" +}</pre> + +<pre class="brush: json no-line-numbers">"chrome_settings_overrides": { + "search_provider": { + "name": "Discogs", + "search_url": "https://www.discogs.com/search/?q={searchTerms}", + "keyword": "disc", + "favicon_url": "https://www.discogs.com/favicon.ico" + } +}</pre> + +<table class="properties"> + <tbody> + <tr> + <th colspan="2" scope="row">clé de manifeste : <code>chrome_settings_overrides</code></th> + </tr> + <tr> + <th scope="row">Type</th> + <td><code>Objet</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + </tbody> +</table> + +<h2 id="Syntaxe">Syntaxe</h2> + +<p>La clé <code>chrome_settings_overrides</code> est un objet qui peut avoir les propriétés suivantes:</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>homepage</code></td> + <td><font face="Consolas">Chaîne de caractères</font></td> + <td> + <p>Définit la page à utiliser comme page d'accueil du navigateur.</p> + + <p>Le remplacement est donné comme une URL. L'URL peut :</p> + + <ul> + <li>pointer sur un fichier regroupé avec l'extension, auquel cas il est donné comme une URL relative au fichier manifest.json</li> + <li>être une URL distante comme "https://developer.mozilla.org/".</li> + </ul> + + <p>Si deux ou plusieurs extensions définissent toutes les deux cette valeur, alors le paramètre de la dernière extension installée aura la priorité.</p> + + <p>Pour éviter de nouveaux onglets, utilisez à la place "<a href="/en-US/Add-ons/WebExtensions/manifest.json/chrome_url_overrides">chrome_url_overrides</a>".</p> + + <p>C'est une <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json"><u><font color="#0066cc">propriété localisable</font></u></a>.</p> + </td> + </tr> + <tr> + <td><code>search_provider</code></td> + <td><code>Objet</code></td> + <td> + <p>Définit un moteur de recherche à ajouter au navigateur.</p> + + <p>Le moteur de recherche a un nom et une URL principale. D'autres URL peuvent être fournies, y compris des URL pour des recherches plus spécialisées comme des recherches d'images. Dans l'URL que vous fournissez, utilisez "<code>{searchTerms}</code>" pour interpoler le terme de recherche dans l'URL, comme : <code>https://www.discogs.com/search/?q={searchTerms}</code>. Vous pouvez également fournir des paramètres POST à envoyer avec la recherche.</p> + + <p>Le moteur de recherche sera présenté à l'utilisateur à côté de ceux fournis dans l'interface. Si vous incluez la propriété <code>is_default</code>et le configurez avec <code>true</code>, le nouveau moteur de recherche devient l'option par défaut. Avec l'utilisation de la propriété<code>keyword</code>, vous permettez à l'utilisateur de sélectionner votre moteur de recherche en tapant le mot-clé dans la barre d'adresse avant le terme recherché.</p> + + <p>C'est un objet avec les propriétés listées ci-dessous. Toutes les propriétés chaîne de caractères sont <a href="/en-US/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">localisable</a>s.</p> + + <dl> + <dt><code>name</code></dt> + <dd>Chaîne de caractères : le nom du moteur de recherche, affiché pour l'utilisateur.</dd> + <dt><code>search_url</code></dt> + <dd>Chaîne de caractères : l'URL utilisée par le moteur de recherche. Il peut être une URL HTTPS.</dd> + <dt><code>is_default</code></dt> + <dd>Booléen: "True" si le moteur de recherch doit être le choix par défaut.</dd> + <dt><code>alternate_urls {{optional_inline}}</code></dt> + <dd>Tableau de chaînes de caractères : un éventail d'URL alternatives, qui peut être utilisé à la place de<code>search_url</code>.</dd> + <dt><code>encoding {{optional_inline}}</code></dt> + <dd>Chaîne de caractères : codage du terme de recherche, spécifié comme un <a href="https://www.iana.org/assignments/character-sets/character-sets.xhtml">standard character encoding name</a>, voir "UTF-8".</dd> + <dt><code>favicon_url {{optional_inline}}</code></dt> + <dd>Chaîne de caractères : URL pointant sur une icône pour le moteur de recherche. Ce doit être une URL absolue HTTP ou HTTPS.</dd> + <dt><code>image_url {{optional_inline}}</code></dt> + <dd>Chaîne de caractères : URL utilisée pour une recherche d'images.</dd> + <dt><code>image_url_post_params {{optional_inline}}</code></dt> + <dd>Chaîne de caractères : paramètres POST à envoyer à<code>image_url</code>.</dd> + <dt><code>instant_url {{optional_inline}}</code></dt> + <dd>Chaîne de caractères : URL utilisée pour une recherche instantanée.</dd> + <dt><code>instant_url_post_params {{optional_inline}}</code></dt> + <dd>Chaîne de caractères : paramètres POST à envoyer à <code>instant_url</code>.</dd> + <dt><code>keyword {{optional_inline}}</code></dt> + <dd>Chaîne de caractères : mots-clés de la barre d'adresse pour le moteur de recherche.</dd> + <dt><code>prepopulated_id {{optional_inline}}</code></dt> + <dd>L'ID d'un moteur de recherche intégré à utiliser.</dd> + <dt><code>search_url_post_params {{optional_inline}}</code></dt> + <dd>Chaîne de caractères : paramètres POST à envoyer à<code>search_url</code>.</dd> + <dt><code>suggest_url {{optional_inline}}</code></dt> + <dd>Chaîne de caractères : URL utilisée pour les suggestions de recherche. Ceci doit être une URL HTTPS</dd> + <dt><code>suggest_url_post_params {{optional_inline}}</code></dt> + <dd>Chaîne de caractères : paramètres POST à envoyer à<code>suggest_url</code>.</dd> + </dl> + </td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilité_de_navigateur">Compatibilité de navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.chrome_settings_overrides", 10)}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/chrome_url_overrides/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/chrome_url_overrides/index.html new file mode 100644 index 0000000000..0cf35648f1 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/chrome_url_overrides/index.html @@ -0,0 +1,97 @@ +--- +title: chrome_url_overrides +slug: Mozilla/Add-ons/WebExtensions/manifest.json/chrome_url_overrides +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/chrome_url_overrides +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Objet</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> + "chrome_url_overrides" : { + "newtab": "my-new-tab.html" + }</pre> + </td> + </tr> + </tbody> +</table> + +<p>Utilisez la clé <code>chrome_url_overrides</code> pour fournir un remplacement personnalisé pour les documents chargés dans différentes pages spéciales généralement fournies par le navigateur lui-même.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<p>La clé <code>chrome_url_overrides</code> est un objet qui peut avoir les propriétés suivantes:</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>bookmarks</code></td> + <td><font face="Consolas">Chaîne de caractères</font></td> + <td> + <p>Remplace la page qui affiche les signets.</p> + </td> + </tr> + <tr> + <td><code>history</code></td> + <td><font face="Consolas">chaîne de caractères</font></td> + <td> + <p>Remplace la page qui affiche l'historique de navigation.</p> + </td> + </tr> + <tr> + <td><code>newtab</code></td> + <td><font face="Consolas">chaîne de caractères</font></td> + <td> + <p>Remplace le document qui s'affiche dans la page "Nouvel onglet". Ceci est la page affichée lorsque l'utilisateur a ouvert un nouvel onglet, mais n'a chargé aucun document : par exemple, en utilisant le raccourci clavier <kbd>Ctrl</kbd>/<kbd>Command</kbd>+<kbd>T</kbd>.</p> + + <p>Le remplacement est donné en tant qu'URL d'un fichier HTML. Le fichier doit être regroupé avec l'extension : vous ne pouvez pas spécifier une URL distante ici. Vous pouvez le spécifier par rapport au dossier racine de l'extension, comme : "path/to/newtab.html".</p> + + <p>Le document peut charger CSS et JavaScript, tout comme une page Web normale. L'utilisation de JavaScript dans la page permet d'accéder aux mêmes <a href="/en-US/Add-ons/WebExtensions/API">API privilégiées "browser.*" </a>comme une extension d'arrière-plan.</p> + + <p>Il est très pratique d'inclure un <a href="/en-US/docs/Web/HTML/Element/title"><title></a> pour la page, ou le titre de l'onglet sera l'URL "moz-extension://..." .</p> + + <p>Un cas d'utilisation courant est de permettre à l'utilisateur de définir une nouvelle page d'onglet : pour ce faire, fournir une nouvelle page d'onglet personnalisée qui navigue vers la page définie par l'utilisateur.</p> + + <p>Si deux ou plusieurs extensions définissent toutes les deux de nouvelles pages à onglet personnalisées, alors la dernière à être installée ou activée utilise sa valeur.</p> + + <p>Pour remplacer la page d'accueil du navigateur, utilisez plutôt "<a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides">chrome_settings_overrides</a>".</p> + </td> + </tr> + </tbody> +</table> + +<p>Toutes les propriétés sont <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">localisables</a>.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"chrome_url_overrides" : { + "newtab": "my-new-tab.html" +}</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.chrome_url_overrides")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/commands/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/commands/index.html new file mode 100644 index 0000000000..067ac67927 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/commands/index.html @@ -0,0 +1,200 @@ +--- +title: commands +slug: Mozilla/Add-ons/WebExtensions/manifest.json/commands +tags: + - Add-ons + - Extensions + - Keyboard Shortcuts + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/commands +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Objet</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"commands": { + "toggle-feature": { + "suggested_key": { + "default": "Ctrl+Shift+Y", + "linux": "Ctrl+Shift+U" + }, + "description": "Send a 'toggle-feature' event" + } +}</pre> + </td> + </tr> + </tbody> +</table> + +<p><span class="seoSummary">Utilisez la clé <strong><code>commands</code></strong> pour définir un ou plusieurs raccourcis clavier pour votre extension.</span></p> + +<p>Chaque raccourci clavier est défini avec un <strong>nom</strong>, une <strong>combination de clé</strong>, et un <strong>description</strong>. Une fois que vous avez défini des commandes dans le fichier <code>manifest.json</code>, de votre extension, vous pouvez écouter leurs combinaisons de touches associées avec l'API JavaScript {{WebExtAPIRef("commands")}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<p>La clé <code>commands</code> est un objet et chaque raccourci est une propriété de celui-ci. <strong>Le nom de la propriété est le nom du raccourci</strong>.</p> + +<p>Chaque raccourci est lui-même un objet, qui possède jusqu'à deux propriétés :</p> + +<ul> + <li><code>suggested_key</code> : définit la combinaison de touches</li> + <li><code>description</code> : une chaîne qui décrit ce raccourci</li> +</ul> + +<p>La propriété <code>suggested_key</code> est elle-même un objet pouvant avoir l'une des propriétés suivantes et qui sont toutes des chaînes :</p> + +<ul> + <li><code>"default"</code></li> + <li><code>"mac"</code></li> + <li><code>"linux"</code></li> + <li><code>"windows"</code></li> + <li><code>"chromeos"</code></li> + <li><code>"android"</code></li> + <li><code>"ios"</code></li> +</ul> + +<p>La valeur de chaque propriété est le raccourci clavier pour la commande sur la plateforme donnée, sous la forme d'une chaîne contenant les touches séparées par "<code>+</code>". La valeur de <code>"default"</code> est utilisée sur toutes les plateformes qui ne sont pas listées explicitement.</p> + +<p>Par exemple :</p> + +<pre class="brush: json no-line-numbers">"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" + } + } +}</pre> + +<p>Cela définit deux raccourcis :</p> + +<ul> + <li>une nommée <code>"toggle-feature"</code>, accessible à l'aide de <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>U</kbd> sur Linux et <kbd>Alt</kbd>+<kbd>Shift</kbd>+<kbd>U</kbd> sur toutes les autres plateformes</li> + <li>une nommée <code>"do-another-thing"</code>, accessible à l'aide de <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Y</kbd> sur toutes les plateformes.</li> +</ul> + +<p>Vous pouvez alors écouter la commande <code>"toggle-feature"</code> avec un code comme celui-ci :</p> + +<pre class="brush: js no-line-numbers">browser.commands.onCommand.addListener(function(command) { + if (command == "toggle-feature") { + console.log("toggling the feature!"); + } +});</pre> + +<h3 id="Raccourcis_spéciaux">Raccourcis spéciaux</h3> + +<p>Il existe 3 <strong>raccourci spéciaux avec des actions par défaut</strong>, pour lesquels l'événement {{WebExtAPIRef("commands.onCommand")}} n'est pas déclenché :</p> + +<ul> + <li><code>_execute_browser_action</code>: fonctionne comme un clic sur une <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Browser_action">action de navigateur</a> de l'extension.</li> + <li><code>_execute_page_action</code>: fonctionne comme un clic sur une <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Page_actions">action de page</a> de l'extension.</li> + <li><code>_execute_sidebar_action</code>: ouvre le <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Sidebars">panneau latéral</a> de l'extension. Uniquement pris en charge par Firefox et uniquement à partir de Firefox version 54.</li> +</ul> + +<p>Par exemple, ce JSON définit une combinaison de touches qui clique sur l'action du navigateur de l'extension :</p> + +<pre class="brush: js no-line-numbers">"commands": { + "_execute_browser_action": { + "suggested_key": { + "default": "Ctrl+Shift+Y" + } + } +}</pre> + +<h2 id="Les_valeurs_de_raccourci">Les valeurs de raccourci</h2> + +<p>Il existe deux formats valides pour les touches de raccourci : comme une combinaison de touches ou comme une clé multimédia.</p> + +<h3 id="Combinaisons_de_touches">Combinaisons de touches</h3> + +<div class="pull-aside"> +<div class="moreinfo">Sur Mac, <code>"Ctrl"</code> est interprété comme <code>"Command"</code>, donc si vous avez réellement besoin de <code>"Ctrl"</code>, spécifiez <code>"MacCtrl"</code>.</div> +</div> + +<p>Les combinaisons de touches doivent être composées de deux ou trois touches :</p> + +<ol> + <li><strong>modificateur</strong> (obligatoire, à l'exception des touches de fonction). Il peut s'agir de <code>"Ctrl"</code>, <code>"Alt"</code>, <code>"Command"</code>, ou <code>"MacCtrl"</code>.</li> + <li><strong>second modificateur</strong> (facultatif). S'il est fourni, il doit être <code>"Shift"</code> ou (pour Firefox ≥ 63) l'un quelconque des <code>"Ctrl"</code>, <code>"Alt"</code>, <code>"Command"</code>, ou <code>"MacCtrl"</code>. Ne doit pas être le modificateur déjà utilisé comme modificateur principal.</li> + <li><strong>touche </strong>(obligatoire). Ce peut être l'une des touches : + <ul> + <li>lettres <code>A</code>–<code>Z</code></li> + <li>chiffres <code>0</code>–<code>9</code></li> + <li>fonctions <code>F1</code>–<code>F12</code></li> + <li><code>Comma</code>(virgule), <code>Period</code>(point), <code>Home</code> (début), <code>End</code> (Fin), <code>PageUp</code>(page précédente), <code>PageDown</code> (page suivante), <code>Space</code> (espace), <code>Insert</code>(inser), <code>Delete</code>(Suppr), <code>Up</code> (haut), <code>Down</code> (bas), <code>Left</code>(gauche), <code>Right</code> (droite)</li> + </ul> + </li> +</ol> + +<p>La clé est ensuite donnée sous la forme d'une chaîne contenant l'ensemble des valeurs de clé, dans l'ordre indiqué ci-dessus, séparées "<code>+</code>". Par exemple, <code>"Ctrl+Shift+Z"</code>.</p> + +<p>Si une combinaison de touches est déjà utilisée par le navigateur (comme <code>"Ctrl+P"</code>) ou par un complément existant, vous ne pouvez pas la remplacer. Vous pouvez le définir, mais votre gestionnaire d'événements ne sera pas appelé lorsque l'utilisateur appuiera sur la combinaison de touches.</p> + +<h3 id="Touches_médias">Touches médias</h3> + +<p>Une alternative est de spécifier le raccourci comme l'une des touches de média suivantes :</p> + +<ul> + <li><code>"MediaNextTrack"</code></li> + <li><code>"MediaPlayPause"</code></li> + <li><code>"MediaPrevTrack"</code></li> + <li><code>"MediaStop"</code></li> +</ul> + +<h2 id="Mise_à_jour_des_raccourcis">Mise à jour des raccourcis</h2> + +<p>Les raccourcis peuvent être mis à jour via {{WebExtAPIRef("commands.update()")}}. Les utilisateurs peuvent également mettre à jour les raccourcis via l'option "Gérer les raccourcis d'extension" sur <code>about:addons</code> dans Firefox, comme montré dans <a href="https://bug1303384.bmoattachments.org/attachment.cgi?id=9051647">cette video</a>. Dans Chrome, les utilisateurs peuvent modifier les raccourcis sur <code>chrome://extensions/shortcuts</code>.</p> + +<h2 id="Exemple">Exemple</h2> + +<p>Définissez un seul raccourci clavier en utilisant uniquement la combinaison de touches par défaut :</p> + +<pre class="brush: json no-line-numbers">"commands": { + "toggle-feature": { + "suggested_key": { + "default": "Ctrl+Shift+Y" + }, + "description": "Send a 'toggle-feature' event" + } +}</pre> + +<p>Définissez deux raccourcis clavier, l'un avec une combinaison de touches spécifique à la plate-forme :</p> + +<pre class="brush: json no-line-numbers">"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" + } + } +}</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.commands")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/content_scripts/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/content_scripts/index.html new file mode 100644 index 0000000000..8bad37fb58 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/content_scripts/index.html @@ -0,0 +1,235 @@ +--- +title: content_scripts +slug: Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row">Type</th> + <td>{{ jsxref("array", "Tableau") }}</td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json"> +"content_scripts": [ + { + "matches": ["*://*.mozilla.org/*"], + "js": ["borderify.js"] + } +]</pre> + </td> + </tr> + </tbody> +</table> + +<p>Ordonne au navigateur de charger des <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">scripts de contenu</a> dans les pages web dont l’URL correspond à un modèle donné.</p> + +<p>Cette clé est un tableau. Chaque élément est un objet qui :</p> + +<ul> + <li><strong>doit</strong> contenir une clé nommée <strong><code>matches</code></strong>, qui spécifie les modèles d’URL à reconnaître afin que les scripts soient chargés ;</li> + <li><strong>peut</strong> contenir des clés nommées <strong><code>js</code></strong> et <strong><code>css</code></strong>, qui listent les scripts à charger dans les pages correspondantes ;</li> + <li><strong>peut</strong> contenir un certain nombre d’autres propriétés qui contrôlent des aspects plus fins correspondant à quand et comment les scripts de contenu sont chargés.</li> +</ul> + +<p>Le tableau ci-dessous présente le détail de toutes les clés que vous pouvez inclure.</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><a id="all_frames" name="all_frames"><code>all_frames</code></a></td> + <td>{{ jsxref("boolean", "Booléen") }}</td> + <td> + <p><code>true</code> : injecte les scripts spécifiés dans {{ anch("js") }} et {{ anch("css") }} dans tous les cadres correspondant aux exigences d’URL spécifiées, même s’il n’est pas le cadre le plus haut d’un onglet. Cela n’injecte pas dans les cadres enfants quand seul leur parent correspond aux exigences d’URL et pas les cadres enfants. Les exigences d’URL sont vérifiées pour chaque cadre indépendamment.</p> + + <p><code>false</code> : injecte seulement dans le cadre le plus haut de l’onglet qui répond aux exigences d’URL.</p> + + <p>Par défaut à <code>false</code>.</p> + </td> + </tr> + <tr> + <td><a id="css" name="css"><code>css</code></a></td> + <td>{{ jsxref("array", "Tableau") }}</td> + <td> + <p>Un tableau de chemins, relatifs à <em>manifest.json</em>, référençant les fichiers CSS qui seront injectés dans les pages correspondantes.</p> + + <p>Les fichiers sont injectés dans l’ordre donné, et avant que le DOM ne soit chargé.</p> + + <div class="blockIndicator note"> + <p>Firefox résout les URLs dans les fichiers CSS injectés par rapport au fichier CSS lui-même, plutôt que par rapport à la page dans laquelle il est injecté.</p> + </div> + </td> + </tr> + <tr> + <td><a id="exclude_globs" name="exclude_globs"><code>exclude_globs</code></a></td> + <td>{{ jsxref("array", "Tableau") }}</td> + <td> + <p>Un tableau de chaînes contenant des caractères génériques. Voir les {{ anch("Les_modèles_de_correspondance_d’URL", "modèles de correpondance d’URL") }} ci-dessous.</p> + </td> + </tr> + <tr> + <td><a id="exclude_matches" name="exclude_matches"><code>exclude_matches</code></a></td> + <td>{{ jsxref("array", "Tableau") }}</td> + <td> + <p>Un tableau de <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">modèles de correspondance</a>. Voir les {{ anch("Les_modèles_de_correspondance_d’URL", "modèles de correpondance d’URL") }} ci-dessous.</p> + </td> + </tr> + <tr> + <td><a id="include_globs" name="include_globs"><code>include_globs</code></a></td> + <td>{{ jsxref("array", "Tableau") }}</td> + <td>Un tableau de chaînes contenant des caractères génériques. Voir les {{ anch("Les_modèles_de_correspondance_d’URL", "modèles de correpondance d’URL") }} ci-dessous.</td> + </tr> + <tr> + <td><a id="js" name="js"><code>js</code></a></td> + <td>{{ jsxref("array", "Tableau") }}</td> + <td> + <p>Un tableau de chemins, relatifs au fichier <em>manifest.json</em>, référençant les fichiers JavaScript qui seront injectés dans les pages correspondantes.</p> + + <p>Les fichiers sont injectés dans l’ordre indiqué. Cela signifie que, par exemple, si vous incluez ici jQuery suivi d’un autre script de contenu, comme ceci :</p> + + <pre class="brush: json"> +<code>"js": ["jquery.js", "my-content-script.js"]</code></pre> + + <p>alors <em>my-content-script.js</em> peut utiliser jQuery.</p> + + <p>Les fichiers sont injectés au moment spécifié par {{ anch("run_at") }}.</p> + </td> + </tr> + <tr> + <td><code><a id="match_about_blank" name="match_about_blank">match_about_blank</a></code></td> + <td>{{ jsxref("boolean", "Booléen") }}</td> + <td> + <p>Insère les scripts de contenu dans les pages dont l’URL est <code>about:blank</code> ou <code>about:srcdoc</code>, si l’URL de la page qui a ouvert ou créé cette page {{ anch("Les_modèles_de_correspondance_d’URL", "correspond aux modèles") }} spécifiés dans le reste de la clé <code>content_scripts</code>.</p> + + <p>Ceci est particulièrement utile pour exécuter des scripts dans des {{ htmlelement("iframe", "iframes") }} vides, dont l’URL est <code>about:blank</code>. Pour ce faire, vous devez également définir la clé <code>all_frames</code>.</p> + + <p>Par exemple, supposons que vous disposiez d’une clé de <code>content_scripts</code> comme ceci :</p> + + <pre class="brush: json"> +"content_scripts": [ + { + "js": ["my-script.js"], + "matches": ["https://example.org/"], + "match_about_blank": true, + "all_frames": true + } +]</pre> + + <p>Si l’utilisateur ou l’utilisatrice charge <code>https://example.org/</code>, et si cette page intègre une iframe vide, alors <em>my-script.js</em> sera chargé dans l’iframe.</p> + + <p><code>match_about_blank</code> est supporté dans Firefox à partir de la version 52. Notez que dans Firefox, les scripts de contenu ne seront pas injectés dans les iframes vides à <code>"document_start"</code> même si vous spécifiez cette valeur dans {{ anch("run_at") }}.</p> + </td> + </tr> + <tr> + <td><a id="matches" name="matches"><code>matches</code></a></td> + <td>{{ jsxref("array", "Tableau") }}</td> + <td> + <p>Un ensemble de <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">modèles de correspondance</a>. Voir les {{ anch("Les_modèles_de_correspondance_d’URL", "modèles de correpondance d’URL") }} ci-dessous.</p> + + <p>C’est la seule clé obligatoire.</p> + </td> + </tr> + <tr> + <td><a id="run_at" name="run_at"><code>run_at</code></a></td> + <td>{{ jsxref("string", "Chaîne") }}</td> + <td> + <p>Cette option détermine quand les scripts spécifiés dans {{ anch("js") }} sont injectés. Vous pouvez fournir une chaîne parmi trois ici, chacune identifiant un état dans le processus de chargement d’un document. Les états correspondent directement à {{domxref("Document/readyState", "Document.readyState")}} :</p> + + <ul> + <li><code>"document_start"</code> : correspond à <code>"loading"</code>. Le DOM est toujours en cours de chargement.</li> + <li><code>"document_end"</code> : correspond à <code>"interactive"</code>. Le DOM a fini de charger, mais des ressources telles que des scripts et des images peuvent toujours être en cours de chargement.</li> + <li><code>"document_idle"</code> : correspond à <code>"complete"</code>. Le document et toutes ses ressources ont terminé de charger.</li> + </ul> + + <p>La valeur par défaut est <code>"document_idle"</code>.</p> + + <p>Dans tous les cas, les fichiers dans {{ anch("js") }} sont injectés après les fichiers dans {{ anch("css") }}.</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="Les_modèles_de_correspondance_d’URL">Les modèles de correspondance d’URL</h2> + +<p>La clé <code>content_scripts</code> associe les scripts de contenu aux documents en fonction de la correspondance des URL : si l’URL du document correspond à la spécification de la clé, le script sera joint. Il existe quatre propriétés dans <code>content_scripts</code> que vous pouvez utiliser pour cette spécification :</p> + +<ul> + <li><code>matches</code> : un tableau de <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">match patterns</a> (modèles).</li> + <li><code>exclude_matches</code> : un tableau de <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">match patterns</a>.</li> + <li><code>include_globs</code> : un tableau de {{ anch("globs") }} (caractères génériques).</li> + <li><code>exclude_globs</code> : un tableau de {{ anch("globs") }}.</li> +</ul> + +<p>Pour associer une de ces propriétés, une URL doit correspondre à au moins un des éléments de son tableau. Par exemple, donner une propriété comme :</p> + +<pre class="brush: json">"matches": ["*://*.example.org/*", "*://*.example.com/*"]</pre> + +<p>Les deux adresses <code>http://example.org/</code> et <code>http://example.com/</code> correspondront.</p> + +<p>Étant donné que <code>matches</code> est la seule clé obligatoire, les trois autres clés sont utilisées pour limiter davantage les URL qui correspondent. Pour associer la clé dans son ensemble, une URL doit :</p> + +<ol> + <li>Correspondre à la propriété <code>matches</code> ;</li> + <li>ET associer à la propriété <code>include_globs</code>, si présent ;</li> + <li>ET NE PAS correspondre à la propriété <code>exclude_matches</code>, si présent ;</li> + <li>ET NE PAS correspondre à la propriété <code>exclude_globs</code>, si présent.</li> +</ol> + +<h3 id="globs">globs</h3> + +<p>Un « glob » est juste une chaîne qui peut contenir des caractères génériques. Il existe deux types de caractères génériques, et vous pouvez les combiner dans le même glob :</p> + +<ul> + <li><code>"*"</code> correspond à zéro ou plus de caractères</li> + <li><code>"?"</code> correspond exactement à un caractère.</li> +</ul> + +<p>Par exemple : <code>"*na?i"</code> correspond à <code>"illuminati"</code> et à <code>"annunaki"</code>, mais pas à <code>"sagnarelli"</code>.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json">"content_scripts": [ + { + "matches": ["*://*.mozilla.org/*"], + "js": ["borderify.js"] + } +]</pre> + +<p>Cela injecte un seul script de contenu <em>borderify.js</em> dans toutes les pages sous <code>mozilla.org</code> ou l’un de ses sous-domaines, qu’ils soient fournis via HTTP ou HTTPS.</p> + +<pre class="brush: json">"content_scripts": [ + { + "exclude_matches": ["*://developer.mozilla.org/*"], + "matches": ["*://*.mozilla.org/*"], + "js": ["jquery.js", "borderify.js"] + } +]</pre> + +<p>Cela implique deux scripts de contenu dans toutes les pages sous <code>mozilla.org</code> ou l’un de ses sous-domaines, à l’exception de <code>developer.mozilla.org</code>, qu’il s’agisse de HTTP ou HTTPS.</p> + +<p>Les scripts de contenu ont la même vue du DOM et sont injectés dans l’ordre où ils apparaissent dans le tableau, de sorte que <em>borderify.js</em> peut voir les variables globales ajoutées par <em>jquery.js</em>.</p> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p class="hidden">La table de compatibilité dans cette page est générée à partir de données structurées. Si vous souhaitez contribuer aux données, veuillez consulter <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> et nous envoyer une <em lang="en-US">pull request.</em></p> + +<div>{{Compat("webextensions.manifest.content_scripts")}}</div> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.html new file mode 100644 index 0000000000..fd1c0d131b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/content_security_policy/index.html @@ -0,0 +1,117 @@ +--- +title: content_security_policy +slug: Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>String</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"content_security_policy": "default-src 'self'"</pre> + </td> + </tr> + </tbody> +</table> + +<p>Les extensions ont une politique de sécurité de contenu qui leur est appliquée par défaut. La stratégie par défaut restreint les sources à partir desquelles elles peuvent charger les ressources <a href="/fr/docs/HTML/Element/script"><script></a> et <a href="/docs/Web/HTML/Element/object"><object></a>, et interdit les pratiques potentiellement dangereuses telles que l’utilisation d’<code><a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/eval">eval()</a></code>. Voir la <a href="/fr/Add-ons/WebExtensions/Content_Security_Policy#Default_content_security_policy">politique de sécurité de contenu par défaut</a> pour en savoir plus sur ces implications.</p> + +<p>Vous pouvez utiliser la clé <code>"content_security_policy"</code> pour desserrer ou resserrer la politique par défaut. Cette clé est spécifiée de la même manière que l’en-tête HTTP Content-Security-Policy. Voir l’<a href="/fr/docs/HTTP/CSP">utilisation de la politique de sécurité de contenu</a> pour une description générale de la syntaxe de CSP.</p> + +<p>Par exemple, vous pouvez utiliser cette clé pour :</p> + +<ul> + <li>permettre à l’extension de charger des scripts et des objets hors de son paquet, en fournissant leurs URL dans les directives {{CSP("script-src")}} or {{CSP("object-src")}} ;</li> + <li>permettre à l’extension d’exécuter des scripts en ligne, en <a href="/fr/docs/HTTP/Headers/Content-Security-Policy/script-src#Unsafe_inline_script">fournissant le hash du script dans la directive <code>"script-src"</code></a> ;</li> + <li>permettre à l’extension d’utiliser <code>eval()</code> et des fonctionnalités similaires, en incluant <code>'unsafe-eval'</code> dans la directive {{CSP("script-src")}} ;</li> + <li>limiter les sources autorisées pour d’autres types de contenu, tels que les images et les feuilles de style, en utilisant la <a href="https://publicsuffix.org/list/" lang="en">directive de politique</a> appropriée.</li> +</ul> + +<p>Il existe des restrictions sur la politique que vous pouvez spécifier ici :</p> + +<ul> + <li>La politique doit inclure au moins les directives {{CSP("script-src")}} et les {{CSP("object-src")}}, et la directive {{CSP("script-src")}} doit contenir le mot-clé <code>'self'</code>.</li> + <li>Les sources distantes doivent utiliser le schéma <code>https:</code>.</li> + <li>Les sources distantes ne doivent pas utiliser de caractères génériques pour les domaines dans la <a href="https://publicsuffix.org/list/">liste des suffixes publics</a> (ainsi, « *.co.uk » et « *.blogspot.com » ne sont pas autorisés, même si « *.foo.blogspot.com » est autorisé).</li> + <li>Toutes les sources doivent spécifier un hôte.</li> + <li>Les seuls schémas autorisés pour les sources sont : <code>blob:</code>, <code>filesystem:</code>, <code>moz-extension:</code>, et <code>https:</code>.</li> + <li>Les seuls <a href="/fr/docs/HTTP/Headers/Content-Security-Policy/default-src#Sources">mots-clés</a> autorisés sont : <code>'none'</code>, <code>'self'</code>, et <code>'unsafe-eval'</code>.</li> +</ul> + +<h2 id="Exemple">Exemple</h2> + +<h3 id="Examples_valides">Examples valides</h3> + +<p>Autoriser les scripts distants de "https://example.com" : <sup>(<em>voir note</em> <a href="https://developer.mozilla.org/fr/Add-ons/WebExtensions/manifest.json/content_security_policy$edit#exampleNote_1">1</a>)</sup></p> + +<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' https://example.com; object-src 'self'"</pre> + +<p>Autoriser les scripts distants depuis n’importe quel sous-domaine de « jquery.com » :</p> + +<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' https://*.jquery.com; object-src 'self'"</pre> + +<p>Autoriser <a href="/fr/Add-ons/WebExtensions/Content_Security_Policy#eval()_et_amis"><code>eval()</code> et ses amis </a>:</p> + +<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"</pre> + +<p>Autoriser le script en ligne : <code>"<script>alert('Hello, world.');</script>"</code> :</p> + +<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' 'sha256-qznLcsROx4GACP2dm0UCKCzCG+HiZ1guq6ZZDob/Tng='; object-src 'self'"</pre> + +<p>Conserver le reste de la politique, mais exiger également que les images soient empaquetées avec l’extension :</p> + +<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self'; object-src 'self'; img-src 'self'"</pre> + +<p>Exiger que tous les types de contenu soient empaquetés avec l’extension :</p> + +<pre class="brush: json no-line-numbers">"content_security_policy": "default-src 'self'" +</pre> + +<h3 id="Exemples_non_valides">Exemples non valides</h3> + +<p>Politique qui omet la directive <code>"object-src"</code> :</p> + +<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' https://*.jquery.com;"</pre> + +<p>Politique qui omet le mot-clé <code>"self"</code> dans la directive <code>"script-src"</code> :</p> + +<pre class="brush: json no-line-numbers">"content_security_policy": "script-src https://*.jquery.com; object-src 'self'"</pre> + +<p>Le schéma pour une source distante n’est pas <code>https:</code> :</p> + +<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' http://code.jquery.com; object-src 'self'"</pre> + +<p>Le caractère générique est utilisé avec un domaine générique :</p> + +<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' https://*.blogspot.com; object-src 'self'"</pre> + +<p>La source spécifie un schéma mais aucun hôte :</p> + +<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' https:; object-src 'self'"</pre> + +<p>La directive inclut le mot-clé non pris en charge <code>'unsafe-inline'</code> :</p> + +<pre class="brush: json no-line-numbers">"content_security_policy": "script-src 'self' 'unsafe-inline'; object-src 'self'"</pre> + +<p><span id="exampleNote_1">1. <em>Note : l</em></span><em>es exemples valides montrent l’utilisation correcte des clés dans CSP.<span> </span>Toutefois, les extensions avec </em><span><em><code>'unsafe-eval'</code>, <code>'unsafe-inline'</code>, des blobs, des scripts ou des sources distantes dans leur CSP ne sont pas autorisées à être répertoriées sur addons.mozilla.org en raison de problèmes de sécurité majeurs.</em></span></p> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you’d like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.content_security_policy")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/default_locale/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/default_locale/index.html new file mode 100644 index 0000000000..a22132ac17 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/default_locale/index.html @@ -0,0 +1,46 @@ +--- +title: default_locale +slug: Mozilla/Add-ons/WebExtensions/manifest.json/default_locale +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/default_locale +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><font face="Consolas">chaîne</font></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td> + <p>Il doit être présent si le sous-répertoire _locales est présent, sinon il doit être absent.</p> + </td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"default_locale": "fr"</pre> + </td> + </tr> + </tbody> +</table> + +<p><span id="result_box" lang="fr"><span>Cette clé doit être présente si l'extension contient le répertoire</span></span> _locales, <span id="result_box" lang="fr"><span>et doit être absente sinon</span></span>. <span id="result_box" lang="fr"><span>Il identifie un sous-répertoire de</span></span> _locales, e<span id="result_box" lang="fr"><span>t ce sous-répertoire sera utilisé pour trouver les chaînes par défaut pour votre extension.</span></span></p> + +<p>Voir <a href="/fr/Add-ons/WebExtensions/Internationalization">Internationalisation</a>.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"default_locale": "fr"</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.default_locale")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/description/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/description/index.html new file mode 100644 index 0000000000..a229e7a2c5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/description/index.html @@ -0,0 +1,44 @@ +--- +title: description +slug: Mozilla/Add-ons/WebExtensions/manifest.json/description +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/description +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><font face="Consolas">chaîne</font></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"description": "Remplace des images par des portraits de chats."</pre> + </td> + </tr> + </tbody> +</table> + +<p>Une brève description de l'extension, destinée à être affichée dans l'interface utilisateur du navigateur.</p> + +<p>Ceci est une <a href="/fr/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">propriété localisable</a>.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"description": "Remplace des images par des portraits de chats."</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.description")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/developer/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/developer/index.html new file mode 100644 index 0000000000..aa9b4d4cf7 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/developer/index.html @@ -0,0 +1,52 @@ +--- +title: developer +slug: Mozilla/Add-ons/WebExtensions/manifest.json/developer +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/developer +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Objet</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"developer": { + "name": "Walt Whitman", + "url": "https://en.wikipedia.org/wiki/Walt_Whitman" +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>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.</p> + +<p>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 <a href="/fr/Add-ons/WebExtensions/manifest.json/author">author</a> et <a href="/fr/Add-ons/WebExtensions/manifest.json/homepage_url">homepage_url</a>. Cet objet ne permet qu'un seul nom de développeur et une URL à spécifier.</p> + +<p>Ceci est une <a href="/fr/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">propriété localisable</a>.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"developer": { + "name": "Walt Whitman", + "url": "https://en.wikipedia.org/wiki/Walt_Whitman" +}</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.developer")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/devtools_page/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/devtools_page/index.html new file mode 100644 index 0000000000..ad9e89c36f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/devtools_page/index.html @@ -0,0 +1,50 @@ +--- +title: devtools_page +slug: Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page +tags: + - Add-ons + - DevTools + - Extensions + - Manifest + - Reference + - WebExtensions + - devtools_page +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><font face="Consolas">chaîne</font></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"devtools_page": "devtools/my-page.html"</pre> + </td> + </tr> + </tbody> +</table> + +<p>Utilisez cette clé pour activer votre extension et intégrer les outils de développement du navigateur.</p> + +<p>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.</p> + +<p>Voir <a href="/fr/Add-ons/WebExtensions/Extending_the_developer_tools">Extension des outils développeurs</a> pour plus d'informations.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"devtools_page": "devtools/my-page.html"</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.devtools_page")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/dictionaries/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/dictionaries/index.html new file mode 100644 index 0000000000..b5847938a6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/dictionaries/index.html @@ -0,0 +1,47 @@ +--- +title: dictionaries +slug: Mozilla/Add-ons/WebExtensions/manifest.json/dictionaries +tags: + - Add-ons + - Extensions + - WebExtensions + - manifest.json +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/dictionaries +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Object</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"dictionaries": { + "en-US": "dictionaries/en-US.dic" +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>Les clés des <code>dictionaries</code> specifie le <code>locale_code</code> pour lequel votre extension fournit un dictionnaire. Bien que le dictionnaire se compose de deux fichiers, l'un avec une extension <code>.dic</code> et l'autre avec une extension <code>.aff</code>, seul celui avec l'extension <code>.dic</code> est référencé dans le fichier manifest.json.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"dictionaries": { + "en-US": "dictionaries/en-US.dic" +}</pre> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.dictionaries")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/externally_connectable/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/externally_connectable/index.html new file mode 100644 index 0000000000..bc2f106f90 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/externally_connectable/index.html @@ -0,0 +1,69 @@ +--- +title: externally_connectable +slug: Mozilla/Add-ons/WebExtensions/manifest.json/externally_connectable +tags: + - Add-ons + - WebExtensions + - manifest.json +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/externally_connectable +--- +<p>{{AddonSidebar}}{{SeeCompatTable}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row">Type</th> + <td><code>Object</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre> +"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/*" + ] +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>Une connexion externe permet au développeur d’extensions de contrôler quelles autres extensions et pages Web peuvent communiquer avec cette extension via {{WebExtAPIRef("runtime.connect","runtime.connect()")}} et {{WebExtAPIRef("runtime.sendMessage", "runtime.sendMessage()")}} passage de message. Si <code>externally_connectable</code> n'est pas spécifié, toutes les extensions peuvent communiquer entre elles, mais pas avec les pages Web.</p> + +<h3 id="attribut_ids">attribut "ids"</h3> + +<p><code>ids</code> active la communication entre cette extension et les autres extensions installées spécifiées par les identificateurs d'extension. Utilisez le motif <code>"*"</code> si vous souhaitez communiquer avec toutes les extensions. </p> + +<h3 id="attribut_matches">attribut "matches"</h3> + +<p>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.</p> + +<div class="blockIndicator note"> +<p><strong>Note: </strong>Si <code>browser_action</code> n'est pas spécifié, la communication entre les extensions est toujours autorisée, comme si <code>browser_action</code> était <code>{"ids": ["*"] }</code>, par conséquent, si vous spécifiez <code>browser_action.matches</code> n'oubliez pas d'ajouter des identifiants si vous souhaitez toujours communiquer. avec d'autres extensions.</p> +</div> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<div class="hidden"> +<p>The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> +</div> + +<p>{{Compat("webextensions.manifest.externally_connectable")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html new file mode 100644 index 0000000000..2ff68077df --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/homepage_url/index.html @@ -0,0 +1,46 @@ +--- +title: homepage_url +slug: Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><font face="Consolas">chaîne</font></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"homepage_url": "https://example.org/my-addon"</pre> + </td> + </tr> + </tbody> +</table> + +<p>URL pour la page d'accueil de l'extension.</p> + +<p>Si la clé <a href="https://developer.mozilla.org/fr/Add-ons/WebExtensions/manifest.json/developer">dévelopeur</a> est fournie et qu'elle contient la propriété "url", cela remplacera la clé "homepage_url".</p> + +<p>c'est une <a href="/fr/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">proriété localisable</a>.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/beastify"</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.homepage_url")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/icons/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/icons/index.html new file mode 100644 index 0000000000..6fa09fab94 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/icons/index.html @@ -0,0 +1,78 @@ +--- +title: icons +slug: Mozilla/Add-ons/WebExtensions/manifest.json/icons +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/icons +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Objet</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"icons": { + "48": "icon.png", + "96": "icon@2x.png" +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>La clé <font face="Consolas">icons</font> 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.</p> + +<p>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.</p> + +<p>Si la clé <font face="Consolas">icons</font> n'est pas fournie, une icône d'extension standard sera utilisée par défaut.</p> + +<p>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.</p> + +<p>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.</p> + +<h2 id="Exemple">Exemple</h2> + +<p>Les clés dans l'objet <font face="Consolas">icons</font> 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.</p> + +<pre class="brush: json no-line-numbers">"icons": { + "48": "icon.png", + "96": "icon@2x.png" +}</pre> + +<h2 id="SVG">SVG</h2> + +<p>Vous pouvez utiliser SVG et le navigateur mettra à l'échelle appropriée votre icône. Il existe actuellement deux réserves :</p> + +<ol> + <li>Vous devez spécifier un "viewBox" dans l'image. Par exemple : + <pre class="brush: html"><code><svg viewBox="0 0 48 48" width="48" height="48" ...</code></pre> + </li> + <li>Même si vous pouvez utiliser un fichier, vous devez toujours spécifier différentes tailles de l'icône dans votre<code> manifest. </code>Par exemple : + <pre class="brush: json no-line-numbers">"icons": { + "48": "icon.svg", + "96": "icon.svg" +}</pre> + </li> +</ol> + +<div class="note"> +<p><strong>Note</strong> : 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.</p> +</div> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.icons")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/incognito/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/incognito/index.html new file mode 100644 index 0000000000..c03d7cad8b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/incognito/index.html @@ -0,0 +1,70 @@ +--- +title: incognito +slug: Mozilla/Add-ons/WebExtensions/manifest.json/incognito +tags: + - Add-ons + - WebExtensions + - incognito + - manifest.json +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/incognito +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><font face="Consolas">chaîne</font></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"incognito": "spanning"</pre> + + <pre class="brush: json no-line-numbers"> +"incognito": "split"</pre> + + <pre class="brush: json no-line-numbers"> +"incognito": "not_allowed"</pre> + </td> + </tr> + </tbody> +</table> + +<p>Utilisez la clé <code>incognito</code> pour contrôler la façon dont l'extension fonctionne avec les fenêtres de navigation privées.</p> + +<p>Il s'agit d'une chaîne qui peut prendre l'une des valeurs suivantes:</p> + +<ul> + <li> + <p>"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é <code>incognito</code> dans la <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/windows/Window">fenêtre</a></code> ou l'<code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/Tab">onglet </a></code>qui les représente. Cette propriété indique si l'objet est ou non privé :</p> + + <pre class="brush: js">browser.windows.getLastFocused().then((windowInfo) => { + console.log(`Window is private: ${windowInfo.incognito}`); +});</pre> + </li> + <li>"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, <code><a href="/en-US/docs/Web/API/Storage/LocalStorage">localStorage</a></code> n'est pas partagé). Toutefois, l'API des WebExtension <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage/local">storage.local</a></code> est partagé. (<strong>Note:</strong> ce paramètre n'est pas supporté par Firefox.)</li> + <li>"not_allowed" : les onglets privés et les fenêtres sont invisibles pour l'extension.</li> +</ul> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"incognito": "spanning" +</pre> + +<pre class="brush: json no-line-numbers">"incognito": "split" +</pre> + +<pre class="brush: json no-line-numbers">"incognito": "not_allowed" +</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.incognito")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/index.html new file mode 100644 index 0000000000..51e44acdca --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/index.html @@ -0,0 +1,138 @@ +--- +title: manifest.json +slug: Mozilla/Add-ons/WebExtensions/manifest.json +tags: + - Add-ons + - Extensions + - Overview + - WebExtensions + - manifest.json +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json +--- +<p>{{AddonSidebar}}</p> + +<div class="blockIndicator note"> +<p>Cet article décrit manifest.json pour les extensions web. Si vous cherchez des informations sur le manifeste.json dans les PWAs, consultez l'article <a href="/fr/docs/Web/Manifest">Web App Manifest</a>.</p> +</div> + +<p>Le fichier <code>manifest.json</code> est le seul fichier que chaque extension utilisant les API WebExtension doit contenir.</p> + +<p>En utilisant <code>manifest.json</code>, vous spécifiez les métadonnées basiques de votre extension comme son nom et sa version, et des fonctionnalités de votre extension comme les scripts en arrière-plan (les scripts de contenu et les actions du navigateur).</p> + +<p>C'est un fichier au format <a href="/fr/docs/Glossaire/JSON">JSON</a> à une exception près : il peut contenir des commentaires de type "<code>//</code>".</p> + +<h2 id="List_of_manifest.json_keys">List of manifest.json keys</h2> + +<p>Les clés <code>manifest.json</code> sont listées ci-dessous:</p> + +<div class="index">{{ListSubpages("/en-US/Add-ons/WebExtensions/manifest.json")}}</div> + +<h3 class="index" id="Notes_about_manifest.json_keys">Notes about manifest.json keys</h3> + +<ul> + <li><code>"manifest_version"</code>, <code>"version"</code>, and <code>"name"</code> sont les seules clés obligatoires.</li> + <li><code>"default_locale"</code> doit être présent si le répertoire "<code>_locales</code>" est présent et sinon doit être absent.</li> + <li><code>"browser_specific_settings"</code> n'est pas prise en charge dans Google Chrome</li> +</ul> + +<h3 id="Accessing_manifest.json_keys_at_runtime">Accessing manifest.json keys at runtime</h3> + +<p>Vous pouvez accéder au manifest de votre extension depuis le JavaScript de l'extension en utilisant la fonction {{WebExtAPIRef("runtime.getManifest()")}} :</p> + +<pre class="brush: js; no-line-numbers">browser.runtime.getManifest().version;</pre> + +<h2 id="Exemple">Exemple</h2> + +<p>Le bloc ci-dessous contient la syntaxe de base de certaines clés communes du manifest</p> + +<div class="blockIndicator note"> +<p><strong>Note :</strong> Il ne s'agit pas d'un exemple à copier-coller. Le choix des clés dont vous aurez besoin dépend de l'extension que vous développez.</p> +</div> + +<p>Pour des exemples complets d'extensions, voir <a href="/fr/Add-ons/WebExtensions/Examples">Exemple d'extensions</a>.</p> + +<pre class="brush: json;">{ + "browser_specific_settings": { + "gecko": { + "id": "addon@example.com", + "strict_min_version": "42.0" + } + }, + + "background": { + "scripts": ["jquery.js", "my-background.js"], + }, + + "browser_action": { + "default_icon": { + "19": "button/geo-19.png", + "38": "button/geo-38.png" + }, + "default_title": "Whereami?", + "default_popup": "popup/geo.html" + }, + + "commands": { + "toggle-feature": { + "suggested_key": { + "default": "Ctrl+Shift+Y", + "linux": "Ctrl+Shift+U" + }, + "description": "Send a 'toggle-feature' event" + } + }, + + "content_security_policy": "script-src 'self' https://example.com; object-src 'self'", + + "content_scripts": [ + { + "exclude_matches": ["*://developer.mozilla.org/*"], + "matches": ["*://*.mozilla.org/*"], + "js": ["borderify.js"] + } + ], + + "default_locale": "en", + + "description": "...", + + "icons": { + "48": "icon.png", + "96": "icon@2x.png" + }, + + "manifest_version": 2, + + "name": "...", + + "page_action": { + "default_icon": { + "19": "button/geo-19.png", + "38": "button/geo-38.png" + }, + "default_title": "Whereami?", + "default_popup": "popup/geo.html" + }, + + "permissions": ["webNavigation"], + + "version": "0.1", + + "user_scripts": { + "api_script": "apiscript.js", + }, + + "web_accessible_resources": ["images/my-image.png"] +}</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p>Pour un aperçu complet de toutes les clés de manifeste et de leurs sous-clés, <a href="/fr/Add-ons/WebExtensions/Browser_compatibility_for_manifest.json">voir le tableau complet de compatibilité du navigateur manifest.json</a>.</p> + + + +<p>{{Compat("webextensions.manifest")}}</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<p>{{WebExtAPIRef("permissions")}} JavaScript API</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.html new file mode 100644 index 0000000000..a13f5331f4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/manifest_version/index.html @@ -0,0 +1,45 @@ +--- +title: manifest_version +slug: Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Numérique</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Oui</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"manifest_version": 2</pre> + </td> + </tr> + </tbody> +</table> + +<p>Cette clé spécifie la version de manifest.json utilisée par cette extension.</p> + +<p>Actuellement, cela doit toujours être 2.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"manifest_version": 2 +</pre> + +<h2 id="Comptabilité_des_navigateurs">Comptabilité des navigateurs</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.manifest_version")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/name/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/name/index.html new file mode 100644 index 0000000000..ad38b3615c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/name/index.html @@ -0,0 +1,46 @@ +--- +title: name +slug: Mozilla/Add-ons/WebExtensions/manifest.json/name +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/name +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><font face="Consolas">chaîne</font></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Oui</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"name": "Mon extension"</pre> + </td> + </tr> + </tbody> +</table> + +<p>Nom de l'extension. Ceci permet d'identifier l'extension dans l'interface utilisateur du navigateur et sur les sites comme addons.mozilla.org.</p> + +<p>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.</p> + +<p>C'est une <a href="/fr/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">propriété localisable</a>.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"name": "Mon extension"</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.name")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/offline_enabled/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/offline_enabled/index.html new file mode 100644 index 0000000000..01c454f220 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/offline_enabled/index.html @@ -0,0 +1,48 @@ +--- +title: offline_enabled +slug: Mozilla/Add-ons/WebExtensions/manifest.json/offline_enabled +tags: + - Add-ons + - Deprecated + - Extensions + - Non-standard + - Offline + - WebExtensions + - google chrome +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/offline_enabled +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>String</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"offline_enabled": true</pre> + </td> + </tr> + </tbody> +</table> + +<p>{{Non-standard_Header}}</p> + +<p>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.</p> + +<p>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 <code>"offline_enabled"</code> est <code>true</code> sauf si la permission <code>"webview"</code> est demandée.Dans ce cas, la connectivité réseau est supposée nécessaire et <code>"offline_enabled"</code> par défaut est <code>false</code>.</p> + +<p>La valeur <code>"offline_enabled"</code> est également utilisée pour déterminer si un contrôle de connectivité réseau sera effectué lors du lancement d'une application en <a href="https://developer.chrome.com/apps/manifest/kiosk_enabled">mode Chrome OS kiosk</a>. 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.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.manifest.offline_enabled")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/omnibox/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/omnibox/index.html new file mode 100644 index 0000000000..2a3c69f917 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/omnibox/index.html @@ -0,0 +1,52 @@ +--- +title: omnibox +slug: Mozilla/Add-ons/WebExtensions/manifest.json/omnibox +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/omnibox +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Objet</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"omnibox": { + "keyword": "mdn" +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>Utilisez la clé <code>omnibox</code> pour définir un mot-clé omnibox pour votre extension.</p> + +<p>Lorsque l'utilisateur tape ce mot-clé dans la barre d'adresse du navigateur, suivi d'un espace, les caractères suivants seront envoyés à l'extension à l'aide de l'API <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/omnibox">omnibox</a></code>. L'extension pourra ensuite remplir la liste de suggestions de la liste déroulante de la barre d'adresse avec ses propres suggestions.</p> + +<p>Si deux ou plusieurs extensions définissent le même mot-clé, l'extension qui a été installée la dernière permet de contrôler le mot-clé. Toute extension précédemment installée qui définit le même mot-clé ne pourra plus utiliser l'API omnibox.</p> + +<p> </p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"omnibox": { + "keyword": "mdn" +}</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.omnibox")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/optional_permissions/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/optional_permissions/index.html new file mode 100644 index 0000000000..68c8d1fcc6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/optional_permissions/index.html @@ -0,0 +1,106 @@ +--- +title: optional_permissions +slug: Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions +tags: + - Add-ons + - WebExtensions + - manifest.json + - optional_permissions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><font face="Consolas">Tableau</font></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> + +"optional_permissions": [ + "*://developer.mozilla.org/*", + "webRequest" +]</pre> + </td> + </tr> + </tbody> +</table> + +<p>Utilisez la clé <code>optional_permissions</code> pour lister les permissions que vous souhaitez demander pour l'exécution, une fois que votre extension a été installée.</p> + +<p>La clé de <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> énumère les permissions dont votre extension a besoin si elle doit être installée. En revanche , <code>optional_permissions</code> 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 {{webextapiref("permissions")}} . La demande de permission peut présenter probablement à l'utilisateur une boîte de dialogue lui demandant d'accorder la permission à votre extension.</p> + +<p>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 <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/demander_les_bonnes_permissions#Demander_les_permissions_à_éxécuter">Demander les permissions à éxécuter</a>.</p> + +<p>La clé peut contenir deux types d'autorisations: les permissions d'hôte et les permissions d'API</p> + +<h2 id="Permissions_dhôte">Permissions d'hôte</h2> + +<p>Ce sont les mêmes que les permissions d'hôte que vous pouvez spécifier dans la clé <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions</a></code>.</p> + +<h2 id="Permissions_dAPI">Permissions d'API</h2> + +<p>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 :</p> + +<div class="threecolumns"> +<ul> + <li><code>activeTab</code></li> + <li><code>background</code></li> + <li><code>bookmarks</code></li> + <li><code>browserSettings</code></li> + <li><code>clipboardRead</code></li> + <li><code>clipboardWrite</code></li> + <li><code>contentSettings</code></li> + <li><code>contextMenus</code></li> + <li><code>cookies</code></li> + <li><code>debugger</code></li> + <li><code>downloads</code></li> + <li><code>downloads.open</code></li> + <li><code>find</code></li> + <li><code>geolocation</code></li> + <li><code>history</code></li> + <li><code>idle</code></li> + <li><code>management</code></li> + <li><code>notifications</code></li> + <li><code>pageCapture</code></li> + <li><code>privacy</code></li> + <li><code>tabHide</code></li> + <li><code>tabs</code></li> + <li><code>topSites</code></li> + <li><code>webNavigation</code></li> + <li><code>webRequest</code></li> + <li><code>webRequestBlocking</code></li> +</ul> +</div> + +<p>Notez qu'il s'agit d'un sous-ensemble des permissions API permises dans les <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">permissions</a></code>.</p> + +<p>Dans cet ensemble, les permissions suivantes sont accordées en silence, sans invite de l'utilisateur :<span class="blob-code-inner"><span class="pl-s"> <code>activeTab</code>, <code>cookies</code>, <code>idle</code>, <code>webRequest</code>, <code>webRequestBlocking</code><span class="pl-pds">.</span></span></span></p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers"> "optional_permissions": ["*://developer.mozilla.org/*"]</pre> + +<p>Activez l'extension pour demander un accès privilégié aux pages sous developer.mozilla.org.</p> + +<pre class="brush: json no-line-numbers"> "optional_permissions": ["tabs"]</pre> + +<p>Activez l'extension pour demander l'accès aux éléments privilégiés de l'API des onglets.</p> + +<pre class="brush: json no-line-numbers"> "optional_permissions": ["*://developer.mozilla.org/*", "tabs"]</pre> + +<p>Activez l'extension pour demander les deux permissions ci-dessus.</p> + +<h2 id="Comptabilité_du_navigateur">Comptabilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.optional_permissions")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/options_page/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/options_page/index.html new file mode 100644 index 0000000000..75f6ad9730 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/options_page/index.html @@ -0,0 +1,62 @@ +--- +title: options_page +slug: Mozilla/Add-ons/WebExtensions/manifest.json/options_page +tags: + - Add-ons + - Deprecated + - Extensions + - Manifest + - Options + - WebExtensions + - options_page +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/options_page +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>String</code></td> + </tr> + <tr> + <th scope="row">Mandatory</th> + <td>No</td> + </tr> + <tr> + <th scope="row">Example</th> + <td> + <pre class="brush: json; no-line-numbers"> +"options_page": "options/options.html"</pre> + </td> + </tr> + </tbody> +</table> + +<div>{{Deprecated_Header}} +<div class="blockIndicator warning">Cette clé du manifest a été dépréciée. Utilisez <code><a href="/fr/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code>à la place.</div> +</div> + +<p>Utilisez la clé d'<code>options_page</code> pour définir une <a href="/fr/Add-ons/WebExtensions/Options_pages">page d'options</a> pour votre extension.</p> + +<p>La page des options contient les paramètres de l'extension. L'utilisateur peut y accéder depuis le gestionnaire d'add-ons du navigateur, et vous pouvez l'ouvrir depuis votre extension en utilisant {{WebExtAPIRef("runtime.openOptionsPage()")}}.</p> + +<p>Contrairement aux pages d'options spécifiées à l'aide de la nouvelle clé <code>options_ui</code>, les pages d'options spécifiées à l'aide de la clé <code>options_page</code> obsolète ne reçoivent pas les styles de navigateur et s'ouvrent toujours dans un onglet normal du navigateur.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json; no-line-numbers">"options_page": "options/options.html" +</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.manifest.options_page")}}</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><code><a href="/fr/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code></li> + <li><a href="/fr/Add-ons/WebExtensions/user_interface/Options_pages">Options pages</a></li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/options_ui/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/options_ui/index.html new file mode 100644 index 0000000000..6fbcc56888 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/options_ui/index.html @@ -0,0 +1,118 @@ +--- +title: options_ui +slug: Mozilla/Add-ons/WebExtensions/manifest.json/options_ui +tags: + - Add-ons + - Extensions + - Manifest + - Options + - WebExtensions + - options_ui +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/options_ui +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table" style="height: 166px; width: 852px;"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Objet</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json; no-line-numbers"> +"options_ui": { + "page": "options/options.html" +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>Utilisez la clé <code>options_ui</code> pour définir une <a href="/fr/Add-ons/WebExtensions/Options_pages">page d'options</a> pour votre extension.</p> + +<p>La page d'options contient des paramètres pour l'extension. L'utilisateur peut y accéder à partir du gestionnaire des extensions du navigateur, et vous pouvez l'ouvrir à partir de votre extension à l'aide de {{WebExtAPIRef("runtime.openOptionsPage()")}}.</p> + +<p>Vous spécifiez <code>options_ui</code> comme un chemin vers un fichier HTML intégré à votre extension. Le fichier HTML peut inclure des fichiers CSS et JavaScript, tout comme une page Web normale. Contrairement à une page normale, le JavaScript peut utiliser toutes les <a href="/fr/Add-ons/WebExtensions/API">APIs WebExtension</a> pour lesquelles l'extension possède des <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permissions</a>. Cependant, il fonctionne dans un "scope" différent de celui de vos scripts d'arrière plan.</p> + +<p>Si vous souhaitez <strong>partager</strong> des données ou des fonctions, entre JavaScript sur votre <strong>page d'options</strong> et vos <strong>scripts d'arrière-plan</strong>, vous pouvez le faire directement en obtenant une référence à la <a href="/fr/docs/Web/API/Window">fenêtre</a> de vos scripts d'arrière-plan avec {{WebExtAPIRef("extension.getBackgroundPage()")}}, ou une référence à {{domxref("Window")}} de l'une des pages s'exécutant dans votre extension avec {{WebExtAPIRef("extension.getViews()")}}. Ou, vous pouvez faire communiquer le JavaScript de votre page d'options et vos scripts en arrière-plan à l'aide de {{WebExtAPIRef("runtime.sendMessage()")}}, {{WebExtAPIRef("runtime.onMessage")}}, ou {{WebExtAPIRef("runtime.connect()")}}.</p> + +<p>Ces derniers (ou les équivalents {{WebExtAPIRef("runtime.Port")}} peuvent également être utilisés pour partager des options entre vos <a href="/fr/Add-frs/WebExtensions/Background_scripts">scripts d'arrière-plan</a> et vos <strong><a href="/fr/Add-ons/WebExtensions/Content_scripts">scripts de contenu.</a></strong></p> + +<p>En général, vous souhaiterez stocker les options modifiées sur les pages d'options à l'aide de {{WebExtAPIRef("storage", "storage API", "", "true")}} soit dans {{WebExtAPIRef("storage.sync()")}} (si vous souhaitez que les paramètres soient synchronisés sur toutes les instances du navigateur auxquelles l'utilisateur est connecté), ou {{WebExtAPIRef("storage.local()")}} (si les paramètres sont locaux, dans la machine/le profil actuel). Si vous le faites et que votre (vos) <a href="/fr/Add-ons/WebExtensions/Background_scripts">scripts d'arrière plan</a> (ou <a href="/fr/docs/">script(s) de contenus</a>) doit connaître le changement, votre (vos) script(s) d'arrière plan pourra choisir d'ajouter un auditeur à {{WebExtAPIRef("storage.onChanged")}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<p>La clé <code>options_ui</code> est un objet avec le contenu suivant :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>browser_style</code><br> + {{optional_inline}}</td> + <td><code>Booléen</code></td> + <td> + <p>Facultatif, par défaut : <code>true</code> .</p> + + <p>Utilisez cette option pour inclure une feuille de style dans votre page qui la rendra compatible avec l'interface utilisateur du navigateur et avec d'autres extensions qui utilisent la propriété <code>browser_style</code> . Bien qu'il contienne par défaut <code>true</code> , il est recommandé d'inclure cette propriété.</p> + + <p>Dans Firefox, la feuille de style peut être vue sur <code>chrome://browser/content/extension.css</code>, ou <code>chrome://browser/content/extension-mac.css</code> sur macOS. Lorsque vous fixez les dimensions, sachez que cette feuille de style fixe actuellement <code>box-sizing: border-box</code> (voir <a href="https://developer.mozilla.org/docs/Web/CSS/box-sizing">box-sizing</a>).</p> + + <p>Le <a class="external external-icon" href="http://design.firefox.com/photon/">guide de style Firefox</a> décrit les classes que vous pouvez appliquer aux éléments de la fenêtre contextuelle afin d'obtenir des styles particuliers.</p> + </td> + </tr> + <tr> + <td><code>open_in_tab</code><br> + {{optional_inline}}</td> + <td><code>Booléen</code></td> + <td> + <p>par défaut : <code>false</code>.</p> + + <p>Si c'est <code>true</code> , la page options s'ouvrira dans un onglet normal du navigateur, plutôt que d'être intégrée au gestionnaire des extensions du navigateur.</p> + </td> + </tr> + <tr> + <td><code>page</code></td> + <td><code>Chaîne de caractères</code></td> + <td> + <p>Obligatoire</p> + + <p>Le chemin d'accès au fichier HTML contenant la spécification de votre page d'options.</p> + + <p>Le chemin est relatif à l'emplacement du <code>manifest.json</code> lui-même.</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json; no-line-numbers"> "options_ui": { + "page": "options/options.html" + }</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.manifest.options_ui")}}</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_page">options_page</a></code> {{deprecated_inline}}</li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles">Browser styles</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages">Options pages</a></li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/page_action/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/page_action/index.html new file mode 100644 index 0000000000..86360e2758 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/page_action/index.html @@ -0,0 +1,200 @@ +--- +title: page_action +slug: Mozilla/Add-ons/WebExtensions/manifest.json/page_action +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/page_action +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Objet</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"page_action": { + "browser_style": true, + "default_icon": { + "19": "button/geo-19.png", + "38": "button/geo-38.png" + }, + "default_title": "Whereami?", + "default_popup": "popup/geo.html" +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>Une action de page est une icône que votre extension ajoute dans la barre d'URL du navigateur.</p> + +<p>Votre extension peut éventuellement fournir une fenêtre contextuelle associée dont le contenu est spécifié en utilisant HTML, CSS et JavaScript.</p> + +<p>Si vous fournissez une fenêtre contextuelle, celle-ci est ouverte lorsque l'utilisateur clique sur l'icône, et l'exécution de votre JavaScript dans la fenêtre contextuelle peut gérer l'interaction de l'utilisateur avec elle. Si vous ne fournissez pas de fenêtre contextuelle, un clic événement est envoyé à votre extension aux <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_pages">scripts d'arrière plan</a> quand l'utilisateur clique sur l'icône.</p> + +<p>Vous pouvez également créer et activer des actions de page par programme en utilisant l'<a href="/fr/Add-ons/WebExtensions/API/pageAction">API pageAction</a>.</p> + +<p>Les actions de page sont comme les actions de navigateur, mais elles sont associées à des pages Web particulières et non au navigateur dans son ensemble. Si une action est seulement pertinente sur certaines pages, vous devez utiliser une action de page et l'afficher uniquement sur les pages pertinentes. Si une action est pertinente pour toutes les pages ou pour le navigateur lui-même, utilisez une action de navigateur.</p> + +<p>Alors que les actions du navigateur sont affichées par défaut, les actions de page sont cachées par défaut. Elles peuvent être affichées pour un onglet particulier en appelant <code><a href="/fr/Add-ons/WebExtensions/API/pageAction/show">pageAction.show()</a></code>, en passant dans l'ID de l'onglet. Vous pouvez également modifier ce comportement par défaut en utilisant la propriété <code>show_matches</code>.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<p>La clé <code>page_action</code> est un objet qui peut avoir l'une des trois propriétés, toutes optionnelles:</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>browser_style</code></td> + <td><code>Booléen</code></td> + <td> + <p>Facultatif, par defaut : <code>false</code>.</p> + + <p>Utilisez-le pour inclure une feuille de style dans votre popup qui le rendra cohérent avec l'interface utilisateur du navigateur et avec d'autres extensions qui utilisent la propriété <code>browser_style</code>. Bien que cette touche par défaut soit <code>false</code>, il est recommandé de l'inclure et de la mettre à <code>true</code> afin de rendre vos fenêtres contextuelles cohérentes avec l'apparence du reste de l'interface utilisateur du navigateur.</p> + + <p>Dans Firefox, la feuille de style peut être vue sur chrome://browser/content/extension.css, ou chrome://browser/content/extension-mac.css sur OS X.</p> + + <p>Le <a href="https://firefoxux.github.io/StyleGuide/#/controls">guide de style Firefox</a> décrit les classes que vous pouvez appliquer aux éléments de la fenêtre contextuelle afin d'obtenir des styles particuliers.</p> + + <p>L'extension exemple <a href="https://github.com/mdn/webextensions-examples/tree/master/latest-download">latest-download</a> utilise <code>browser_style</code> dans sa fenêtre contextuelle.</p> + </td> + </tr> + <tr> + <td><code>default_icon</code></td> + <td><code>Objet</code> ou <code>Chaîne de caractères</code></td> + <td> + <p>Utilisez cette option pour spécifier une icône pour l'action.</p> + + <p>Il est recommandé de fournir deux icônes ici, une 19x19 pixels et une 38x38 pixels, et de les spécifier dans un objet avec les noms de propriété "19" et "38", comme ceci:</p> + + <pre class="brush: json no-line-numbers"> + "default_icon": { + "19": "geo-19.png", + "38": "geo-38.png" + }</pre> + + <p>Si vous faites cela, le navigateur choisira l'icône de la bonne taille selon la densité des pixels de l'écran.</p> + + <p>Vous pouvez simplement fournir une chaîne ici :</p> + + <pre class="brush: json no-line-numbers"> +"default_icon": "geo.png"</pre> + + <p>Si vous faites cela, l'icône sera mise à l'échelle pour correspondre à la barre d'outils et peut sembler floue.</p> + </td> + </tr> + <tr> + <td><code>default_popup</code></td> + <td><code>Chaîne de caractères</code></td> + <td> + <p>Le chemin d'accès à un fichier HTML contenant la spécification de la fenêtre contextuelle.</p> + + <p>Le fichier HTML peut inclure des fichiers CSS et JavaScript utilisant des éléments <code><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link"><link></a></code> et <code><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script"><script></a></code>, tout comme une page Web normale. Cependant, n'utilisez pas <code><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script"><script></a></code> avec du code intégré, car vous obtiendrez une erreur de politique de violation de contenu. Au lieu de cela, <code><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script"><script></a></code> doit utiliser l'attribut <code><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script">src</a></code> pour charger un fichier script séparé.</p> + + <p>Contrairement à une page Web normale, JavaScript en cours d'exécution dans la fenêtre contextuelle peut accéder à toutes les <a href="/fr/Add-ons/WebExtensions/API">APIs WebExtension</a> (à condition, bien sûr, que l'extension ait les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permissions</a> appropriées).</p> + + <p>Ceci est une <a href="/fr/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">propriété localisable</a>.</p> + </td> + </tr> + <tr> + <td><code>default_title</code></td> + <td><code>Chaîne de caractères</code></td> + <td> + <p>Info-bulle pour l'icône, affichée lorsque l'utilisateur passe sa souris dessus.</p> + + <p>Ceci est une <a href="/fr/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">propriété localisable</a>.</p> + </td> + </tr> + <tr> + <td><code>hide_matches</code></td> + <td><code>Tableau de Match Pattern sauf </code> <code><all_urls></code></td> + <td> + <p>Masquer l'action de page par défaut pour les pages dont les URLs correspondent des <a href="/fr/Add-ons/WebExtensions/match_patterns">modèles de correspondance</a> données.</p> + + <p>Notez que les actions de page sont toujours cachées par défaut à moins que <code>show_matches</code> ne soit donné. Par conséquent, il est logique d'inclure cette propriété uniquement si <code>show_matches</code> est également donné, et dans ce casil remplacera les patterns dans <code>show_matches</code>. Par exemple, considérez une valeur comme :</p> + + <pre class="brush: json"> +"page_action": { + "show_matches": ["https://*.mozilla.org/*"], + "hide_matches": ["https://developer.mozilla.org/*"] +}</pre> + + <p>Ceci montre l'action de page par défaut pour toutes les URL HTTPS sous le domaine "mozilla.org", à l'exception des pages sous "developer.mozilla.org".</p> + </td> + </tr> + <tr> + <td><code>show_matches</code></td> + <td><code>Tableau de Match Pattern</code></td> + <td> + <p>Affiche l'action de page par défaut pour les pages dont les URLs correspondent à l'un des modèles donnés.</p> + + <p>Voir aussi <code>hide_matches</code>.</p> + </td> + </tr> + <tr> + <td><code>pinned</code></td> + <td><code>Boolean</code></td> + <td> + <p>Facultatif, par défaut à <code>true</code>.</p> + + <p>Contrôle si l'action de la page doit apparaître dans la barre d'emplacement par défaut lorsque l'utilisateur installe l'extension.</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"page_action": { + "default_icon": { + "19": "button/geo-19.png", + "38": "button/geo-38.png" + } +}</pre> + +<p>Une action de page avec juste une icône spécifiée en 2 tailles différentes. Les scripts d'arrière-plan de l'extension peuvent recevoir des événements de clic lorsque l'utilisateur clique sur l'icône en utilisant un code comme celui-ci :</p> + +<pre class="brush: js no-line-numbers"> browser.pageAction.onClicked.addListener(handleClick);</pre> + +<pre class="brush: json no-line-numbers">"page_action": { + "default_icon": { + "19": "button/geo-19.png", + "38": "button/geo-38.png" + }, + "default_title": "Où suis-je ?", + "default_popup": "popup/geo.html" +}</pre> + +<p>Une action de page avec une icône, un titre et une fenêtre contextuelle. Cette dernière s'affiche lorsque l'utilisateur clique sur l'icône.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.manifest.page_action")}}</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><code><a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code></li> + <li><code><a href="/fr/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></code></li> + <li><a href="/fr/Add-ons/WebExtensions/user_interface/Browser_styles">Browser styles</a></li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/permissions/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/permissions/index.html new file mode 100644 index 0000000000..88190cc8b2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/permissions/index.html @@ -0,0 +1,198 @@ +--- +title: permissions +slug: Mozilla/Add-ons/WebExtensions/manifest.json/permissions +tags: + - Add-ons + - Extensions + - Permissions + - Reference + - WebExtensions + - manifest.json +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/permissions +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Tableau</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"permissions": [ + "*://developer.mozilla.org/*", + "webRequest" +]</pre> + </td> + </tr> + </tbody> +</table> + +<p>Utilisez la clé <code>permissions</code> pour demander des pouvoirs spéciaux pour votre extension. Cette clé est un ensemble de chaînes, et chaque chaîne est une demande d'autorisation.</p> + +<p>Si vous demandez des autorisations avec cette clé, le navigateur peut informer l'utilisateur, au moment de l'installation, que l'extension demande certains privilèges, et lui demande de confirmer qu'il est d'accord. Le navigateur peut également permettre à l'utilisateur d'inspecter les privilèges d'une extension après l'installation.</p> + +<p>Comme la demande d'octroi de privilèges peut avoir un impact sur la volonté des utilisateurs d'installer votre extension, la demande de privilèges mérite une attention particulière. Par exemple, vous voulez éviter de demander des permissions inutiles et vous voudrez peut-être fournir des informations sur la raison pour laquelle vous demandez des permissions dans la description du magasin de votre extension. Vous trouverez plus d'informations sur les questions que vous devez prendre en compte dans l'article <a href="/fr/Add-ons/WebExtensions/Request_the_right_permissions">Demander les bonnes permissions</a>.</p> + +<p>La clé peut contenir trois types d'autorisations:</p> + +<ul> + <li>Les permissions d'hôte</li> + <li>Les permissions API</li> + <li>La permission activeTab</li> +</ul> + +<h2 id="Les_permissions_d'hôte">Les permissions d'hôte</h2> + +<p>Les permissions d'hôte sont spécifiées comme <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">modèles de correspondance</a>, et chaque modèle identifie un groupe d'URL pour lequel l'extension demande des privilèges supplémentaires. Par exemple, une autorisation d'hôte pourrait être <code>"*://developer.mozilla.org/*"</code>.</p> + +<p>Les privilèges supplémentaires incluent :</p> + +<ul> + <li><a href="/fr/docs/Web/API/XMLHttpRequest">XMLHttpRequest</a> et l'accès <a href="/fr/docs/Web/API/Fetch_API">fetch</a> à ces origines sans restrictions d'origine croisée (même pour les demandes faites à partir de scripts de contenu)</li> + <li>La possibilité d'injecter des scripts par programme (à l'aide de <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript">tabs.executeScript</a>) dans les pages issues de ces origines</li> + <li>La possibilité de recevoir des événements de l'API <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a> pour ces hôtes</li> + <li>La possibilité d'accéder aux cookies de cet hôte à l'aide de l'API <a href="/fr/Add-ons/WebExtensions/API/cookies">cookies</a>, tant que la permission de cet API est également incluse.</li> + <li>Contourne la protection de suivi si l'hôte est un domaine complet sans caractères génériques. Ne fonctionne pas avec <all_urls>.</li> +</ul> + +<p>Dans Firefox, à partir de la version 56, les extensions reçoivent automatiquement les permissions d'hôte pour leur propre origine, qui se présentent sous la forme :</p> + +<pre><code>moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/</code></pre> + +<p>Où <code>60a20a9b-1ad4-af49-9b6c-c64c98c37920</code> est l'ID interne de l'extension. L'extension peut obtenir cette URL par programmation en appelant <a href="/fr/Add-ons/WebExtensions/API/extension/getURL">extension.getURL() </a>:</p> + +<pre class="brush: js;">browser.extension.getURL(""); +// moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/ +</pre> + +<h2 id="Les_permissions_API">Les permissions API</h2> + +<p>Les autorisations API sont spécifiées comme des mots-clés, et chaque mot clé nomme une <a href="/fr/docs/">API WebExtension</a> que l'extension souhaite utiliser.</p> + +<p>Les mots clés suivants sont actuellement disponibles:</p> + +<ul> + <li><code>activeTab</code></li> + <li><code>alarms</code></li> + <li><code>background</code></li> + <li><code>bookmarks</code></li> + <li><code>browserSettings</code></li> + <li><code>browsingData</code></li> + <li><code>clipboardRead</code></li> + <li><code>clipboardWrite</code></li> + <li><code>contentSettings</code></li> + <li><code>contextMenus</code></li> + <li><code>contextualIdentities</code></li> + <li><code>cookies</code></li> + <li><code>debugger</code></li> + <li><code>dns</code></li> + <li><code>downloads</code></li> + <li><code>downloads.open</code></li> + <li><code>find</code></li> + <li><code>geolocation</code></li> + <li><code>history</code></li> + <li><code>identity</code></li> + <li><code>idle</code></li> + <li><code>management</code></li> + <li><code>menus</code></li> + <li><code>menus.overrideContext</code></li> + <li><code>nativeMessaging</code></li> + <li><code>notifications</code></li> + <li><code>pageCapture</code></li> + <li><code>pkcs11</code></li> + <li><code>privacy</code></li> + <li><code>proxy</code></li> + <li><code>search</code></li> + <li><code>sessions</code></li> + <li><code>storage</code></li> + <li><code>tabHide</code></li> + <li><code>tabs</code></li> + <li><code>theme</code></li> + <li><code>topSites</code></li> + <li><code>unlimitedStorage</code></li> + <li><code>webNavigation</code></li> + <li><code>webRequest</code></li> + <li><code>webRequestBlocking</code></li> +</ul> + +<p>Dans la plupart des cas, la permission accorde uniquement l'accès à l'API, avec les exceptions suivantes :</p> + +<ul> + <li><code>tabs</code> vous permet d'accéder aux <a href="/fr/Add-ons/WebExtensions/API/tabs">parties privilégiées des API de l'onglet </a>: <code>Tab.url</code>, <code>Tab.title</code>, et <code>Tab.faviconUrl</code>. Dans Firefox, vous avez également besoin de <code>tabs</code> si vous souhaitez inclure <code>url</code> dans le paramètre <code>queryInfo</code> dans <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">tabs.query()</a></code>. Le reste de l'API <code>tabs</code> peut être utilisé sans demander aucune permission.</li> + <li><code>webRequestBlocking</code> vous permet d'utiliser l'argument "blocage", afin que vous puissiez <a href="/fr/Add-ons/WebExtensions/API/WebRequest">modifier et annuler les requêtes</a>.</li> + <li><code>downloads.open</code> vous permet d'utiliser l'API {{WebExtAPIRef("downloads.open()")}}.</li> + <li><code>tabHide</code> vous permet d'utiliser l'API {{WebExtAPIRef("tabs.hide()")}}.</li> +</ul> + +<h2 id="Permission_activeTab">Permission activeTab</h2> + +<p>Cette autorisation est spécifiée comme " <code>activeTab</code> " (<em>onglet actif</em>). Si une extension possède la permission <code>activeTab</code> , lorsque l'utilisateur interagit avec l'extension, celle-ci reçoit des privilèges supplémentaires uniquement pour l'onglet actif.</p> + +<p>"L'interaction utilisateur" comprend :</p> + +<ul> + <li>L'utilisateur clique sur l'action du navigateur de l'extension ou sur l'action de la page</li> + <li>L'utilisateur sélectionne un élément de son menu contextuel</li> + <li>L'utilisateur active un raccourci clavier défini par l'extension</li> +</ul> + +<p>Les privilèges supplémentaires sont les suivants :</p> + +<ul> + <li>La capacité d'injecter du JavaScript ou du CSS dans l'onglet par programme, en utilisant <code><a href="/fr/Add-ons/WebExtensions/API/tabs/executeScript">browser.tabs.executeScript</a></code> et <code><a href="/fr/Add-ons/WebExtensions/API/tabs/insertCSS">browser.tabs.insertCSS</a></code></li> + <li>L'accès aux parties privilégiées des onglets de l'API pour l'onglet actuel : Tab.url, Tab.title et Tab.faviconUrl.</li> +</ul> + +<p>L'objectif de cette permission est de permettre aux extensions de réaliser une utilisation courante, sans avoir à leur accorder de permissions très puissantes. Beaucoup d'extensions veulent "faire quelque chose à la page courante quand l'utilisateur le demande". Par exemple, considérez une extension qui veut exécuter un script dans la page courante quand l'utilisateur clique sur une action de navigateur. Si la permission <code>activeTab</code> n'existait pas, l'extension devrait demander une permission d'hôte <all_urls>. Mais cela donnerait à l'extension plus de puissance que nécessaire : elle pourrait désormais exécuter des scripts dans n'importe quel onglet, à tout moment, plutôt que simplement dans l'onglet actif et juste en réponse à une action de l'utilisateur.</p> + +<p>Notez que vous ne pouvez accéder qu'à l'onglet ou aux données qui s'y trouvaient au moment de l'interaction de l'utilisateur (par exemple le clic). Lorsque l'onglet actif s'éloigne, par exemple en raison d'un chargement terminé ou d'un autre événement, l'autorisation ne vous donne plus accès à l'onglet.</p> + +<p>Habituellement, l'onglet qui est accordé à <code>activeTab</code> est juste l'onglet actuellement actif, sauf dans un cas. L'API <code><a href="/fr/Add-ons/WebExtensions/API/menus">menus</a></code> permet à une extension de créer un élément de menu qui s'affiche lorsque le contexte utilisateur clique sur un onglet (c'est-à-dire sur l'élément de l'onglet qui permet à l'utilisateur de passer d'un onglet à un autre). Si l'utilisateur clique sur un tel élément, la permission <code>activeTab</code> est accordée pour l'onglet sur lequel l'utilisateur a cliqué, même s'il ne s'agit pas de l'onglet actuellement actif (A partir de Firefox 63, {{bug(1446956)}}).</p> + +<h2 id="Accès_au_presse-papiers">Accès au presse-papiers</h2> + +<p>Il existe deux permissions qui permettent aux extensions d'interagir avec le Presse-papiers :</p> + +<ul> + <li><code>clipboardWrite</code>: écrivez dans le presse-papiers à l'aide de {{DOMxRef("Clipboard.write()")}}, {{DOMxRef("Clipboard.writeText()")}}, <code>document.execCommand("copy")</code> ou <code>document.execCommand("cut")</code></li> + <li><code>clipboardRead</code>: lisez le presse-papiers à l'aide de {{DOMxRef("Clipboard.read()")}}, {{DOMxRef("Clipboard.readText()")}} ou <code>document.execCommand("paste")</code></li> +</ul> + +<p>Voir <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard">Intérargir avec le presse-papiers </a>pour tous les détails de ce sujet.***</p> + +<h2 id="Stockage_illimité">Stockage illimité</h2> + +<p>La permission <code>unlimitedStorage</code> :</p> + +<ul> + <li>permet aux extensions de dépasser tout quota imposé par l'API {{WebExtAPIRef("storage.local")}}</li> + <li>dans Firefox, permet aux extensions de créer une base de données <a href="/fr/docs/Web/API/API_IndexedDB/Browser_storage_limits_and_eviction_criteria#Les_différents_types_de_stockage_des_données">bases de données Indexed DB "persistante"</a>, sans que le navigateur ne demande à l'utilisateur la permission au moment de la création de la base.</li> +</ul> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json; no-line-numbers"> "permissions": ["*://developer.mozilla.org/*"]</pre> + +<p>Demande d'accès privilégié aux pages sous developer.mozilla.org.</p> + +<pre class="brush: json no-line-numbers"> "permissions": ["tabs"]</pre> + +<p>Demande d'accès aux éléments privilégiés de l'API <code>tabs.</code></p> + +<pre class="brush: json no-line-numbers language-json"><code class="language-json"><span class="key token">"permissions":</span> <span class="punctuation token">[</span><span class="string token">"*://developer.mozilla.org/*"</span><span class="punctuation token">,</span> <span class="string token">"tabs"</span></code></pre> + +<p>Demande des deux permissions ci-dessus.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.permissions")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/protocol_handlers/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/protocol_handlers/index.html new file mode 100644 index 0000000000..d8dfb178af --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/protocol_handlers/index.html @@ -0,0 +1,85 @@ +--- +title: protocol_handlers +slug: Mozilla/Add-ons/WebExtensions/manifest.json/protocol_handlers +tags: + - Add-ons + - Extensions + - WebExtensions + - manifest.json +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/protocol_handlers +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Tableau</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"protocol_handlers": [ + { + "protocol": "ircs", + "name": "IRC Mozilla Extension", + "uriTemplate": "https://irccloud.mozilla.com/#!/%s" + } +]</pre> + </td> + </tr> + </tbody> +</table> + +<p>Utilisez cette clé pour enregistrer un ou plusieurs gestionnaires de protocole basés sur le Web.</p> + +<p>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).</p> + +<p>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 <code><a href="/fr/docs/Web/API/Navigator/registerProtocolHandler">Navigator.registerProtocolHandler()</a></code>, excepté que avec <code>registerProtocolHandler()</code> un site Web ne peut s'inscrire lui-même comme un gestionnaire.</p> + +<p>Chaque gestionnaire de protocole possède trois propriétés, toutes obligatoires :</p> + +<dl> + <dt><code>protocol</code></dt> + <dd>Une chaîne définissant le protocole. Cela doit être soit: + <ul> + <li>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".</li> + <li>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+".</li> + </ul> + </dd> + <dt><code>name</code></dt> + <dd>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.</dd> + <dt><code>uriTemplate</code></dt> + <dd>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 <a href="/fr/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">propriété localisable</a>.</dd> +</dl> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"protocol_handlers": [ + { + "protocol": "magnet", + "name": "Magnet Extension", + "uriTemplate": "https://example.com/#!/%s" + } +]</pre> + +<p>Les gestionnaires peuvent également être des <a href="/fr/Add-ons/WebExtensions/user_interface/Extension_pages">pages d'extension</a>.</p> + +<pre class="brush: json no-line-numbers">"protocol_handlers": [ + { + "protocol": "magnet", + "name": "Magnet Extension", + "uriTemplate": "/example.xhtml#!/%s" + } +]</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.protocol_handlers")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/short_name/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/short_name/index.html new file mode 100644 index 0000000000..32c76d0111 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/short_name/index.html @@ -0,0 +1,44 @@ +--- +title: short_name +slug: Mozilla/Add-ons/WebExtensions/manifest.json/short_name +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/short_name +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Chaîne</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"short_name": "MonExtension"</pre> + </td> + </tr> + </tbody> +</table> + +<p>Nom abrégé de l'extension. S'il est donné, il sera utilisé dans des contextes où le champ <a href="/fr/Add-ons/WebExtensions/manifest.json/name">name</a> est trop long. Il est recommandé que le nom court ne dépasse pas 12 caractères. Si le champ du nom court n'est pas inclus dans manifest.json, le nom sera utilisé à la place et peut être tronqué. </p> + +<p>C'est une <a href="/fr/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">propriété localisable</a>.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"short_name": "MonExtension"</pre> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.short_name")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/sidebar_action/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/sidebar_action/index.html new file mode 100644 index 0000000000..4e9585baf3 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/sidebar_action/index.html @@ -0,0 +1,151 @@ +--- +title: sidebar_action +slug: Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Objet</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"sidebar_action": { + "default_icon": { + "16": "button/geo-16.png", + "32": "button/geo-32.png" + }, + "default_title": "My sidebar", + "default_panel": "sidebar/sidebar.html", + "open_at_install":true +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>Une <a href="/fr/Add-ons/WebExtensions/Sidebars">barre latérale</a> est un volet qui s'affiche à gauche de la fenêtre du navigateur, à côté de la page Web. Le navigateur fournit une interface qui permet à l'utilisateur de voir les barres latérales actuellement disponibles et de sélectionner celle à afficher.</p> + +<p>La clé <code>sidebar_action</code> vous permet de définir les propriétés par défaut de la barre latérale. Vous pouvez modifier ces propriétés lors de l'exécution à l'aide de l'API {{WebExtAPIRef("sidebarAction")}}.</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<p>La clé <code>sidebar_action</code> est un objet qui peut avoir l'une des propriétés listées ci-dessous. La seule propriété obligatoire est <code>default_panel</code>.</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles">browser_style</a></code></td> + <td><code>Booléen</code></td> + <td> + <p>Facultatif, par défaut : <code>true</code> .</p> + + <p>Utilisez cette option pour inclure une feuille de style dans votre fenêtre contextuelle qui permettra la correspondance avec l'interface utilisateur du navigateur et les autres extensions qui utilisent la propriété <code>browser_style</code>.</p> + + <p>Dans Firefox, la feuille de style peut être vue sur chrome://browser/content/extension.css, ou chrome://browser/content/extension-mac.css sur OS X. Lors de la définition des dimensions, savez que cette feiulle de style est actuellement définit <code>box-sizing: border-box</code> (see <a href="https://developer.mozilla.org/docs/Web/CSS/box-sizing">box-sizing</a>).</p> + + <p>Le <a class="external external-icon" href="https://firefoxux.github.io/StyleGuide/#/controls">guide de style de Firefox</a> décrit les classes que vous pouvez appliquer aux éléments de la barre latérale afin d'obtenir des styles particuliers.</p> + </td> + </tr> + <tr> + <td><code>default_icon</code></td> + <td><code>Objet</code> ou <code>Chaîne de caractères</code></td> + <td> + <p>Utilisez cette option pour spécifier une ou plusieurs icônes pour la barre latérale. L'icône est affichée dans l'interface utilisateur du navigateur pour l'ouverture et la fermeture des barres latérales.</p> + + <p>Les icônes sont spécifiées comme des URL relatives au fichier manifest.json lui-même.</p> + + <p>Vous pouvez spécifier un seul fichier d'icône en fournissant une chaîne ici :</p> + + <pre class="brush: json no-line-numbers"> +"default_icon": "path/to/geo.svg"</pre> + + <p>Pour spécifier plusieurs icônes dans différentes tailles, spécifiez ici un objet. Le nom de chaque propriété est la hauteur de l'icône en pixels convertie en un nombre entier. La valeur est l'URL. Par exemple:</p> + + <pre class="brush: json no-line-numbers"> + "default_icon": { + "16": "path/to/geo-16.png", + "32": "path/to/geo-32.png" + }</pre> + + <p>Voir <a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action#Choosing_icon_sizes">Choix de la taille d'icones</a> pour plus de conseils sur ce sujet.</p> + + <p>Cette propriété est optionnelle : si elle est omise, la barre latérale n'obtient pas d'icône.</p> + </td> + </tr> + <tr> + <td><code>default_panel</code></td> + <td><code>Chaîne de caractères</code></td> + <td> + <p>Le chemin d'accès à un fichier HTML qui spécifie le contenu de la barre latérale.</p> + + <p>Le fichier HTML peut inclure des fichiers CSS et JavaScript à l'aide des éléments <code><a href="/fr/docs/Web/HTML/Element/link"><link></a></code> et <code><a href="/fr/docs/Web/HTML/Element/script"><script></a></code>, tout comme une page Web normale.</p> + + <p> Contrairement à une page Web normale, JavaScript en cours d'exécution dans le panneau peut accéder à toutes les <a href="/fr/Add-ons/WebExtensions/API">APIs des WebExtension</a> (à condition, bien sûr, que l'extension ait les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permissions</a> appropriées).</p> + + <p>Cette propriété est obligatoire.</p> + + <p>C'est une <a href="https://developer.mozilla.org/fr/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">propriété localisable</a>.</p> + </td> + </tr> + <tr> + <td><code>default_title</code></td> + <td><code>String</code></td> + <td> + <p>Titre de la barre latérale. Ceci est utilisé dans l'interface utilisateur du navigateur pour la liste et l'ouverture des barres latérales, et s'affiche en haut de la barre latérale lorsqu'elle est ouverte.</p> + + <p>Cette propriété est facultative : si elle est omise, le titre de la barre latérale est le <code><a href="/fr/Add-ons/WebExtensions/manifest.json/name">nom</a></code> de l'extension.</p> + + <p>C'est une <a href="/fr/Add-ons/WebExtensions/Internationalization#Internationalizing_manifest.json">propriété localisable.</a></p> + </td> + </tr> + <tr> + <td><code>open_at_install</code></td> + <td>Boolean</td> + <td>Facultatif, par défaut à <code>true</code>. Détermine si la barre latérale doit s'ouvrir lors de l'installation. Le comportement par defaut est d'ouvrir la barre latérale lorsque l'installation est terminée.</td> + </tr> + </tbody> +</table> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"sidebar_action": { + "default_icon": "sidebar.svg", + "default_title": "Ma barre latérale !", + "default_panel": "sidebar.html", + "browser_style": true +}</pre> + +<p>Pour un exemple simple d'une extension qui utilise une barre latérale, regarder <a href="https://github.com/mdn/webextensions-examples/tree/master/annotate-page">annotate-page</a>.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.manifest.sidebar_action")}}</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles">Browser styles</a></li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/storage/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/storage/index.html new file mode 100644 index 0000000000..1003836dc1 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/storage/index.html @@ -0,0 +1,69 @@ +--- +title: storage +slug: Mozilla/Add-ons/WebExtensions/manifest.json/storage +tags: + - Add-ons + - Extensions + - Manifest + - Reference + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/storage +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Object</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"storage": { + "managed_schema": "schema.json" +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>Utilisez la clé <code>storage</code> pour spécifier le nom du fichier de schéma qui définit la structure des données dans le stockage géré.</p> + +<p>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.</p> + +<p>Après avoir déclaré les politiques, elles sont lues à partir de l'API {{WebExtAPIRef("storage.managed")}}. Cependant, si une valeur de politique n'est pas conforme au schéma, elle n'est pas publiée par l'API <code>storage.managed</code>. Il appartient à l'application d'appliquer les politiques configurées par l'administrateur.</p> + +<div class="blockIndicator note"> +<p>Firefox ne définit pas de schéma pour le stockage géré, soir {{WebExtAPIRef("storage.managed")}} pour plus de détails.</p> +</div> + +<p>La clé de <code>storage</code> est un objet qui possède les propriétés requises suivantes:</p> + +<table class="standard-table"> + <tbody> + <tr> + <td><code>managed_schema</code></td> + <td> + <p>Un <code>String</code> spécifiant le chemin complet du fichier dans l'extension qui définit le schéma de gestion du stockage..</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.storage", 10)}}</p> + +<div class="blockIndicator note"> +<p><strong>Remerciements</strong></p> + +<p>Cette page comprend les détails de la page du site web des développeurs de Chrome <a href="https://developer.chrome.com/apps/manifest/storage">Manifeste pour les zones de stockage</a> incluses ici sous la licence Creative Commons Attribution 3.0 United States License.</p> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/theme/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/theme/index.html new file mode 100644 index 0000000000..d9f4187f08 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/theme/index.html @@ -0,0 +1,1374 @@ +--- +title: theme +slug: Mozilla/Add-ons/WebExtensions/manifest.json/theme +tags: + - Add-ons + - Browser + - Customization + - Customize + - Design + - Look and Feel + - Themes + - colors + - theme manifest +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/theme +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Object</code></td> + </tr> + <tr> + <th scope="row">Mandatory</th> + <td>No</td> + </tr> + <tr> + <th scope="row">Example</th> + <td> + <pre class="brush: json"> +"theme": { + "images": { + "theme_frame": "images/sun.jpg" + }, + "colors": { + "frame": "#CF723F", + "tab_background_text": "#000" + } +}</pre> + </td> + </tr> + </tbody> +</table> + +<p>Utilisez la clé du thème pour définir un thème statique à appliquer à Firefox.</p> + +<div class="note"> +<p><strong>Note</strong>: Si vous voulez inclure un thème avec une extension, veuillez voir l'API {{WebExtAPIRef("theme")}}.</p> +</div> + +<div class="note"> +<p><strong>Note</strong>: Depuis mai 2019, les thèmes doivent être signés pour être installés ({{bug(1545109)}}). Voir <a href="/fr/docs/Mozilla/Add-ons/Distribution">Signature et distribution votre extension</a> pour plus de détails.</p> +</div> + +<div class="note"> +<p><strong>Prise en charge des thèmes dans Firefox pour Android</strong>: Une nouvelle version de Firefox pour Android, basée sur GeckoView, est en cours de développement. Une <a href="https://play.google.com/store/apps/details?id=org.mozilla.fenix" rel="noreferrer nofollow">pré-version</a> ne support pas les thèmes.</p> +</div> + +<h2 id="Formats_des_images">Formats des images</h2> + +<p>Les formats d'image suivants sont pris en charge dans toutes les propriétés de l'image du thème :</p> + +<ul> + <li>JPEG</li> + <li>PNG</li> + <li>APNG</li> + <li>SVG (SVG animé est pris en charge à partir de Firefox 59)</li> + <li>GIF (Le GIF animé n'est pas supporté)</li> +</ul> + +<h2 id="Syntaxe">Syntaxe</h2> + +<p>La clé du thème est un objet qui prend les propriétés suivantes:</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>images</code></td> + <td><code>Objet</code></td> + <td> + <p>Facultatif à partir de Firefox 60. Obligatoire avant Firefox 60.</p> + + <p>Un objet JSON dont les propriétés représentent les images à afficher dans différentes parties du navigateur. Voir les <code><a href="/fr/Add-ons/WebExtensions/manifest.json/theme#images">images</a></code> pour plus de détails sur les propriétés que cet objet peut contenir.</p> + </td> + </tr> + <tr> + <td><code>colors</code></td> + <td><code>Objet</code></td> + <td> + <p>Obligatoire.</p> + + <p>Un objet JSON dont les propriétés représentent les couleurs de différentes parties du navigateur. Voir <code><a href="/fr/Add-ons/WebExtensions/manifest.json/theme#couleurs">couleurs</a></code> pour plus de détails sur les propriétés que cet objet peut contenir.</p> + </td> + </tr> + <tr> + <td><code>properties</code></td> + <td><code>Objet</code></td> + <td> + <p>Optionnel</p> + + <p>This object has two properties that affect how the <code>"additional_backgrounds"</code> images are displayed. See <code><a href="/fr/Add-ons/WebExtensions/manifest.json/theme#properties">properties</a></code> for details on the properties that this object can contain.</p> + + <ul> + <li><code>"additional_backgrounds_alignment":</code> un tableau énumérant les valeurs définissant l'alignement des éléments correspondants du tableau <code>"additional_backgrounds":</code>.<br> + Les options d'alignement comprennent : <code>"bottom" <em>(bas)</em></code>, <code>"center" <em>(centre)</em></code>, <code>"left" <em>(gauche)</em></code>, <code>"right" <em>(droite)</em></code>, <code>"top" <em>(haut)</em></code>, <code>"</code><code>center bottom</code><code>"</code><em>(centre bas)</em>, <code>"center center" <em>(centre milieu)</em></code>, <code>"center top" <em>(centre haut)</em></code>, <code>"left bottom" <em>(gauche bas)</em></code>, <code>"left center" <em>(gauche milieu)</em></code>, <code>"left top" <em>(gauche haut)</em></code>, <code>"right bottom" <em>(droite bas)</em></code>, <code>"right center" <em>(droite milieu)</em></code>, et <code>"right top" <em>(droite haut)</em></code>. Si elle n'est pas spécifiée, par défaut, <code>"right top"</code>.<br> + Facultatif</li> + <li><code>"additional_backgrounds_tiling":</code> un tableau énumérant les valeurs de répétition des éléments correspondants du tableau <code>"additional_backgrounds":</code>, avec le support de <code>"no-repeat" <em>(pas de répétition)</em></code>, <code>"repeat" <em>(répétition)</em></code>, <code>"repeat-x"</code> et <code>"repeat-y"</code>. Si elle n'est pas spécifiée, par défaut, "<code>no-repeat"</code>.<br> + Facultatif</li> + </ul> + </td> + </tr> + </tbody> +</table> + +<h3 id="images">images</h3> + +<p>Toutes les URL sont relatives au fichier manifest.json et ne peuvent pas référencer une URL externe.</p> + +<p>Les images doivent avoir une hauteur de 200 pixels pour garantir qu'elles remplissent toujours l'espace d'en-tête verticalement.</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <p>headerURL <code>{{Deprecated_Inline}}</code></p> + </td> + <td><code>String</code></td> + <td> + <div class="blockIndicator warning"> + <p><code>headerURL</code> a été supprimé dans Firefox 70. Vous commencerez à recevoir des avertissements dans Firefox 65 et plus tard si vous chargez un thème qui utilise cette propriété. Utilisez <code>theme_frame</code> à la place.</p> + </div> + + <p>L'URL d'une image de premier plan doit être ajoutée à la zone d'en-tête et ancrée dans le coin supérieur droit de la zone d'en-tête.</p> + + <p>En option à partir de Firefox 60. Un de <code>theme_frame</code> ou <code>headerURL</code> devait être spécifié avant Firefox 60. Notez également que dans Firefox 60 et suivants, tout {{cssxref("text-shadow")}} appliqué au texte d'en-tête est supprimé si aucun <code>headerURL</code> n'est spécifié (voir {{bug(1404688)}}).</p> + + <p>Dans Firefox pour Android, <code>headerURL</code> ou <code>theme_frame</code> doit être spécifié.</p> + + <ul> + </ul> + </td> + </tr> + <tr> + <td><code>theme_frame</code></td> + <td><code>String</code></td> + <td> + <p>L'URL d'une image de premier plan doit être ajoutée à la zone d'en-tête et ancrée dans le coin supérieur droit de la zone d'en-tête.</p> + + <div class="blockIndicator note"> + <p>L'ancre de l'image en haut à gauche de l'en-tête pour Chrome et si l'image ne remplit pas la zone de l'en-tête, l'image sera en mosaïque.</p> + </div> + + <p>Optionnel à partir de Firefox 60. Un de <code>theme_frame</code> ou <code>headerURL</code> devait être spécifié avant Firefox 60.</p> + + <p>Dans Firefox pour Android, <code>headerURL</code> ou <code>theme_frame</code> doit être spécifié.</p> + </td> + </tr> + <tr> + <td><code>additional_backgrounds</code></td> + <td><code>Array </code>de <code>String</code></td> + <td> + <div class="warning"> + <p>La propriété <code>additional_backgrounds</code> est experimentale. Il est actuellement accepté dans les versions finale de Firefox, mais son comportement est sujet à changement.</p> + </div> + + <p>Un tableau d'URLs pour les images de fond supplémentaires à ajouter à la zone d'en-tête et à afficher derrière l'image <code>"theme_frame"</code> : Ces images superposent la première image du tableau en haut, la dernière image du tableau en bas.</p> + + <p>Optionel.</p> + + <p>Par défaut, toutes les images sont ancrées dans le coin supérieur droit de la zone d'en-tête, mais leur alignement et leur comportement répété peuvent être contrôlés par les propriétés des <code>"properties"</code>.</p> + </td> + </tr> + </tbody> +</table> + +<h3 id="Couleurs">Couleurs</h3> + +<p>Ces propriétés définissent les couleurs utilisées pour les différentes parties du navigateur. Ils sont tous facultatifs (mais notez que <code>"accentcolor"</code> et <code>"textcolor"</code> étaient obligatoires dans Firefox avant la version 63). L'effet de ces propriétés sur l'interface utilisateur de Firefox est présenté ici:</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <td style="background-color: white;"> + <p><img alt="Overview of the color properties and how they apply to Firefox UI components" src="https://mdn.mozillademos.org/files/16855/Themes_components_annotations.png" style="height: 1065px; width: 1521px;"></p> + </td> + </tr> + </tbody> +</table> + +<div class="blockIndicator note"> +<p>Lorsqu'un composant est affecté par plusieurs propriétés de couleur, les propriétés sont listées par ordre de priorité.</p> +</div> + +<p>Toutes ces propriétés peuvent être spécifiées sous la forme d'une chaîne contenant un <a href="/fr/docs/Web/CSS/color_value">code de couleur CSS</a>, ou un tableau RVB tel que <code>"tab_background_text": [ 107 , 99 , 23 ]</code>, ou en héxadécimal, tel que <code>"tab_background_text": #6b6317</code>.</p> + +<div class="blockIndicator note"> +<p><a href="/fr/Add-ons/WebExtensions/manifest.json/theme#Chrome_compatibility">Dans Chrome, les couleurs ne peuvent être spécifiées que sous forme de tableau RVB</a>.</p> + +<p>Dans Firefox pour Android, les couleurs peuvent être spécifiées en utilisant:</p> + +<ul> + <li>La notation hexadecimale complète, c'est à dire #RRGGBB uniquement. Les syntaxes <em>alpha</em> et abrégée, comme dans #RGB[A], ne sont pas supportées.</li> + <li><a href="/fr/docs/Web/CSS/Type_color#Syntaxe">Notation fonctionnelle</a> (tableau RVB) pour les thèmes ciblant Firefox 68.2 ou supérieur.</li> +</ul> + +<p>Les couleurs pour les thèmes Firefox pour Android ne peuvent pas être spécifiées à l'aide des noms de couleurs.</p> +</div> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>accentcolor</code><code> {{Deprecated_Inline}}</code></td> + <td> + <div class="blockIndicator warning"> + <p><code>accentcolor</code> a été supprimé dans Firefox 70. Vous commencerez à recevoir des avertissements dans Firefox 65 et plus tard si vous chargez un thème qui utilise cette propriété. Utilisez <code>frame</code> à la place.</p> + </div> + + <p>La couleur de l'arrière-plan de la zone d'en-tête, affichée dans l'en-tête quand il n'est pas couvert ou reste visible à travers les images spécifiées dans <code>"headerURL"</code> et <code>"additional_backgrounds"</code>.</p> + + <details><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "accentcolor": "red", + "tab_background_text": "white" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15871/theme-accentcolor.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>bookmark_text</code></td> + <td> + <p>La couleur du texte et des icônes dans le signet et les barres de recherche. De plus, si <code>tab_text</code> n'est pas défini, il définit la couleur du texte de l'onglet actif et si les <code>icons</code> ne sont pas définies, la couleur des icônes de la barre d'outils. Fourni en tant qu'alias compatible Chrome pour l'outils <code>toolbar_text</code>.</p> + + <div class="blockIndicator note"> + <p>Assurez-vous que toute couleur utilisée contraste bien avec celles utilisées dans <code>frame</code> et <code>frame_inactive</code> ou <code>toolbar</code> si vous utilisez cette propriété.</p> + + <p>Là où les <code>icons</code> ne sont pas définis, assurez-vous également d'un bon contraste avec <code>button_background_active</code> et <code>button_background_hover</code>.</p> + </div> + + <details><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "toolbar": "black", + "bookmark_text": "red" + } +}</pre> + </details> + + <p><img alt="Example use of the bookmark_text color property" src="https://mdn.mozillademos.org/files/16668/theme-bookmark_text.png"></p> + </td> + </tr> + <tr> + <td><code>button_background_active</code></td> + <td> + <p>La couleur de l'arrière-plan des boutons de la barre d'outils.</p> + + <details><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "button_background_active": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15872/theme-button_background_active.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>button_background_hover</code></td> + <td> + <p>La couleur de l'arrière-plan des boutons de la barre d'outils au survol.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "button_background_hover": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15873/theme-button_background_hover.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>icons</code></td> + <td> + <p>La couleur des icônes de la barre d'outils, à l'exclusion de celles de la barre d'outils de recherche.</p> + + <div class="blockIndicator note"> + <p>Assurez-vous que la couleur utilisée contraste bien avec celles utilisées dans <code>frame</code>, <code>frame_inactive</code>, <code>button_background_active</code>, et <code>button_background_hover</code>.</p> + </div> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "icons": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15874/theme-icons.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>icons_attention</code></td> + <td> + <p>La couleur des icônes de la barre d'outils dans l'état d'attention comme l'icône de signet étoilé ou l'icône de téléchargement terminé.</p> + + <div class="blockIndicator note"> + <p>Assurez-vous que la couleur utilisée contraste bien avec celles utilisées dans <code>frame</code>, <code>frame_inactive</code>, <code>button_background_active</code>, et <code>button_background_hover</code>.</p> + </div> + + <details><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "icons_attention": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15875/theme-icons_attention.png" style="height: 324px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>frame</code></td> + <td> + <p>La couleur de l'arrière-plan de la zone d'en-tête, affichée dans la partie de l'en-tête non couverte ou visible à travers les images spécifiées dans <code>"theme_frame"</code> et <code>"additional_backgrounds"</code>.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "red", + "tab_background_text": "white" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15871/theme-accentcolor.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>frame_inactive</code></td> + <td> + <p>La couleur de l'arrière-plan de la zone d'en-tête quand la fenêtre du navigateur est inactive, affichée dans la partie de l'en-tête non couverte ou visible à travers les images spécifiées dans <code>"theme_frame"</code> et <code>"additional_backgrounds"</code>.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "red", + "frame_inactive": "gray", + "tab_text": "white" + } +}</pre> + </details> + + <p><img alt="Example use of the frame_inactive color property" src="https://mdn.mozillademos.org/files/16669/theme-frame_inactive.png" style="height: 193px; width: 752px;"></p> + </td> + </tr> + <tr> + <td><code>ntp_background</code></td> + <td> + <p>La nouvelle couleur d'arrière-plan de la page à onglet.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "ntp_background": "red", + "ntp_text": "white" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/16175/ntp_colors.png" style="display: block; height: 190px; margin: 0 auto;"></p> + </td> + </tr> + <tr> + <td><code>ntp_text</code></td> + <td> + <p>La couleur du texte de la page nouvel onglet.</p> + + <div class="blockIndicator note"> + <p>Assurez-vous que la couleur utilisée contraste bien avec celle utilisée dans <code>ntp_background</code>.</p> + </div> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "ntp_background": "red", + "ntp_text": "white" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/16175/ntp_colors.png" style="display: block; height: 190px; margin: 0 auto;"></p> + </td> + </tr> + <tr> + <td><code>popup</code></td> + <td> + <p>La couleur d'arrière-plan des popups (telles que la liste déroulante de la barre d'adresse et les menus avec une flèche)</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "popup": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15876/theme-popup.png" style="height: 324px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>popup_border</code></td> + <td> + <p>La couleur de la bordure des popups.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "popup": "black", + "popup_text": "white", + "popup_border": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15877/theme-popup_border.png" style="height: 324px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>popup_highlight</code></td> + <td> + <p>La couleur d'arrière-plan des éléments mis en surbrillance à l'aide du clavier dans les fenêtre contextuelles (tel que l’élément sélectionné dans le menu déroulant de la barre d'URL).</p> + + <div class="blockIndicator note"> + <p>Il est recommandé de définir <code>popup_highlight_text</code> pour remplacer la couleur de texte par défaut du navigateur sur différentes plateformes.</p> + </div> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "popup_highlight": "red", + "popup_highlight_text": "white", + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15878/theme-popup_highlight.png" style="height: 490px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>popup_highlight_text</code></td> + <td> + <p>La couleur du texte des éléments mis en surbrillance dans les fenêtres contextuelles.</p> + + <div class="blockIndicator note"> + <p>S'assurer que la couleur utilisée contraste bien avec celle utilisée dans <code>popup_highlight</code>.</p> + </div> + + <details><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "popup_highlight": "black", + "popup_highlight_text": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15879/theme-popup_highlight_text.png" style="height: 490px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>popup_text</code></td> + <td> + <p>La couleur du texte des popups.</p> + + <div class="blockIndicator note"> + <p>S'assurer que la couleur utilisée contraste bien avec celle utilisée dans <code>popup</code>.</p> + </div> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "popup": "black", + "popup_text": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15880/popup_text.png" style="height: 490px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>sidebar</code></td> + <td> + <p>La couleur de fond des barres latérales intégrées.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "sidebar": "red", + "sidebar_highlight": "white", + "sidebar_highlight_text": "green", + "sidebar_text": "white" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/16176/sidebar_colors.png" style="display: block; margin: 0 auto; width: 250px;"></p> + </td> + </tr> + <tr> + <td><code>sidebar_border</code></td> + <td> + <p>La couleur de la bordure et du séparateur de la barre latérale du navigateur.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "sidebar_border": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/16177/Screen_Shot_2018-09-16_at_6.13.31_PM.png" style="display: block; height: 286px; margin: 0px auto; width: 300px;"></p> + </td> + </tr> + <tr> + <td><code>sidebar_highlight</code></td> + <td> + <p>La couleur d'arrière-plan des lignes en surbrillance dans les barres latérales intégrées.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "sidebar_highlight": "red", + "sidebar_highlight_text": "white" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/16223/Screen_Shot_2018-10-04_at_11.15.46_AM.png" style="display: block; height: 357px; margin: 0px auto; width: 269px;"></p> + </td> + </tr> + <tr> + <td><code>sidebar_highlight_text</code></td> + <td> + <p>La couleur du texte des lignes en surbrillance dans les barres latérales intégrées.</p> + + <div class="blockIndicator note"> + <p>S'assurer que la couleur utilisée contraste bien avec celle utilisée dans <code>sidebar_highlight</code>.</p> + </div> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "sidebar_highlight": "pink", + "sidebar_highlight_text": "red", + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/16224/Screen_Shot_2018-10-04_at_11.22.41_AM.png" style="display: block; height: 363px; margin: auto; width: 262px;"></p> + </td> + </tr> + <tr> + <td><code>sidebar_text</code></td> + <td> + <p>La couleur du texte des barres latérales intégrées.</p> + + <div class="blockIndicator note"> + <p>S'assurer que la couleur utilisée contraste bien avec celle utilisée dans <code>sidebar</code>.</p> + </div> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "sidebar": "red", + "sidebar_highlight": "white", + "sidebar_highlight_text": "green", + "sidebar_text": "white" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/16176/sidebar_colors.png" style="display: block; margin: 0 auto; width: 250px;"></p> + </td> + </tr> + <tr> + <td><code>tab_background_separator</code></td> + <td> + <p>La couleur du séparateur vertical des onglets d'arrière-plan.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "tab_background_separator": "red" + } +}</pre> + </details> + + <p><img alt="A closeup of browser tabs to highlight the separator." src="https://mdn.mozillademos.org/files/16048/theme-tab-background-separator.png" style="height: 356px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>tab_background_text</code></td> + <td> + <p>La couleur du texte affiché dans les onglets des pages inactives. Si <code>tab_text</code> ou <code>bookmark_text</code> n'est pas spécifié, s'applique au texte de l'onglet actif.</p> + + <div class="blockIndicator note"> + <p>Assurez-vous que la couleur utilisée contraste bien avec celles utilisées dans <code>tab_selected</code> ou <code>frame</code> et <code>frame_inactive</code>.</p> + </div> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "toolbar": "white", + "tab_background_text": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15885/theme-textcolor.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>tab_line</code></td> + <td> + <p>La couleur de la ligne de l'onglet sélectionnée.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_bckground_text": "white", + "tab_line": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15881/theme-tab_line.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>tab_loading</code></td> + <td> + <p>La couleur de l'indicateur de chargement de l'onglet et de l'effet de vague.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "tab_loading": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15882/theme-tab_loading.gif" style="height: 186px; width: 618px;"></p> + </td> + </tr> + <tr> + <td><code>tab_selected</code></td> + <td> + <p>La couleur de fond de l'onglet sélectionné. Lorsqu'elle n'est pas utilisée, la couleur de l'onglet sélectionné est définie par <code>frame</code> et <code>frame_inactive</code>.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "images": { + "theme_frame": "weta.png" +}, + "colors": { + "frame": "black", + "tab_background_text": "white", + "tab_selected": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15883/theme-tab_selected.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>tab_text</code></td> + <td> + <p>Depuis Firefox 59, il représente la couleur du texte de l'onglet sélectionné. Si <code>tab_line</code> n'est pas spécifié, il définit également la couleur de la ligne de tabulation sélectionnée.</p> + + <div class="blockIndicator note"> + <p>Assurez-vous que la couleur utilisée contraste bien avec celles utilisées dans <code>tab_selected</code> ou <code>frame</code> et <code>frame_inactive</code>.</p> + </div> + + <p>De Firefox 55 à 58, il est incorrectement implémenté comme alias pour <code>"textcolor"</code></p> + + <details><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "images": { + "theme_frame": "weta.png" +}, + "colors": { + "frame": "black", + "tab_background_text": "white", + "tab_selected": "white", + "tab_text": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15884/theme-tab_text.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>textcolor {{Deprecated_Inline}}</code></td> + <td> + <div class="blockIndicator warning"> + <p><code>textcolor</code> a été supprimé dans Firefox 70. Vous commencerez à recevoir des avertissements dans Firefox 65 et plus tard si vous chargez un thème qui utilise cette propriété. Utilisez <code>tab_text</code> à la place.</p> + </div> + + <p>La couleur du texte affiché dans la zone d'en-tête.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "toolbar": "white", + "textcolor": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15885/theme-textcolor.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>toolbar</code></td> + <td> + <p>La couleur de fond de la barre de navigation, de la barre de signets et de l'onglet sélectionné.</p> + + <p>Ceci définit également la couleur de fond de la barre "Rechercher".</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "toolbar": "red", + "tab_background_text": "white" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15966/toolbar.png" style="height: 335px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>toolbar_bottom_separator</code></td> + <td> + <p>La couleur de la ligne séparant le bas de la barre d'outils de la région en dessous.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "toolbar_bottom_separator": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15887/theme-toolbar_bottom_separator.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>toolbar_field</code></td> + <td> + <p>La couleur d'arrière-plan des champs de la barre d'outils, comme la barre URL.</p> + + <p>Ceci définit également la couleur de fond du champ Rechercher dans la page.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "toolbar_field": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15967/toolbar-field.png" style="height: 335px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>toolbar_field_border</code></td> + <td> + <p>La couleur de la bordure des champs de la barre d'outils.</p> + + <p>Ceci définit également la couleur de fond du champ Rechercher dans la page.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "toolbar": "black", + "tab_background_text": "white", + "toolbar_field": "black", + "toolbar_field_text": "white", + "toolbar_field_border": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15968/toolbar-field-border.png" style="height: 335px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>toolbar_field_border_focus</code></td> + <td> + <p>La couleur de bordure pour les champs de la barre d'outils qui ont le focus.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "toolbar": "black", + "tab_background_text": "white", + "toolbar_field": "black", + "toolbar_field_text": "white", + "toolbar_field_border_focus": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15890/theme-toolbar_field_border_focus.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>toolbar_field_focus</code></td> + <td> + <p>La couleur de fond pour les champs de la barre d'outils qui ont le focus, tels que la barre d'URL.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "toolbar": "black", + "tab_background_text": "white", + "toolbar_field": "black", + "toolbar_field_text": "white", + "toolbar_field_focus": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15891/theme-toolbar_field_focus.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>toolbar_field_highlight</code></td> + <td>La couleur d'arrière-plan utilisée pour indiquer la sélection actuelle du texte dans la barre URL (et la barre de recherche, si elle est configurée pour être séparée). + <details open><summary>See example</summary> + <pre class="brush: json"> +"theme": { + "colors": { + "toolbar_field": "rgba(255, 255, 255, 0.91)", + "toolbar_field_text": "rgb(0, 100, 0)", + "toolbar_field_highlight": "rgb(180, 240, 180, 0.9)", + "toolbar_field_highlight_text": "rgb(0, 80, 0)" + } +}</pre> + </details> + + <p><img alt="Example showing customized text and highlight colors in the URL bar" src="https://mdn.mozillademos.org/files/16632/toolbar_field_highlight.png" style="height: 289px; width: 738px;"></p> + + <p>Ici, le champ <code>toolbar_field_highlight</code> spécifie que la couleur de surbrillance est un vert clair, alors que le texte est réglé sur un vert foncé à vert moyen en utilisant le texte <code>toolbar_field_highlight_text</code>.</p> + </td> + </tr> + <tr> + <td><code>toolbar_field_highlight_text</code></td> + <td> + <p>La couleur utilisée pour dessiner le texte actuellement sélectionné dans la barre d'URL (et la barre de recherche, si elle est configurée comme boîte séparée).</p> + + <div class="blockIndicator note"> + <p>S'assurer que la couleur utilisée contraste bien avec celles utilisées dans <code>toolbar_field_highlight</code>.</p> + </div> + + <details open><summary>See example</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "toolbar_field": "rgba(255, 255, 255, 0.91)", + "toolbar_field_text": "rgb(0, 100, 0)", + "toolbar_field_highlight": "rgb(180, 240, 180, 0.9)", + "toolbar_field_highlight_text": "rgb(0, 80, 0)" + } +}</pre> + </details> + + <p><img alt="Example showing customized text and highlight colors in the URL bar" src="https://mdn.mozillademos.org/files/16632/toolbar_field_highlight.png" style="height: 289px; width: 738px;"></p> + + <p>Ici, le champ <code>toolbar_field_highlight_text</code> permet de régler la couleur du texte sur un vert foncé moyen foncé, tandis que la couleur de surbrillance est un vert clair.</p> + </td> + </tr> + <tr> + </tr> + <tr> + <td><code>toolbar_field_separator</code></td> + <td> + <p>La couleur des séparateurs à l'intérieur de la barre d'URL. Dans Firefox 58, cela a été implémenté en tant que <code>toolbar_vertical_separator</code>.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "toolbar": "black", + "tab_background_text": "white", + "toolbar_field_separator": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15895/theme-toolbar_field_separator.png" style="height: 302px; width: 738px;"></p> + + <p>Dans cette capture d'écran, <code>"toolbar_vertical_separator"</code> est la ligne verticale blanche dans la barre URL qui sépare l'icône du mode lecture des autres icônes.</p> + </td> + </tr> + <tr> + <td><code>toolbar_field_text</code></td> + <td> + <p>La couleur du texte dans les champs de la barre d'outils, comme la barre URL. Ceci définit également la couleur du texte dans le champ Rechercher dans la page.</p> + + <div class="blockIndicator note"> + <p>Assurez-vous que la couleur utilisée contraste bien avec celles utilisées dans <code>toolbar_field</code>.</p> + </div> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "toolbar": "black", + "tab_background_text": "white", + "toolbar_field": "black", + "toolbar_field_text": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15969/toolbar-field-text.png" style="height: 335px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>toolbar_field_text_focus</code></td> + <td> + <p>La couleur du texte dans les champs de la barre d'outils qui ont le focus, tels que la barre d'URL.</p> + + <div class="blockIndicator note"> + <p>Assurez-vous que la couleur utilisée contraste bien avec celles utilisées dans <code>toolbar_field_focus</code>.</p> + </div> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "toolbar": "black", + "tab_background_text": "white", + "toolbar_field": "black", + "toolbar_field_text": "white", + "toolbar_field_text_focus": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15893/theme-toolbar_field_text_focus.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>toolbar_text</code></td> + <td> + <p>La couleur du texte de la barre d'outils. Ceci définit également la couleur du texte dans la barre "Rechercher".</p> + + <div class="blockIndicator note"> + <p>Pour la compatibilité avec Chrome, utilisez l'alias <code>bookmark_text</code>.</p> + </div> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "toolbar": "black", + "toolbar_text": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15970/toolbar-text.png" style="height: 335px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>toolbar_top_separator</code></td> + <td> + <p>La couleur de la ligne séparant le bas de la barre d'outils de la région en dessous.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "toolbar": "black", + "toolbar_top_separator": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15897/theme-toolbar_top_separator.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + <tr> + <td><code>toolbar_vertical_separator</code></td> + <td> + <p>La couleur du séparateur à côté de l'icône du menu d'application. Dans Firefox 58, il correspond à la couleur des séparateurs dans la barre d'URL.</p> + + <details open><summary>Voir exemple</summary> + + <pre class="brush: json"> +"theme": { + "colors": { + "frame": "black", + "tab_background_text": "white", + "toolbar": "black", + "toolbar_vertical_separator": "red" + } +}</pre> + </details> + + <p><img alt="" src="https://mdn.mozillademos.org/files/15898/theme-toolbar_vertical_separator.png" style="height: 302px; width: 738px;"></p> + </td> + </tr> + </tbody> +</table> + +<h4 id="Aliases">Aliases</h4> + +<p>En outre, cette clé accepte diverses propriétés qui sont des alias pour l'une des propriétés ci-dessus. Ceux-ci sont fournis pour la compatibilité avec Chrome. Si un alias est donné et que la version non-alias est également donnée, alors la valeur sera tirée de la version non-alias.</p> + +<div class="blockIndicator warning"> +<p>A partir de Firefox 70, les propriétés suivantes sont supprimées : <code>accentcolor</code> et <code>textcolor</code>. Utilisez à la place <code>frame</code> et <code>tab_background_text</code>. L'utilisation de ces valeurs dans des thèmes chargés dans Firefox 65 ou une version ultérieure augmentera les avertissements.</p> +</div> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Alias pour</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>bookmark_text</code></td> + <td><code>toolbar_text {{Deprecated_Inline}}</code></td> + </tr> + <tr> + <td><code>frame</code></td> + <td><code>accentcolor {{Deprecated_Inline}}</code></td> + </tr> + <tr> + <td><code>frame_inactive</code></td> + <td><code>accentcolor {{Deprecated_Inline}}</code></td> + </tr> + <tr> + <td><code>tab_background_text</code></td> + <td><code>textcolor {{Deprecated_Inline}}</code></td> + </tr> + </tbody> +</table> + +<h3 id="properties">properties</h3> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>additional_backgrounds_alignment</code></td> + <td> + <p><code>Array</code> of <code>String</code></p> + </td> + <td> + <p>Optionel.</p> + + <p>Un tableau de valeurs d'énumération définissant l'alignement de l'élément <code>"additional_backgrounds":</code> élément de tableau.<br> + Les options d'alignement comprennent:</p> + + <ul> + <li><code>"bottom"</code></li> + <li><code>"center"</code></li> + <li><code>"left"</code></li> + <li><code>"right"</code></li> + <li><code>"top"</code></li> + <li><code>"center bottom"</code></li> + <li><code>"center center"</code></li> + <li><code>"center top"</code></li> + <li><code>"left bottom"</code></li> + <li><code>"left center"</code></li> + <li><code>"left top"</code></li> + <li><code>"right bottom"</code></li> + <li><code>"right center"</code></li> + <li><code>"right top"</code>.</li> + </ul> + + <p>Si non spécifié, par default <code>"right top"</code>.</p> + </td> + </tr> + <tr> + <td><code>additional_backgrounds_tiling</code></td> + <td> + <p><code>Array</code> of <code>String</code></p> + </td> + <td> + <p>Optional.</p> + + <p>Un tableau de valeurs d'énumérations définissant, comme l'élément de tableau <code>"additional_backgrounds":</code> correspondant de répétition. Les options comprennent :</p> + + <ul> + <li><code>"no-repeat"</code></li> + <li><code>"repeat"</code></li> + <li><code>"repeat-x"</code></li> + <li><code>"repeat-y"</code></li> + </ul> + + <p>Si non spécifié, par default <code>"no-repeat"</code>.</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="Exemples">Exemples</h2> + +<p>Un thème de base doit définir une image à ajouter à l'en-tête, la couleur d'accent à utiliser dans l'en-tête et la couleur du texte utilisée dans l'en-tête:</p> + +<pre class="brush: json" dir="ltr"> "theme": { + "images": { + "theme_frame": "images/sun.jpg" + }, + "colors": { + "frame": "#CF723F", + "tab_background_text": "#000" + } + }</pre> + +<p dir="ltr"><span id="result_box" lang="fr"><span>Plusieurs images peuvent être utilisées pour remplir l'en-tête</span></span>, <span id="result_box" lang="fr"><span>en utilisant une image d'en-tête vierge/transparente pour donner le contrôle de l'emplacement à chaque image visible:</span></span></p> + +<pre class="brush: json" dir="ltr"> "theme": { + "images": { + "headerURL": "images/blank.png", + "additional_backgrounds": [ "images/left.png" , "images/middle.png", "images/right.png"] + }, + "properties": { + "additional_backgrounds_alignment": [ "left top" , "top", "right top"] + }, + "colors": { + "frame": "blue", + "tab_background_text": "#ffffff" + } + }</pre> + +<p>Vous pouvez également remplir l'en-tête avec une image répétée, ou des images, dans ce cas, une seule image ancrée dans le milieu du haut de l'en-tête et répétée sur le reste de l'en-tête:</p> + +<pre class="brush: json" dir="ltr"> "theme": { + "images": { + "additional_backgrounds": [ "images/logo.png"] + }, + "properties": { + "additional_backgrounds_alignment": [ "top" ], + "additional_backgrounds_tiling": [ "repeat" ] + }, + "colors": { + "frame": "green", + "tab_background_text": "#000" + } + }</pre> + +<p>L'exemple suivant utilise la plupart des différentes valeurs de <code>"theme.colors"</code>:</p> + +<pre class="brush: json"> "theme": { + "images": { + "theme_frame": "weta.png" + }, + + "colors": { + "accentcolor": "darkgreen", + "tab_background_text": "white", + "toolbar": "blue", + "bookmark_text": "cyan", + "toolbar_field": "orange", + "toolbar_field_border": "white", + "toolbar_field_text": "green", + "toolbar_top_separator": "red", + "toolbar_bottom_separator": "white", + "toolbar_vertical_separator": "white" + } + }</pre> + +<p>Il vous donnera un navigateur qui ressemble à ceci :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15789/theme.png" style="display: block; height: 652px; margin-left: auto; margin-right: auto; width: 1446px;"></p> + +<p>Dans cette capture d'écran, <code>"toolbar_vertical_separator"</code> est la ligne verticale blanche dans la barre d'URL divisant l'icône du mode Lecteur des autres icônes.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.theme")}}</p> + +<h3 id="Couleurs_2">Couleurs</h3> + +<p>{{Compat("webextensions.manifest.theme.colors", 10)}}</p> + +<h3 id="Images">Images</h3> + +<p>{{Compat("webextensions.manifest.theme.images", 10)}}</p> + +<h3 id="Propriétés">Propriétés</h3> + +<p>{{Compat("webextensions.manifest.theme.properties", 10)}}</p> + +<h3 id="Compatibilité_de_Chrome">Compatibilité de Chrome</h3> + +<p>Dans Chrome:</p> + +<ul> + <li><code>colors/toolbar_text</code> n'est pas utilisé, utilisez <code>colors/bookmark_text</code> à la place.</li> + <li><code>images/theme_frame</code> ancre l'image en haut à gauche de l'en-tête et si l'image ne remplit pas la zone de l'en-tête de l'image.</li> + <li>toutes les couleurs doivent être spécifiées sous la forme d'un tableau de valeurs RVB, comme ceci :</li> +</ul> + +<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"theme":</span> <span class="punctuation token">{</span> + <span class="key token">"colors":</span> <span class="punctuation token">{</span> + <span class="key token">"frame":</span> <span class="punctuation token">[</span><span class="number token">255</span><span class="punctuation token">,</span> <span class="number token">0</span><span class="punctuation token">,</span> <span class="number token">0</span><span class="punctuation token">]</span><span class="punctuation token">,</span> + <span class="key token">"tab_background_text":</span> <span class="punctuation token">[</span><span class="number token">0</span><span class="punctuation token">,</span> <span class="number token">255</span><span class="punctuation token">,</span> <span class="number token">0</span><span class="punctuation token">]</span><span class="punctuation token">,</span> + <span class="key token">"bookmark_text":</span> <span class="punctuation token">[</span><span class="number token">0</span><span class="punctuation token">,</span> <span class="number token">0</span><span class="punctuation token">,</span> <span class="number token">255</span><span class="punctuation token">]</span> + <span class="punctuation token">}</span> +<span class="punctuation token">}</span></code></pre> + +<p>A partir de Firefox 59, la forme tableau et la forme couleur CSS sont acceptées pour toutes les propriétés. Avant cela, <code>colors/frame</code> et <code>colors/tab_background_text</code> nécessitaient la forme tableau, alors que d'autres propriétés nécessitaient la forme couleur CSS.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/theme_experimentation/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/theme_experimentation/index.html new file mode 100644 index 0000000000..f33a6478c4 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/theme_experimentation/index.html @@ -0,0 +1,194 @@ +--- +title: theme expérimentation +slug: Mozilla/Add-ons/WebExtensions/manifest.json/theme_experimentation +tags: + - Add-ons + - Browser + - Customisation + - Customise + - Design + - Look and Feel + - Themes + - colors + - navigatuer + - theme manifest +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/theme_experiment +--- +<div>{{AddonSidebar}}</div> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Object</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json"> +"theme_experiment": { + "stylesheet": "style.css", + "colors": { + "popup_affordance": "--arrowpanel-dimmed" + }, + "images": { + "theme_toolbar": "--toolbar-bgimage" + }, + "properties": { + "toolbar_image_alignment": + "--toolbar-bgalignment" + } +}</pre> + </td> + </tr> + </tbody> +</table> + +<div class="cl-preview-section"> +<p>Cette clé permet de définir les propriétés de la clé expérimentale de <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></code> pour l'interface Firefox. Ces expériences sont un précurseur pour proposer de nouvelles fonctionnalités thématiques à inclure dans Firefox. L'expérimentation se fait par:</p> +</div> + +<div class="cl-preview-section"> +<ul> + <li>créer une feuille de style qui définit les correspondances entre les sélecteurs CSS internes pour les éléments d'interface utilisateur Firefox et les variables CSS arbitraires. Les variables CSS sont ensuite mappées dans les objets <code>colors</code>, <code>images</code>, et <code>properties</code> avec les nouvelles propriétés de clé de <code>theme</code>.</li> + <li>(sans feuille de style) en utilisant <code>colors</code>, <code>images</code>, et <code>properties</code> pour mapper les sélecteurs CSS internes de Firefox, tels que <code>--arrowpanel-dimmed</code> vers les nouvelles propriétés de clé de <code>theme</code> key properties. Cette option limite l'expérimentation aux composants d'interface utilisateur associés à une variable CSS intégrée.</li> +</ul> +</div> + +<div class="cl-preview-section"> +<p>Pour découvrir les sélecteurs CSS des éléments de l'interface utilisateur Firefox ou des variables CSS internes de Firefox, utilise la <a href="/fr/docs/Outils/Boîte_à_outils_du_navigateur">boite à outils du navigateur</a>.</p> +</div> + +<div class="cl-preview-section"> +<div class="blockIndicator note"> +<p>Cette clé est uniquement disponible pour une utilisation dans les canaux Firefox Developer Edition et Firefox Nightly et nécessite l'activation de la préférence <code>extensions.legacy.enabled</code>.</p> +</div> +</div> + +<div class="cl-preview-section"> +<div class="blockIndicator warning"> +<p>Cette fonctionnalité est expérimentale et peut être sujette à modification.</p> +</div> +</div> + +<h2 id="Syntaxe">Syntaxe</h2> + +<p>La clé theme_experiment est un objet qui prend les propriétés suivantes :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Nom</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>stylesheet</code></td> + <td><code>String</code></td> + <td> + <p>Facultatif</p> + + <p>Nom d'une feuille de style fournissant le mappage des sélecteurs CSS des éléments de l'interface Firefox aux variables CSS.</p> + </td> + </tr> + <tr> + <td><code>images</code></td> + <td><code>Object</code></td> + <td> + <p>Facultatif</p> + + <p>Mappings des variables CSS (telles que définies dans Firefox ou par la feuille de style définie dans la <code>stylesheet</code>) aux noms de propriétés <code>images</code> à utiliser dans la clé <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></code>.</p> + </td> + </tr> + <tr> + <td><code>colors</code></td> + <td><code>Object</code></td> + <td> + <p>Facultatif</p> + + <p>Mappings des variables CSS (telles que définies dans Firefox ou par la feuille de style définie dans la <code>stylesheet</code>) aux noms de propriétés <code>colors</code> à utiliser dans la clé <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></code>.</p> + </td> + </tr> + <tr> + <td><code>properties</code></td> + <td><code>Object</code></td> + <td> + <p>Facultatif</p> + + <p>Mappings des variables CSS (telles que définies dans Firefox ou par la feuille de style définie dans la <code>stylesheet</code>) aux noms de propriétés <code>properties</code> à utiliser dans la clé <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></code>.</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="Exemples">Exemples</h2> + +<div class="cl-preview-section"> +<p>Ces exemples utilisent une feuille de style appelée <code>style.css</code> pour permettre de définir une couleur pour le bouton de recharge du navigateur dans la clé <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></code>.</p> +</div> + +<div class="cl-preview-section"> +<p>La feuille de style définit :</p> +</div> + +<div class="cl-preview-section"> +<pre><code>#reload-button { + fill: var(--reload-button-color); +} +</code></pre> +</div> + +<div class="cl-preview-section"> +<p>où <code>#reload-button</code> est le sélecteur CSS interne de Firefox pour le bouton reload et <code>--reload-button-color</code> est un nom arbitraire..</p> +</div> + +<div class="cl-preview-section"> +<p>Dans le fichier <code>manifest.json</code>, <code>--reload-button-color</code> est alors mappé au nom à utiliser dans la propriété <code>theme</code> <code>colors</code> :</p> +</div> + +<div class="cl-preview-section"> +<pre><code>"theme_experiment": { + "stylesheet": "style.css", + "colors": { + "reload_button": "--reload-button-color" + } +} +</code></pre> +</div> + +<div class="cl-preview-section"> +<p>L'argument <code>reload_button</code> est alors utilisé de la même manière que n'importe quelle autre propriété de <code>theme</code> .</p> +</div> + +<div class="cl-preview-section"> +<pre><code>"theme": { + "colors": { + "reload_button": "orange" + } +} +</code></pre> +</div> + +<div class="cl-preview-section"> +<p>Ceci a pour effet de rendre l'icône de recharge orange.</p> +</div> + +<div class="cl-preview-section"><img alt="Outcome of a theme experiment, showing the reload button colored orange." src="https://mdn.mozillademos.org/files/16892/theme_experiment.png" style="height: 110px; width: 241px;"></div> + +<div class="cl-preview-section"></div> + +<div class="cl-preview-section"> +<p>Cette propriété peut également être utilisée dans <code>browser.theme.update()</code>. <code>images</code> et <code>properties</code> travaillent de la même manière que <code>colors</code>.</p> +</div> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.theme_experiment")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/user_scripts/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/user_scripts/index.html new file mode 100644 index 0000000000..49bb43316c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/user_scripts/index.html @@ -0,0 +1,48 @@ +--- +title: user_scripts +slug: Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts +tags: + - Add-ons + - Extensions + - WebExtensions + - manifest.json + - user_scripts key +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/user_scripts +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Array</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json; line-numbers language-json"> +<code class="language-json"> <span class="property token">"user_scripts"</span><span class="operator token">:</span> <span class="punctuation token">{</span> + <span class="property token">"api_script"</span><span class="operator token">:</span> <span class="string token">"apiscript.js"</span><span class="punctuation token">,</span> + <span class="punctuation token">}</span> +</code></pre> + </td> + </tr> + </tbody> +</table> + +<p>Charge le navigateur de charger le script utilisateur nommé dans la propriété <code>"api_script"</code> .</p> + +<p>La propriété <code>"api_script"</code> nomme le script utilisateur qui sera associé à cette extension.</p> + +<p>Une fois chargé, le script sera appelé après l'exécution du gestionnaire d'événement affecté à la propriété {{WebExtAPIRef("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 {{WebExtAPIRef("contentScripts")}}.</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li>{{WebExtAPIRef("userScripts")}}</li> + <li>{{WebExtAPIRef("contentScripts")}}</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/version/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/version/index.html new file mode 100644 index 0000000000..a29151649f --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/version/index.html @@ -0,0 +1,63 @@ +--- +title: version +slug: Mozilla/Add-ons/WebExtensions/manifest.json/version +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/version +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Chaîne</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Oui</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"version": "0.1"</pre> + </td> + </tr> + </tbody> +</table> + +<p>Version de l'extension, sous forme de nombres et de caractères ASCII séparés par des points. Pour connaître les détails du format de version, consultez la page <a href="/fr/docs/Toolkit_version_format">Format de la version</a>.</p> + +<p>Vous pouvez inspecter le <a href="https://github.com/mozilla/addons-linter/blob/master/src/schema/formats.js#L10">code de linter des modules complémentaires </a>pour voir comment les versions d'extension pour Firefox sont validées.</p> + +<p>Notez que <a href="https://developer.chrome.com/extensions/manifest/version">la syntaxe définie pour la version de Chrome</a> est plus restrictive que celle utilisée par Firefox :</p> + +<ul> + <li>Les valeurs d'une <code>version</code> valide pour Chrome seront toujours valables pour Firefox</li> + <li>Les valeurs d'une <code>version</code> valide pour Firefox peuvent ne pas être valides pour Chrome</li> +</ul> + +<p>Pour obtenir votre version d'extension dans votre code JavaScript, utilisez :</p> + +<pre class="brush: js">console.log(browser.runtime.getManifest().version);</pre> + +<h2 id="Exemple">Exemple</h2> + +<p>Si le manifest contient :</p> + +<pre class="brush: js">"version": "0.1"</pre> + +<p>Pour obtenir votre version d'extension dans votre code JavaScript, utilisez :</p> + +<pre class="brush: js">console.log(browser.runtime.getManifest().version); +// expected output: "0.1" +</pre> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.version")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/version_name/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/version_name/index.html new file mode 100644 index 0000000000..19017d8aaa --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/version_name/index.html @@ -0,0 +1,40 @@ +--- +title: version_name +slug: Mozilla/Add-ons/WebExtensions/manifest.json/version_name +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/version_name +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>String</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"version_name": "0.1 beta"</pre> + </td> + </tr> + </tbody> +</table> + +<p>En plus du champ <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/version">version</a>, qui est utilisé à des fins de mise à jour, <a href="https://developer.chrome.com/extensions/manifest/version">version_name</a> peut être défini sur une chaîne de version descriptive et sera utilisé à des fins d'affichage s'il est présent.</p> + +<p>Si aucun <strong>version_name</strong> n'est présent, le champ de <strong>version</strong> sera également utilisé à des fins d'affichage.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.version_name")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.html b/files/fr/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.html new file mode 100644 index 0000000000..54c713dac6 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifest.json/web_accessible_resources/index.html @@ -0,0 +1,98 @@ +--- +title: web_accessible_resources +slug: Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources +tags: + - Add-ons + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources +--- +<p>{{AddonSidebar}}</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <th scope="row" style="width: 30%;">Type</th> + <td><code>Tableau</code></td> + </tr> + <tr> + <th scope="row">Obligatoire</th> + <td>Non</td> + </tr> + <tr> + <th scope="row">Exemple</th> + <td> + <pre class="brush: json no-line-numbers"> +"web_accessible_resources": [ + "images/my-image.png" +]</pre> + </td> + </tr> + </tbody> +</table> + +<h2 id="Description">Description</h2> + +<p>Parfois, vous souhaitez associer certaines ressources - par exemple, images, HTML, CSS ou JavaScript - avec votre extension pour les mettre à la disposition des pages Web.</p> + +<p>Par exemple, l'<a href="https://github.com/mdn/webextensions-examples/tree/master/beastify">extensions d'exemple "beastify"</a> remplace une page web par une image d'une bête sélectionnée par l'utilisateur. Les images de la bête sont emballées avec l'extension. Pour rendre visible l'image sélectionnée, l'extension ajoute <code><a href="https://developer.mozilla.org/fr/docs/Web/HTML/Element/img"><img></a></code> des éléments dont l'attribut <code>src</code> pointe sur l'image de la bête. Pour que la page Web puisse charger les images, elles doivent être rendues accessibles sur le Web.</p> + +<p>Avec la clé <code>web_accessible_resources</code> liste toutes les ressources packagées que vous souhaitez mettre à la disposition des pages Web. Vous les spécifiez comme chemins relatifs dans le fichier manifest.json.</p> + +<p>Notez que les scripts de contenu n'ont pas besoin d'être listés comme ressources accessibles sur le Web.</p> + +<p>Si une extension veut utiliser {{WebExtAPIRef("webRequest")}}} pour rediriger une URL publique (par exemple, HTTPS) vers une page qui est packagée dans l'extension, alors l'extension doit lister la page dans la clé <code>web_accessible_resources</code>.</p> + +<h3 id="Utiliser_web_accessible_resources">Utiliser web_accessible_resources</h3> + +<p>Par exemple, supposons que votre extension inclut un fichier image sur images images/my-image.png, comme ceci :</p> + +<pre class="no-line-numbers">my-extension-files/ + manifest.json + my-background-script.js + images/ + my-image.png</pre> + +<p>Pour permettre à une page Web d'utiliser un élément <code><a href="/fr/docs/Web/HTML/Element/img"><img></a></code> dont l'attribut <code>src</code> pointe sur cette image, vous pouvez spécifier "web_accessible_resources" comme suit :</p> + +<pre class="brush: json no-line-numbers">"web_accessible_resources": ["images/my-image.png"]</pre> + +<p>Le fichier sera alors disponible en utilisant une URL comme :</p> + +<pre class="no-line-numbers">moz-extension://<extension-UUID>/images/my-image.png"</pre> + +<p><code><extension-UUID></code> n'est <strong>pas</strong> l'identifiant de votre extension. Il est généré de manière aléatoire pour chaque instance de navigateur. Ceci empêche les sites Web de prendre les empreintes digitales d'un navigateur en examinant les extensions qu'il a installées.</p> + +<div class="blockIndicator note"> +<p>Dans Chrome, l'ID d'une extension est fixe. Quand une ressource est listée dans <code>web_accessible_resources</code>, elle est accessible comme <code>chrome-extension://<your-extension-id>/<path/to/resource></code>. </p> +</div> + +<p>L'approche recommandée pour obtenir l'URL de la ressource est d'utiliser <code><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/runtime/getURL">runtime.getURL</a></code> en passant le chemin relatif à manifest.json, par exemple :</p> + +<pre class="brush: js no-line-numbers">browser.runtime.getURL("images/my-image.png"); +// something like: +// moz-extension://944cfddf-7a95-3c47-bd9a-663b3ce8d699/images/my-image.png</pre> + +<p>Cette approche vous donne l'URL correcte quel que soit le navigateur sur lequel votre extension est lancée.</p> + +<h3 id="Caractères_génériques">Caractères génériques</h3> + +<p><code>web_accessible_resources</code> peuvent contenir des caractères génériques. Par exemple, l'entrée suivante fonctionnera également pour inclure la ressource à "images/my-image.png":</p> + +<pre class="brush: json no-line-numbers"> "web_accessible_resources": ["images/*.png"]</pre> + +<h3 id="Sécurité">Sécurité</h3> + +<p>Notez que si vous créez une page accessible sur le Web, n'importe quel site Web peut alors lier ou rediriger vers cette page. La page doit ensuite traiter toute entrée (données POST, par exemple) comme si elle provenait d'une source non fiable, tout comme une page Web normale.</p> + +<h2 id="Exemple">Exemple</h2> + +<pre class="brush: json no-line-numbers">"web_accessible_resources": ["images/my-image.png"]</pre> + +<p>Crée un fichier dans "images/my-image.png" accessible sur le web.</p> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + +<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p> + +<p>{{Compat("webextensions.manifest.web_accessible_resources")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/manifests_native/index.html b/files/fr/mozilla/add-ons/webextensions/manifests_native/index.html new file mode 100644 index 0000000000..c9c68b6304 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/manifests_native/index.html @@ -0,0 +1,309 @@ +--- +title: manifests Natif +slug: Mozilla/Add-ons/WebExtensions/manifests_native +tags: + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Native_manifests +--- +<div>{{AddonSidebar}}</div> + +<p>Les manifests natifs sont des fichiers JSON spécialement formatés qui sont provisionnés sur l'ordinateur de l'utilisateur par un autre moyen que le processus d'installation de l'extension. Par exemple, un manifest natif peut être fourni par un administrateur de périphérique ou par un programme d'installation d'application natif.</p> + +<p>Il existe trois types différents de manifest natif :</p> + +<table class="standard-table"> + <tbody> + <tr> + <td style="width: 40%;"><a href="#Native_messaging_manifests">Les manifests de messagerie natif</a></td> + <td>Activez une fonctionnalité appelée <a href="/fr/Add-ons/WebExtensions/Native_messaging">native messaging</a>, dans laquelle une extension peut communiquer avec une application native installée sur l'appareil.</td> + </tr> + <tr> + <td><a href="#Managed_storage_manifests">Manifest de gestion de stockage</a></td> + <td>Définissez les données en lecture seule auxquelles une extension peut accéder à l'aide de l'API {{WebExtAPIRef("storage.managed")}}.</td> + </tr> + <tr> + <td><a href="#PKCS_11_manifests">PKCS #11 manifests</a></td> + <td>Activez une extension pour utiliser l'API {{WebExtAPIRef("pkcs11")}} afin d'énumérer les modules de sécurité PKCS #11 et installez-les dans Firefox.</td> + </tr> + </tbody> +</table> + +<p>Pour tous les manifests natifs, vous devez arranger les choses afin que le navigateur puisse trouver le manifest. La section sur l'<a href="#Manifest_location">emplacement du manifest</a> décrit ces règles.</p> + +<h2 id="Les_manifests_de_messagerie_natif">Les manifests de messagerie natif</h2> + +<p>Le manifest de messagerie natif contient un seul objet JSON avec les propriétés suivantes :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>name</code></td> + <td>String</td> + <td> + <p>Nom de l'application native.</p> + + <p>Cela doit correspondre au nom passé dans {{WebExtAPIRef("runtime.connectNative()")}} ou {{WebExtAPIRef("runtime.sendNativeMessage()")}} par l'extension.</p> + + <p>Sur OS X et Linux, il doit également correspondre au nom de fichier du manifest de messagerie natif (à l'exclusion de l'extension ".json").</p> + + <p>Sous Windows, il doit correspondre au nom de la clé de registre que vous créez, qui contient l'emplacement du manifest de messagerie natif.</p> + + <p>Le nom doit correspondre à l'expression régulière suivante : "^\w+(\.\w+)*$". Cela signifie qu'il ne peut contenir que des caractères alphanumériques (minuscules ou majuscules), des traits de soulignement et des points. Il ne peut pas commencer ou se terminer par un point, et un point ne peut pas être suivi d'un autre point.</p> + </td> + </tr> + <tr> + <td><code>description</code></td> + <td>String</td> + <td>Description de l'application native.</td> + </tr> + <tr> + <td><code>path</code></td> + <td>String</td> + <td> + <p>Chemin vers l'application native.</p> + + <p>Sous Windows, cela peut être relatif au manifest lui-même. Sur OS X et Linux, il doit être absolu.</p> + </td> + </tr> + <tr> + <td><code>type</code></td> + <td>String</td> + <td> + <p>Décrit la méthode utilisée pour connecter l'extension à l'application.</p> + + <p>Actuellement, une seule valeur peut être donnée ici, "stdio", qui indique que les messages sont reçus par l'application en utilisant l'entrée standard (stdin) et envoyés en utilisant la sortie standard (stdout).</p> + </td> + </tr> + <tr> + <td><code>allowed_extensions</code></td> + <td>Array of String</td> + <td> + <p>Un tableau de valeurs d'<a href="/fr/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">ID d'extensions</a>. Chaque valeur représente une extension qui est autorisée à communiquer avec cette application native.</p> + + <p>Notez que cela signifie que vous voudrez probablement inclure la clé des <a href="/fr/Add-ons/WebExtensions/manifest.json/browser_specific_settings">browser_specific_settings</a> dans le fichier manifest.json de votre extension, afin de pouvoir définir un identifiant explicite lors du développement..</p> + </td> + </tr> + </tbody> +</table> + +<p>Par exemple, voici un manifest pour l'application native "ping_pong":</p> + +<pre class="brush: json">{ + "name": "ping_pong", + "description": "Example host for native messaging", + "path": "/path/to/native-messaging/app/ping_pong.py", + "type": "stdio", + "allowed_extensions": [ "ping_pong@example.org" ] +}</pre> + +<p>This allows the extension whose ID is "ping_pong@example.org" to connect, by passing the name "ping_pong" into the relevant {{WebExtAPIRef("runtime")}} API function. The application itself is at "/path/to/native-messaging/app/ping_pong.py".</p> + +<h2 id="Manifest_de_gestion_de_stockage">Manifest de gestion de stockage</h2> + +<p>Le manifest de stockage géré contient un seul objet JSON avec les propriétés suivantes :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>name</code></td> + <td>String</td> + <td> + <p>ID de l'extension pouvant accéder à ce stockage, donné comme ID que vous avez spécifié dans la clé d'<a href="/fr/Add-ons/WebExtensions/manifest.json/applications">application</a> de l'extension.</p> + </td> + </tr> + <tr> + <td><code>description</code></td> + <td>String</td> + <td>Description lisible par l'homme, ignorée par Firefox</td> + </tr> + <tr> + <td><code>type</code></td> + <td>String</td> + <td> + <p>Cela doit être "storage".</p> + </td> + </tr> + <tr> + <td><code>data</code></td> + <td>Object</td> + <td> + <p>Un objet JSON pouvant contenir des valeurs JSON valides, y compris des chaînes, des nombres, des booléens, des tableaux ou des objets. This will become the data in the <code>browser.storage.managed</code> storage area.</p> + </td> + </tr> + </tbody> +</table> + +<p>Par exemple :</p> + +<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="punctuation token">{</span> + <span class="key token">"name":</span> <span class="string token">"favourite-colour-examples@mozilla.org"</span><span class="punctuation token">,</span> + <span class="key token">"description":</span> <span class="string token">"ignored"</span><span class="punctuation token">,</span> + <span class="key token">"type":</span> <span class="string token">"storage"</span><span class="punctuation token">,</span> + <span class="key token">"data":</span> + <span class="punctuation token">{</span> + <span class="key token">"colour":</span> <span class="string token">"management thinks it should be blue!"</span> + <span class="punctuation token">}</span> +<span class="punctuation token">}</span></code></pre> + +<p>Etant donné ce manifest JSON, l'extension "favourite-colour-examples@mozilla.org" pourrait accéder aux données en utilisant un code comme celui-ci:</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">var</span> storageItem <span class="operator token">=</span> browser<span class="punctuation token">.</span>storage<span class="punctuation token">.</span>managed<span class="punctuation token">.</span><span class="keyword token">get</span><span class="punctuation token">(</span><span class="string token">'colour'</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +storageItem<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span><span class="punctuation token">(</span>res<span class="punctuation token">)</span> <span class="operator token">=</span><span class="operator token">></span> <span class="punctuation token">{</span> + console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="template-string token"><span class="string token">`Managed colour is: </span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span>res<span class="punctuation token">.</span>colour<span class="interpolation-punctuation punctuation token">}</span></span><span class="string token">`</span></span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<h2 id="PKCS_11_manifests">PKCS #11 manifests</h2> + +<p>Le manifest PKCS #11 est un fichier contenant un objet JSON avec les propriétés suivantes :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>name</code></td> + <td>String</td> + <td> + <p>Nom du module PKCS #11.</p> + + <p>Cela doit correspondre au nom utilisé dans l'API <code>pkcs11</code> .</p> + + <p>Sur OS X et Linux, il doit également correspondre au nom de fichier du manifest (à l'exclusion de l'extension).</p> + + <p>Sous Windows, il doit correspondre au nom de la clé de registre que vous créez, qui contient l'emplacement du manifest.</p> + + <p>Le nom doit correspondre à l'expression régulière suivante : "^\w+(\.\w+)*$". Cela signifie qu'il ne peut contenir que des caractères alphanumériques minuscules, des traits de soulignement et des points. Il ne peut pas commencer ou se terminer par un point, et un point ne peut pas être suivi d'un autre point.</p> + </td> + </tr> + <tr> + <td><code>description</code></td> + <td>String</td> + <td> + <p>Description du module.</p> + + <p>Ceci est utilisé pour définir le nom convivial du module dans l'interface utilisateur du navigateur (par exemple, la boîte de dialogue "Security Devices" dans Firefox).</p> + </td> + </tr> + <tr> + <td><code>path</code></td> + <td>String</td> + <td> + <p>Chemin d'accès au module.</p> + + <p>Sous Windows, cela peut être relatif au manifest lui-même. Sur OS X et Linux, il doit être absolu</p> + </td> + </tr> + <tr> + <td><code>type</code></td> + <td>String</td> + <td>Cela doit être "pkcs11".</td> + </tr> + <tr> + <td><code>allowed_extensions</code></td> + <td>Array of String</td> + <td> + <p>Un tableau de valeurs d'<a href="/fr/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">ID de l'extension</a>. Chaque valeur représente une extension qui est autorisée à interagir avec le module.</p> + + <p>Notez que cela signifie que vous voudrez probablement inclure la clé des <a href="/fr/Add-ons/WebExtensions/manifest.json/applications">applications</a> dans le fichier manifest.json de votre extension, afin de pouvoir définir un identifiant explicite lors du développement.</p> + </td> + </tr> + </tbody> +</table> + +<p>Par exemple :</p> + +<pre class="brush: json line-numbers language-json">{ + "name": "my_module", + "description": "My test module", + "type": "pkcs11", + "path": "/path/to/libpkcs11testmodule.dylib", + "allowed_extensions": ["my-extension@mozilla.org"] +}</pre> + +<p>Compte tenu de ce manifest JSON, enregistré sous le nom ""my_module.json", l'extension "my-extension@mozilla.org" pourrait installer le module de sécurité dans "/path/to/libpkcs11testmodule.dylib" en utilisant le code suivant :</p> + +<pre class="brush: js line-numbers language-js">browser.pkcs11.installModule("my_module");</pre> + +<h2 id="Emplacement_du_manifest">Emplacement du manifest</h2> + +<p>Sous Linux et Mac OS X, vous devez stocker le manifest dans un endroit particulier. Sous Windows, vous devez créer une clé de registre qui pointe vers l'emplacement du manifest.</p> + +<p>Les règles détaillées sont les mêmes pour tous les types de manifest, sauf que l'avant-dernier composant du chemin identifie le type de manifest. Les exemples ci-dessous montrent la forme pour chacun des trois types différents. Dans tous les exemples, <em><name></em> est la valeur de la propriété <code>name</code> dans le manifest.</p> + +<h3 id="Windows">Windows</h3> + +<p>Pour une visibilité globale, créez une clé de registre avec le nom suivant :</p> + +<pre>HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\NativeMessagingHosts\<name> +HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\<code class="language-html">ManagedStorage</code>\<name> +HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\PKCS11Modules\<name></pre> + +<p>La clé doit avoir une seule valeur par défaut, qui est le chemin d'accès au manifest.</p> + +<p>A partir de Firefox 64, la vue registre 32 bits (<a href="https://en.wikipedia.org/wiki/WoW64#Registry_and_file_system">Wow6432Node) </a>sera d'abord vérifiée pour ces clés, puis la vue registre "native". Utilisez celui qui convient le mieux à votre application. </p> + +<p>Pour Firefox 63 et les versions antérieures, cette clé ne doit pas être créée sous <a href="https://en.wikipedia.org/wiki/WoW64#Registry_and_file_system">Wow6432Node</a>, même si l'application est en 32 bits. Les versions précédentes du navigateur chercheront toujours la clé dans la vue "native" du registre, et non dans l'émulation 32 bits. Pour vous assurer que la clé est créée dans la vue "native", vous pouvez passer les indicateurs KEY_WOW64_64KEY ou KEY_WOW64_32KEY dans RegCreateKeyEx. Voir <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa384129(v=vs.85).aspx">Accès à une autre vue de registre</a>.</p> + +<p>Pour une visibilité par utilisateur, créez une clé de registre avec le nom suivant :</p> + +<pre>HKEY_CURRENT_USER\SOFTWARE\Mozilla\NativeMessagingHosts\<name> +HKEY_CURRENT_USER\SOFTWARE\Mozilla\<code class="language-html">ManagedStorage</code>\<name> +HKEY_CURRENT_USER\SOFTWARE\Mozilla\PKCS11Modules\<name></pre> + +<p>La clé doit avoir une seule valeur par défaut, qui est le chemin d'accès au manifest.</p> + +<h3 id="Mac_OS_X">Mac OS X</h3> + +<p><span class="short_text" id="result_box" lang="fr"><span>Pour une visibilité globale, stockez le manifest dans :</span></span></p> + +<pre>/Library/Application Support/Mozilla/NativeMessagingHosts/<name>.json +/Library/Application Support/Mozilla/<code class="language-html">ManagedStorage</code>/<name>.json +/Library/Application Support/Mozilla/PKCS11Modules/<name>.json</pre> + +<p>Pour la visibilité par utilisateur, stockez le manifest dans :</p> + +<pre>~/Library/Application Support/Mozilla/NativeMessagingHosts/<name>.json +~/Library/Application Support/Mozilla/<code class="language-html">ManagedStorage</code>/<name>.json +~/Library/Application Support/Mozilla/PKCS11Modules/<name>.json +</pre> + +<h3 id="Linux">Linux</h3> + +<p>Pour une visibilité globale, stockez le manifest dans :</p> + +<pre>/usr/lib/mozilla/native-messaging-hosts/<name>.json +/usr/lib/mozilla/<code class="language-html">managed-storage</code>/<name>.json +/usr/lib/mozilla/pkcs11-modules/<name>.json +</pre> + +<p>ou :</p> + +<pre>/usr/lib64/mozilla/native-messaging-hosts/<name>.json +/usr/lib64/mozilla/<code class="language-html">managed-storage</code>/<name>.json +/usr/lib64/mozilla/pkcs11-modules/<name>.json</pre> + +<p>Pour la visibilité par utilisateur, stockez le manifest dans :</p> + +<pre>~/.mozilla/native-messaging-hosts/<name>.json +~/.mozilla/<code class="language-html">managed-storage</code>/<name>.json +~/.mozilla/pkcs11-modules/<name>.json</pre> diff --git a/files/fr/mozilla/add-ons/webextensions/match_patterns/index.html b/files/fr/mozilla/add-ons/webextensions/match_patterns/index.html new file mode 100644 index 0000000000..bc3c9369ae --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/match_patterns/index.html @@ -0,0 +1,436 @@ +--- +title: Motifs (Match patterns) +slug: Mozilla/Add-ons/WebExtensions/Match_patterns +tags: + - Match pattern + - Modèle de correspondance + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Match_patterns +--- +<div>{{AddonSidebar}}</div> + +<p>Les modèles de correspondance sont un moyen de spécifier des groupes d’URL : un modèle de correspondance correspond à un ensemble spécifique d'URL. Ils sont destinés à des extensions à l’aide d’API WebExtensions dans quelques endroits, notamment pour spécifier les documents dans lesquels charger des <a href="/fr/Add-ons/WebExtensions/Content_scripts">content scripts</a>, et pour spécifier les URL à ajouter aux auditeurs <code><a href="/fr/Add-ons/WebExtensions/API/webRequest">webRequest</a></code>.</p> + +<p>Les API qui utilisent des modèles de correspondance acceptent généralement une liste de modèles de correspondance et effectueront les actions appropriées si l’URL correspond à l’un des motifs. Voir, par exemple, la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> dans manifest.json.</p> + +<h2 id="Structure_du_modèle_de_correspondance">Structure du modèle de correspondance</h2> + +<div class="note"> +<p><strong>Note:</strong> Certains navigateurs ne prennent pas en charge certains schémas.<br> + Consultez le <a href="#Browser_compatibility">tableau de compatibilité du navigateur</a> pour plus de détails.</p> +</div> + +<p>Tous les modèles de correspondance sont spécifiés comme des chaînes. Outre le motif spécial « <a href="/fr/Add-ons/WebExtensions/Match_patterns#%3Call_urls%3E"><all_urls></a> », les modèles de correspondance se composent de trois partie : <em>schéma</em>, l’hôte, et le <em>chemin d’accès.</em> Le schéma et l’hôte sont séparés par « :// ».</p> + +<pre><scheme>://<host><path></pre> + +<h3 id="schéma">schéma</h3> + +<p>Le composant du <em>schéma</em> peut prendre l’une des deux formes suivantes :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col" style="width: 50%;">Valeur</th> + <th scope="col">Correspondances</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>*</code></td> + <td>Seulement "http" et "https" et dans certains navigateurs <a href="https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API">"ws" et "wss"</a> aussi.</td> + </tr> + <tr> + <td>Une parmi <code>http</code>, <code>https</code>, <code>ws</code>, <code>wss</code>, <code>ftp</code>, <code>ftps</code>, <code>data</code> ou <code>file</code>.</td> + <td>Seulement le schéma donné.</td> + </tr> + </tbody> +</table> + +<h3 id="hôte">hôte</h3> + +<p>Le composant <em>hôte</em> peut prendre l'une des trois formes suivantes :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col" style="width: 50%;">Valeur</th> + <th scope="col">Correspondances</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>*</code></td> + <td>Tout hôte</td> + </tr> + <tr> + <td><code>*.</code> Suivi d’une partie du nom d’hôte</td> + <td>L’hôte donné et l’un de ses sous-domaines</td> + </tr> + <tr> + <td>Un nom d’hôte complet, sans caractères génériques</td> + <td>Seul l’hôte donné</td> + </tr> + </tbody> +</table> + +<p>L’<em>hôte</em> ne doit pas inclure un numéro de port.</p> + +<p>L’<em>hôte</em> est facultatif seulement si le <em>schéma</em> est un « fichier ».</p> + +<p>Notez que le caractère générique ne peut apparaître qu’au début.</p> + +<h3 id="chemin">chemin</h3> + +<p>Le composant du chemin d’accès doit commencer par un <code>/</code>.</p> + +<p>Ensuite, il peut contenir éventuellement toute combinaison du caractère générique <code>*</code> et de l’un des caractères autorisés dans les chemins d’URL ou chaînes de requête. Contrairement à l’<em>hôte</em>, le composant du <em>chemin</em> peut contenir le caractère générique <code>*</code> au milieu ou à la fin, et le caractère <code>*</code> peut apparaître plusieurs fois.</p> + + + +<p>La valeur du <em>chemin</em> matches correspond à la chaîne de caractères qui est le chemin plus la <a href="https://en.wikipedia.org/wiki/Query_string">chaine de requête URL</a>. Ceci inclut le signe <code>?</code> entre les deux, si la chaîne de requête est présente dans l'URL. Par exemple, si vous voulez faire correspondre des URLs sur n'importe quel domaine où le chemin URL se termine par <code>foo.bar</code>, alors vous devez utiliser un tableau de Match Patterns comme <code>['*://*/*foo.bar', '*://*/*foo.bar?*']</code>. Le <code>?*</code> est nécessaire, plutôt que juste la <code>bar*</code>, afin d'ancrer la fin <code>*</code> comme s'appliquant à la chaîne de requête URL et non à une partie du chemin URL.</p> + +<p>Ni l'<a href="https://en.wikipedia.org/wiki/Fragment_identifier">identificateur de fragment d'URL</a>, ni le <code>#</code> qui le précède, ne sont considérés comme faisant partie du <em>chemin</em>.</p> + +<div class="blockIndicator note"> +<p><strong>Note</strong>: La chaîne de modèle de chemin d'accès ne doit pas inclure de numéro de port. Ajout d'un port, comme dans : <em>"http://localhost:1234/*" </em>fait que le motif de match est ignoré. Cependant, "<em>http://localhost:1234</em>" correspondra avec "<em>http://localhost/*</em>"</p> +</div> + +<h3 id="<all_urls>"><all_urls></h3> + +<p>La valeur spéciale <code><all_urls></code> correspond à toutes les URL sous l’un des schémas pris en charge, c’est‐à‐dire : "http", "https", "ws", "wss", "ftp", "data" et "file".</p> + +<h2 id="Exemples">Exemples</h2> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col" style="width: 33%;">Modèle</th> + <th scope="col" style="width: 33%;">Exemples de correspondances</th> + <th scope="col" style="width: 33%;">Exemples de non-correspondances</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <p><code><all_urls></code></p> + + <p>Correspondance à toutes les URL</p> + </td> + <td> + <p><code>http://example.org/</code></p> + + <p><code>https://a.org/some/path/</code></p> + + <p><code>ws://sockets.somewhere.org/</code></p> + + <p><code>wss://ws.example.com/stuff/</code></p> + + <p><code>ftp://files.somewhere.org/</code></p> + + <p><code>ftps://files.somewhere.org/</code></p> + </td> + <td> + <p><code>resource://a/b/c/</code><br> + (schéma sans équivalent)</p> + </td> + </tr> + <tr> + <td> + <p><code>*://*/*</code></p> + + <p>Correspondance à toutes les URLs HTTP, HTTPS et WebSocket</p> + </td> + <td> + <p><code>http://example.org/</code></p> + + <p><code>https://a.org/some/path/</code></p> + + <p><code>ws://sockets.somewhere.org/</code></p> + + <p><code>wss://ws.example.com/stuff/</code></p> + </td> + <td> + <p><code>ftp://ftp.example.org/</code><br> + (schéma sans équivalent)</p> + + <p><code>ftps://ftp.example.org/</code><br> + (schéma sans équivalent)</p> + + <p><code>file:///a/</code><br> + (schéma sans équivalent)</p> + </td> + </tr> + <tr> + <td> + <p><code>*://*.mozilla.org/*</code></p> + + <p>Correspondance à toutes les URLs HTTP, HTTPS et WebSocket URLs qui sont hébergés sur "mozilla.org" ou l’un de ses sous-domaines.</p> + </td> + <td> + <p><code>http://mozilla.org/</code></p> + + <p><code>https://mozilla.org/</code></p> + + <p><code>http://a.mozilla.org/</code></p> + + <p><code>http://a.b.mozilla.org/</code></p> + + <p><code>https://b.mozilla.org/path/</code></p> + + <p><code>ws://ws.mozilla.org/</code></p> + + <p><code>wss://secure.mozilla.org/something</code></p> + </td> + <td> + <p><code>ftp://mozilla.org/</code><br> + (schéma sans équivalent)</p> + + <p><code>http://mozilla.com/</code><br> + (hôte sans équivalent)</p> + + <p><code>http://firefox.org/</code><br> + (hôte sans équivalent)</p> + </td> + </tr> + <tr> + <td> + <p><code>*://mozilla.org/</code></p> + + <p>Correspondance à toutes les URLs HTTP, HTTPS and WebSocket qui sont hébergés exactement chez "mozilla.org/"</p> + </td> + <td> + <p><code>http://mozilla.org/</code></p> + + <p><code>https://mozilla.org/</code></p> + + <p><code>ws://mozilla.org/</code></p> + + <p><code>wss://mozilla.org/</code></p> + </td> + <td> + <p><code>ftp://mozilla.org/</code><br> + (schéma sans équivalent)</p> + + <p><code>http://a.mozilla.org/</code><br> + (hôte sans équivalent)</p> + + <p><code>http://mozilla.org/a</code><br> + (chemin sans équivalent)</p> + </td> + </tr> + <tr> + <td> + <p><code>ftp://mozilla.org/</code></p> + + <p>Correspondance seulement à "ftp://mozilla.org/".</p> + </td> + <td><code>ftp://mozilla.org</code></td> + <td> + <p><code>http://mozilla.org/</code><br> + (schéma sans équivalent)</p> + + <p><code>ftp://sub.mozilla.org/</code><br> + (hôte sans équivalent)</p> + + <p><code>ftp://mozilla.org/path</code><br> + (chemin sans équivalent)</p> + </td> + </tr> + <tr> + <td> + <p><code>https://*/path</code></p> + + <p>Correspondance aux URLs HTTPS sur n'importe quel hôte, dont le chemin est "path".</p> + </td> + <td> + <p><code>https://mozilla.org/path</code></p> + + <p><code>https://a.mozilla.org/path</code></p> + + <p><code>https://something.com/path</code></p> + </td> + <td> + <p><code>http://mozilla.org/path</code><br> + (schéma sans équivalent)</p> + + <p><code>https://mozilla.org/path/</code><br> + (chemin sans équivalent)</p> + + <p><code>https://mozilla.org/a</code><br> + (chemin sans équivalent)</p> + + <p><code>https://mozilla.org/</code><br> + (chemin sans équivalent)</p> + + <p><code>https://mozilla.org/path?foo=1</code><br> + (chemin d'accès inégalé grâce à la chaîne d'interrogation URL)</p> + </td> + </tr> + <tr> + <td> + <p><code>https://*/path/</code></p> + + <p>Correspondance aux URLs HTTPS sur n’importe quel hôte, dont le chemin est "path/".</p> + </td> + <td> + <p><code>https://mozilla.org/path/</code></p> + + <p><code>https://a.mozilla.org/path/</code></p> + + <p><code>https://something.com/path</code>/</p> + </td> + <td> + <p><code>http://mozilla.org/path/</code><br> + (schéma sans équivalent)</p> + + <p><code>https://mozilla.org/path</code><br> + (chemin sans équivalent)</p> + + <p><code>https://mozilla.org/a</code><br> + (chemin sans équivalent)</p> + + <p><code>https://mozilla.org/</code><br> + (chemin sans équivalent)</p> + + <p><code>https://mozilla.org/path/</code><code>?foo=1</code><br> + (chemin d'accès inégalé grâce à la chaîne d'interrogation URL)</p> + </td> + </tr> + <tr> + <td> + <p><code>https://mozilla.org/*</code></p> + + <p>Correspondance sur toutes les URLs HTTPS uniquement sur "mozilla.org", avec n’importe quel chemin</p> + </td> + <td> + <p><code>https://mozilla.org/</code></p> + + <p><code>https://mozilla.org/path</code></p> + + <p><code>https://mozilla.org/another</code></p> + + <p><code>https://mozilla.org/path/to/doc</code></p> + + <p><code>https://mozilla.org/path/to/doc?foo=1</code></p> + </td> + <td> + <p><code>http://mozilla.org/path</code><br> + (chemin sans équivalent)</p> + + <p><code>https://mozilla.com/path</code><br> + (hôte sans équivalent)</p> + </td> + </tr> + <tr> + <td> + <p><code>https://mozilla.org/a/b/c/</code></p> + + <p>Correspondance seulement pour cet URL.</p> + </td> + <td> + <p><code>https://mozilla.org/a/b/c/</code></p> + + <p><code>https://mozilla.org/a/b/c/#section1</code></p> + </td> + <td>N'importe quoi d'autre.</td> + </tr> + <tr> + <td> + <p><code>https://mozilla.org/*/b/*/</code></p> + + <p>Correspondance sur toutes les URL HTTPS hébergées sur "mozilla.org", dont le chemin d’accès contient un composant "b" quelque part au milieu. Correspond aux URLs avec les chaînes de requête, si la chaîne se termine par un <code>/</code>.</p> + </td> + <td> + <p><code>https://mozilla.org/a/b/c/</code></p> + + <p><code>https://mozilla.org/d/b/f/</code></p> + + <p><code>https://mozilla.org/a/b/c/d/</code></p> + + <p><code>https://mozilla.org/a/b/c/d/#section1</code></p> + + <p><code>https://mozilla.org/a/b/c/d/?foo=/</code></p> + + <p><code>https://mozilla.org/a?foo=21314&bar=/b/&extra=c/</code></p> + </td> + <td> + <p><code>https://mozilla.org/b/*/</code><br> + (chemin sans équivalent)</p> + + <p><code>https://mozilla.org/a/b/</code><br> + (chemin sans équivalent)</p> + + <p><code>https://mozilla.org/a/b/c/d/?foo=bar</code><br> + (chemin d'accès inégalé grâce à la chaîne d'interrogation URL)</p> + </td> + </tr> + <tr> + <td> + <p><code>file:///blah/*</code></p> + + <p>Correspondance à n’importe quelle URL FILE dont le chemin commence par "blah".</p> + </td> + <td> + <p><code>file:///blah/</code></p> + + <p><code>file:///blah/bleh</code></p> + </td> + <td><code>file:///bleh/</code><br> + (chemin sans équivalent)</td> + </tr> + </tbody> +</table> + +<h3 id="Modèles_de_correspondance_invalides">Modèles de correspondance invalides</h3> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Modèle invalide</th> + <th scope="col">Raison</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>resource://path/</code></td> + <td>schéma non pris en charge.</td> + </tr> + <tr> + <td><code>https://mozilla.org</code></td> + <td>pas de chemin.</td> + </tr> + <tr> + <td><code>https://mozilla.*.org/</code></td> + <td>"*" dans <em>hôte</em> doit être au départ.</td> + </tr> + <tr> + <td><code>https://*zilla.org/</code></td> + <td>"*" dans <em>hôte</em> doit être le seul caractère ou être suivi de « . ».</td> + </tr> + <tr> + <td><code>http*://mozilla.org/</code></td> + <td>"*" dans le schéma doit être le seul caractère.</td> + </tr> + <tr> + <td><code>https://mozilla.org:80/</code></td> + <td>L’hôte ne doit pas inclure un numéro de port.</td> + </tr> + <tr> + <td><code>*://*</code></td> + <td>Chemin vide : il doit être "<code>*://*/*</code>".</td> + </tr> + <tr> + <td><code>file://*</code></td> + <td>Chemin vide : il doit être "<code>file:///*</code>".</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<h3 id="schéma_2">schéma</h3> + + + +<p>{{Compat("webextensions.match_patterns.scheme",10)}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/modify_a_web_page/index.html b/files/fr/mozilla/add-ons/webextensions/modify_a_web_page/index.html new file mode 100644 index 0000000000..704c8ae972 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/modify_a_web_page/index.html @@ -0,0 +1,245 @@ +--- +title: Modifier une page web +slug: Mozilla/Add-ons/WebExtensions/Modify_a_web_page +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Modify_a_web_page +--- +<div>{{AddonSidebar}}</div> + +<p>L'un des cas d'utilisation les plus courants pour un complément de navigateur est de modifier une page Web. Par exemple, une extension pourrait vouloir modifier le style appliqué à une page, cacher des nœuds DOM particuliers ou injecter des nœuds DOM supplémentaires dans la page.</p> + +<p>Il existe deux façons de le faire avec WebExtensions :</p> + +<ul> + <li><strong>Déclarativement </strong>: Définissez un modèle qui correspond à un ensemble d'URL et chargez un ensemble de scripts dans des pages dont l'URL correspond à ce modèle</li> + <li><strong>Par programme </strong>: en utilisant une API JavaScript, chargez un script dans la page hébergée par un onglet particulier.</li> +</ul> + +<p>Quoi qu'il en soit, ces scripts sont appelés <em>scripts de contenu</em>, et sont différents des autres scripts qui forment un WebExtension :</p> + +<ul> + <li>Ils n'ont accès qu'à un petit sous-ensemble des API WebExtension.</li> + <li>Ils ont un accès direct à la page Web dans laquelle ils sont chargés.</li> + <li>Ils communiquent avec le reste de WebExtension en utilisant une API de messagerie.</li> +</ul> + +<p>Dans cet article, nous examinerons les deux méthodes de chargement d'un script.</p> + +<h2 id="Modification_des_pages_qui_correspondent_à_un_modèle_dURL">Modification des pages qui correspondent à un modèle d'URL</h2> + +<p>Tout d'abord, créez un nouveau répertoire intitulé "modify-page". Dans ce répertoire, créez un fichier appelé "manifest.json", avec le contenu suivant :</p> + +<pre class="brush: json">{ + + "manifest_version": 2, + "name": "modify-page", + "version": "1.0", + + "content_scripts": [ + { + "matches": ["https://developer.mozilla.org/*"], + "js": ["page-eater.js"] + } + ] + +}</pre> + +<p>La clé <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> est la façon dont vous chargez les scripts dans des pages qui correspondent aux modèles d'URL. Dans ce cas, les instructions <code>content_scripts demandent au navigateur de charger un script appelé</code> "page-eater.js" dans toutes les pages sous <a href="https://developer.mozilla.org/">https://developer.mozilla.org/</a>.</p> + +<div class="note"> +<p>Puisque la propriété "js" de content_scripts est un tableau, vous pouvez l'utiliser pour injecter plus d'un script dans des pages correspondantes. Si vous faites cela, les pages partagent la même portée, tout comme les scripts multiples chargés par une page, et ils sont chargés dans l'ordre dans lequel ils sont répertoriés dans le tableau.</p> +</div> + +<div class="note"> +<p><span id="result_box" lang="fr"><span>La clé content_scripts possède également une propriété "css" que vous pouvez utiliser pour injecter des feuilles de style CSS.</span></span></p> +</div> + +<p>Ensuite, créez un fichier appelé "page-eater.js" dans le dossier "modify-page" et donnez-lui le contenu suivant :</p> + +<pre class="brush: js">document.body.textContent = ""; + +var header = document.createElement('h1'); +header.textContent = "This page has been eaten"; +document.body.appendChild(header);</pre> + +<p>Maintenant <a href="/fr/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">installer la WebExtension</a>, et visiter <a href="https://developer.mozilla.org/">https://developer.mozilla.org/</a>:</p> + +<p>{{EmbedYouTube("lxf2Tkg6U1M")}}</p> + +<div class="note"> +<p>Notez bien que cette vidéo montre le script de contenu fonctionnant dans <a href="/fr/firefox/">addons.mozilla.org</a>, les scripts de contenu sont actuellement bloqués pour ce site.</p> +</div> + +<h2 id="Modification_des_pages_par_programme">Modification des pages par programme</h2> + +<p>Que faire si vous voulez toujours consommer des pages, mais seulement lorsque l'utilisateur vous le demande? Mettons à jour cet exemple afin d'injecter le script de contenu lorsque l'utilisateur clique sur un élément de menu contextuel.</p> + +<p>Tout d'abord, mettez à jour "manifest.json" pour qu'il contienne les contenus suivants:</p> + +<pre class="brush: json">{ + + "manifest_version": 2, + "name": "modify-page", + "version": "1.0", + + "permissions": [ + "activeTab", + "contextMenus" + ], + + "background": { + "scripts": ["background.js"] + } + +}</pre> + +<p>Ici, nous avons supprimé la clé content_scripts et ajouté deux nouvelles clés:</p> + +<ul> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code>: Pour injecter dans des pages, nous avons besoin de permissions pour la page que nous modifions. La <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission"><code>permission activeTab</code></a> est un moyen d'obtenir ceci temporaiement pour l'onglet actuellement actif. Nous avons également besoin de la permission contextMenus pour pouvoir ajouter des éléments du menu contextuel.</li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/background">background</a></code>: Nous utilisons ceci pour charger un <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">"script de fond"</a> persistant appelé "background.js", dans lequel nous configurons le menu contextuel et injectons le script de contenu.</li> +</ul> + +<p>Créons ce fichier, pour cela nous créons un fichier appelé "background.js" dans le dossier "modify-page", et donnez-lui le contenu suivant :</p> + +<pre class="brush: js">browser.contextMenus.create({ + id: "eat-page", + title: "Eat this page" +}); + +browser.contextMenus.onClicked.addListener(function(info, tab) { + if (info.menuItemId == "eat-page") { + browser.tabs.executeScript({ + file: "page-eater.js" + }); + } +}); +</pre> + +<p>Dans ce script, nous créons un <a href="/fr/Add-ons/WebExtensions/API/ContextMenus/create">élément de menu contextuel</a>, lui donnant un identifiant et un titre précis (le texte à afficher dans le menu contextuel). Ensuite, nous mettons en place une écoute d'événements afin que l'utilisateur clique sur un élément de menu contextuel, nous vérifions si c'est notre élément de la page. Si c'est le cas, nous injectons "page-eater.js" dans l'onglet actuel à l'aide de l'API <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript">tabs.executeScript()</a></code>. Cette API prend facultativement un ID de tabulation en tant qu'argument: nous avons omis l'ID de l'onglet, ce qui signifie que le script est injecté dans l'onglet actuellement actif.</p> + +<p>A ce stade, l'extension devrait ressembler à ceci :</p> + +<pre class="line-numbers language-html"><code class="language-html">modify-page/ + background.js + manifest.json + page-eater.js</code></pre> + +<p>Maintenant <a href="/fr/Add-ons/WebExtensions/Temporary_Installation_in_Firefox#Reloading_a_temporary_add-on">rechargeons la WebExtension</a>, Ouvrez une page (n'importe quelle page, cette fois) activez le menu contextuel et sélectionnez "Eat this page":</p> + +<p>{{EmbedYouTube("zX4Bcv8VctA")}}</p> + +<div class="note"> +<p>Notez que bien que cette vidéo montre le script de contenu fonctionnant dans <a href="/fr/firefox/">addons.mozilla.org</a>, les scripts de contenu sont actuellement bloqués pour ce site.</p> +</div> + +<h2 id="Messagerie">Messagerie</h2> + +<p>Les scripts de contenu et les scripts de fond ne peuvent pas accéder directement à l'état de l'autre.</p> + +<p>Cependant, ils peuvent communiquer en envoyant des messages. Une extrémité met en place un message auditeur, et l'autre extrémité peut lui envoyer un message. Le tableau suivant résume les API impliquées de chaque côté:</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="row"></th> + <th scope="col">Dans le script de contenu</th> + <th scope="col">Dans le script d'arrière plan</th> + </tr> + <tr> + <th scope="row">Envoyer un message</th> + <td><code><a href="/fr/Add-ons/WebExtensions/API/runtime#sendMessage()">browser.runtime.sendMessage()</a></code></td> + <td><code><a href="/fr/Add-ons/WebExtensions/API/Tabs/sendMessage">browser.tabs.sendMessage()</a></code></td> + </tr> + <tr> + <th scope="row">Reçevoir un message</th> + <td><code><a href="/fr/Add-ons/WebExtensions/API/runtime/onMessage">browser.runtime.onMessage</a></code></td> + <td><code><a href="/fr/Add-ons/WebExtensions/API/runtime#onMessage">browser.runtime.onMessage</a></code></td> + </tr> + </thead> +</table> + +<div class="blockIndicator note"> +<p>En ajoutant à cette méthode de communication, qui envoie des messages uniques, vous pouvez également utiliser une <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Content_scripts#Communication_avec_les_scripts_darri%C3%A8re-plan">approche basée sur la connexion pour échanger des messages</a>.</p> +</div> + +<p>Mettons à jour notre exemple pour montrer comment envoyer un message à partir du script en arrière-plan.</p> + +<p>D'abord, éditez "background.js" pour qu'il contienne ces contenus:</p> + +<pre class="brush: js">browser.contextMenus.create({ + id: "eat-page", + title: "Eat this page" +}); + +function messageTab(tabs) { + browser.tabs.sendMessage(tabs[0].id, { + replacement: "Message from the add-on!" + }); +} + +browser.contextMenus.onClicked.addListener(function(info, tab) { + if (info.menuItemId == "eat-page") { + browser.tabs.executeScript({ + file: "page-eater.js" + }); + + var querying = browser.tabs.query({ + active: true, + currentWindow: true + }); + querying.then(messageTab); + } +}); +</pre> + +<p>Maintenant, après avoir injecté "page-eater.js", nous utilisons <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">tabs.query()</a></code> pour obtenir l'onglet actuellement actif, puis utilisez <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage">tabs.sendMessage()</a></code> pour envoyer un message aux scripts de contenu chargés dans cet onglet. Le message comporte la charge utile <code>{remplacement: "Message from the add-on!"}</code>.</p> + +<p>Ensuite, mettez à jour "page-eater.js" comme ceci :</p> + +<pre class="brush: js">function eatPage(request, sender, sendResponse) { + document.body.textContent = ""; + + var header = document.createElement('h1'); + header.textContent = request.replacement; + document.body.appendChild(header); +} + +browser.runtime.onMessage.addListener(eatPage); +</pre> + +<p>Maintenant, au lieu de simplement d'afficher la page tout de suite, le script de contenu écoute un message en utilisant <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage">runtime.onMessage</a></code>. Quand un message arrive, le script de contenu exécute essentiellement le même code que précédemment, sauf que le texte de remplacement est retiré de <code>request.replacement</code>.</p> + +<p>Si nous voulions envoyer des messages du script de contenu à la page d'arrière-plan, la configuration serait inverse de cet exemple, sauf que nous utiliserions <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage">runtime.sendMessage()</a></code> dans le script de contenu.</p> + +<div class="note"> +<p>Ces exemples injectent JavaScript; Vous pouvez également injecter CSS par programme en utilisant la fonction <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/insertCSS">tabs.insertCSS()</a></code>.</p> +</div> + +<h2 id="Apprendre_plus">Apprendre plus</h2> + +<ul> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">Content scripts</a> guide</li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> manifest key</li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> manifest key</li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript">tabs.executeScript()</a></code></li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/insertCSS">tabs.insertCSS()</a></code></li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage">tabs.sendMessage()</a></code></li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/runtime/sendMessage">runtime.sendMessage()</a></code></li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage">runtime.onMessage</a></code></li> + <li>Examples using <code>content_scripts</code>: + <ul> + <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/borderify">borderify</a></li> + <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/emoji-substitution" rel="noopener">emoji-substitution</a></li> + <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a></li> + <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/page-to-extension-messaging">page-to-extension-messaging</a></li> + </ul> + </li> + <li>Examples using <code>tabs.executeScript()</code>: + <ul> + <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/beastify">beastify</a></li> + <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/context-menu-copy-link-with-types">context-menu-copy-link-with-types</a></li> + </ul> + </li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/native_messaging/index.html b/files/fr/mozilla/add-ons/webextensions/native_messaging/index.html new file mode 100644 index 0000000000..e4c938f580 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/native_messaging/index.html @@ -0,0 +1,368 @@ +--- +title: Native messaging +slug: Mozilla/Add-ons/WebExtensions/Native_messaging +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Native_messaging +--- +<div>{{AddonSidebar}}</div> + +<p>Native messaging permet à une extension d’échanger des messages avec une application native installée sur l’ordinateur de l’utilisateur. Ceci permet que des applications natives puissent fournir un service à des extensions sans avoir besoin d'être atteignables via internet. Un exemple typique est le gestionnaire de mots de passe : l’application native s’occupe du stockage et du chiffrement des mots de passe et communique avec l’extension afin de remplir les formulaires web. Native messaging permet aussi aux extensions d’accéder à des ressources qui ne sont pas accessibles via les API WebExtension, par exemple le matériel hardware particulier.</p> + +<p>L’application native n’est pas installée ou gérée par le navigateur : elle est installée à l’aide du système d’installation du système d’exploitation sous‐jacent. En plus de l’application native elle‐même, vous devrez fournir un fichier JSON appelé « manifest hôte » (host manifest) ou « manifest d’application » (app manifest) et l’installer dans un emplacement défini sur l’ordinateur de l’utilisateur. Le fichier manifest de l’application décrit comment le navigateur peut se connecter à l’application native.</p> + +<p>L’extension doit demander l'<a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">autorisation</a> « nativeMessaging » dans son fichier manifest.json. À l’inverse, l’application native doit accorder l’autorisation à l’extension en incluant son ID dans le champ « allowed_extensions » (extensions autorisées) du manifest de l’application.</p> + +<p>Par la suite, l’extension pourra échanger des messages en JSON avec l’application native en utilisant une série de fonctions de l’API {{WebExtAPIRef("runtime")}}. Du côté de l’application native, les messages seront reçus en utilisant l’entrée standard (stdin, standard input) et envoyés en utilisant la sortie standard (stdout, standard output).</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13833/native-messaging.png" style="display: block; height: 548px; margin-left: auto; margin-right: auto; width: 672px;"></p> + +<p>Le support de native messaging dans les extensions est généralement compatible avec Chrome, avec deux grandes différences :</p> + +<ul> + <li>La liste <code>allowed_extensions</code> du manifest de l’application est un tableau d’ID d’applications, tandis que Chrome liste <code>allowed_origins</code>, sous la forme d'un tableau d'URL "chrome-extension".</li> + <li>Le manifeste de l'application est stocké dans un emplacement différent <a href="https://developer.chrome.com/extensions/nativeMessaging#native-messaging-host-location">comparé à Chrome</a>.</li> +</ul> + +<p>Il y a un exemple complet (en anglais) dans le répertoire « <a href="https://github.com/mdn/webextensions-examples/tree/master/native-messaging">native‐messaging</a> » du dépôt « webextensions‐examples » sur GitHub. La plus grande partie du code de cet article est repris de cet exemple.</p> + +<h2 id="Mise_en_œuvre">Mise en œuvre</h2> + +<h3 id="Le_manifest_de_l’extension_Extension_manifest">Le manifest de l’extension (Extension manifest)</h3> + +<p>Si vous souhaitez que votre extension puisse communiquer avec une application native, alors :</p> + +<ul> + <li>Vous devez ajouter la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> dans son fichier <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a>.</li> + <li>Vous devriez probablement spécifier explicitement l’id de votre add‐on, en utilisant la clé de manifest des <a href="/fr/Add-ons/WebExtensions/manifest.json/applications">applications</a> ( Parce que le manifest de l’application identifiera le jeu d’extensions qui sont autorisées à se connecter à celle-ci via la liste de leur ID).</li> +</ul> + +<p>Voici un exemple de fichier « manifest.json » :</p> + +<pre class="brush: json">{ + + "description": "Native messaging example extension", + "manifest_version": 2, + "name": "Native messaging example", + "version": "1.0", + "icons": { + "48": "icons/message.svg" + }, + + "browser_specific_settings": { + "gecko": { + "id": "ping_pong@example.org", + "strict_min_version": "50.0" + } + }, + + "background": { + "scripts": ["background.js"] + }, + + "browser_action": { + "default_icon": "icons/message.svg" + }, + + "permissions": ["nativeMessaging"] + +}</pre> + +<h3 id="Le_manifest_de_l’application_App_manifest">Le manifest de l’application (App manifest)</h3> + +<p>Le manifest de l’application décrit au navigateur la manière avec laquelle il peut se connecter à l’application native.</p> + +<p>Le fichier manifest de l'application doit être installé avec l'application native. C'est-à-dire que le navigateur lit et valide les fichiers de manifeste des applications mais ne les installe ni ne les gère. Ainsi, le modèle de sécurité pour savoir quand et comment ces fichiers sont installés et mis à jour ressemble beaucoup plus à celui des applications natives que celui des extensions utilisant les API WebExtension.</p> + +<p>Pour plus de détails sur la syntaxe et l'emplacement du manifeste des applications natives, voir <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_manifests">manifest natifs</a>.</p> + +<p>Par exemple, voici un manifeste pour l'application native "ping_pong" :</p> + +<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="punctuation token">{</span> + <span class="property token">"name"</span><span class="operator token">:</span> <span class="string token">"ping_pong"</span><span class="punctuation token">,</span> + <span class="property token">"description"</span><span class="operator token">:</span> <span class="string token">"Example host for native messaging"</span><span class="punctuation token">,</span> + <span class="property token">"path"</span><span class="operator token">:</span> <span class="string token">"/path/to/native-messaging/app/ping_pong.py"</span><span class="punctuation token">,</span> + <span class="property token">"type"</span><span class="operator token">:</span> <span class="string token">"stdio"</span><span class="punctuation token">,</span> + <span class="property token">"allowed_extensions"</span><span class="operator token">:</span> <span class="punctuation token">[</span> <span class="string token">"ping_pong@example.org"</span> <span class="punctuation token">]</span> +<span class="punctuation token">}</span></code></pre> + +<p>Ceci autorise l’application dont l’ID est « ping_pong@example.org » à se connecter, en passant le nom « ping_pong » comme paramètre à la fonction de l’API {{WebExtAPIRef("runtime")}} concernée. L’application, elle‐même se trouve dans le fichier « /path/to/native‐messaging/app/ping_pong.py ».</p> + +<div class="note"> +<p><strong>Remarque pour Windows</strong>: dans l’exemple ci‐dessus, l’application native est un script Python. Il peut être compliqué d’amener Windows à faire fonctionner correctement des scripts Python, une méthode alternative est de fournir un fichier .bat, et de l’indiquer dans le manifest :</p> + +<pre class="brush: json">{ + "name": "ping_pong", + "description": "Example host for native messaging", + "path": "c:\\path\\to\\native-messaging\\app\\ping_pong_win.bat", + "type": "stdio", + "allowed_extensions": [ "ping_pong@example.org" ] +}</pre> + +<p>Le fichier batch invoquera alors le script Python :</p> + +<pre class="brush: bash">@echo off + +python -u "c:\\path\\to\\native-messaging\\app\\ping_pong.py"</pre> +</div> + +<h2 id="Opérations_d’échange_des_messages">Opérations d’échange des messages</h2> + +<p>Ayant appliqué la configuration de ci‐dessus, une extension peut échanger des messages JSON avec une application native.</p> + +<h3 id="Du_côté_de_l’extension">Du côté de l’extension</h3> + +<p>La messagerie native ne peut pas être utilisée directement dans les scripts de contenu ; vous devrez le <a href="https://wiki.developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#Communicating_with_background_scripts">faire indirect via des scripts d'arrière plan</a>.</p> + +<p>Il y a deux modèles à utiliser ici : la messagerie basée sur la connexion et la messagerie sans connexion.</p> + +<h4 id="Messagerie_basée_sur_une_connexion">Messagerie basée sur une connexion</h4> + +<p>Avec cette manière de faire, vous appelez la fonction {{WebExtAPIRef("runtime.connectNative()")}}, en lui passant comme paramètre le nom de l’application (la valeur de la propriété "name" du manifest de l’application). Ceci lance l’application si elle n’est pas encore démarrée et renverra un objet {{WebExtAPIRef("runtime.Port")}} à l’extension.</p> + +<p>L’application native passe deux arguments lorsqu’elle démarre :</p> + +<ul> + <li>le chemin complet du manifest de l’application</li> + <li>(nouveau dans Firefox 55) l'ID (tel qu'indiqué dans la clé du manifest.json de <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings">browser_specific_settings</a>) of the add-on that started it.</li> +</ul> + +<div class="note"> +<p>Chrome gère différemment les arguments passés :</p> + +<ul> + <li>Sous Linux et Mac, Chrome passe un argument, l'origine de l'extension qui l'a lancé sous la forme : <code>chrome-extension://[extensionID]</code>. Ceci permet à l'application d'identifier l'extension.</li> + <li>Sous Windows, Chrome passe deux arguments : le premier est l'origine de l'extension, et le second est une poignée à la fenêtre native Chrome qui a lancé l'application.</li> +</ul> +</div> + +<p>L’aplication continue de fonctionner jusqu’à ce que l’extension invoque <code>Port.disconnect()</code> ou jusqu'à ce que la page connectée soit fermée.</p> + +<p>Pour envoyer des messages en utilisant <code>Port</code>, utilisez sa fonction <code>postMessage()</code>, en passant le message JSON à envoyer. Pour écouter les messages en utilisant <code>Port</code>, ajouter un écouteur (<em>listener</em>) en utilisant sa fonction <code>onMessage.addListener()</code>.</p> + +<p>Voici un exemple de script « <em>background</em> » qui établit une connection avec l’application « ping_pong », qui écoute à l’attente de messages de celle‐ci et qui lui envoie un message « ping » à chaque fois que l’utilisateur clique sur l’action du navigateur (<em>browser action</em>) :</p> + +<pre class="brush: js">/* +On startup, connect to the "ping_pong" app. +*/ +var port = browser.runtime.connectNative("ping_pong"); + +/* +Listen for messages from the app. +*/ +port.onMessage.addListener((response) => { + console.log("Received: " + response); +}); + +/* +On a click on the browser action, send the app a message. +*/ +browser.browserAction.onClicked.addListener(() => { + console.log("Sending: ping"); + port.postMessage("ping"); +});</pre> + +<h4 id="Messagerie_sans_connexion">Messagerie sans connexion</h4> + +<p>Avec cette manière de faire, vous invoquez la fonction {{WebExtAPIRef("runtime.sendNativeMessage()")}}, en lui passant comme arguments :</p> + +<ul> + <li>le nom de l’application,</li> + <li>le message JSON à envoyer,</li> + <li>et optionnellement un callback.</li> +</ul> + +<p>Une nouvelle instance de l’application sera créée pour chaque message. L’application native passe deux arguments lorsqu’elle démarre :</p> + +<ul> + <li>le chemin complet du manifest de l’application</li> + <li>(nouveau dans Firefox 55), l’ID (tel qu'indiqué dans la clé du manifest.json de <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings">browser_specific_settings</a>) de l’add‐on qui l’a démarré.</li> +</ul> + +<p>Le premier message envoyé par l’application est traité comme une réponse à l’invocation de la fonction <code>sendNativeMessage()</code>, et sera passé dans le callback.</p> + +<p>Voici l’exemple précédent réécrit en utilisant <code>runtime.sendNativeMessage()</code>:</p> + +<pre class="brush: js">function onResponse(response) { + console.log("Received " + response); +} + +function onError(error) { + console.log(`Error: ${error}`); +} + +/* +On a click on the browser action, send the app a message. +*/ +browser.browserAction.onClicked.addListener(() => { + console.log("Sending: ping"); + var sending = browser.runtime.sendNativeMessage( + "ping_pong", + "ping"); + sending.then(onResponse, onError); +}); +</pre> + +<h3 id="Du_côté_de_l’application">Du côté de l’application</h3> + +<p>Du côté de l’application, vous utilisez l’entrée standard (standard input) pour recevoir les messages, et la sortie standard (standard output) pour les envoyer.</p> + +<p>Chaque message est sérialisé sous forme de JSON, est encodé en UTF‐8 et est précédé d’une valeur 32 bits qui contient la longueur du message dans l’ordre des octets natifs.</p> + +<p>La taille maximum d’un seul message envoyé par l’application est de 1MB. La taille maximum d’un message envoyé vers l’application est de 4GB.</p> + +<p>Voici un exemple écrit en Python. Il écoute les messages de l'extension. Notez que le fichier doit être exécutable sous Linux. Si le message est "ping", il répond par un message "pong". C'est la version Python 2 :</p> + +<pre class="brush: python">#!/usr/bin/python -u + +# Note that running python with the `-u` flag is required on Windows, +# in order to ensure that stdin and stdout are opened in binary, rather +# than text, mode. + +import json +import sys +import struct + + +# Read a message from stdin and decode it. +def get_message(): + raw_length = sys.stdin.read(4) + if not raw_length: + sys.exit(0) + message_length = struct.unpack('=I', raw_length)[0] + message = sys.stdin.read(message_length) + return json.loads(message) + + +# Encode a message for transmission, given its content. +def encode_message(message_content): + encoded_content = json.dumps(message_content) + encoded_length = struct.pack('=I', len(encoded_content)) + return {'length': encoded_length, 'content': encoded_content} + + +# Send an encoded message to stdout. +def send_message(encoded_message): + sys.stdout.write(encoded_message['length']) + sys.stdout.write(encoded_message['content']) + sys.stdout.flush() + + +while True: + message = get_message() + if message == "ping": + send_message(encode_message("pong"))</pre> + +<p>En Python 3, les données binaires reçues doivent être décodées en une chaîne. Le contenu à renvoyer à l'addon doit être encodé en données binaires à l'aide d'une structure :</p> + +<pre class="brush: python line-numbers"><code>#!/usr/bin/python -u + +# Note that running python with the `-u` flag is required on Windows, +# in order to ensure that stdin and stdout are opened in binary, rather +# than text, mode. + +import json +import sys +import struct + + +# Read a message from stdin and decode it. +def get_message(): + raw_length = sys.stdin.buffer.read(4) + + if not raw_length: + sys.exit(0) + message_length = struct.unpack('=I', raw_length)[0] + message = sys.stdin.buffer.read(message_length).decode("utf-8") + return json.loads(message) + + +# Encode a message for transmission, given its content. +def encode_message(message_content): + encoded_content = json.dumps(message_content).encode("utf-8") + encoded_length = struct.pack('=I', len(encoded_content)) + # use struct.pack("10s", bytes), to pack a string of the length of 10 characters + return {'length': encoded_length, 'content': struct.pack(str(len(encoded_content))+"s",encoded_content)} + + +# Send an encoded message to stdout. +def send_message(encoded_message): + sys.stdout.buffer.write(encoded_message['length']) + sys.stdout.buffer.write(encoded_message['content']) + sys.stdout.buffer.flush() + + +while True: + message = get_message() + if message == "ping": + send_message(encode_message("pong"))</code></pre> + +<h2 id="Fermeture_de_l’application_native">Fermeture de l’application native</h2> + +<p>Si vous vous êtes connecté à l’application native en utilisant <code>runtime.connectNative()</code>, alors elle continuera de fonctionner jusqu’à ce que l’extension appelle <code>Port.disconnect()</code> ou que la page qui s'y est connectée soit fermée. Si vous avez démarré l’application native en utilisant <code>runtime.sendNativeMessage()</code>, alors elle sera fermée après qu’elle aura reçu le message et envoyé une réponse.</p> + +<p>Pour fermer l’application native :</p> + +<ul> + <li>Sur les système d’exploitation *.nix comme Linux ou OS X, le navigateur envoie un SIGTERM à l’application native, puis un SIGKILL après que l’application ait eût l’occasion de finir de manière normale. Ces signaux sont propagés à tout sous‐processus sauf pour ceux qui se trouvent dans de nouveaux groupes de processus.</li> + <li>Sous windows, le navigateur met le processus de l’application native dans un <a href="https://msdn.microsoft.com/fr-fr/library/windows/desktop/ms684161(v=vs.85).aspx">Job object</a> et tue le processus. Si l’application native lance un autre processus et désire qu’il reste ouvert après que l’application native elle même soit fermée alors l’application native doit démarrer un autre processus avec le paramètre <code><a href="https://msdn.microsoft.com/en-us/library/windows/desktop/ms684863(v=vs.85).aspx">CREATE_BREAKAWAY_FROM_JOB</a></code>.</li> +</ul> + +<h2 id="Dépannage">Dépannage</h2> + +<p>Si quelque chose se passe mal, vérifier dans la <a href="/fr/Add-ons/WebExtensions/Debugging#Viewing_log_output">console du navigateur</a>. Si l’application native renvoit quelque‐chose vers stderr (strandard error), le navigateur le renverra vers la console du navigateur. Donc si vous avez réussi à lancer l’application native, vous verrez toutes les messages d’erreurs qu’elle émet.</p> + +<p>Si vous n’avez pas réussi à démarrer l’application, vous devriez voir un message d’erreur vous donnant un indice sur le problème.</p> + +<pre>"No such native application <name>"</pre> + +<ul> + <li> Vérifiez que le nom passé comme argument à la fonction <code>runtime.connectNative()</code> correspond au nom dans le manifest de l’application</li> + <li>OS X / Linux : vérifiez que le nom du fichier de manifest de l’application est <name>.json.</li> + <li>Windows : vérifiez que la clé de registre est dans l’endroit correcte, et que son nom correspond au « name » dans le manifest de l’application.</li> + <li>Windows : vérifiez que le chemin donné dans la clé de registre pointe vers le manifest de l’application.</li> +</ul> + +<pre>"Error: Invalid application <name>"</pre> + +<ul> + <li>Vérifier que le nom de l’application ne contient pas de caractères invalides.</li> +</ul> + +<pre>"'python' is not recognized as an internal or external command, ..."</pre> + +<ul> + <li>Windows : Si votre application est un script écrit en Python, vérifiez que Python est installé et que vous avez un chemin définit pour lui.</li> +</ul> + +<pre>"File at path <path> does not exist, or is not executable"</pre> + +<ul> + <li>Si vous voyez ce message, alors le fichier de manifest de l’application a été trouvé.</li> + <li>Vérifier que le « chemin » dans le manifest de l’application est correct.</li> + <li>Windows : vérifiez que vous avez « échappé » les séparateurs du chemin ("c:\\path\\to\\file").</li> + <li>Vérifiez que l’application se trouve bien à l’endroit indiqué par la propriété « path » dans le manifest de l’application.</li> + <li>Vérifiez que l’application est exécutable.</li> +</ul> + +<pre>"This extension does not have permission to use native application <name>"</pre> + +<ul> + <li>Vérifier que le tableau « allowed_extensions » dans le manifest de l’application contient l’ID de l’add‐on.</li> +</ul> + +<pre>"TypeError: browser.runtime.connectNative is not a function"</pre> + +<ul> + <li>Vérifiez que l’extension à la permission « nativeMessaging »</li> +</ul> + +<pre>"[object Object] NativeMessaging.jsm:218"</pre> + +<ul> + <li>Il y a eu un problème lors du démarrage de l’application.</li> +</ul> + +<h2 id="Incompatibilités_avec_Chrome">Incompatibilités avec Chrome</h2> + +<p>{{Page("Mozilla / Add‐ons / WebExtensions / Chrome_incompatibilities", "Native_messaging")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/partage_d_objets_avec_des_scripts_de_page/index.html b/files/fr/mozilla/add-ons/webextensions/partage_d_objets_avec_des_scripts_de_page/index.html new file mode 100644 index 0000000000..81ac2d7584 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/partage_d_objets_avec_des_scripts_de_page/index.html @@ -0,0 +1,258 @@ +--- +title: Partage d'objets avec des scripts de page +slug: Mozilla/Add-ons/WebExtensions/partage_d_objets_avec_des_scripts_de_page +tags: + - Add-ons + - Extensions + - Firefox + - Guide + - Mozilla + - Non-standard + - WebExtensions + - XPCOM + - script de contenu + - scripts de page +translation_of: Mozilla/Add-ons/WebExtensions/Sharing_objects_with_page_scripts +--- +<div>{{AddonSidebar}} +<div class="overheadIndicator note"> +<p>Les techniques décrites dans cette section sont uniquement disponibles dans Firefox, et seulement à partir de Firefox 49</p> +</div> + +<div class="blockIndicator warning"> +<p>En tant que développeur d'extensions, vous devez considérer que les scripts s'exécutant sur des pages Web arbitraires sont des codes hostiles dont le but est de voler les informations personnelles de l'utilisateur, d'endommager leur ordinateur ou de les attaquer d'une autre manière.</p> + +<p>L'isolation entre les scripts de contenu et les scripts chargés par les pages Web a pour but de rendre plus difficile la tâche des pages Web hostiles.</p> + +<p>Puisque les techniques décrites dans cette section décompose cet isolement, elles sont intrinsèquement dangereuses et devraient être utilisées avec beaucoup de soin.</p> +</div> +</div> + +<p>Comme les <a href="/fr/Add-ons/WebExtensions/Content_scripts#DOM_access">notes du guide de scripts de contenu</a>, les scripts de contenu ne voient pas les modifications apportées au DOM par des scripts chargés par des pages Web.Cela signifie que, par exemple, si une page Web charge une bibliothèque comme jQuery, les scripts de contenu ne pourront pas l'utiliser et devront charger leur propre copie. À l'inverse, les scripts chargés par les pages Web ne peuvent pas voir les modifications apportées par les scripts de contenu.</p> + +<p>Cependant, Firefox fournit des API qui permettent aux scripts de contenu de :</p> + +<ul> + <li>accéder aux objets JavaScript créés par les scripts de page</li> + <li>exposer leurs propres objets JavaScript aux scripts de pages.</li> +</ul> + +<h2 id="Vision_Xray_dans_Firefox">Vision Xray dans Firefox</h2> + +<p>Dans Firefox, une partie de l'isolation entre les scripts de contenu et les scripts de pages est implémentée en utilisant une fonction appelée "Vision Xray". Lorsqu'un script dans une portée plus privilégiée accède à un objet défini dans une portée moins privilégiée, il ne voit que la "version native" de l'objet. Toutes les propriétés <a href="/fr/docs/Glossary/Expando">expando</a> sont invisibles et si des propriétés de l'objet ont été redéfinies, il voit l'implémentation d'origine et non la version redéfinie.</p> + +<p>Le but de cette fonctionnalité est de rendre le script moins privilégié plus difficile à confondre le script plus privilégié en redéfinissant les propriétés natives des objets.</p> + +<p>Par exemple, lorsqu'un script de contenu accède à la <a href="/fr/docs/Web/API/Window">fenêtre</a> de la page, il ne voit aucune propriété ajoutée au script de la page, et si le script de la page a redéfini les propriétés de la fenêtre, le script de contenu verra la version originale .</p> + +<p>Pour l'histoire complète sur la vision Xray, voir les articles sur <a href="en-US/docs/Mozilla/Tech/Xray_vision">Vision Xray</a> et la <a href="en-US/docs/Mozilla/Gecko/Script_security">securité des Scripts</a>.</p> + +<h2 id="Accès_aux_objets_de_script_de_page_à_partir_de_scripts_de_contenu">Accès aux objets de script de page à partir de scripts de contenu</h2> + +<p>Dans Firefox, les objets DOM dans les scripts de contenu obtiennent une propriété supplémentaire <code>wrappedJSObject</code>. C'est une version "déballée" de l'objet, qui inclut toutes les modifications apportées à cet objet par les scripts de page.</p> + +<p>Prenons un exemple simple. Supposons qu'une page Web charge un script:</p> + +<pre class="brush: html notranslate"><!DOCTYPE html> +<html> + <head> + <meta charset="UTF-8"> + </head> + <body> + <script type="text/javascript" src="main.js"></script> + </body> +</html></pre> + +<p>Le script ajoute une propriété expando à la <code>fenêtre</code> globale :</p> + +<pre class="brush: js notranslate">// main.js + +var foo = "I'm defined in a page script!";</pre> + +<p>La vision Xray signifie que si un script de contenu tente d'accéder à <code>foo</code>, il sera indéfini:</p> + +<pre class="brush: js notranslate">// content-script.js + +console.log(window.foo); // undefined</pre> + +<p>Dans Firefox, les scripts de contenu peuvent utiliser <code>window.wrappedJSObject</code> pour voir la propriété expando :</p> + +<pre class="brush: js notranslate">// content-script.js + +console.log(window.wrappedJSObject.foo); // "I'm defined in a page script!"</pre> + +<p>Notez qu'une fois que vous faites cela, vous ne pouvez plus compter sur les propriétés ou les fonctions de cet objet qui sont, ou font, ce que vous attendez. N'importe lequel d'entre eux, même les setters et les getters, aurait pu être redéfini par un code non fiable.</p> + +<p>Notez également que le déballage est transitif: lorsque vous utilisez <code>wrappedJSObject</code>, toutes les propriétés de l'objet déplié sont elles-mêmes dépliées (et donc peu fiables). C'est donc une bonne pratique, une fois que vous avez l'objet dont vous avez besoin, de le réemballer, ce que vous pouvez faire comme ceci:</p> + +<pre class="bz_comment_text notranslate" id="comment_text_38">XPCNativeWrapper(window.wrappedJSObject.foo);</pre> + +<p>voir le document <a href="/fr/Tech/Xray_vision">vision Xray</a> pour plus de détails à ce sujet.</p> + +<h2 id="Partage_dobjets_de_script_de_contenu_avec_des_scripts_de_page">Partage d'objets de script de contenu avec des scripts de page</h2> + +<p>Firefox fournit également des API permettant aux scripts de contenu de rendre les objets disponibles pour les scripts de page. Il y a plusieurs approches ici:</p> + +<ul> + <li><code><a href="#exportFunction">exportFunction()</a></code>: exporte une fonction vers des scripts de page</li> + <li><code><a href="#cloneInto">cloneInto()</a></code>: exporte un objet vers des scripts de page.</li> + <li>constructeurs du contexte de la page</li> +</ul> + +<h3 id="exportFunction">exportFunction</h3> + +<p>Étant donné une fonction définie dans le script de contenu, <code>exportFunction()</code> l'exporte vers la portée du script de page, afin que le script de page puisse l'appeler.</p> + +<p>Par exemple, considérons une extension qui a un script d'arrière-plan comme ceci :</p> + +<pre class="brush: js notranslate">/* +Execute content script in the active tab. +*/ +function loadContentScript() { + browser.tabs.executeScript({ + file: "/content_scripts/export.js" + }); +} + +/* +Add loadContentScript() as a listener to clicks +on the browser action. +*/ +browser.browserAction.onClicked.addListener(loadContentScript); + +/* +Show a notification when we get messages from +the content script. +*/ +browser.runtime.onMessage.addListener((message) => { + browser.notifications.create({ + type: "basic", + title: "Message from the page", + message: message.content + }); +});</pre> + +<p>Cela fait deux choses :</p> + +<ul> + <li>exécuter un script de contenu dans l'onglet en cours, lorsque l'utilisateur clique sur une action du navigateur</li> + <li>écouter les messages du script de contenu et afficher une <a href="/fr/Add-ons/WebExtensions/API/notifications">notification</a> lorsque le message arrive.</li> +</ul> + +<p>Le script de contenu ressemble à ceci :</p> + +<pre class="brush: js notranslate">/* +Define a function in the content script's scope, then export it +into the page script's scope. +*/ +function notify(message) { + browser.runtime.sendMessage({content: "Function call: " + message}); +} + +exportFunction(notify, window, {defineAs:'notify'});</pre> + +<p>Cela définit une fonction <code>notify()</code>, qui envoie simplement son argument au script d'arrière-plan. Il exporte ensuite la fonction vers la portée du script de page. Maintenant, le script de la page peut appeler cette fonction:</p> + +<pre class="brush: js notranslate">window.notify("Message from the page script!");</pre> + +<p>Pour l'histoire complète, voir <code><a href="/fr/Tech/XPCOM/Language_Bindings/Components.utils.exportFunction">Components.utils.exportFunction</a></code>.</p> + +<h3 id="cloneInto">cloneInto</h3> + +<p>Étant donné un objet défini dans le script de contenu, cela crée un clone de l'objet dans la portée du script de page, rendant ainsi le clone accessible aux scripts de page. Par défaut, cela utilise <a href="/fr/docs/Web/API/Web_Workers_API/Structured_clone_algorithm">l'agorithme clone structuré</a> pour cloner l'objet, ce qui signifie que les fonctions de l'objet ne sont pas incluses dans le clone. Pour inclure des fonctions, passez l'option <code>cloneFunctions</code>.</p> + +<p>Par exemple, voici un script de contenu qui définit un objet contenant une fonction, puis le clone dans la portée du script de page :</p> + +<pre class="brush: js notranslate">/* +Create an object that contains functions in +the content script's scope, then clone it +into the page script's scope. + +Because the object contains functions, +the cloneInto call must include +the `cloneFunctions` option. +*/ +var messenger = { + notify: function(message) { + browser.runtime.sendMessage({ + content: "Object method call: " + message + }); + } +}; + +window.wrappedJSObject.messenger = cloneInto( + messenger, + window, + {cloneFunctions: true});</pre> + +<p>Maintenant les scripts de page vont voir une nouvelle propriété sur la fenêtre, <code>messenger</code>, qui a une fonction <code>notify()</code>:</p> + +<pre class="brush: js notranslate">window.messenger.notify("Message from the page script!");</pre> + +<p>Pour l'histoire complète, voir <code><a href="/fr/Tech/XPCOM/Language_Bindings/Components.utils.cloneInto">Components.utils.cloneInto</a></code>.</p> + +<h3 id="Constructeurs_du_contexte_de_la_page">Constructeurs du contexte de la page</h3> + +<p>Sur l'objet fenêtre de xrayed, des constructeurs immaculés pour certains objets javascript intégrés tels que <code>Object</code>, <code>Function</code> ou <code>Proxy</code> et différentes classe DOM sont disponibles. <code>XMLHttpRequest</code> ne se comporte pas de cette manière, voir la section <a href="/fr/Add-ons/WebExtensions/Content_scripts#XHR_and_Fetch">XHR and fetch</a> pour plus de détails. Ils créeront des instances appartenant à la hiérarchie d'objets de la page global, puis retourneront un wrapper xray.</p> + +<p>Puisque les objets créés de cette manière appartiennent déjà à la page et que le script de contenu ne les renvoie pas à la page, il ne nécessitera pas de clonage ou d'exportation supplémentaire.</p> + +<pre class="brush: js notranslate">/* javascript built-ins */ + +const objA = new Object(); +const objB = new window.Object(); + +console.log( + objA instanceof Object, // true + objB instanceof Object, // false + objA instanceof window.Object, // false + objB instanceof window.Object, // true + 'wrappedJSObject' in objB // true; xrayed +); + +objA.foo = "foo"; +objB.foo = "foo"; // xray wrappers for plain javascript objects pass through property assignments +objB.wrappedJSObject.bar = "bar"; // unwrapping before assignment does not rely on this special behavior + +window.wrappedJSObject.objA = objA; +window.wrappedJSObject.objB = objB; // automatically unwraps when passed to page context + +window.eval(` + console.log(objA instanceof Object); // false + console.log(objB instanceof Object); // true + + console.log(objA.foo); // undefined + objA.baz = "baz"; // Error: permission denied + + console.log(objB.foo, objB.bar); // "foo", "bar" + objB.baz = "baz"; +`); + +/* other APIs */ + +const ev = new Event("click"); + +console.log( + ev instanceof Event, // true + ev instanceof window.Event, // true; Event constructor is actually inherited from the xrayed window + 'wrappedJSObject' in ev // true; is an xrayed object +); + +ev.propA = "propA" // xray wrappers for native objects do not pass through assignments +ev.propB = "wrapper"; // define property on xray wrapper +ev.wrappedJSObject.propB = "unwrapped"; // define same property on page object +Reflect.defineProperty(ev.wrappedJSObject, // privileged reflection can operate on less privileged objects + 'propC', { + get: exportFunction(function() { // getters must be exported like regular functions + return 'propC'; + } + } +); + +window.eval(` + document.addEventListener("click", (e) => { + console.log(e instanceof Event, e.propA, e.propB, e.propC); + }); +`); + +document.dispatchEvent(ev); // true, undefined, "unwrapped", "propC"</pre> diff --git a/files/fr/mozilla/add-ons/webextensions/portage_d_une_extension_firefox_heritee/index.html b/files/fr/mozilla/add-ons/webextensions/portage_d_une_extension_firefox_heritee/index.html new file mode 100644 index 0000000000..5227fba14b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/portage_d_une_extension_firefox_heritee/index.html @@ -0,0 +1,85 @@ +--- +title: Portage d'une extension Firefox héritée +slug: Mozilla/Add-ons/WebExtensions/Portage_d_une_extension_Firefox_heritee +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Porting_a_legacy_Firefox_add-on +--- +<div>{{AddonSidebar}}</div> + +<p>Si vous avez développé une extension Firefox en utilisant une technologie héritée en utilisant XUL/XPCOM ou le kit d'extensions, cette page vous aidera à migrer votre extension pour utiliser les API WebExtensions. La norme pour créer des extensions pour Firefox consiste à utiliser les API <a class="external text" href="/fr/Add-ons/WebExtensions" rel="nofollow">WebExtensions</a>. Ce sera le seul type d'extension pris en charge par Firefox d'ici la fin du mois de novembre 2017 avec la sortie de <a class="external text" href="https://wiki.mozilla.org/RapidRelease/Calendar" rel="nofollow">Firefox 57</a>.</p> + +<div class="blockIndicator warning"> +<p>La prise en charge des extensions utilisant XUL/XPCOM ou le SDK Add-on a été supprimée dans Firefox 57, publié en novembre 2017. Comme il n'y a pas de version supportée de Firefox permettant ces technologies, cette page sera supprimée d'ici décembre 2020.</p> +</div> + +<h2 id="Démarrage_rapide">Démarrage rapide</h2> + +<ol> + <li>Obtenez une idée des principales choses que vous devrez modifier dans votre extension : + <ul> + <li>Familiarisez-vous avec le <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">format et la structure WebExtension</a>, et <a href="/fr/Add-ons/WebExtensions/Your_first_WebExtension">créez un exemple basique</a>.</li> + <li>Si votre extension est basé sur XUL et XPCOM, qu'il s'agisse d'une <a href="https://developer.mozilla.org/fr/Add-ons/Overlay_Extensions">extension de superposition</a> ou d'une <a href="https://developer.mozilla.org/fr/Add-ons/Bootstrapped_extensions">extension bootstrap</a>, consultez la <a href="/fr/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions">comparaison avec les extensions XUL/XPCOM</a> pour savoir comment les WebExtensions peuvent correspondre aux API existantes que vous utilisez.</li> + <li> + <p>Si votre extension est basée sur le SDK d'extensions, consultez la <a href="/fr/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK">comparaison avec le SDK d'extensions</a> pour savoir comment les WebExtensions peuvent correspondre aux SDK API existantes que vous utilisez.</p> + </li> + </ul> + </li> + <li>Réécrivez le code de votre extension. Voir ci-dessous les chemins de migration pour différents types d'extensions. A partir de Firefox 51, vous pouvez intégrer une extension construite à l'aide d'API WebExtension dans une extension bootstrap ou une extension SDK, et peut donc porter une extension héritée une pièce à la fois et avoir une extension fonctionnelle à chaque étape. Consultez <a href="/fr/Add-ons/WebExtensions/Embedded_WebExtensions">Embedded WebExtensions</a>.</li> + <li>Lorsque vous êtes prêt à soumettre la version WebExtension de votre extension à AMO... attendez une minute... êtes-vous vraiment prêt ? En raison du modèle de permissions d'extensions, vous ne pouvez pas revenir de WebExtensions à l'utilisation d'un format d'extension hérité. Donc tester <em>bien</em>, car il s'agit d'un aller simple permanent. Consultez également l'exemple hybride ci-dessous. Si vous n'êtes pas prêt, vous pouvez intégrer votre WebExtension dans un conteneur d'extension existant, ce qui vous permet de tester votre migration d'extension mais encore de revenir si nécessaire en cas d'urgence.</li> + <li>Lorsque vous êtes vraiment prêt à soumettre la version WebExtension de votre extension à AMO, connectez d'abord votre ancienne ID d'extension au nouveau fichier manifest.json de WebExtension. Votre extension doit avoir le même ID que les versions précédentes. Copiez la valeur dans le champ "id" de votre fichier package.json dans le champ id dans la section des <a href="/fr/Add-ons/WebExtensions/manifest.json/applications">applications</a> du fichier manifest.json WebExtension. Ensuite, vous pouvez soumettre votre mise à jour de l'extension à AMO comme vous le feriez normalement.</li> +</ol> + +<div class="note"> +<p>Notez qu'il s'agit d'une conversion unidirectionnelle: vous <strong>ne pouvez pas</strong> mettre à jour une WebExtension pour utiliser une technologie héritée. Cela signifie que vous devez être sûr que vous êtes prêt à vous engager aux WebExtensions avant de soumettre la mise à jour de l'extension à AMO.</p> +</div> + +<h2 id="Chemin_de_migration">Chemin de migration</h2> + +<h3 id="SDK_Extensions"><br> + SDK Extensions</h3> + +<p>Voici le tableau de comparaison montrant les <a href="/fr/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK">APIs SDK et leurs homologues de format WebExtensions</a>. Si vous ne voyez pas les API dont vous avez besoin pour utiliser les APIs WebExtensions, consultez ci-dessous pour savoir comment demander des API et aussi comment les implémenter.</p> + +<h3 id="XULXPCOM_Extensions">XUL/XPCOM Extensions</h3> + +<p>Voici le tableau de comparaison montrant les <a href="/fr/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions">APIs XUL/XPCOM et leurs homologues de format WebExtensions</a>. Si vous ne voyez pas les API dont vous avez besoin pour utiliser les APIs WebExtension, consultez ci-dessous pour savoir comment demander des API et aussi comment les implémenter.</p> + +<h2 id="Vous_ne_trouvez_pas_les_APIs_WebExtensions_dont_vous_avez_besoin">Vous ne trouvez pas les APIs WebExtensions dont vous avez besoin ?</h2> + +<p><strong>Développez les APIs WebExtension pour Firefox</strong> - Si vous êtes expérimenté avec l'infrastructure Mozilla et souhaitez développer des API WebExtensions directement pour Firefox, voici une liste d' <a href="https://mzl.la/2dVs5Ys">APIs approuvées</a> que vous pouvez commencer à contribuer.</p> + +<p><strong>Expérimentez avec les nouvelles APIs WebExtension</strong> - Si vous souhaitez créer un prototype et un bricolage avec les API WebExtensions sans avoir à créer Firefox, les <a href="http://webextensions-experiments.readthedocs.io/en/latest/index.html">Expériences WebExtensions</a> sont pour vous !</p> + +<p><strong>Demandez une nouvelle API WebExtensions </strong>- Si vous souhaitez demander une nouvelle API WebExtensions, lisez <a class="external text" href="https://wiki.mozilla.org/WebExtensions/NewAPIs" rel="nofollow">cette page.</a></p> + +<h2 id="Outils">Outils</h2> + +<ul> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> st un outil de ligne de commande conçu pour accélérer diverses parties du processus de développement d'extension, rendant le développement plus rapide et plus facile.</li> + <li><a href="https://compatibility-lookup.services.mozilla.com/">Lookup tool</a> pour vérifier votre type d'extension et obtenir des recommandations sur les ressources de portage</li> + <li><a href="https://github.com/mi-g/weh">WebExtensions Helper</a> accélère le développement de l'extension du navigateur en fournissant des utilitaires pour les extensions basées sur WebExtensions (Firefox, Chrome, Opera and Edge)</li> + <li><a href="https://github.com/yeoman/generator-chrome-extension">Chrome Extension generator </a>crée tout ce dont vous avez besoin pour commencer avec le développement de l'extension. Vous pouvez choisir l'interface utilisateur du navigateur (Browser,Page Action, Omnibox) et sélectionner les permissions dont vous avez besoin.</li> + <li><a href="http://extensionizr.com/">Extensionizr</a> est un assistant qui vous aide à créer une extension simple</li> + <li><a href="https://github.com/mahemoff/chrome-boilerplate">Chrome Boilerplate</a> est un code de référence pour Chrome WebExtension<span class="col-11 mr-2 text-gray-dark">.</span></li> + <li><a href="https://github.com/sitepoint/ChromeSkel_a">Skeleton Chrome Extension</a> est une extension bootstrap et un modèle</li> +</ul> + +<h2 id="Documentation">Documentation</h2> + +<ul> + <li><a href="https://wiki.mozilla.org/Add-ons/developer/communication">Page du projet WebExtensions</a> sur le wiki de Mozilla</li> + <li><a href="/fr/Add-ons/WebExtensions">Guide pratique</a> couvrant les cas communs de développement d'extension, comme <a href="/fr/Add-ons/WebExtensions/Intercept_HTTP_requests">intercepter des requêtes web</a> et <a href="/fr/Add-ons/WebExtensions/Add_a_button_to_the_toolbar">ajouter un bouton à la barre d'outils</a></li> + <li><a href="/fr/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK">Comparaison avec the Add-on SDK</a></li> + <li><a href="/fr/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions">Comparaison avec XUL/XPCOM extensions</a></li> + <li><a href="/fr/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">Tableau de compatibilité du navigateur</a> pour toutes les APIs WebExtensions</li> + <li><a href="/fr/Add-ons/WebExtensions/Examples">Examples d'extensions</a></li> +</ul> + +<h2 id="Contact">Contact</h2> + +<ul> + <li> + <p>Vous pouvez utiliser les liens <a href="/fr/Add-ons#Contact_us">ici</a> pour obtenir de l'aide, vous tenir à jour avec les nouvelles des add-ons, et nous donner des commentaires.</p> + </li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/prerequisites/index.html b/files/fr/mozilla/add-ons/webextensions/prerequisites/index.html new file mode 100644 index 0000000000..bee9530e13 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/prerequisites/index.html @@ -0,0 +1,11 @@ +--- +title: Prerequisites +slug: Mozilla/Add-ons/WebExtensions/Prerequisites +tags: + - Draft + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Prerequisites +--- +<div>{{AddonSidebar}}</div> + +<p>Tout ce dont vous avez besoin pour Firefox 45 ou supérieur. Voir <a href="/fr/Add-ons/WebExtensions/Your_first_WebExtension">votre première extension</a> pour commencer.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/publishing_your_webextension/index.html b/files/fr/mozilla/add-ons/webextensions/publishing_your_webextension/index.html new file mode 100644 index 0000000000..8f50b00eaf --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/publishing_your_webextension/index.html @@ -0,0 +1,58 @@ +--- +title: Publier votre extension +slug: Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Package_your_extension_ +--- +<div>{{AddonSidebar}}</div> + +<div class="pull-aside"> +<div class="moreinfo"> +<p>Les extensions packagées dans Firefox sont appelées "fichiers XPI", qui sont des fichiers ZIP avec une extension différente.</p> + +<p>Vous n'avez pas besoin d'utiliser l'extension XPI lors du téléchargement vers AMO.</p> +</div> +</div> + +<p><span class="seoSummary">Pendant le développement, votre extension sera constituée d'un répertoire contenant un fichier manifest.json et les autres fichiers dont elle a besoin : scripts, icônes, documents HTML, etc. Vous devez les zipper dans un seul fichier pour les télécharger vers AMO.</span></p> + +<p>La façon la plus pratique de compiler votre extension est d'utiliser la <a href="/fr/Add-ons/WebExtensions/web-ext_command_reference#web-ext_build">build web-ext</a>. Cet outil exclut automatiquement les fichiers qui sont généralement indésirables dans les paquets, comme les fichiers <code>.git</code> . Sinon, suivez les instructions ci-dessous pour le système d'exploitation.</p> + +<div class="note"> +<p><strong>Astuce</strong>. Le fichier ZIP doit être un fichier ZIP des fichiers de l'extension elle-même, et non du répertoire qui les contient.</p> +</div> + +<h3 id="Windows">Windows</h3> + +<ol> + <li>Ouvrez le répertoire contenant les fichiers de votre extension.</li> + <li>Sélectionnez tous les fichiers et répertoires nécessaires pour implémenter votre extension, excluez les fichiers qui ne sont pas nécessaires pour exécuter l'extension, tels que <code>.git</code>, les sources graphiques et les fichiers similaires.</li> + <li>Ouvrez le menu contextuel et cliquez sur <strong>Envoyer</strong> dans le <strong>dossier compressé (zipped)</strong>.</li> +</ol> + +<p><img alt="Illustration of how to use the send to compress folder feature in File Explorer to create a web extension package." src="https://mdn.mozillademos.org/files/16565/creating_package_windows.png"></p> + +<h3 id="macOS">macOS</h3> + +<ol> + <li>Ouvrez le répertoire contenant les fichiers de votre extension.</li> + <li>Sélectionnez tous les fichiers et répertoires nécessaires pour implémenter votre extension, excluez les fichiers qui ne sont pas nécessaires pour exécuter l'extension, tels que <code>.git</code>, les sources graphiques et les fichiers similaires.</li> + <li>Ouvrez le menu contextuel et cliquez <strong>Compress <em>n</em> éléments</strong>.</li> +</ol> + +<p><img alt="Illustration of how to use the compress feature in Finder to create a web extinction package." src="https://mdn.mozillademos.org/files/16564/creating_package_mac.png" style="height: 437px; width: 768px;"></p> + +<div class="pull-aside"> +<div class="moreinfo">Voir <a href="http://www.info-zip.org/mans/zip.html">http://www.info-zip.org/mans/zip.html</a>.</div> +</div> + +<h3 id="Linux_macOS_Terminal">Linux / macOS Terminal</h3> + +<ol> + <li>Ouvrir un Terminal.</li> + <li>Ouvrez le répertoire contenant les fichiers de votre extension, en utilisant la commande<br> + <code>cd path/to/<em>my-extension</em>/</code></li> + <li>ZIPez le contenu du répertoire en vous souvenant d'exclure les fichiers qui ne sont pas nécessaires à l'exécution de l'extension, tels que <code>.git</code>, les sources graphiques, et les fichiers similaires - en utilisant la commande<br> + <code>zip -r -FS ../<em>my-extension</em>.zip * --exclude *.git*</code></li> +</ol> diff --git a/files/fr/mozilla/add-ons/webextensions/que_faire_ensuite/index.html b/files/fr/mozilla/add-ons/webextensions/que_faire_ensuite/index.html new file mode 100644 index 0000000000..aabc4dccba --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/que_faire_ensuite/index.html @@ -0,0 +1,72 @@ +--- +title: Que faire ensuite ? +slug: Mozilla/Add-ons/WebExtensions/que_faire_ensuite +tags: + - Débutant + - Extensions + - WebExtension +translation_of: Mozilla/Add-ons/WebExtensions/What_next_ +--- +<div>{{AddonSidebar}}</div> + +<p>Vous serez maintenant prêt à commencer à transformer votre idée pour une extension de navigateur dans la réalité. Avant de commencer ce périple, ça vaut la peine d'être au courant de quelques choses qui vous aides à en faire une.</p> + +<p>Vous pouvez trouver plus d'informations sur de nombreux sujets abordés sur cette page sur <a href="https://extensionworkshop.com">l'atelier d'extension</a>, un site web dédié à vous aider à écrire, tester, publier et distribuer des extensions pour Firefox.</p> + +<h2 id="Votre_environnement_de_développement">Votre environnement de développement</h2> + +<p>Vous n'avez pas besoin d'outils spéciaux de développement ou de création d'environnement pour créer des extensions de navigateur : il est tout à fait possible de créer de superbes extensions de navigateur avec un simple éditeur de texte. Cependant, vous avez peut-être développé pour le Web et avez un ensemble d'outils et un environnement que vous souhaitez réutiliser. Si vous le faites, vous devez être conscient de certaines choses.</p> + +<p>Si vous utilisez des outils de minimisation ou d'obscurcissement pour fournir votre code final, vous devez fournir votre code source au <a href="#The_review_process">processus de révision AMO</a>. De plus, les outils que vous utilisez — minification, obscurcissement et construction — doivent être open source (ou offrir une utilisation gratuite illimitée) et être disponible pour fonctionner sur l'ordinateur de l'utilisateur (Windows, Mac, ou Linux). Malheureusement, nos réviseurs ne peuvent pas travailler avec des outils commerciaux ou basés sur le Web.</p> + +<p><a href="https://extensionworkshop.com/documentation/develop/browser-extension-development-tools/">En savoir plus sur les outils de développement sur l'atelier d'extensions</a></p> + +<h2 id="Bibliothèques_tierces">Bibliothèques tierces</h2> + +<p>Les bibliothèques tierces sont un excellent moyen d'ajouter rapidement des fonctionnalités ou fonctionnalités complexes aux extensions de votre navigateur. Lorsque vous soumettez une extension au <a href="#The_review_processv">processus de révision AMO</a>, le processus considère également les bibliothèques tierces utilisées. Pour rationaliser la révision, assurez-vous de toujours télécharger des bibliothèques tierces à partir de leur site Web officiel ou référentiel, et si la bibliothèque est minifiée, fournissez un lien vers le code source. Veuillez noter que les bibliothèques tierces ne peuvent être modifiées d'aucune façon.</p> + +<p><a href="https://extensionworkshop.com/documentation/publish/source-code-submission/">En savoir plus sur la soumission du code source sur l'atelier d'extensions</a></p> + +<h2 id="Laccord_de_distribution_des_modules_complémentaires_de_Firefox">L'accord de distribution des modules complémentaires de Firefox</h2> + +<p>Les extensions de navigateur doivent être signées pour être installées dans les réalisations ou versions bêta de Firefox. La signature a lieu dans addons.mozilla.org (AMO) et est soumise aux termes et conditions du contrat de distribution de Firefox Add-on. L'objectif de l'accord est de garantir que les utilisateurs de Firefox aient accès à des modules complémentaires de qualité et bien supportés qui améliorent l'expérience de Firefox.</p> + +<p><a href="https://extensionworkshop.com/documentation/publish/firefox-add-on-distribution-agreement/">Lire l'accord sur l'atelier d'extensions</a></p> + +<p><a href="https://extensionworkshop.com/documentation/publish/signing-and-distribution-overview/">En savoir plus sur la signature de l'atelier extensions</a></p> + +<h2 id="Le_processus_dexamen">Le processus d'examen</h2> + +<p>Lorsqu'une extension de navigateur est soumise à la signature, elle fait l'objet d'un examen automatisé. Il peut également faire l'objet d'un examen manuel lorsque l'examen automatisé détermine qu'un examen manuel est nécessaire. L'extension de votre navigateur ne sera pas signée tant qu'elle ne sera pas approuvée automatiquement et que sa signature sera révoquée si elle échoue à l'examen manuel. Le processus de révision suit un ensemble de directives strictes, il est donc facile de vérifier et d'éviter tout problème de révision probable.</p> + +<p><a href="https://extensionworkshop.com/documentation/publish/add-on-policies/">Consultez la politique de révision et les lignes directrices sur l'atelier d'extensions</a></p> + +<h2 id="AMO_a_présenté_des_extensions_de_navigateur">AMO a présenté des extensions de navigateur</h2> + +<p>Si vous choisissez de lister l'extension de votre navigateur sur AMO, votre extension pourrait figurer sur le site Web d'AMO, dans le gestionnaire de modules complémentaires du navigateur Firefox ou ailleurs sur un site Web de Mozilla. Nous avons compilé une liste de directives sur la manière dont les extensions sont sélectionnées pour être mises en avant. En suivant ces directives, vous donnez à votre extension les meilleures chances d'être sélectionnée.</p> + +<p><a href="https://extensionworkshop.com/documentation/publish/recommended-extensions/">En savoir plus sur la façon de faire figurer vos modules complémentaires dans l'atelier d'extension</a></p> + +<h2 id="Continuez_votre_expérience_dapprentissage">Continuez votre expérience d'apprentissage</h2> + +<p>Maintenant, vous savez ce qui nous attend, il est temps de plonger dans plus de détails sur le développement de l'extension du navigateur. Dans les sections suivantes, vous découvrirez :</p> + +<ul> + <li>En savoir plus sur les concepts fondamentaux des extensions de navigateur, en commençant par les détails sur l'<a href="/fr/Add-ons/WebExtensions/Using_the_JavaScript_APIs">utilisation des APIs Javascript</a>.</li> + <li>Un guide des <a href="/fr/Add-ons/WebExtensions/user_interface">composants de l'interface utilisateur</a> disponibles pour les extensions de votre navigateur.</li> + <li>Une collection de guides pratiques sur la réalisation des tâches clés dans vos extensions ou l'utilisation des API JavaScript.</li> + <li>Un guide de référence complet sur les <a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">APIs JavaScript</a>.</li> + <li>Un guide de référence complet sur les <a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json">clés du manifeste</a>.</li> +</ul> + +<p>Vous voudrez également vous rendre à l'Atelier des extensions où vous trouverez tout ce que vous devez savoir sur la création d'extensions pour Firefox, notamment :</p> + +<ul> + <li><a href="https://extensionworkshop.com/#about">Un aperçu des fonctionnalités des extensions dans Firefox</a></li> + <li><a href="https://extensionworkshop.com/documentation/develop/">Les détails des outils et des processus de développement et de tests</a></li> + <li><a href="https://extensionworkshop.com/documentation/publish/">Comment publier votre extensions sur addons.mozilla.org ou la distribuer vous-même</a></li> + <li><a href="https://extensionworkshop.com/documentation/manage/">Comment gérer votre extension publiée</a></li> + <li><a href="https://extensionworkshop.com/documentation/enterprise/">Un guide entreprise pour le développement et l'utilisation des extensions</a></li> + <li><a href="https://extensionworkshop.com/documentation/themes/">Comment développer des thèmes pour Firefox</a></li> + <li><a href="https://extensionworkshop.com/community/">Des détails sur les communautés de développeurs de Firefox</a></li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/que_signifie_le_rejet_d_une_revision_pour_les_utilisateurs/index.html b/files/fr/mozilla/add-ons/webextensions/que_signifie_le_rejet_d_une_revision_pour_les_utilisateurs/index.html new file mode 100644 index 0000000000..df7532390b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/que_signifie_le_rejet_d_une_revision_pour_les_utilisateurs/index.html @@ -0,0 +1,44 @@ +--- +title: Que signifie le rejet d'une révision pour les utilisateurs ? +slug: >- + Mozilla/Add-ons/WebExtensions/que_signifie_le_rejet_d_une_revision_pour_les_utilisateurs +tags: + - Add-ons + - Extensions + - Guide + - Review + - WebExtensions + - publication +translation_of: Mozilla/Add-ons/WebExtensions/What_does_review_rejection_mean_to_users +--- +<p>{{AddonSidebar}}</p> + +<p><span class="seoSummary">Cet article explique comment les utilisateurs et les personnes à la recherche de votre extension sont affectés si vous obtenez un rejet du processus de révision Mozilla.</span></p> + +<h2 id="Aperçu_de_lexamen">Aperçu de l'examen</h2> + +<p>Toute extension que vous soumettez à <a href="http://addons.mozilla.org">addons.mozilla.org</a> (AMO) fait l'objet de deux évaluations. Il y a une validation machine de votre extension dans le cadre du flux de soumission, et un examen humain qui a lieu après la publication de votre extension.</p> + +<p>La validation de la machine vous indique immédiatement si quelque chose doit être corrigé pour permettre la publication de votre extension. L'examen humain a lieu après la publication et peut avoir lieu à tout moment. Au début de cet examen, l'examinateur peut demander des éclaircissements au sujet de votre prolongation. Le résultat de l'examen pourrait être le rejet de la dernière version de votre extension, et le rejet des versions antérieures non révisées si elles contiennent également des problèmes.</p> + +<p>Pour plus d'informations sur ces processus, voir <a href="/en-US/docs/Mozilla/Add-ons/Distribution/Submitting_an_add-on">Soumission d'un add-on</a> et de la <a href="/fr/docs/Mozilla/Add-ons/AMO/Règles/Reviews">politiques Add-on</a>.</p> + +<h2 id="Incidence_du_rejet_de_lexamen">Incidence du rejet de l'examen</h2> + +<p>Si votre prolongation est rejetée par l'examen humain :</p> + +<ul> + <li>Vous recevez un courriel expliquant la raison du rejet et les mesures que vous devez prendre pour corriger les problèmes identifiés.</li> + <li>Si une version antérieure de votre extension est publique, celle-ci devient celle vue par les visiteurs d'AMO.</li> + <li>S'il n'y a pas de version publique de votre poste à afficher, l'inscription de votre poste sur AMO est suspendue. Cela signifie que votre extension n'apparaît plus dans aucune liste sur AMO et ne sera plus retournée dans les résultats des recherches effectuées par les visiteurs AMO. Si quelqu'un suit un lien externe vers votre liste d'extensions, il arrivera à une page 404.</li> +</ul> + +<p>Les personnes qui ont installé votre extension ne remarqueront aucun changement suite au rejet de la révision ; elles pourront continuer à utiliser votre extension comme d'habitude.</p> + +<h2 id="Liste_de_blocage">Liste de blocage</h2> + +<p>La liste de blocage est un mécanisme qui permet à Mozilla d'empêcher l'utilisation d'une extension dans Firefox (un bloc dur) ou de demander aux utilisateurs de confirmer qu'ils souhaitent exécuter l'extension (un bloc mou).</p> + +<p>Si vous ne répondez pas à la rétroaction d'examen et ne corrigez pas rapidement les problèmes, votre prolongation pourrait être considérée pour l'inscription sur la liste de blocage, particulièrement si les problèmes identifiés ont trait à des vulnérabilités critiques en matière de sécurité, de stabilité ou de rendement. Cependant, si votre extension est délibérément malveillante ou abusive, elle peut être bloquée sans notification.</p> + +<p>Pour plus d'informations sur la liste de blocage, voir <a href="https://wiki.mozilla.org/Blocklisting">Liste de blocage</a> dans le wiki Mozilla.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/securite_bonne_pratique/index.html b/files/fr/mozilla/add-ons/webextensions/securite_bonne_pratique/index.html new file mode 100644 index 0000000000..05a6a7a699 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/securite_bonne_pratique/index.html @@ -0,0 +1,63 @@ +--- +title: Bonnes pratiques de sécurité +slug: Mozilla/Add-ons/WebExtensions/securite_bonne_pratique +tags: + - Débutant + - Extensions + - Intermédiaire + - Sécurité + - WebExtensions + - revue +translation_of: Mozilla/Add-ons/WebExtensions/Security_best_practices +--- +<div>{{AddonSidebar}}</div> + +<p>Voici une liste des meilleures pratiques à suivre pour protéger les utilisateurs de votre extension. Si vous ne suivez pas ces bonnes pratiques, votre extension risque d'échouer les avis sur <a href="https://addons.mozilla.org">addons.mozilla.org</a>, Si vous ne suivez pas ces bonnes pratiques, votre extension risque d'échouer les avis survous empêchant ainsi de distribuer votre module ou de le bloquer à l'installation dans Firefox.</p> + +<ul> + <li><strong>Ne pas injecter ou incorporer des scripts distants</strong><br> + Si vous identifiez un service que vous souhaitez utiliser dans votre extension, n'injectez pas le script du service à partir d'une source distante. Une telle approche est risquée, car le code pourrait être modifié sans que vous le sachiez — et, surtout, sans la connaissance et le consentement de l'utilisateur des extensions — compromettant la sécurité de votre extension. Vous devriez donc ajouter une copie du script dans le code de votre extension.</li> + <li><strong>Assurez-vous d'insérer le contenu distant en toute sécurité</strong><br> + Assurez-vous de suivre les bonnes pratiques lorsque votre extension utilise du contenu distant : + <ul> + <li>insérez des chaînes à l'aide de méthodes de manipulation DOM natives sécurisées : <a href="/fr/docs/Web/API/Document/createElement">document.createElement</a>, <a href="/fr/docs/Web/API/Element/setAttribute">Element.setAtttribute</a>, et <a href="/fr/docs/Web/API/Node/textContent">Node.textContent</a>.</li> + <li>utilisez les fonctions <code>attr()</code> et <code>text()</code> pour insérer des chaînes.</li> + <li>assainir le contenu HTML avec <a href="https://github.com/cure53/DOMPurify">DOMPurify</a>.</li> + <li>utiliser des commandes de moteur de modèle qui échappent à tout code HTML avant de l'insérer.</li> + </ul> + + <p>Pour plus d'informations, voir <a href="/fr/Add-ons/WebExtensions/Safely_inserting_external_content_into_a_page">Insérer du contenu externe en toute sécurité dans une page</a>.</p> + </li> + <li><strong>Utiliser XHR pour Google Analytics</strong><br> + Si vous souhaitez ajouter Google Analytics à votre extension, n'insérez pas le code JavaScript Google Analytics. Il est plutôt recommandé d'utiliser l'API REST Google Analytics dans un appel XHR, par exemple: + <pre class="brush: js">let request = new XMLHttpRequest(); +let message = + "v=1&tid=" + GA_TRACKING_ID + "&cid= " + GA_CLIENT_ID + "&aip=1" + + "&ds=add-on&t=event&ec=AAA&ea=" + aType; + +request.open("POST", "https://www.google-analytics.com/collect", true); +request.send(message);</pre> + Vous pouvez trouver plus d'informations dans l'article de blog <a href="https://blog.mozilla.org/addons/2016/05/31/using-google-analytics-in-extensions/">Utilisation de Google Analytics dans les Extensions</a>.</li> + <li><strong>Utiliser la stratégie de sécurité du contenu de l'extension standard (CSP)</strong><br> + La stratégie standard limite les sources à partir desquelles votre extension peut charger les ressources <a href="/fr/docs/Web/HTML/Element/script"><code><script></code></a> et <a href="/fr/docs/Web/HTML/Element/object"><code><object></code></a>, et interdit les pratiques potentiellement dangereuses, telles que l'utilisation de <a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a>. Bien que la clé manifest.json <a href="/fr/Add-ons/WebExtensions/manifest.json/content_security_policy">content_security_policy</a> vous permette de modifier la stratégie de sécurité du contenu de votre extension, cette opération n'est pas recommandée car elle empêche les extensions d'exécuter involontairement du contenu malveillant. Si votre CSP modifié autorise l'injection de script à distance, votre extension sera rejetée par AMO pendant la révision.<br> + Pour plus d'informations, voir <a href="/fr/Add-ons/WebExtensions/Content_Security_Policy#Default_content_security_policy">Stratégie de sécurité du contenu par défaut</a>.</li> + <li><strong>Partagez des objets avec JavaScript sur la page avec soin</strong><br> + Firefox fournit <code>wrappedJSObject</code> afin qu'un script de contenu puisse accéder aux objets JavaScript créés par les scripts de page. Le danger ici est qu'une page Web malveillante puisse, par exemple, modifier les fonctions des objets JavaScript pour exécuter son propre code.<br> + Pour plus d'informations, voir <a href="/fr/Add-ons/WebExtensions/Sharing_objects_with_page_scripts">Accès aux objets de script de page à partir de scripts de contenu</a>.</li> + <li><strong>Utilisez <code>window.eval()</code> dans les scripts de contenu avec prudence</strong><br> + Vous devez être très prudent lorsque vous exécutez du code dans le contexte d'une page. Une page Web malveillante pourrait tenter d'exécuter du code en exploitant l'utilisation de <code>window.eval()</code>. Il peut le faire, par exemple, en redéfinissant les objets que votre code pourrait vouloir évaluer.<br> + Pour plus d'informations, voir <a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/eval#Don't_use_eval_needlessly!">Ne pas utiliser eval inutilement !</a></li> + <li><strong>Créez votre interface utilisateur avec des composants d'extension</strong><br> + Créez l'interface utilisateur de votre extension à l'aide des <a href="/fr/Add-ons/WebExtensions/user_interface">fonctions intégrées de l'interface utilisateur d'extension</a>, telles que les pages groupées, pageAction et les fenêtres contextuelles sur pageAction et browserAction. N'ajoutez pas d'éléments d'interface utilisateur, tels que des boutons ou des barres d'outils, directement aux pages Web. Si vous le faites, les scripts sur la page Web pourraient compromettre votre extension. Voir <a href="https://www.grepular.com/Keybase_Browser_Extension_Insecure">extension du navigateur Keybase Insecure</a> pour un exemple des problèmes potentiels.<br> + Si les composants de l'interface utilisateur standard ne suffisent pas, utilisez des iframes avec des <a href="/fr/docs/Web/HTTP/Basics_of_HTTP/Data_URIs">URL de données</a> pour éviter les empreintes digitales ou ajoutez des iframes au code d'extension afin qu'une page ne puisse pas interagir avec le contenu de votre interface utilisateur, comme les boutons.</li> + <li><strong>Ajouter eslint-plugin-no-unsanitized à ESLint</strong><br> + Si vous utilisez ESLint pour vérifier votre code d'extension, pensez à ajouter eslint-plugin-no-unsanitized. Ce plug-in de règles ESLint signale les instances où du code non-initié provenant d'API ou d'entrées utilisateur peut provoquer des problèmes.</li> + <li><strong>Ne pas injecter les chemins moz-extension directement</strong><br> + Lorsque les liens, les inclusions ou les images injectés incluent des chemins vers <code>moz-extension://{hash}</code> le script de suivi d'une page peut utiliser cette information pour <a href="https://en.wikipedia.org/wiki/Device_fingerprint">identifier</a> l'utilisateur, car le hachage (UUID) est unique à l'installation de l'extension et, par conséquent, l'utilisateur.<br> + La meilleure façon d'éviter ce problème est de suivre les conseils généraux concernant l'injection de contenu. Cependant, si vous pensez que l'injection de contenu est votre seule approche pratique, assurez-vous que les chemins moz-extension sont incorporés dans un iframe en utilisant une <a href="/fr/docs/Web/HTTP/Basics_of_HTTP/Data_URIs">URL de données</a> ou l'attribut <a href="/fr/docs/Web/HTML/Element/iframe#attr-srcdoc">srcdoc</a>.</li> + <li><strong>S'assurer que les bibliothèques tierces sont à jour</strong><br> + tierces réputées seront mises à jour lorsque des problèmes seront détectés. L'utilisation de bibliothèques tierces périmées (et potentiellement non sécurisées) est fortement déconseillée et, lorsqu'un risque important est identifié, l'AMO peut agir pour bloquer les extensions en utilisant le code obsolète.<br> + Par conséquent, utilisez toujours la dernière version des bibliothèques tierces lorsque vous créez votre extension. Ensuite, prenez connaissance des mises à jour de ces bibliothèques et soyez prêt à mettre à jour votre extension pour vous assurer qu'elle utilise une version à jour de la bibliothèque.</li> + <li><strong>Ne pas modifier les bibliothèques tierces</strong><br> + Les modifications apportées à une bibliothèque tierce sont un indicateur significatif qu'un développeur essaie de cacher du code malveillant dans un code généralement connu et approuvé. AMO va donc essayer de détecter les modifications apportées aux bibliothèques tierces et peut désactiver les extensions lorsqu'il trouve des modifications.</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/test_des_fonctionnalites_persistantes_et_de_redemarrage/index.html b/files/fr/mozilla/add-ons/webextensions/test_des_fonctionnalites_persistantes_et_de_redemarrage/index.html new file mode 100644 index 0000000000..92e16e408d --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/test_des_fonctionnalites_persistantes_et_de_redemarrage/index.html @@ -0,0 +1,124 @@ +--- +title: Test des fonctionnalités persistantes et de redémarrage +slug: >- + Mozilla/Add-ons/WebExtensions/test_des_fonctionnalites_persistantes_et_de_redemarrage +tags: + - Comment + - Débutant + - Développement + - Intermédiaire + - WebExtensions + - add-on + - test + - web-ext +translation_of: Mozilla/Add-ons/WebExtensions/Testing_persistent_and_restart_features +--- +<p>{{AddonSidebar}}</p> + +<p>Lors du test de votre extension, vous pouvez remarquer que certaines fonctionnalités se réinitialisent ou cessent de fonctionner lorsque vous chargez une version mise à jour ou après le redémarrage de Firefox. Par exemple, vous pouvez utiliser le stockage local et remarquer que les données précédemment sauvegardées disparaissent lorsque vous rechargez votre extension. Alternativement, vous pouvez tester votre extension à travers un redémarrage de Firefox, mais notez que votre extension ne reste pas chargée.</p> + +<p>Cet article explique pourquoi vous voyez ces comportements. Il vous montre ensuite ce qu'il faut faire pour vous assurer que les fonctions persistent lorsque vous rechargez votre extension et comment configurer pour tester le comportement de redémarrage.</p> + +<p>Avant de regarder comment Firefox traite l'extension que vous testez; Il y a quelques fonctionnalités de Firefox et des extensions dont vous devez être conscient : l'ID du module complémentaire et les profils Firefox.</p> + +<h2 id="Qu'est-ce_qu'un_ID_complémentaire">Qu'est-ce qu'un ID complémentaire ?</h2> + +<p>L'ID de module complémentaire est utilisé pour identifier de manière unique chaque extension et à son tour, cet ID est utilisé pour lier une extension à certaines fonctionnalités des API WebExtension. Ces fonctionnalités sont:</p> + +<ul> + <li>{{WebExtAPIRef("storage.managed")}} — identifie les données comme appartenant à l'extension par son ID add-on.</li> + <li>{{WebExtAPIRef("storage.sync")}} — identifie les données comme appartenant à l'extension par son ID complémentaire.</li> + <li>{{WebExtAPIRef("identity.getRedirectURL")}} — l'URL de redirection inclut l'ID complémentaire de l'extension.</li> + <li><a href="/fr/Add-ons/WebExtensions/Native_messaging">Native messaging </a>— l'application native identifie les extensions qui peuvent communiquer avec elles par leur ID complémentaire.</li> + <li>{{WebExtAPIRef("pkcs11")}} — le module PKCS #11 identifie les extensions qui peuvent communiquer avec lui par leur ID complémentaire.</li> + <li>{{WebExtAPIRef("runtime.onMessageExternal")}} — une extension envoie des messages à un autre poste en utilisant son ID complémentaire comme adresse.</li> + <li>{{WebExtAPIRef("runtime.onConnectExternal")}} — une extension demande une connexion avec une extension par l'ID d'extension de l'autre extension.</li> + <li>{{WebExtAPIRef("browserAction")}} — la position sauvegardée du bouton est identifiée comme appartenant à l'extension en fonction de son ID add-on.</li> +</ul> + +<p>Une extension peut se voir attribuer un ID complémentaire en utilisant la clé <code>"applications"</code> du fichier manifest.json.</p> + +<pre class="brush: json">"applications": { + "gecko": { + "id": "addon@example.com", + } + }</pre> + +<p>Si l'extension n'a pas d'ID de module défini avec la clé <code>"applications"</code> , il reçoit un ID de module complémentaire via l'un des éléments suivants:</p> + +<ul> + <li>Si l'extension est soumise à l'AMO et signée, elle reçoit un identifiant lorsqu'elle est signée.</li> + <li>Si l'extension est chargée à l'aide de Load Temporary Add-on dans about:debugging un ID complémentaire temporaire lui est affecté.<br> + <img alt="Example of a temporarily loaded extension showing its various IDs" src="https://mdn.mozillademos.org/files/15774/Temporary_extensions.png" style="height: 289px; width: 837px;"></li> +</ul> + +<p>Vous remarquerez un ID supplémentaire dans l'image ci-dessus, l'UUID interne. C'est un identifiant unique donné à l'extension lors de l'installation. Il est utilisé pour définir l'emplacement de stockage des ressources incluses dans l'extension et identifier les données d'un poste dans <a href="/fr/docs/Web/API/Window/localStorage">window.localStorage</a> ou <a href="/fr/docs/Web/API/IndexedDB_API">indexedDB</a>. Cependant, vous n'avez pas besoin de connaître sa valeur. Son utilisation dans <code>window.localStorage</code> ou <code>indexedDB</code> est transparente et pour accéder aux ressources incluses dans l'extension, vous utilisez {{WebExtAPIRef("runtime.getURL")}}, qui renvoie le chemin d'accès aux ressources. De plus, étant donné qu'il est unique à chaque installation, il ne fournit pas d'ID pouvant être utilisé à d'autres fins.</p> + +<h2 id="Qu'est-ce_qu'un_profil_Firefox">Qu'est-ce qu'un profil Firefox?</h2> + +<p>Les données qui définissent la manière dont l'utilisateur a configuré Firefox, ainsi que les informations générées lors de la navigation sur le Web, telles que l'historique et les cookies, sont stockées dans un dossier spécial, appelé <a href="https://support.mozilla.org/fr/kb/profils-ou-firefox-conserve-donnees-utilisateur">profile</a>. En plus des cookies, le profil contient du stockage local et d'autres contenus liés au profil.</p> + +<h2 id="Comportement_d'extension_dans_Firefox">Comportement d'extension dans Firefox</h2> + +<p>Lorsque vous développez une extension, en supposant que vous n'avez pas défini d'ID complémentaire à l'aide de la clé <code>"applications"</code>, le comportement par défaut dans Firefox est le suivant :</p> + +<ul> + <li>lorsque vous utilisez la fonction Load Temporary Add-on dans environ: le débogage de votre extension se voit attribuer un nouvel ID de module complémentaire chaque fois que vous le chargez.</li> + <li>Lorsque vous utilisez Web-ext, en plus d'obtenir un nouvel ID complémentaire chaque fois que vous lancez une extension, il est également lancé dans un nouveau profil.</li> + <li>lorsqu'une extension temporairement chargée est déchargée, le stockage local, tel que celui utilisé par <code>storage.local</code>, <code>window.localStorage</code>, et <code>indexedDB</code>, est supprimé.</li> + <li>Lorsque vous arrêtez Firefox, les extensions temporairement chargées sont déchargées et ne sont donc pas disponibles lorsque Firefox redémarre. Cela inclut les extensions chargées avec Load Temporary Add-on dans about:debugging et web-ext.</li> +</ul> + +<p>Les conséquences de ce comportement, lors du rechargement d'une extension, sont les suivantes :</p> + +<ul> + <li>toutes les données dans le stockage local ou de synchronisation sont perdues.</li> + <li>toute URL de redirection devient invalide.</li> + <li>l'extension ne pourra plus communiquer avec des applications natives ou un module PKCS #11.</li> + <li>il ne sera plus possible d'envoyer des messages ou de créer des connexions entre les extensions.</li> + <li>vous ne pouvez pas tester le comportement de l'extension si Firefox est arrêté et redémarré.</li> + <li>Les positions de <code>browserAction</code> ne sont pas reportées</li> +</ul> + +<h2 id="Que_dois-je_faire_pour_m'assurer_de_pouvoir_tester_mon_extension">Que dois-je faire pour m'assurer de pouvoir tester mon extension ?</h2> + +<p>Pour que votre extension se comporte comme une extension signée pendant les tests de développement, utilisez les techniques suivantes :</p> + +<ul> + <li>pour vous assurer qu'une extension peut utiliser des fonctionnalités dépendantes de l'ID complémentaire entre les rechargements, telles que le stockage local ou la communication d'application native : + <ul> + <li>définir un ID de module complémentaire à l'aide de la clé <code>"applications"</code> dans le fichier manifest.json de l'extension.</li> + <li>lorsque vous utilisez web-ext, assurez-vous d'utiliser le même profil.</li> + </ul> + </li> + <li>pour vous assurer d'utiliser le même profil pour plusieurs tests d'une extension lors de l'utilisation de web-ext : + <ul> + <li>en option, utilisez <a href="https://support.mozilla.org/fr/kb/utiliser-gestionnaire-profils-creer-supprimer-profils">Profile Manager</a> pour créer un nouveau profil Firefox.</li> + <li>rouvez le chemin vers votre nouveau profil ou le profil Firefox par défaut en suivant les instructions dans <a href="https://support.mozilla.org/fr/kb/profils-ou-firefox-conserve-donnees-utilisateur#w_trouver-votre-profil-sans-ouvrir-firefox">Comment trouver mon profil ?</a></li> + <li>ajoutez le chemin du profil Firefox à la commande <code>web-ext run</code> comme ceci :<br> + <code>web-ext run --firefox-profile [A PATH TO A FIREFOX PROFILE] --keep-profile-changes</code></li> + </ul> + </li> + <li>pour préserver les données <code>storage.local</code>, l'accès à <code>window.localStorage</code> ou les données <code>indexedDB</code> lors de la suppression d'un add-on temporaire (par exemple entre deux redémarrages du navigateur) : + <ul> + <li>allez à about:config et réglez <code>extensions.webextensions.keepStorageOnUninstall</code> et <code>extensions.webextensions.keepUuidOnUninstall</code> à <code>true</code>.</li> + </ul> + </li> + <li>pour tester le comportement de redémarrage : + <ul> + <li>définir un ID de module complémentaire à l'aide de la clé <code>"applications"</code> dans le fichier manifest.json de l'extension.</li> + <li>installez les éditions <a href="https://www.mozilla.org/firefox/nightly/all/">Nightly</a> ou <a href="https://www.mozilla.org/firefox/developer/">Developer</a> de Firefox. Remarque : Vous pouvez également utiliser les versions <a href="https://wiki.mozilla.org/Add-ons/Extension_Signing#Unbranded_Builds">unbranded Beta et Release builds</a>.</li> + <li>allez à about:config et définissez <code>xpinstall.signatures.required</code> à <code>false</code>.</li> + <li>Compressez votre extension dans un fichier ZIP <a href="/fr/Add-ons/WebExtensions/web-ext_command_reference#web-ext_build">using web-ext</a> ou en <a href="/fr/Add-ons/WebExtensions/Publishing_your_WebExtension#1._Zip_up_your_extension's_files">compressant manuellement</a>.</li> + <li>installez votre extension en utilisant Install Add-on From File dans le gestionnaire de modules complémentaires (about:addons).<br> + Remarque: N'oubliez pas que vous devrez recharger votre extension chaque fois que vous la modifiez.<br> + Remarque: Si vous ne définissez pas l'ID du module complémentaire, lorsque vous chargez l'extension, vous obtenez une erreur comme celle-ci : + <p><img alt="Example of the message displayed when an add-on ID cannot be found for an extension" src="https://mdn.mozillademos.org/files/15775/ID_failure.png" style="height: 163px; width: 429px;"></p> + + <p>avec une erreur correspondante dans la console du navigateur .</p> + + <p><img alt="Example of the message displayed in the browser console when an add-on ID cannot be found for an extension" src="https://mdn.mozillademos.org/files/15776/ID_failure_console.png" style="height: 116px; width: 1167px;"></p> + </li> + </ul> + </li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/tips/index.html b/files/fr/mozilla/add-ons/webextensions/tips/index.html new file mode 100644 index 0000000000..853efa09b2 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/tips/index.html @@ -0,0 +1,56 @@ +--- +title: Trucs et astuces +slug: Mozilla/Add-ons/WebExtensions/Tips +tags: + - Astuces + - ECMAScript + - Trucs + - Trucs et Astuces + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Tips +--- +<p>{{AddonSidebar}}</p> + +<p>Cette page contient divers conseils et astuces qui devraient être utiles à beaucoup de personnes développant des extensions à l'aide des API WebExtension.</p> + +<h2 id="Utilisation_des_fonctionnalités_JavaScript_avancées_d'ECMAScript_2015_et_2016">Utilisation des fonctionnalités JavaScript avancées d'ECMAScript 2015 et 2016</h2> + +<p>Firefox prend <a href="/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla">en charge de nombreuses fonctionnalités de ECMAScript 2015</a> hors de la boite. Cependant, plusieurs nouvelles fonctionnalités expérimentales ne sont pas disponibles sur le Web ou WebExtensions par défaut. Si vous souhaitez utiliser ces fonctionnalités, il est préférable de transférer votre code à l'aide d'un outil tel que <a href="https://babeljs.io/">Babel</a>.</p> + +<p>Attention, tout ce qui se trouve en dessous de cette ligne est obsolète et a été retiré de Babel 6.</p> + +<p>Babel fournit des transformations pour la grande majorité des fonctionnalités ES2015 et les active par défaut. Puisque Firefox supporte déjà la plupart d'entre eux, il est préférable de configurer Babel pour les ignorer. Nous vous suggérons de créer un fichier <code>.babelrc</code>, ou une section <code>babel</code> dans le fichier <code>package.json</code> de votre projet contenant les éléments suivants :</p> + +<pre class="brush: js">{ + "env": { + "firefox": { + "sourceMaps": "inline", + "blacklist": [ + "es5.properties.mutators", + "es6.arrowFunctions", + "es6.destructuring", + "es6.forOf", + "es6.parameters", + "es6.properties.computed", + "es6.properties.shorthand", + "es6.spec.symbols", + "es6.spread", + "es6.tailCall", + "es6.templateLiterals", + "es6.regex.sticky", + "es6.regex.unicode" + ] + } + } +} +</pre> + +<p>Ensuite, pour compiler un script individuel, lancez simplement :</p> + +<pre class="brush: sh">BABEL_ENV=firefox babel <filename> +</pre> + +<p>Ou, pour compiler chaque fichier JavaScript sous le répertoire <code>src</code> et placer les fichiers compilés dans la <code>compilation</code>, en copiant les fichiers non-JavaScript dans le processus, lancez:</p> + +<pre class="brush: sh">BABEL_ENV=firefox babel -Dd compiled src +</pre> diff --git a/files/fr/mozilla/add-ons/webextensions/travailler_avec_des_identites_contextuelles/index.html b/files/fr/mozilla/add-ons/webextensions/travailler_avec_des_identites_contextuelles/index.html new file mode 100644 index 0000000000..7acabb6773 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/travailler_avec_des_identites_contextuelles/index.html @@ -0,0 +1,169 @@ +--- +title: Travailler avec des identités contextuelles +slug: Mozilla/Add-ons/WebExtensions/travailler_avec_des_identites_contextuelles +tags: + - Add-ons + - Comment + - Contextual identities + - Débutant + - Extensions + - Hox-to + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Work_with_contextual_identities +--- +<p>{{AddonSidebar}}</p> + +<p>Beaucoup de gens ont besoin ou veulent interagir avec le web en utilisant plusieurs personnages. Ils peuvent avoir des comptes pour le travail sur le Web et le courrier électronique personnel. Ils peuvent se déconnecter de leurs comptes de médias sociaux avant d'accéder aux achats en ligne, afin de s'assurer que les scripts de suivi sur les sites d'achat ne peuvent pas prendre en charge leur activité de médias sociaux. Pour répondre à ces exigences, les utilisateurs finissent souvent par utiliser une fenêtre de navigateur standard et privée ou deux navigateurs différents.</p> + +<p>Pour répondre à ce besoin, Firefox inclut une fonctionnalité connue sous le nom d'identités contextuelles, d'onglets de conteneurs ou de conteneurs de comptes. Cette fonctionnalité permet la création d'un conteneur de cookies pour chacune des identités que l'utilisateur souhaite utiliser dans son navigateur. Les onglets peuvent être associés à l'une de ces identités, en conservant les cookies distincts de ceux des autres identités dans le navigateur. Le résultat pratique est que, par exemple, un utilisateur peut avoir une identité personnelle et professionnelle. Ils peuvent ensuite utiliser l'identité personnelle dans un onglet, où ils se connectent à leur messagerie Web personnelle, et l'identité professionnelle dans un autre onglet, où ils se connectent à leur messagerie Web professionnelle.</p> + +<p>Pour plus d'informations sur cette fonctionnalité, voir :</p> + +<ul> + <li><a href="https://blog.mozilla.org/firefox/introducing-firefox-multi-account-containers/">Mettez vos multiples personnalités en ligne dans Firefox Multi-Compte ContaYouiners (anglais)</a></li> + <li><a href="https://wiki.mozilla.org/Security/Contextual_Identity_Project/Containers">Securité / Projet d'identité contextuelle / conteneurs (anglais)</a></li> + <li><a href="https://support.mozilla.org/fr/kb/onglets-contextuels-avec-les-containers">Article de support Firefox sur les conteneurs (français)</a></li> +</ul> + +<h2 id="API_pour_travailler_avec_des_identités_contextuelles">API pour travailler avec des identités contextuelles</h2> + +<p>Pour utiliser les fonctionnalités d'identité contextuelle dans les extensions, vous utiliserez deux APIs :</p> + +<ul> + <li>{{WebExtAPIRef("contextualIdentities")}} qui permet à une extension d'ajouter, d'interroger, de mettre à jour et de supprimer des identités contextuelles.</li> + <li>{{WebExtAPIRef("tabs")}} ou plus précisément {{WebExtAPIRef("tabs.create")}} qui vous permet de créer un onglet utilisant le conteneur d'une identité contextuelle (magasin de cookies).</li> +</ul> + +<h2 id="Permissions">Permissions</h2> + +<p>Pour utiliser l'API {{WebExtAPIRef("contextualIdentities")}} vous devez inclure la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> "contextualIdentities" dans votre fichier <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a>. Vous n'avez pas besoin de la permission "tabs" pour utiliser {{WebExtAPIRef("tabs.create")}} ; vous avez besoin de la permission "cookies" pour spécifier le conteneur de cookies que vous souhaitez utiliser.</p> + +<h2 id="Exemple_de_procédure_pas_à_pas">Exemple de procédure pas à pas</h2> + +<p>L'exemple d'extension <a href="https://github.com/mdn/webextensions-examples/tree/master/contextual-identities">contextual-identities</a> fournit un bouton de barre d'outils avec une fenêtre qui répertorie les identités dans le navigateur. Pour chaque identité, l'extension fournit des options permettant de créer un nouvel onglet en utilisant son conteneur de cookies ou de supprimer tous les onglets de l'identité.</p> + +<p>Voici une courte vidéo de l'extension en action :</p> + +<p>{{EmbedYouTube("SgLCS7_ppas")}}</p> + +<h3 id="manifest.json">manifest.json</h3> + +<p>Les principales caractéristiques du fichier <a href="https://github.com/mdn/webextensions-examples/blob/master/contextual-identities/manifest.json">manifest.json</a> sont :</p> + +<ul> + <li>La demande de permissions : + <pre class="brush: json"> "permissions": [ + "contextualIdentities", + "cookies" + ],</pre> + </li> + <li>spécification du bouton de la barre d'outils (browseAction) donnant accès aux fonctionnalités de l'extension : + <pre class="brush: json"> "browser_action": { + "browser_style": true, + "default_title": "Contextual Identities", + "default_popup": "context.html", + "default_icon": { + "128": "identity.svg" + }</pre> + </li> +</ul> + +<h2 id="context.html">context.html</h2> + +<p>Une fenêtre contextuelle sur le bouton de la barre d'outils fournit l'interface utilisateur de l'extension. <a href="https://github.com/mdn/webextensions-examples/blob/master/contextual-identities/context.html">context.html</a> implémente ce popup, mais c'est juste un shell dans lequel le script context.js écrit la liste des identités contextuelles et leurs options associées.</p> + +<pre class="brush: html"> <body> + <div class="panel"> + <div id="identity-list"></div> + </div> + <script src="context.js"></script> + </body></pre> + +<h2 id="context.js">context.js</h2> + +<p>Toutes les fonctionnalités de l'extension sont implémentées via <a href="https://github.com/mdn/webextensions-examples/blob/master/contextual-identities/context.js">context.js</a>, qui est appelée chaque fois que la barre d'outils est affichée.</p> + +<p>Le script obtient d'abord le div 'identity-list' depuis context.html.</p> + +<pre class="brush: json">var div = document.getElementById('identity-list');</pre> + +<p>Il vérifie ensuite si la fonction d'identités contextuelles est activée dans le navigateur. Si ce n'est pas le cas, des informations sur la façon de l'activer sont ajoutées à la fenêtre contextuelle.</p> + +<pre class="brush: json">if (browser.contextualIdentities === undefined) { + div.innerText = 'browser.contextualIdentities not available. Check that the privacy.userContext.enabled pref is set to true, and reload the add-on.'; +} else {</pre> + +<p>Firefox s'installe avec la fonctionnalité d'identité contextuelle désactivée, elle est activée lorsqu'une extension utilisant l'API contextualIdentities est installée. Cependant, il est toujours possible pour l'utilisateur de désactiver la fonctionnalité, en utilisant une option sur la page des préférences (about:preferences), d'où la nécessité de la vérification.</p> + +<p>Le script utilise maintenant contextualIdentities.query pour déterminer s'il existe des identités contextuelles définies dans le navigateur. S'il n'y en a pas, un message est ajouté au popup et le script s'arrête.</p> + +<pre class="brush: json"> browser.contextualIdentities.query({}) + .then((identities) => { + if (!identities.length) { + div.innerText = 'No identities returned from the API.'; + return; + }</pre> + +<p>Si des identités contextuelles sont présentes — Firefox a quatre identités par défaut — le script parcourt chacune d'elles en ajoutant son nom, stylisé dans la couleur choisie, à l'élément <div>. La fonction <code>createOptions()</code> ajoute ensuite les options à “create” ou “close all” à la <div> avant qu'elle ne soit ajoutée au popup.</p> + +<pre class="brush: json"> for (let identity of identities) { + let row = document.createElement('div'); + let span = document.createElement('span'); + span.className = 'identity'; + span.innerText = identity.name; + span.style = `color: ${identity.color}`; + console.log(identity); + row.appendChild(span); + createOptions(row, identity); + div.appendChild(row); + } + }); +} + +function createOptions(node, identity) { + for (let option of ['Create', 'Close All']) { + let a = document.createElement('a'); + a.href = '#'; + a.innerText = option; + a.dataset.action = option.toLowerCase().replace(' ', '-'); + a.dataset.identity = identity.cookieStoreId; + a.addEventListener('click', eventHandler); + node.appendChild(a); + } +}</pre> + +<p>Le script attend maintenant que l'utilisateur sélectionne une option dans le popup.</p> + +<pre class="brush: js">function eventHandler(event) {</pre> + +<p>Si l'utilisateur clique sur l'option permettant de créer un onglet pour une identité, l'un d'entre eux est ouvert à l'aide de tabs.create en transmettant l'ID de cookie de l'identité.</p> + +<pre class="brush: json"> if (event.target.dataset.action == 'create') { + browser.tabs.create({ + url: 'about:blank', + cookieStoreId: event.target.dataset.identity + }); + }</pre> + +<p>Si l'utilisateur sélectionne l'option permettant de fermer tous les onglets pour l'identité, le script exécute une tabs.query pour tous les onglets qui utilisent le cookie store de l'identité. Le script passe ensuite cette liste d'onglets à <code>tabs.remove</code>.</p> + +<pre class="brush: json"> if (event.target.dataset.action == 'close-all') { + browser.tabs.query({ + cookieStoreId: event.target.dataset.identity + }).then((tabs) => { + browser.tabs.remove(tabs.map((i) => i.id)); + }); + } + event.preventDefault(); +}</pre> + +<h2 id="Apprendre_encore_plus">Apprendre encore plus</h2> + +<p>Si vous voulez en savoir plus sur l'API contextualIdentities, consultez :</p> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/API/contextualIdentities">contextualIdentities API reference</a>.</li> + <li>code source de l'extension <a href="https://github.com/mozilla/multi-account-containers/#readme">Multi-Account Containers</a>. C'est le code pour l'extension <a href="/fr/firefox/addon/multi-account-containers/">Firefox Multi-Account Containers</a>. + <p>Cette extension fournit aux utilisateurs des fonctionnalités améliorées pour les identités contextuelles, telles que la possibilité de cliquer longuement sur le nouveau bouton de l'onglet, puis de sélectionner l'identité à utiliser dans le nouvel onglet. Il met vraiment en valeur les capacités offertes par les identités contextuelles et vaut le détour.</p> + .</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/travailler_avec_l_api_cookies/index.html b/files/fr/mozilla/add-ons/webextensions/travailler_avec_l_api_cookies/index.html new file mode 100644 index 0000000000..c13965f88e --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/travailler_avec_l_api_cookies/index.html @@ -0,0 +1,254 @@ +--- +title: Travailler avec l'API Cookies +slug: Mozilla/Add-ons/WebExtensions/travailler_avec_l_API_cookies +tags: + - Add-ons + - Comment + - Cookies + - Débutant + - Extensions + - How-to + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Work_with_the_Cookies_API +--- +<p>{{AddonSidebar}}</p> + +<p>Avec l'API Cookies, vos extensions ont accès à des fonctionnalités similaires à celles utilisées par les sites Web pour stocker et lire les cookies. Les fonctionnalités de l'API permettent aux extensions de stocker des informations site par site. Ainsi, comme nous le verrons dans l'exemple, vous pouvez stocker des détails sur le choix de la couleur de fond d'un site pour un utilisateur. Ensuite, lorsque l'utilisateur revient sur le site, votre extension peut utiliser la capacité de l'API pour obtenir des détails sur les cookies et les lire pour récupérer le choix de l'utilisateur et l'appliquer au site Web.</p> + +<div class="note"> +<p>Le comportement des cookies peut être contrôlé à l'aide de la propriété {{WebExtAPIRef("privacy.websites")}} <code>cookieConfig</code>. Cette propriété contrôle si et comment les cookies sont acceptés ou si tous les cookies sont traités comme des cookies de session.</p> +</div> + +<h2 id="Permissions">Permissions</h2> + +<p>Pour utiliser l'API Cookies, vous devez demander à la fois la permission <code>"cookies"</code> et les <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permissions d'hôte</a> pour les protocoles, domaines, ou sites web auxquels vous souhaitez accéder ou utiliser <code>"<all_urls>"</code> pour accéder à tous les protocoles et domaines. La façon dont vous définissez votre chaîne de permission d'hôte affecte la capacité de votre extension à lire, écrire et supprimer les cookies.</p> + +<div> +<table> + <colgroup> + <col> + <col> + <col> + <col> + <col> + </colgroup> + <tbody> + <tr> + <td rowspan="2"> + <p>Chaine de permission hôte</p> + </td> + <td colspan="2"> + <p>Lecture</p> + </td> + <td colspan="2"> + <p>Ecriture/Effacer</p> + </td> + </tr> + <tr> + <td> + <p>Sécurisé</p> + </td> + <td> + <p>Non-sécurisé</p> + </td> + <td> + <p>Sécurisé</p> + </td> + <td> + <p>Non-sécurisé</p> + </td> + </tr> + <tr> + <td> + <p><code>"http://*.example.com/"</code></p> + </td> + <td> + <p>Non</p> + </td> + <td> + <p>Principaux et sous domaines, avec n'importe quel chemin</p> + </td> + <td> + <p>Principaux et sous domaines, avec n'importe quel chemin</p> + </td> + <td> + <p>Principaux et sous domaines, avec n'importe quel chemin</p> + </td> + </tr> + <tr> + <td> + <p><code>"https://www.example.com/"</code></p> + </td> + <td> + <p>www.example.com ou .example.com avec n'importe quel chemin, mais aucun sous domaine</p> + </td> + <td> + <p>www.example.com ou .example.com avec n'importe quel chemin, mais aucun sous domaine</p> + </td> + <td> + <p>www.example.com ou .example.com avec n'importe quel chemin, mais aucun sous domaine</p> + </td> + <td> + <p>www.example.com ou .example.com avec n'importe quel chemin, mais aucun sous domaine</p> + </td> + </tr> + <tr> + <td> + <p><code>"*://*.example.com/"</code></p> + </td> + <td> + <p>Principaux et sous domaines, avec n'importe quel chemin</p> + </td> + <td> + <p>Principaux et sous domaines, avec n'importe quel chemin</p> + </td> + <td> + <p>Principaux et sous domaines, avec n'importe quel chemin</p> + </td> + <td> + <p>Principaux et sous domaines, avec n'importe quel chemin</p> + </td> + </tr> + <tr> + <td> + <p><code>"<all_urls>"</code></p> + </td> + <td> + <p>Tout domaine avec un chemin</p> + </td> + <td> + <p>Tout domaine avec un chemin</p> + </td> + <td> + <p>Tout domaine avec un chemin</p> + </td> + <td> + <p>Tout domaine avec un chemin</p> + </td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Banque_de_cookies">Banque de cookies</h2> + +<p>Firefox fournit trois types de banque de cookies :</p> + +<ul> + <li>La banque par défaut, qui stocke les cookies de la navigation normale.</li> + <li>Le mode de navigation privée stocke les cookies créés lors d'une session de navigation privée. Ces banques et tous les cookies qu'ils contiennent sont supprimés lorsque la fenêtre de navigation privée associée se ferme.</li> + <li>La banque de conteneur d'onglets, qui stocke les cookies pour chaque identité contextuelle dans Firefox. Les identités contextuelles permettent à un utilisateur de conserver plusieurs identités dans une fenêtre de navigateur. Ceci est utile si, par exemple, vous avez un compte de messagerie d'entreprise et personnel sur Gmail. Avec les identités contextuelles, vous pouvez ouvrir un onglet par rapport à une identité personnelle et un deuxième onglet par rapport à une identité d'entreprise. Chaque onglet peut ensuite se connecter à Google Mail avec un nom d'utilisateur différent, et les deux comptes peuvent être utilisés côte à côte. Pour plus d'informations, voir <a href="https://wiki.mozilla.org/Security/Contextual_Identity_Project/Containers">Sécurité/Projet d'identité contextuelle/Conteneurs</a> dans le wiki Mozilla.</li> +</ul> + +<p>Vous pouvez trouver les banques de cookies disponibles en utilisant {{WebExtAPIRef("cookies.getAllCookieStores")}}, qui renvoie un objet contenant l'ID de chaque cookie et une liste des ID des onglets utilisant chaque banque de cookies.</p> + +<h2 id="Exemple_de_procédure_pas_à_pas">Exemple de procédure pas à pas</h2> + +<p>L'exemple d'extension <a href="https://github.com/mdn/webextensions-examples/tree/master/cookie-bg-picker">cookie-bg-picker</a> permet à l'utilisateur de choisir une couleur et une icône appliquées à l'arrière-plan des pages Web d'un site. Ces choix sont sauvegardés par site en utilisant {{WebExtAPIRef("cookies.set")}}. Lorsqu'une page du site est ouverte, {{WebExtAPIRef("cookies.get")}} lit tout choix précédent, et l'extension l'applique à la page Web. Une option de réinitialisation supprime l'icône d'arrière-plan et la couleur du site ainsi que le cookie, en utilisant {{WebExtAPIRef("cookies.remove")}}. Il utilise également {{WebExtAPIRef("cookies.onChanged")}} pour écouter les modifications apportées aux cookies, en envoyant les détails de la modification à la console.</p> + +<p>Cette vidéo montre l'extension en action :</p> + +<p>{{EmbedYouTube("_rlp3eYqEMA")}}</p> + +<p>Cet exemple utilise également les API Tabs et Runtime, mais nous ne discuterons de ces fonctionnalités qu'en passant.</p> + +<h3 id="manifest.json">manifest.json</h3> + +<p>The key feature of the <a href="https://github.com/mdn/webextensions-examples/blob/master/cookie-bg-picker/manifest.json">manifest.json</a> file relating to the use of the Cookies API is the permissions request:</p> + +<pre class="brush: json"> "permissions": [ + "tabs", + "cookies", + "<all_urls>" +],</pre> + +<p>Ici, l'extension demande l'autorisation d'utiliser l'API Cookies (<code>"cookies"</code>) avec tous les sites Web (<code>"<all_urls>"</code>). Cela permet à l'extension d'enregistrer le choix de l'icône de couleur d'arrière-plan pour n'importe quel site Web.</p> + +<h3 id="Scripts—bgpicker.js">Scripts—bgpicker.js</h3> + +<p>L'interface utilisateur de l'extension utilise un bouton de barre d'outils ({{WebExtAPIRef("browserAction")}}) implémenté avec <a href="https://github.com/mdn/webextensions-examples/blob/master/cookie-bg-picker/popup/bgpicker.html">bgpicker.html</a> qui appelle <a href="https://github.com/mdn/webextensions-examples/blob/master/cookie-bg-picker/popup/bgpicker.js">bgpicker.js</a>. Ensemble, ils permettent à l'utilisateur de sélectionner l'icône et d'entrer la couleur à appliquer en arrière-plan. Ils offrent également la possibilité d'effacer ces paramètres.</p> + +<p><a href="https://github.com/mdn/webextensions-examples/blob/master/cookie-bg-picker/popup/bgpicker.js">bgpicker.js</a> gère la sélection de l'icône ou l'entrée d'une couleur pour l'arrière-plan dans des fonctions séparées.</p> + +<p>Pour gérer les boutons d'icônes, le script rassemble d'abord tous les noms de classe utilisés pour les boutons dans le fichier HTML :</p> + +<pre class="brush: js">var bgBtns = document.querySelectorAll('.bg-container button');</pre> + +<p>Il boucle ensuite à travers tous les boutons en leur assignant leur image et en créant un écouteur onclick pour chaque bouton :</p> + +<pre class="brush: js">for(var i = 0; i < bgBtns.length; i++) { + var imgName = bgBtns[i].getAttribute('class'); + var bgImg = 'url(\'images/' + imgName + '.png\')'; + bgBtns[i].style.backgroundImage = bgImg; + + bgBtns[i].onclick = function(e) {</pre> + +<p>Quand un bouton est cliqué, sa fonction d'écouteur correspondante obtient le nom de classe de bouton et ensuite le chemin d'icône qu'il passe au script de contenu de la page (<a href="https://github.com/mdn/webextensions-examples/blob/master/cookie-bg-picker/content_scripts/updatebg.js">updatebg.js</a>) en utilisant un message. Le script de contenu applique ensuite l'icône à l'arrière-plan de la page Web. Pendant ce temps, <a href="https://github.com/mdn/webextensions-examples/blob/master/cookie-bg-picker/popup/bgpicker.js">bgpicker.js</a> stocke les détails de l'icône appliquée à l'arrière-plan dans un cookie :</p> + +<pre class="brush: js"> cookieVal.image = fullURL; + browser.cookies.set({ + url: tabs[0].url, + name: "bgpicker", + value: JSON.stringify(cookieVal) + })</pre> + +<p>Le paramètre de couleur est traité de la même manière, déclenché par un écouteur dans le champ de saisie de couleur. Lorsqu'une couleur est entrée, l'onglet actif est découvert et les détails de sélection de couleur envoyés, à l'aide d'un message, au script de contenu de la page à appliquer à l'arrière-plan de la page Web. Ensuite, la sélection de couleur est ajoutée au cookie :</p> + +<pre class="brush: js"> cookieVal.color = currColor; + browser.cookies.set({ + url: tabs[0].url, + name: "bgpicker", + value: JSON.stringify(cookieVal)</pre> + +<p>Lorsque l'utilisateur clique sur le bouton de réinitialisation qui a été affecté à la réinitialisation de la variable :</p> + +<pre class="brush: js">var reset = document.querySelector('.color-reset button');</pre> + +<p><code>reset.onclick</code> trouve d'abord l'onglet actif. Ensuite, en utilisant l'ID de l'onglet, il transmet un message au script de contenu de la page (<a href="https://github.com/mdn/webextensions-examples/blob/master/cookie-bg-picker/content_scripts/updatebg.js">updatebg.js</a>) pour qu'il supprime l'icône et la couleur de la page. La fonction efface ensuite les valeurs de cookie (de sorte que les anciennes valeurs ne sont pas reportées et écrites sur un cookie créé pour une nouvelle icône ou sélection de couleur sur la même page) avant de supprimer le cookie :</p> + +<pre class="brush: js"> cookieVal = { image : '', + color : '' }; + browser.cookies.remove({ + url: tabs[0].url, + name: "bgpicker"</pre> + +<p>Aussi, afin que vous puissiez voir ce qui se passe avec les cookies, le script rend compte de toutes les modifications apportées aux cookies dans la console :</p> + +<pre class="brush: js">browser.cookies.onChanged.addListener((changeInfo) => { + console.log(`Cookie changed:\n + * Cookie: ${JSON.stringify(changeInfo.cookie)}\n + * Cause: ${changeInfo.cause}\n + * Removed: ${changeInfo.removed}`); + });</pre> + +<h3 id="Scripts—background.js">Scripts—background.js</h3> + +<p>Un script d'arrière-plan (<a href="https://github.com/mdn/webextensions-examples/blob/master/cookie-bg-picker/background_scripts/background.js">background.js</a>) permet à l'utilisateur de choisir une icône d'arrière-plan et une couleur pour le site Web dans une session antérieure. Le script est à l'écoute des changements dans l'onglet actif, que ce soit l'utilisateur qui passe d'un onglet à l'autre ou modifie l'URL de la page affichée dans l'onglet. Lorsque l'un de ces événements se produit, <code>cookieUpdate()</code> est appelée. <code>cookieUpdate()</code> utilise à son tour <code>getActiveTab()</code> pour obtenir l'ID de l'onglet actif. La fonction peut ensuite vérifier si un cookie existe pour l'extension, en utilisant l'URL de l'onglet :</p> + +<pre class="brush: js"> var gettingCookies = browser.cookies.get({ + url: tabs[0].url, + name: "bgpicker" + });</pre> + +<p>Si le cookie <code>"bgpicker"</code> existe pour le site Web, les détails de l'icône et de la couleur sélectionnés précédemment sont récupérés et transmis au script de contenu <a href="https://github.com/mdn/webextensions-examples/blob/master/cookie-bg-picker/content_scripts/updatebg.js">updatebg.js</a> à l'aide de messages :</p> + +<pre class="brush: js"> gettingCookies.then((cookie) => { + if (cookie) { + var cookieVal = JSON.parse(cookie.value); + browser.tabs.sendMessage(tabs[0].id, {image: cookieVal.image}); + browser.tabs.sendMessage(tabs[0].id, {color: cookieVal.color}); + } + });</pre> + +<h2 id="Autres_caractéristiques">Autres caractéristiques</h2> + +<p>En plus des API mentionnées jusqu'à présent, l'API Cookies propose également {{WebExtAPIRef("cookies.getAll")}}. Cette fonction prend l'objet details pour spécifier des filtres pour les cookies sélectionnés et retourne un tableau d'objets {{WebExtAPIRef("cookies.Cookie")}} qui correspondent aux critères de filtrage.</p> + +<h2 id="Apprendre_encore_plus">Apprendre encore plus</h2> + +<p>Si vous voulez en savoir plus sur l'API Cookies, consultez :</p> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/API/cookies">Cookies API reference</a>.</li> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/list-cookies">List-cookies</a> exemple.</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/travailler_avec_l_api_tabs/index.html b/files/fr/mozilla/add-ons/webextensions/travailler_avec_l_api_tabs/index.html new file mode 100644 index 0000000000..049a8e5683 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/travailler_avec_l_api_tabs/index.html @@ -0,0 +1,628 @@ +--- +title: Travailler avec l'API Tabs +slug: Mozilla/Add-ons/WebExtensions/Travailler_avec_l_API_Tabs +tags: + - Add-ons + - Comment + - Débutant + - WebExtensions + - onglets + - tabs +translation_of: Mozilla/Add-ons/WebExtensions/Working_with_the_Tabs_API +--- +<p>{{AddonSidebar}}</p> + +<p>Les onglets permettent à un utilisateur d'ouvrir plusieurs pages Web dans la fenêtre de son navigateur, puis de basculer entre ces pages Web. Grâce à l'API Tabs, vous pouvez utiliser et manipuler ces onglets pour créer des utilitaires qui offrent aux utilisateurs de nouvelles façons de travailler avec des onglets ou de fournir les fonctionnalités de votre extension.</p> + +<p>Dans cet article, nous allons regarder :</p> + +<ul> + <li>Permissions nécessaires pour utiliser l'API Tabs.</li> + <li>En savoir plus sur les onglets et leurs propriétés en utilisant {{WebExtAPIRef("tabs.query")}}.</li> + <li>Création, duplication, déplacement, mise à jour, rechargement et suppression des onglets.</li> + <li>Manipuler le niveau de zoom d'un onglet.</li> + <li>Manipuler le CSS d'un onglet.</li> +</ul> + +<p>Nous concluons ensuite en examinant d'autres fonctionnalités diverses offertes par l'API.</p> + +<div class="blockIndicator note"> +<p><strong>Remarque :</strong> Certaines fonctionnalités de l'API d'onglet sont couvert ailleurs. Voici les méthodes que vous pouvez utiliser pour manipuler le contenu de l'onglet avec des scripts ({{WebExtAPIRef("tabs.connect")}}, {{WebExtAPIRef("tabs.sendMessage")}}, et {{WebExtAPIRef("tabs.executeScript")}}). Si vous voulez plus d'informations sur ces méthodes, reportez-vous à l'article <a href="/fr/Add-ons/WebExtensions/Content_scripts">scripts de contenu</a> et le guide pratique <a href="/fr/Add-ons/WebExtensions/Modify_a_web_page">modifier une page web</a>.</p> +</div> + +<h2 id="Permissions_et_lAPI_Tabs">Permissions et l'API Tabs</h2> + +<p>Pour la majorité des fonctions de l'API Tabs, vous n'avez besoin d'aucune autorisation. Cependant, il y a certaines exceptions :</p> + +<ul> + <li>permission <code>"tabs</code>" est nécessaire pour accéder aux propriétés de <code>Tab.url</code>, <code>Tab.title</code>, et <code>Tab.favIconUrl</code> de l'objet Tab. Dans Firefox, vous avez également besoin de <code>"tabs"</code> pour effectuer une <a href="/fr/Add-ons/WebExtensions/API/tabs/query">requête</a> par URL.</li> + <li><a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">persmission de l'hote</a> est nécessaire pour {{WebExtAPIRef("tabs.executeScript")}} ou {{WebExtAPIRef("tabs.insertCSS")}}.</li> +</ul> + +<p>Vous pouvez demander la permission <code>"tabs"</code> dans le fichier manifest.json de votre extension :</p> + +<pre class="brush: json">"permissions": [ + "<all_urls>", + "tabs" +], +</pre> + +<p>Cette requête vous permet d'utiliser toutes les fonctionnalités de l'API Tabs sur tous les sites Web que vos utilisateurs visitent. Il existe également une autre méthode pour demander la permission d'utiliser {{WebExtAPIRef("tabs.executeScript")}} ou {{WebExtAPIRef("tabs.insertCSS")}} où vous n'avez pas besoin de la permission de l'hôte, sous la forme <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission"><code>"activeTab"</code></a>. Cette permission fournit les mêmes droits que les <code>"onglets"</code> avec <code><all_urls></code>, mais avec deux restrictions:</p> + +<ul> + <li>l'utilisateur doit interagir avec l'extension via son navigateur ou l'action de la page, le menu contextuel ou la touche de raccourci.</li> + <li>il accorde uniquement la permission dans l'onglet actif..</li> +</ul> + +<p>L'avantage de cette approche est que l'utilisateur ne recevra pas d'avertissement d'autorisation indiquant que votre extension peut “Accéder à vos données pour tous les sites Web”. En effet, la permission <code><all_urls></code> permet à une extension d'exécuter des scripts dans n'importe quel onglet, à tout moment, alors que <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission"><code>"activeTab"</code></a> se limite à autoriser l'extension à effectuer une action demandée par l'utilisateur dans l'onglet en cours.</p> + +<h2 id="En_savoir_plus_sur_les_onglets_et_leurs_propriétés">En savoir plus sur les onglets et leurs propriétés</h2> + +<p>Il y aura des occasions où vous voulez obtenir une liste de tous les onglets dans toutes les fenêtres du navigateur. D'autres fois, vous pourriez vouloir trouver un sous-ensemble d'onglets qui correspondent à certains critères spécifiques, tels que ceux ouverts à partir d'un onglet spécifique ou l'affichage des pages d'un domaine particulier. Et une fois que vous avez votre liste d'onglets, vous voudrez probablement en savoir plus sur leurs propriétés.</p> + +<p>C'est ici qu'intervient {{WebExtAPIRef("tabs.query")}}. Utilisé seul pour obtenir tous les onglets ou prendre l'objet <code>queryInfo</code> — pour spécifier des critères de requête tels que l'activation de l'onglet, dans la fenêtre en cours ou plus de 17 critères — {{WebExtAPIRef("tabs.query")}} renvoie un tableau d'objets {{WebExtAPIRef("tabs.Tab")}} objects contenant des informations sur les onglets.</p> + +<p>Lorsque vous souhaitez uniquement obtenir des informations sur l'onglet en cours, vous pouvez obtenir un objet {{WebExtAPIRef("tabs.Tab")}} pour cet onglet à l'aide de {{WebExtAPIRef("tabs.getCurrent")}}. Si vous avez un ID d'onglet, vous pouvez obtenir son objet {{WebExtAPIRef("tabs.Tab")}} en utilisant {{WebExtAPIRef("tabs.get")}}.</p> + +<h3 id="Par_exemple">Par exemple</h3> + +<p>Pour voir comment {{WebExtAPIRef("tabs.query")}} et {{WebExtAPIRef("tabs.Tab")}} sont utilisés, voyons comment l'exemple <a href="https://github.com/mdn/webextensions-examples/tree/master/tabs-tabs-tabs">tabs-tabs-tabs</a> ajoute la liste de “passer aux onglets” à son popup bouton de barre d'outils.</p> + +<p><img alt="The tabs tabs tabs toolbar menu showing the switch to tap area" src="https://mdn.mozillademos.org/files/15723/Switch_to_tab.png" style="height: 645px; width: 369px;"></p> + +<h3 id="manifest.json">manifest.json</h3> + +<p>Voici le <a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/manifest.json">manifest.json</a>:</p> + +<pre class="brush: json">{ + "browser_action": { + "browser_style": true, + "default_title": "Tabs, tabs, tabs", + "default_popup": "tabs.html" + }, + "description": "A list of methods you can perform on a tab.", + "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/tabs-tabs-tabs", + "manifest_version": 2, + "name": "Tabs, tabs, tabs", + "permissions": [ + "tabs" + ], + "version": "1.0" +} +</pre> + +<div class="blockIndicator note"> +<p>Notez ce qui suit :</p> + +<ul> + <li> + <p><strong>tabs.html est défini comme <code>default_popup</code> dans <code>browser_action</code></strong>. C'est affiché chaque fois que l'utilisateur clique sur l'icône de la barre d'outils de l'extension.</p> + </li> + <li> + <p><strong>Les permissions incluent des onglets.</strong> Ceci est nécessaire pour prendre en charge la fonction de liste d'onglets, car l'extension lit le titre des onglets à afficher dans la fenêtre contextuelle.</p> + </li> +</ul> +</div> + +<h3 id="tabs.html">tabs.html</h3> + +<p>tabs.html définit le contenu du popup de l'extension :</p> + +<pre class="brush: html"><!DOCTYPE html> + +<html> + + <head> + <meta charset="utf-8"> + <link rel="stylesheet" href="tabs.css"/> + </head> + +<body> + + <div class="panel"> + <div class="panel-section panel-section-header"> + <div class="text-section-header">Tabs-tabs-tabs</div> + </div> + + <a href="#" id="tabs-move-beginning">Move active tab to the beginning of the window</a><br> + + +… + +Define the other menu items +… + + <div class="switch-tabs"> + + <p>Switch to tab</p> + + <div id="tabs-list"></div> + + </div> + </div> + + <script src="tabs.js"></script> + +</body> + +</html> +</pre> + +<p>Ici, vous pouvez voir que, après la création des éléments de menu, un div vide avec la liste des onglets ID est configuré pour contenir la liste des onglets. Ensuite, tabs.js est appelée.</p> + +<p>Voici un résumé de ce qui précède :</p> + +<ol> + <li>Les éléments de menu sont déclarés. </li> + <li>Une <code>div</code> vide avec <code>tabs-list</code> est déclaré comme contenant la liste des onglets.</li> + <li>tabs.js est appelé.</li> +</ol> + +<h3 id="tabs.js">tabs.js</h3> + +<p>Dans <a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.js">tabs.js</a> nous pouvons voir comment la liste des onglets est construite et ajoutée à la popup.</p> + +<p>Tout d'abord, un gestionnaire d'événements est ajouté pour exécuter <code>listTabs()</code> quand tabs.html est chargé :</p> + +<h4 id="Création_de_la_fenêtre_contextuelle">Création de la fenêtre contextuelle</h4> + +<p>Tout d'abord, un gestionnaire d'événements est ajouté pour exécuter <code>listTabs()</code> quand tabs.html est chargé :</p> + +<pre class="brush: js">document.addEventListener("DOMContentLoaded", listTabs);</pre> + +<p>La première chose que fait <code>listTabs()</code> est d'appeler <code>getCurrentWindowTabs()</code>, où {{WebExtAPIRef("tabs.query")}} est utilisé pour obtenur un objet {{WebExtAPIRef("tabs.Tab")}} pour le onglets dans la fenêtre courante :</p> + +<pre class="brush: js">function getCurrentWindowTabs() { + return browser.tabs.query({currentWindow: true}); +} +</pre> + +<p>Maintenant, <code>listTabs()</code> est prêt à créer le contenu de la popup.</p> + +<p>Pour commencer :</p> + +<ol> + <li>Récupérer les <code>tabs-list</code> <code>div</code>.</li> + <li>Créer un fragment de document (dans lequel la liste sera construite).</li> + <li>Mettre les compteurs.</li> + <li>Effacer le contenu de <code>tabs-list</code> <code>div</code>.</li> +</ol> + +<pre class="brush: js">function listTabs() { + getCurrentWindowTabs().then((tabs) => { + let tabsList = document.getElementById('tabs-list'); + let currentTabs = document.createDocumentFragment(); + let limit = 5; + let counter = 0; + + tabsList.textContent = ''; +</pre> + +<p>Ensuite, nous allons créer les liens pour chaque onglet :</p> + +<ol> + <li>Boucle les 5 premiers éléments de l'objet {{WebExtAPIRef("tabs.Tab")}}.</li> + <li>Pour chaque poste, ajoutez un hyperlien vers le fragment de document. + <ul> + <li>L'étiquette du lien, c'est-à-dire son texte, est définie à l'aide du titre de l'onglet (ou de l'ID, s'il n'a pas de titre).</li> + <li>L'adresse du lien est définie à l'aide de l'ID de l'onglet.</li> + </ul> + </li> +</ol> + +<pre class="brush: js"> for (let tab of tabs) { + if (!tab.active && counter <= limit) { + let tabLink = document.createElement('a'); + + tabLink.textContent = tab.title || tab.id; + + tabLink.setAttribute('href', tab.id); + tabLink.classList.add('switch-tabs'); + currentTabs.appendChild(tabLink); + } + + counter += 1; + + } +</pre> + +<p>Enfin, le fragment du document est écrit dans la div <code>tabs-list</code> :</p> + +<pre class="brush: js"> tabsList.appendChild(currentTabs); + }); +} +</pre> + +<h4 id="Travailler_avec_longlet_actif">Travailler avec l'onglet actif</h4> + +<p>Un autre exemple connexe est l'option d'information “Alert active tab”qui décharge toutes les propriétés de l'objet {{WebExtAPIRef("tabs.Tab")}} de l'onglet actif dans une alerte :</p> + +<pre class="brush: js"> else if (e.target.id === "tabs-alertinfo") { + callOnActiveTab((tab) => { + let props = ""; + for (let item in tab) { + props += `${ item } = ${ tab[item] } \n`; + } + alert(props); + }); + } +</pre> + +<p>Où <code>callOnActiveTab()</code> ftrouve l'objet de tabulation active en faisant une boucle sur les objets {{WebExtAPIRef("tabs.Tab")}} qui recherchent l'objet avec l'ensemble actif :</p> + +<pre class="brush: js">document.addEventListener("click", function(e) { + function callOnActiveTab(callback) { + getCurrentWindowTabs().then((tabs) => { + for (var tab of tabs) { + if (tab.active) { + callback(tab, tabs); + } + } + }); + } +} + +</pre> + +<h2 id="Création_duplication_déplacement_mise_à_jour_rechargement_et_suppression_des_onglets">Création, duplication, déplacement, mise à jour, rechargement et suppression des onglets</h2> + +<p>Après avoir recueilli des informations sur les onglets, vous voudrez probablement faire quelque chose avec eux — soit pour offrir aux utilisateurs des fonctionnalités de manipulation et de gestion des onglets — soit pour implémenter des fonctionnalités dans votre extension. Les fonctions suivantes sont disponibles :</p> + +<ul> + <li>Créer un nouvel onglet ({{WebExtAPIRef("tabs.create")}}).</li> + <li>Dupliquer un onglet ({{WebExtAPIRef("tabs.duplicate")}}).</li> + <li>Supprimer un onglet ({{WebExtAPIRef("tabs.remove")}}).</li> + <li>Déplacer un onglet ({{WebExtAPIRef("tabs.move")}}).</li> + <li>Mettre à jour l'URL d'un onglet — accéderefficacement à une nouvelle page — ({{WebExtAPIRef("tabs.update")}}).</li> + <li>Rechargez la page de l'onglet ({{WebExtAPIRef("tabs.reload")}}).</li> +</ul> + +<div class="blockIndicator note"> +<p><strong>NOTE : </strong></p> + +<p>Ces fonctions nécessitent toutes l'ID (ou les ID) de l'onglet qu'elles manipulent :</p> + +<ul> + <li>{{WebExtAPIRef("tabs.duplicate")}}</li> + <li>{{WebExtAPIRef("tabs.remove")}}</li> + <li>{{WebExtAPIRef("tabs.move")}}</li> +</ul> + +<p>Alors que les fonctions suivantes agissent sur l'onglet actif (si aucun ID d'onglet n'est fourni) :</p> + +<ul> + <li>{{WebExtAPIRef("tabs.update")}}</li> + <li>{{WebExtAPIRef("tabs.reload")}}</li> +</ul> +</div> + +<h3 id="Par_exemple_2">Par exemple</h3> + +<p>L'exemple <a href="https://github.com/mdn/webextensions-examples/tree/master/tabs-tabs-tabs">tabs-tabs-tabs</a> utilise toutes ces fonctionnalités sauf la mise à jour de l'URL d'un onglet. La façon dont ces API sont utilisées est similaire, nous allons donc regarder l'une des implémentations les plus impliquées, celle de l'option “Deplacer l'onglet actif vers le début de la liste des fenêtres”. Mais d'abord, voici une démonstration de la fonctionnalité en action :</p> + +<p>{{EmbedYouTube("-lJRzTIvhxo")}}</p> + +<h4 id="manifest.json_2"><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/manifest.json">manifest.json</a></h4> + +<p>Aucune de ces fonctions ne nécessite de permission pour fonctionner, donc il n'y a aucune fonctionnalité dans le fichier manifest.json qui doit être mise en surbrillance.</p> + +<h4 id="tabs.html_2"><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.html">tabs.html</a></h4> + +<p>tabs.html définit le “menu” affiché dans la fenêtre contextuelle, qui inclut l'option “Déplacer l'onglet actif au début de la liste des fenêtres”, wavec une série de balises <code><a></code> groupées par un séparateur visuel. Chaque élément de menu reçoit un ID, qui est utilisé dans tabs.js pour déterminer quel élément de menu est demandé.</p> + +<pre class="brush: html"> <a href="#" id="tabs-move-beginning">Move active tab to the beginning of the window</a><br> + <a href="#" id="tabs-move-end">Move active tab to the end of the window</a><br> + + <div class="panel-section-separator"></div> + + + <a href="#" id="tabs-duplicate">Duplicate active tab</a><br> + + <a href="#" id="tabs-reload">Reload active tab</a><br> + <a href="#" id="tabs-alertinfo">Alert active tab info</a><br></pre> + +<h4 id="tabs.js_2"><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.js">tabs.js</a></h4> + +<p>Pour implémenter le "menu" défini dans tabs.html, tabs.js inclut un écouteur pour les clics dans tabs.html</p> + +<pre class="brush: js">document.addEventListener("click", function(e) { + function callOnActiveTab(callback) { + + getCurrentWindowTabs().then((tabs) => { + for (var tab of tabs) { + if (tab.active) { + callback(tab, tabs); + } + } + }); +} +} +</pre> + +<p>Une série d'instructions <code>if</code> cherche alors à faire correspondre l'identifiant de l'élément cliqué. Cet extrait de code est pour l'option “Déplacer l'onglet actif au début de la liste des fenêtres” :</p> + +<pre class="brush: js"> if (e.target.id === "tabs-move-beginning") { + callOnActiveTab((tab, tabs) => { + var index = 0; + if (!tab.pinned) { + index = firstUnpinnedTab(tabs); + } + console.log(`moving ${tab.id} to ${index}`) + browser.tabs.move([tab.id], {index}); + }); + } +</pre> + +<p>Il est intéressant de noter l'utilisation de console.log. Cela vous permet de générer des informations sur la console du <a href="/fr/Add-ons/WebExtensions/Debugging">debugger</a>, ce qui peut être utile lors de la résolution des problèmes rencontrés lors du développement.</p> + +<p><img alt="Example of the console.log output, from the move tabs feature, in the debugging console" src="https://mdn.mozillademos.org/files/15722/console.png" style="height: 329px; width: 911px;"></p> + +<p>Le code de déplacement appelle d'abord <code>callOnActiveTab()</code> qui à son tour appelle <code>getCurrentWindowTabs()</code> pour obtenir un objet {{WebExtAPIRef("tabs.Tab")}} contenant les onglets de la fenêtre active. Il parcourt ensuite l'objet pour rechercher et renvoyer l'objet onglet actif :</p> + +<pre class="brush: js"> function callOnActiveTab(callback) { + getCurrentWindowTabs().then((tabs) => { + for (var tab of tabs) { + if (tab.active) { + callback(tab, tabs); + } + } + }); + } +</pre> + +<h5 id="Onglets_épinglés">Onglets épinglés</h5> + +<p>Une caractéristique des onglets est que l'utilisateur peut épingler des onglets dans une fenêtre. Les onglets épinglés sont placés au début de la liste des onglets et ne peuvent pas être déplacés. Cela signifie que la première position vers laquelle un onglet peut se déplacer est la première position après les onglets épinglés. Ainsi, <code>firstUnpinnedTab()</code> est appelé pour trouver la position du premier onglet non goupillé en faisant une boucle dans l'objet <code>tabs</code> :</p> + +<pre class="brush: js">function firstUnpinnedTab(tabs) { + for (var tab of tabs) { + if (!tab.pinned) { + return tab.index; + } + } +} +</pre> + +<p>Nous avons maintenant tout ce qu'il faut pour déplacer l'onglet : l'objet onglet actif à partir duquel nous pouvons obtenir l'ID de l'onglet et la position à laquelle l'onglet doit être déplacé. Ainsi, nous pouvons mettre en œuvre le mouvement :</p> + +<pre class="brush: js"> browser.tabs.move([tab.id], {index});</pre> + +<p>Les fonctions restantes à dupliquer, recharger, créer et supprimer des onglets sont implémentées de manière similaire.</p> + +<h2 id="Manipulation_du_niveau_du_zoom_dun_onglet">Manipulation du niveau du zoom d'un onglet</h2> + +<p>Le prochain ensemble de fonctions vous permet d'obtenir ({{WebExtAPIRef("tabs.getZoom")}}) et de définir ({{WebExtAPIRef("tabs.setZoom")}}) le niveau de zoom dans un onglet. Vous pouvez également récupérer les paramètres de zoom ({{WebExtAPIRef("tabs.getZoomSettings")}}) mais, au moment de l'écriture, la possibilité de définir les paramètres ({{WebExtAPIRef("tabs.setZoomSettings")}}) n'était pas disponible dans Firefox.</p> + +<p>Le niveau de zoom peut être compris entre 30% et 300% (représenté par des décimales de 0.3 à 3).</p> + +<p>Dans Firefox les paramètres de zoom par défaut sont :</p> + +<ul> + <li><strong>niveau de zoom par défaut</strong> : 100%.</li> + <li><strong>mode zoom</strong>: automatique (le navigateur gère donc le réglage des niveaux de zoom).</li> + <li><strong>portée des changements de zoom</strong> : <code>"per-origin"</code>, ce qui signifie que lorsque vous visitez à nouveau un site, il prend le niveau de zoom défini lors de votre dernière visite.</li> +</ul> + +<h3 id="Par_exemple_3">Par exemple</h3> + +<p>L'exemple <a href="https://github.com/mdn/webextensions-examples/tree/master/tabs-tabs-tabs">tabs-tabs-tabs</a> comprend trois démonstrations de la fonction de zoom : zoom avant, zoom arrière, et réinitialisation du zoom. Voici la fonctionnalité en action :</p> + +<p>{{EmbedYouTube("RFr3oYBCg28")}}</p> + +<p>Jetons un coup d'oeil à la façon dont le zoom est implémenté.</p> + +<h4 id="manifest.json_3"><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/manifest.json">manifest.json</a></h4> + +<p>Aucune des fonctions de zoom n'a besoin d'autorisations. Par conséquent, aucune fonction du fichier manifest.json ne doit être mise en surbrillance.</p> + +<h4 id="tabs.html_3"><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.html">tabs.html</a></h4> + +<p>Nous avons déjà discuté comment le tabs.html définit les options pour cette extension, rien de nouveau ou unique n'est fait pour fournir les options de zoom.</p> + +<h4 id="tabs.js_3"><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.js">tabs.js</a></h4> + +<p>tabs.js commence par définir plusieurs constantes utilisées dans le code du zoom :</p> + +<pre class="brush: js">const ZOOM_INCREMENT = 0.2; +const MAX_ZOOM = 3; +const MIN_ZOOM = 0.3; +const DEFAULT_ZOOM = 1; +</pre> + +<p>Il utilise ensuite le même écouteur que nous avons discuté précédemment afin qu'il puisse agir sur les clics dans tabs.html.</p> + +<p>Pour la fonction zoom, ceci s'exécute :</p> + +<pre class="brush: js"> else if (e.target.id === "tabs-add-zoom") { + callOnActiveTab((tab) => { + var gettingZoom = browser.tabs.getZoom(tab.id); + gettingZoom.then((zoomFactor) => { + //the maximum zoomFactor is 3, it can't go higher + if (zoomFactor >= MAX_ZOOM) { + alert("Tab zoom factor is already at max!"); + } else { + var newZoomFactor = zoomFactor + ZOOM_INCREMENT; + //if the newZoomFactor is set to higher than the max accepted + //it won't change, and will never alert that it's at maximum + newZoomFactor = newZoomFactor > MAX_ZOOM ? MAX_ZOOM : newZoomFactor; + browser.tabs.setZoom(tab.id, newZoomFactor); + } + }); + }); + } +</pre> + +<p>Ce code utilise <code>callOnActiveTab()</code> pour obtenir les détails de l'onglet actif, puis {{WebExtAPIRef("tabs.getZoom")}} obtient le facteur de zoom actuel de l'onglet. Le zoom actuel est comparé au maximum défini (<code>MAX_ZOOM</code>) et une alerte est émise si l'onglet est déjà au zoom maximum. Sinon, le niveau de zoom est incrémenté mais limité au zoom maximum, puis le zoom est défini avec {{WebExtAPIRef("tabs.getZoom")}}.</p> + +<h2 id="Manipuler_le_CSS_dun_onglet">Manipuler le CSS d'un onglet</h2> + +<p>Une autre fonctionnalité importante offerte par l'API Tabs est la possibilité de manipuler le CSS dans un onglet — ajouter un nouveau CSS dans un onglet ({{WebExtAPIRef("tabs.insertCSS")}}) ou supprimer CSS d'un onglet ({{WebExtAPIRef("tabs.removeCSS")}}).</p> + +<p>Cela peut être utile si vous voulez, par exemple, mettre en évidence certains éléments de la page ou modifier la disposition par défaut de la page (liste courte des cas d'utilisation).</p> + +<h3 id="Par_exemple_4">Par exemple</h3> + +<p>L'exemple <a href="https://github.com/mdn/webextensions-examples/tree/master/apply-css">apply-css</a> utilise ces fonctionnalités pour ajouter une bordure rouge à la page Web dans l'onglet actif. Voici la fonctionnalité en action:</p> + +<p>{{EmbedYouTube("bcK-GT2Dyhs")}}</p> + +<p>Voyons comment cela se passe.</p> + +<h4 id="manifest.json_4"><a href="https://github.com/mdn/webextensions-examples/blob/master/apply-css/manifest.json">manifest.json</a></h4> + +<p>Pour utiliser les fonctionnalités CSS dont vous avez besoin :</p> + +<ul> + <li>Permission <code>"tabs"</code> et <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">permission hôte</a> ou</li> + <li>Permission <code>"activeTab"</code>.</li> +</ul> + +<p>Ce dernier est le plus utile, car il permet à une extension d'utiliser {{WebExtAPIRef("tabs.insertCSS")}} et {{WebExtAPIRef("tabs.removeCSS")}} dans l'onglet actif lorsqu'il est exécuté depuis le navigateur de l'extension ou action de la page, menu contextuel ou un raccourci.</p> + +<pre class="brush: json">{ + "description": "Adds a page action to toggle applying CSS to pages.", + + "manifest_version": 2, + "name": "apply-css", + "version": "1.0", + "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/apply-css", + + "background": { + + "scripts": ["background.js"] + }, + + "page_action": { + + "default_icon": "icons/off.svg", + "browser_style": true + }, + + "permissions": [ + "activeTab", + "tabs" + ] + +} +</pre> + +<p>Vous noterez que la permission <code>"tabs"</code> est ajoutée en plus de <code>"activeTab"</code>. Cette permission supplémentaire est nécessaire pour permettre au script de l'extension d'accéder à l'URL de l'onglet, dont nous verrons l'importance dans un instant.</p> + +<p>Les autres caractéristiques principales du fichier manifeste sont la définition de:</p> + +<ul> + <li><strong>un script d'arrière-plan</strong>, qui commence à s'exécuter dès que l'extension est chargée.</li> + <li><strong>une “action de page”</strong>, qui définit une icône à ajouter à la barre d'adresse du navigateur.</li> +</ul> + +<h4 id="background.js"><a href="https://github.com/mdn/webextensions-examples/blob/master/apply-css/background.js">background.js</a></h4> + +<p>Au démarrage, background.js définit un certain nombre de constantes à utiliser dans l'extension qui définissent le CSS à appliquer, des titres pour les “actions de page”, et une liste de protocoles dans lesquels l'extension fonctionnera :</p> + +<pre class="brush: js">const CSS = "body { border: 20px solid red; }"; +const TITLE_APPLY = "Apply CSS"; +const TITLE_REMOVE = "Remove CSS"; +const APPLICABLE_PROTOCOLS = ["http:", "https:"]; +</pre> + +<p>Lors du premier chargement, l'extension utilise {{WebExtAPIRef("tabs.query")}} pour obtenir une liste de tous les onglets de la fenêtre du navigateur en cours. Il parcourt ensuite les onglets appelant <code>initializePageAction()</code>.</p> + +<pre class="brush: js">var gettingAllTabs = browser.tabs.query({}); + +gettingAllTabs.then((tabs) => { + for (let tab of tabs) { + initializePageAction(tab); + } +}); +</pre> + +<p><code>initializePageAction</code> utilise <code>protocolIsApplicable()</code> pour déterminer si l'URL de l'onglet actif est celle à laquelle le CSS peut être appliqué :</p> + +<pre class="brush: js">function protocolIsApplicable(url) { + var anchor = document.createElement('a'); + anchor.href = url; + return APPLICABLE_PROTOCOLS.includes(anchor.protocol); +} +</pre> + +<p>Ensuite, si l'exemple peut agir sur l'onglet, <code>initializePageAction()</code> définit l'icône <code>pageAction</code> (barre de navigation) et le titre de l'onglet pour utiliser les versions ‘off’ avant de rendre la <code>pageAction</code> visible :</p> + +<pre class="brush: js">function initializePageAction(tab) { + + if (protocolIsApplicable(tab.url)) { + browser.pageAction.setIcon({tabId: tab.id, path: "icons/off.svg"}); + browser.pageAction.setTitle({tabId: tab.id, title: TITLE_APPLY}); + browser.pageAction.show(tab.id); + } +} +</pre> + +<p>Maintenant, un écouteur sur <code>geAction.onClicked</code> attend que l'icône pageAction soit cliqué et appelle <code>toggleCSS</code> quand il l'est.</p> + +<pre class="brush: js">browser.pageAction.onClicked.addListener(toggleCSS);</pre> + +<p><code>toggleCSS()</code> obtient le titre de la <code>pageAction</code> puis prend l'action décrite :</p> + +<ul> + <li><strong>Pour "Appliquer CSS”:</strong> + + <ul> + <li>Basculer l'icône <code>pageAction</code> et le titre dans les versions “supprimer”.</li> + <li>Applique le CSS en utilisant {{WebExtAPIRef("tabs.insertCSS")}}.</li> + </ul> + </li> + <li><strong>Pour “Supprimer CSS”:</strong> + <ul> + <li>Basculer l'icône <code>pageAction</code> et le titre dans les versions “apply”.</li> + <li>Supprime le CSS en utilisant {{WebExtAPIRef("tabs.removeCSS")}}.</li> + </ul> + </li> +</ul> + +<pre class="brush: js">function toggleCSS(tab) { + + + function gotTitle(title) { + + if (title === TITLE_APPLY) { + browser.pageAction.setIcon({tabId: tab.id, path: "icons/on.svg"}); + browser.pageAction.setTitle({tabId: tab.id, title: TITLE_REMOVE}); + browser.tabs.insertCSS({code: CSS}); + } else { + browser.pageAction.setIcon({tabId: tab.id, path: "icons/off.svg"}); + browser.pageAction.setTitle({tabId: tab.id, title: TITLE_APPLY}); + browser.tabs.removeCSS({code: CSS}); + } + } + + var gettingTitle = browser.pageAction.getTitle({tabId: tab.id}); + + gettingTitle.then(gotTitle); +} +</pre> + +<p>Enfin, pour s'assurer que <code>pageAction</code> est valide après chaque mise à jour de l'onglet, un écouteur sur {{WebExtAPIRef("tabs.onUpdated")}} appelle <code>initializePageAction()</code> chaque fois que l'onglet est mis à jour pour vérifier que l'onglet utilise toujours un protocole auquel le CSS peut être appliqué.</p> + +<pre class="brush: js">browser.tabs.onUpdated.addListener((id, changeInfo, tab) => { + + initializePageAction(tab); +}); +</pre> + +<h2 id="Quelques_autres_capacités_intéressantes">Quelques autres capacités intéressantes</h2> + +<p>Il existe deux autres fonctionnalités de l'API Tabs qui ne rentrent pas dans l'une des sections précédentes :</p> + +<ul> + <li>capturez le contenu de l'onglet visible avec {{WebExtAPIRef("tabs.captureVisibleTab")}}.</li> + <li>détecter la langue principale du contenu dans un onglet en utilisant {{WebExtAPIRef("tabs.detectLanguage")}}, que vous pourriez utiliser, par exemple, pour faire correspondre la langue de l'interface utilisateur de votre extension avec celle de la page dans laquelle elle s'exécute.</li> +</ul> + +<h2 id="Apprendre_encore_plus">Apprendre encore plus</h2> + +<p>Si vous voulez en savoir plus sur l'API Tabs, consultez le :</p> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/API/tabs">Tabs API reference.</a></li> + <li><a href="/fr/Add-ons/WebExtensions/Examples">example extensions</a>, car beaucoup d'entre eux utilisent l'API Tabs.</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/user_actions/index.html b/files/fr/mozilla/add-ons/webextensions/user_actions/index.html new file mode 100644 index 0000000000..ddd8305bca --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_actions/index.html @@ -0,0 +1,47 @@ +--- +title: actions utilisateurs +slug: Mozilla/Add-ons/WebExtensions/User_actions +tags: + - Add-ons + - Guide + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/User_actions +--- +<div>{{AddonSidebar}}</div> + +<p>Certaines API WebExtension exécutent des fonctions qui sont généralement exécutées à la suite d'une action utilisateur. Par exemple:</p> + +<ul> + <li>une action du navigateur avec un popup affichera le popup lorsque l'utilisateur clique dessus, mais il y a aussi une API {{WebExtAPIRef("browserAction.openPopup")}} permettant à une extension d'ouvrir le popup en programmation.</li> + <li>si une extension ajoute une barre latérale, elle est généralement ouverte par l'utilisateur via une partie de l'interface utilisateur intégrée du navigateur, comme le menu Affichage/Barre latérale. Mais il y a aussi une API {{WebExtAPIRef("sidebarAction.open")}} permettant à une extension d'ouvrir leur barre latérale en programmation.</li> +</ul> + +<p>Pour suivre le principe de "pas de surprises", des APIs comme celle-ci ne peuvent être appelées que de l'intérieur du gestionnaire pour une action de l'utilisateur. Les actions de l'utilisateur comprennent ce qui suit :</p> + +<ul> + <li>Cliquez sur l'action du navigateur ou de la page de l'extension.</li> + <li>Sélection d'un élément de menu contextuel défini par l'extension.</li> + <li>Activation d'un raccourci clavier défini par l'extension (traité uniquement comme une action utilisateur à partir de Firefox 63).</li> + <li>Cliquer sur un bouton dans une page fournie avec l'extension.</li> +</ul> + +<p>Par exemple:</p> + +<pre class="brush: js">function handleClick() { + browser.sidebarAction.open(); +} + +browser.browserAction.onClicked.addListener(handleClick);</pre> + +<p>Notez que les actions de l'utilisateur dans les pages Web normales ne sont pas traitées comme des actions de l'utilisateur à cette fin. Par exemple, si un utilisateur clique sur un bouton dans une page Web normale et qu'un script de contenu a ajouté un gestionnaire de clic pour ce bouton et que ce gestionnaire envoie un message à la page d'arrière-plan de l'extension, alors le gestionnaire de message de page d'arrière-plan n'est pas considéré comme traitant une action utilisateur.</p> + +<p>De plus, si un gestionnaire d'entrée utilisateur attend une <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Promise">promise</a>, alors son statut de gestionnaire d'entrée utilisateur est perdu. Par exemple :</p> + +<pre class="brush: js">async function handleClick() { + let result = await someAsyncFunction(); + + // this will fail, because the handler lost its "user action handler" status + browser.sidebarAction.open(); +} + +browser.browserAction.onClicked.addListener(handleClick);</pre> diff --git a/files/fr/mozilla/add-ons/webextensions/user_interface/barres_laterales/index.html b/files/fr/mozilla/add-ons/webextensions/user_interface/barres_laterales/index.html new file mode 100644 index 0000000000..5d9e2cab05 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_interface/barres_laterales/index.html @@ -0,0 +1,61 @@ +--- +title: Barres laterales +slug: Mozilla/Add-ons/WebExtensions/user_interface/barres_laterales +tags: + - WebExtensions + - barre latérale +translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Sidebars +--- +<div>{{AddonSidebar}}</div> + +<div> +<p><span class="seoSummary">Une barre latérale est un volet qui s'affiche à gauche de la fenêtre du navigateur, à côté de la page Web. Cette page décrit les barres latérales, leur spécification, leur conception et des exemples d'utilisation.</span></p> + +<p>Le navigateur fournit une interface utilisateur (UI) qui permet à l'utilisateur de voir les barres latéraux actuellement disponibles et de sélectionner une barre latérale à afficher. Par exemple, Firefox a un menu "Affichage > Barre latérale". Une seule barre latérale peut être affichée à la fois, et cette barre latérale sera affichée pour tous les onglets et toutes les fenêtres du navigateur.</p> +Le navigateur peut inclure un certain nombre de barrières intégrées. Par exemple, Firefox inclut une barre latérale pour interagir avec les favoris: + +<p><img alt="" src="https://mdn.mozillademos.org/files/15755/bookmarks-sidebar.png" style="display: block; height: 423px; margin-left: auto; margin-right: auto; width: 350px;">En utilisant la clé <code>sidebar_action</code> du manifest.json, une extension peut ajouter sa propre barre latérale au navigateur. Il sera répertorié à côté des barrières intégrées, et l'utilisateur pourra l'ouvrir en utilisant le même mécanisme que pour les barres intégrés.</p> + +<p>Comme un popup d'action du navigateur, le contenu de la barre latérale est spécifié comme un document HTML. Lorsque l'utilisateur ouvre la barre latérale, son document de la barre latérale est chargé dans chaque fenêtre ouverte du navigateur. Chaque fenêtre possède sa propre instance du document. Lorsque de nouvelles fenêtres sont ouvertes, elles obtiennent également leurs propres documents de barre latérale.</p> + +<p>Un document pour un onglet particulier peut être défini en utilisant la fonction {{WebExtAPIRef("sidebarAction.setPanel()")}}. Une barre latérale peut comprendre quelle fenêtre elle appartient à l'utilisation de l'API {{WebExtAPIRef("windows.getCurrent()")}} :</p> + +<pre class="brush: js notranslate">// sidebar.js +browser.windows.getCurrent({populate: true}).then((windowInfo) => { + myWindowId = windowInfo.id; +});</pre> + +<p>Ceci est utile si une barre latérale veut afficher différents contenus pour différentes fenêtres. Par exemple, regardez l'<a href="https://github.com/mdn/webextensions-examples/tree/master/annotate-page">exemple "annotate-page"</a>.</p> + +<p>Les documents de la barre latérale ont accès au même priviléges que les API JavaScript d'arrière-plan et les scripts contextuels. Ils peuvent accéder directement à la page de fond en utilisant {{WebExtAPIRef("runtime.getBackgroundPage()")}}, et peuvent interagir avec des scripts de contenu ou des applications natives à l'aide d'API de messagerie comme {{WebExtAPIRef("tabs.sendMessage()")}} et {{WebExtAPIRef("runtime.sendNativeMessage()")}}.</p> + +<p>Les documents de la barre latérale sont déchargés lorsque leur fenêtre de navigateur est fermée ou lorsque l'utilisateur ferme la barre latérale. Cela signifie que, contrairement aux pages de fond, les documents de la barre latérale ne restent pas chargés tout le temps, mais contrairement aux popups d'action du navigateur, ils restent chargés pendant que l'utilisateur interagit avec les pages Web.</p> + +<p>Lorsqu'une extension est installée comme une barre latérale, sa barre latérale s'ouvrira automatiquement. Ceci est destiné à aider l'utilisateur à comprendre que l'extension comprend une barre latérale. Notez qu'il n'est pas possible pour les add-ons d'ouvrir les barres latérales de façon programmée: les barrières latérales ne peuvent être ouvertes que par l'utilisateur.</p> + +<h2 id="Spécification_des_barres_latérales">Spécification des barres latérales</h2> + +<p>Pour spécifier une barre latérale, définissez le document par défaut avec la clé du manifest.json <code><a href="/fr/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></code>, à côté d'un titre et d'une icône par défaut :</p> + +<pre class="brush: json notranslate">"sidebar_action": { + "default_title": "My sidebar", + "default_panel": "sidebar.html", + "default_icon": "sidebar_icon.png" +}</pre> + +<p>Le titre, le panneau et l'icône peuvent être modifiés par programme en utilisant l'API {{WebExtAPIRef ("sidebarAction")}}.</p> + +<p>Le titre et l'icône sont affichés à l'utilisateur dans une interface utilisateur fournie par le navigateur pour lister les barres latérales, telles que "Affichage > Barre latérale" dans le menu Firefox.</p> + +<h2 id="Concept_de_la_barre_latérale">Concept de la barre latérale</h2> + +<p>Pour plus de détails sur la façon de concevoir la page web d'une barre latérale pour qu'elle corresponde au style de Firefox, voir la documentation du <a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Système de conception Photon</a>.</p> + +<h2 id="Exemple">Exemple</h2> + +<p>Le dépôt <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> sur GitHub contient plusieurs exemples de WebExtensions qu utilise une barre latérale:</p> + +<ul> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/annotate-page">annotate-page</a> utilise la barre latérale</li> +</ul> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/user_interface/browser_action/index.html b/files/fr/mozilla/add-ons/webextensions/user_interface/browser_action/index.html new file mode 100644 index 0000000000..0809481f28 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_interface/browser_action/index.html @@ -0,0 +1,48 @@ +--- +title: Bouton de la barre d'outils +slug: Mozilla/Add-ons/WebExtensions/user_interface/Browser_action +translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Browser_action +--- +<div>{{AddonSidebar}}</div> + +<p>Généralement appelé comme une <a href="/fr/Add-ons/WebExtensions/API/browserAction">action de navigateur</a>, cette option d'interface utilisateur est un bouton ajouté à la barre d'outils du navigateur. Les utilisateurs cliquent sur le bouton pour interagir avec votre extension.<br> + <img alt="" src="https://mdn.mozillademos.org/files/15751/browser-action.png" style="display: block; height: 182px; margin-left: auto; margin-right: auto; width: 350px;"></p> + +<p>Le bouton de la barre d'outils (action du navigateur) est très similaire au bouton de la barre d'adresse (action de la page). Pour connaître les différences et savoir quand utiliser quoi, voir <a href="/fr/Add-ons/WebExtensions/user_interface/Page_actions#Page_actions_and_browser_actions">les actions de page et les actions du navigateur</a>.</p> + +<h2 id="Spécification_de_l'action_du_navigateur">Spécification de l'action du navigateur</h2> + +<p>Vous définissez les propriétés de l'action du navigateur à l'aide de la clé <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> dans manifest.json:</p> + +<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"browser_action":</span> <span class="punctuation token">{</span> + <span class="key token">"default_icon":</span> <span class="punctuation token">{</span> + <span class="key token">"19":</span> <span class="string token">"button/geo-19.png"</span><span class="punctuation token">,</span> + <span class="key token">"38":</span> <span class="string token">"button/geo-38.png"</span> + <span class="punctuation token">}</span><span class="punctuation token">,</span> + <span class="key token">"default_title":</span> <span class="string token">"Whereami?"</span> +<span class="punctuation token">}</span></code></pre> + +<p>La seule clé obligatoire est <code>default_icon</code>.</p> + +<p>Il existe deux façons de spécifier une action du navigateur: avec ou sans <a href="/fr/Add-ons/WebExtensions/Popups">popup</a>. Si vous ne spécifiez pas de popup, lorsque l'utilisateur clique sur le bouton, un événement est envoyé à l'extension, que celle-ci attend pour utiliser <a href="https://developer.mozilla.org/fr//Add-ons/WebExtensions/API/BrowserAction/onClicked" title="Fired when a browser action icon is clicked. This event will not fire if the browser action has a popup."><code>browserAction.onClicked</code></a> :</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>browserAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<p>Si vous spécifiez une fenêtre contextuelle, l'événement de clic n'est pas envoyé : A la place, le popup s'affiche lorsque l'utilisateur clique sur le bouton. L'utilisateur peut interagir avec le popup et il se ferme automatiquement lorsque l'utilisateur clique à l'extérieur. Consulter l'article <a href="/fr/Add-ons/WebExtensions/Popups">Popup </a>pour plus de détails sur la création et la gestion des fenêtres pop-up.</p> + +<p>Notez que votre extension ne peut avoir qu'une seule action de navigateur.</p> + +<p>Vous pouvez modifier plusieurs propriétés d'action du navigateur de manière programmée à l'aide de l'API <code><a href="/fr/Add-ons/WebExtensions/API/browserAction">action du navigateur</a></code>.</p> + +<h2 id="Icônes">Icônes</h2> + +<p>Pour plus d'informations sur la création d'icônes à utiliser avec l'action de votre navigateur, voir <a href="https://design.firefox.com/photon/visuals/iconography.html">Iconographie </a>dans la documentation <a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a>.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Le dépôt <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> sur GitHub contient plusieurs exemples de WebExtensions qui utilisent les actions du navigateur:</p> + +<ul> + <li><a href="https://github.com/mdn/webextensions-examples/blob/master/bookmark-it/">bookmark-it</a> utilise il utilise une action de navigateur sans popup</li> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/beastify">beastify</a> utilise une action de navigateur avec un popup.</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/user_interface/browser_styles/index.html b/files/fr/mozilla/add-ons/webextensions/user_interface/browser_styles/index.html new file mode 100644 index 0000000000..ad9b99b49b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_interface/browser_styles/index.html @@ -0,0 +1,472 @@ +--- +title: Styles des navigateurs +slug: Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles +tags: + - Add-ons + - Browser style + - Exemple + - Extensions + - Guide + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles +--- +<div>{{AddonSidebar}}</div> + +<p>Certains composants de l'interface utilisateur - les <a href="/fr/Add-ons/WebExtensions/user_interface/Popups">fenêtres contextuelles</a>, <a href="/fr/Add-ons/WebExtensions/user_interface/Sidebars">fenêtres latérales</a>, et les <a href="/fr/Add-ons/WebExtensions/user_interface/Options_pages">pages d'options</a> du navigateur et de la page - sont spécifiés par votre extension de la même manière :</p> + +<ol> + <li>créer un fichier HTML définissant la structure de l'élément d'interface utilisateur</li> + <li>ajoutez une clé manifest.json (<code><a href="/fr/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code>, <code><a href="/fr/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code>, <code><a href="/fr/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></code>, ou <code><a href="/fr/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code>) pointant vers ce fichier HTML.</li> +</ol> + +<p>L'un des défis de cette approche est de styliser l'élément de telle sorte qu'il s'intègre au style du navigateur.<br> + Pour aider à cela, les clés manifest.json keys incluent une propriété optionnelle supplémentaire : <code>browser_style</code>.<br> + Si cela est inclus et défini sur <code>true</code>, votre document obtiendra une ou plusieurs feuilles de style supplémentaires qui le rendront cohérent avec l'interface utilisateur du navigateur et avec d'autres extensions utilisant la propriété <code>browser_style</code>.</p> + +<p>Lorsque vous envisagez d'utiliser le <code>browser_style: true</code>, vous devez tester votre extension avec différents thèmes (intégrés ou AMO) pour vous assurer que l'interface d'extension se comporte comme vous l'attendez..</p> + +<div class="blockIndicator warning"> +<p>Quand <code>browser_style: true</code> est inclus dans le manifest de votre extension web, la sélection de texte dans l'interface utilisateur de votre extension est désactivée sauf dans les contrôles de saisie. Si cela pose un problème, incluez plutôt browser_style:false.</p> +</div> + +<div class="blockIndicator note"> +<p><strong>Google Chrome</strong> et <strong>Opera</strong> utilisent <code>chrome_style</code> au lieu de <code>browser_style</code>, donc si vous souhaitez les prendre en charge, vous devez ajouter les deux clés.</p> +</div> + +<p>Dans Firefox, la feuille de style peut être vue sur <code>chrome://browser/content/extension.css</code>. La feuille de style peut être vue sur <code>chrome://browser/content/extension-mac.css</code> est également incluse sur OS X.</p> + +<p>La plupart des styles sont automatiquement appliqués, mais certains éléments nécessitent que vous ajoutiez la classe <code style="white-space: nowrap;">browser-style</code> non standard pour obtenir leur style, comme indiqué dans le tableau ci-dessous :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Element</th> + <th scope="col">Exemple</th> + </tr> + </thead> + <tbody> + <tr> + <td><code><a href="/fr/docs/Web/HTML/Element/button"><button></a></code></td> + <td> + <pre class="brush: html no-line-numbers"> +<button class="browser-style">Click me</button>{{non-standard_inline}}</pre> + </td> + </tr> + <tr> + <td> + <p><code><a href="/fr/docs/Web/HTML/Element/select"><select></a></code></p> + </td> + <td> + <pre class="brush: html no-line-numbers"> +<select class="browser-style" name="select"> + <option value="value1">Value 1</option> + <option value="value2" selected>Value 2</option> + <option value="value3">Value 3</option> +</select></pre> + </td> + </tr> + <tr> + <td><code><a href="/fr/docs/Web/HTML/Element/textarea"><textarea></a></code></td> + <td> + <pre class="brush: html no-line-numbers"> +<textarea class="browser-style">Write here</textarea></pre> + </td> + </tr> + <tr> + <td>Parent d'un <code><a href="/fr/docs/Web/HTML/Element/input"><input></a></code></td> + <td> + <pre class="brush: html no-line-numbers"> +<div class="browser-style"> + <input type="radio" id="op1" name="choices" value="op1"> + <label for="op1">Option 1</label> + + <input type="radio" id="op2" name="choices" value="op2"> + <label for="op2">Option 2</label> +</div></pre> + </td> + </tr> + </tbody> +</table> + +<div class="blockIndicator note"> +<p>Voir le {{bug(1465256)}} pour la suppression de cette exigence inutile.</p> +</div> + +<h2 id="Compatibilité_du_navigateur">Compatibilité du navigateur</h2> + + + +<p>{{Compat("webextensions.browser_style")}}</p> + +<h2 id="Composants_du_panneau_Firefox">Composants du panneau Firefox</h2> + +<div class="overheadIndicator nonStandard"> +<p><strong>Non-Standard</strong><br> + Cette fonctionnalité est non standard et ne fonctionne que dans Firefox.</p> +</div> + +<p>La feuille de style <code>chrome://browser/content/extension.css</code> contient également les styles des composants du panneau Firefox.</p> + +<p>L'<a href="https://firefoxux.github.io/StyleGuide/#/navigation">ancien guide de style de Firefox</a> documente l'utilisation appropriée.</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="col">Element</th> + <th scope="col">Exemple</th> + </tr> + </thead> + <tbody> + <tr> + <td>Header</td> + <td> + <pre class="brush: html"> +<header class="panel-section panel-section-header"> + <div class="icon-section-header"><img src="image.svg"/></div> + <div class="text-section-header">Header</div> +</header></pre> + </td> + </tr> + <tr> + <td>Footer</td> + <td> + <pre class="brush: html"> +<footer class="panel-section panel-section-footer"> + <button class="panel-section-footer-button">Cancel</button> + <div class="panel-section-footer-separator"></div> + <button class="panel-section-footer-button default">Confirm</button> +</footer></pre> + </td> + </tr> + <tr> + <td>Tabs</td> + <td> + <pre class="brush: html"> +<div class="panel-section panel-section-tabs"> + <button class="panel-section-tabs-button selected">Tab</button> + <div class="panel-section-tabs-separator"></div> + <button class="panel-section-tabs-button">Tab</button> + <div class="panel-section-tabs-separator"></div> + <button class="panel-section-tabs-button">Tab</button> +</div></pre> + </td> + </tr> + <tr> + <td>Form</td> + <td> + <pre class="brush: html"> +<div class="panel-section panel-section-formElements"> + <div class="panel-formElements-item"> + <label for="name01">Label:</label> + <input type="text" value="Name" id="name01" /> + </div> + <div class="panel-formElements-item"> + <label for="picker01">Label:</label> + <select id="picker01"> + <option value="value1" selected="true">Dropdown</option> + <option value="value2">List Item</option> + <option value="value3">List Item</option> + </select> + </div> + <div class="panel-formElements-item"> + <label for="placeholder01">Label:</label> + <input type="text" placeholder="Placeholder" id="placeholder01" /> + <button name="expander" class="expander"></button> + </div> +</div></pre> + </td> + </tr> + <tr> + <td>Menu</td> + <td> + <pre class="brush: html"> +<div class="panel-section panel-section-list"> + <div class="panel-list-item"> + <div class="icon"></div> + <div class="text">List Item</div> + <div class="text-shortcut">Ctrl-L</div> + </div> + + <div class="panel-list-item"> + <div class="icon"></div> + <div class="text">List Item</div> + <div class="text-shortcut"></div> + </div> + + <div class="panel-section-separator"></div> + + <div class="panel-list-item disabled"> + <div class="icon"></div> + <div class="text">Disabled List Item</div> + <div class="text-shortcut"></div> + </div> + + <div class="panel-section-separator"></div> + + <div class="panel-list-item"> + <div class="icon"></div> + <div class="text">List Item</div> + <div class="text-shortcut"></div> + </div> + + <div class="panel-list-item"> + <div class="icon"></div> + <div class="text">List Item</div> + <div class="text-shortcut"></div> + </div> +</div></pre> + </td> + </tr> + </tbody> +</table> + +<h3 id="Exemple">Exemple</h3> + +<h4 id="HTML">HTML</h4> + +<pre class="brush: html"><header class="panel-section panel-section-header"> + <div class="icon-section-header"><!-- An image goes here. --></div> + <div class="text-section-header">Header</div> +</header> + +<div class="panel-section panel-section-list"> + <div class="panel-list-item"> + <div class="icon"></div> + <div class="text">List Item</div> + <div class="text-shortcut">Ctrl-L</div> + </div> + + <div class="panel-list-item"> + <div class="icon"></div> + <div class="text">List Item</div> + <div class="text-shortcut"></div> + </div> + + <div class="panel-section-separator"></div> + + <div class="panel-list-item disabled"> + <div class="icon"></div> + <div class="text">Disabled List Item</div> + <div class="text-shortcut"></div> + </div> + + <div class="panel-section-separator"></div> + + <div class="panel-list-item"> + <div class="icon"></div> + <div class="text">List Item</div> + <div class="text-shortcut"></div> + </div> + + <div class="panel-list-item"> + <div class="icon"></div> + <div class="text">List Item</div> + <div class="text-shortcut"></div> + </div> +</div> + +<footer class="panel-section panel-section-footer"> + <button class="panel-section-footer-button">Cancel</button> + <div class="panel-section-footer-separator"></div> + <button class="panel-section-footer-button default">Confirm</button> +</footer></pre> + +<div class="hidden"> +<h4 id="CSS">CSS</h4> + +<pre class="brush: css">/* Global */ +html, +body { + background: white; + box-sizing: border-box; + color: #222426; + cursor: default; + display: flex; + flex-direction: column; + font: caption; + margin: 0; + padding: 0; + -moz-user-select: none; +} + +body * { + box-sizing: border-box; + text-align: start; +} + +button.panel-section-footer-button, +button.panel-section-tabs-button { + color: inherit; + background-color: unset; + font: inherit; + text-shadow: inherit; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border: none; +} + +/* Panel Section */ +.panel-section { + display: flex; + flex-direction: row; +} + +.panel-section-separator { + background-color: rgba(0, 0, 0, 0.15); + min-height: 1px; +} + +/* Panel Section - Header */ +.panel-section-header { + border-bottom: 1px solid rgba(0, 0, 0, 0.15); + padding: 16px; +} + +.panel-section-header > .icon-section-header { + background-position: center center; + background-repeat: no-repeat; + height: 32px; + margin-right: 16px; + position: relative; + width: 32px; +} + +.panel-section-header > .text-section-header { + align-self: center; + font-size: 1.385em; + font-weight: lighter; +} + +/* Panel Section - List */ +.panel-section-list { + flex-direction: column; + padding: 4px 0; +} + +.panel-list-item { + align-items: center; + display: flex; + flex-direction: row; + height: 24px; + padding: 0 16px; +} + +.panel-list-item:not(.disabled):hover { + background-color: rgba(0, 0, 0, 0.06); + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + border-top: 1px solid rgba(0, 0, 0, 0.1); +} + +.panel-list-item:not(.disabled):hover:active { + background-color: rgba(0, 0, 0, 0.1); +} + +.panel-list-item.disabled { + color: #999; +} + +.panel-list-item > .icon { + flex-grow: 0; + flex-shrink: 0; +} + +.panel-list-item > .text { + flex-grow: 10; +} + +.panel-list-item > .text-shortcut { + color: #808080; + font-family: "Lucida Grande", caption; + font-size: .847em; + justify-content: flex-end; +} + +.panel-section-list .panel-section-separator { + margin: 4px 0; +} + +/* Panel Section - Footer */ +.panel-section-footer { + background-color: rgba(0, 0, 0, 0.06); + border-top: 1px solid rgba(0, 0, 0, 0.15); + color: #1a1a1a; + display: flex; + flex-direction: row; + height: 41px; + margin-top: -1px; + padding: 0; +} + +.panel-section-footer-button { + flex: 1 1 auto; + height: 100%; + margin: 0 -1px; + padding: 12px; + text-align: center; +} + +.panel-section-footer-button > .text-shortcut { + color: #808080; + font-family: "Lucida Grande", caption; + font-size: .847em; +} + +.panel-section-footer-button:hover { + background-color: rgba(0, 0, 0, 0.06); +} + +.panel-section-footer-button:hover:active { + background-color: rgba(0, 0, 0, 0.1); +} + +.panel-section-footer-button.default { + background-color: #0996f8; + box-shadow: 0 1px 0 #0670cc inset; + color: #fff; +} + +.panel-section-footer-button.default:hover { + background-color: #0670cc; + box-shadow: 0 1px 0 #005bab inset; +} + +.panel-section-footer-button.default:hover:active { + background-color: #005bab; + box-shadow: 0 1px 0 #004480 inset; +} + +.panel-section-footer-separator { + background-color: rgba(0, 0, 0, 0.1); + width: 1px; + z-index: 99; +}</pre> + +<hr> +<pre class="brush: css">/* Example specific – not part of chrome://browser/content/extension.css */ +body { + background: #fcfcfc; + background-clip: padding-box; + border: 1px solid rgba(24,26,27,.2); + box-shadow: 0 3px 5px rgba(24,26,27,.1),0 0 7px rgba(24,26,27,.1); + box-sizing: content-box; + margin: 2em auto .5em; + width: 384px; +} + +html { + min-height: 100vh; +} + +html > body { + margin: auto; +} + +.icon-section-header { + background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIj48Y2lyY2xlIGZpbGw9IiMzNjM5NTkiIGN4PSIxNSIgY3k9IjE1IiByPSIxNSIvPjwvc3ZnPg=="); +}</pre> +</div> + +<h4 id="Resultat">Resultat</h4> + +<p>{{EmbedLiveSample("Example","640","360")}}</p> diff --git a/files/fr/mozilla/add-ons/webextensions/user_interface/elements_menu_contextuel/index.html b/files/fr/mozilla/add-ons/webextensions/user_interface/elements_menu_contextuel/index.html new file mode 100644 index 0000000000..b2cf42a214 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_interface/elements_menu_contextuel/index.html @@ -0,0 +1,59 @@ +--- +title: Elements du menu contextuel +slug: Mozilla/Add-ons/WebExtensions/user_interface/elements_menu_contextuel +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items +--- +<div>{{AddonSidebar}}</div> + +<div> +<p><span class="seoSummary">Cette option d'interface utilisateur ajoute un ou plusieurs éléments à un menu contextuel du navigateur.</span> Il s'agit du menu contextuel disponible lorsqu'un utilisateur clique avec le bouton droit de la souris sur une page Web. Les onglets peuvent aussi avoir des menus contextuels, disponibles via l' API <a href="/fr/Add-ons/WebExtensions/API/menus">browser.menus</a>.</p> + +<p><img alt="Example of content menu items added by a WebExtension, from the context-menu-demo example" src="https://mdn.mozillademos.org/files/15756/context_menu_example.png" style="display: block; height: 382px; margin-left: auto; margin-right: auto; width: 350px;"></p> + +<p>Vous utiliseriez cette option pour exposer les fonctions qui sont pertinentes à des contextes de navigateur ou de page Web spécifiques. Par exemple, vous pouvez afficher des fonctions pour ouvrir un éditeur graphique lorsque l'utilisateur clique sur une image ou offrir une fonction pour enregistrer le contenu d'une page lorsqu'une partie de celle-ci est sélectionnée. Vous pouvez ajouter des éléments de menu simples, des cases à cocher, des groupes de boutons radio et des séparateurs aux menus. Une fois qu'un élément de menu contextuel a été ajouté à l'aide de {{WebExtAPIRef("contextMenus.create")}}, il est affiché dans tous les onglets du navigateur, mais vous pouvez le masquer en le supprimant avec {{WebExtAPIRef("contextMenus.remove")}}.</p> + +<p>La liste complète des contextes pris en charge est disponible sur {{WebExtAPIRef("menus.ContextType")}} et inclut les contextes en dehors d'une page Web, tels que les signets dans l'interface du navigateur. Par exemple, l'extension "<a href="https://github.com/Rob--W/bookmark-container-tab">Open bookmark in Container Tab</a>" ajoute un élément de menu qui permet à l'utilisateur d'ouvrir une URL de signet dans un nouvel onglet de conteneur :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/16554/extension_context_menu.png" style="border: 1px solid black; display: block; height: 637px; margin: 0px auto; width: 505px;"></p> + +<div> +<h2 id="Spécification_des_éléments_du_menu_contextuel">Spécification des éléments du menu contextuel</h2> + +<p>Vous gérez les éléments du menu contextuel par programmation, en utilisant l'API {{WebExtAPIRef("contextMenus")}}. Cependant, vous devez demander la permission contextMenus dans votre manifest.json pour pouvoir profiter de l'avantage de l'API.</p> + +<pre class="brush: json">"permissions": ["contextMenus"]</pre> +Vous pouvez ensuite ajouter (mettre à jour ou supprimer) les éléments du menu contextuel dans votre script de fond de l'extension. Pour créer un élément de menu, vous spécifiez un ID, son titre et les menus contextuels sur lesquels il doit apparaître: + +<pre class="brush: js">browser.contextMenus.create({ + id: "log-selection", + title: browser.i18n.getMessage("contextMenuItemSelectionLogger"), + contexts: ["selection"] +}, onCreated);</pre> + +<p>Votre extension attend les clics sur les éléments du menu. L'information passée sur l'élément a cliqué, le contexte où le clic s'est produit, et les détails de l'onglet où le clic a eu lieu, peuvent ensuite être utilisés pour appeler les fonctionnalités de l'extension appropriées.</p> + +<pre class="brush: js">browser.contextMenus.onClicked.addListener(function(info, tab) { + switch (info.menuItemId) { + case "log-selection": + console.log(info.selectionText); + break; + ... + } +})</pre> + +<h2 id="Icônes">Icônes</h2> + +<p>Pour plus de détails sur la création d'icônes à utiliser avec votre menu contextuel, voir <a href="https://design.firefox.com/photon/visuals/iconography.html">Iconography</a> dans la documentation du <a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Systeme de conception de Photon</a>.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Le depot <a class="external external-icon" href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> sur GitHub contient plusieurs exemples de WebExtensions qui utilise les élements du menu contextuel :</p> + +<ul> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/menu-demo">menu-demo</a> ajoute différents éléments au menu contextuel.</li> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/context-menu-copy-link-with-types">context-menu-copy-link-with-types</a> ajoute un élément de menu contextuel aux liens qui copient l'URL vers le presse-papiers, comme un texte brut et HTML enrichi.</li> +</ul> +</div> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/user_interface/index.html b/files/fr/mozilla/add-ons/webextensions/user_interface/index.html new file mode 100644 index 0000000000..8d5f6bf992 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_interface/index.html @@ -0,0 +1,117 @@ +--- +title: Interface utilisateur +slug: Mozilla/Add-ons/WebExtensions/user_interface +tags: + - Landing + - User Interface + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/user_interface +--- +<div>{{AddonSidebar}}</div> + +<p>Les WebExtensions disposent de plusieurs options d'interface utilisateur afin que leur fonctionnalité puisse être mise à la disposition de l'utilisateur. Un résumé de ces options est fourni ci-dessous, avec une introduction plus détaillée à chaque option d'interface utilisateur dans cette section.</p> + +<div class="note"> +<p>Pour en revenir des conseils sur l'utilisation de ces composants d'interface utilisateur afin de créer une expérience utilisateur générale dans votre extension, consultez l'article sur les <a href="/fr/Add-ons/WebExtensions/User_experience_best_practices">bonnes pratiques de l'expérience utilisateur</a>.</p> +</div> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">UI option</th> + <th scope="col">Description</th> + <th scope="col" style="width: 350px;">Exemple</th> + </tr> + </thead> + <tbody> + <tr> + <td><a href="/fr/Add-ons/WebExtensions/user_interface/Browser_action">Bouton de la barre d'outils (action du navigateur)</a></td> + <td> + <p>Un bouton sur la barre d'outils du navigateur qui diffuse un événement sur l'add-on lorsqu'il est cliqué. Par défaut, le bouton est visible dans tous les onglets.</p> + </td> + <td><img alt="Example showing a toolbar button (browser action)." src="https://mdn.mozillademos.org/files/15751/browser-action.png" style="height: 364px; width: 700px;"></td> + </tr> + <tr> + <td>Bouton de la barre d'outils du navigateur avec un <a href="/fr/Add-ons/WebExtensions/user_interface/Popups">popup</a></td> + <td> + <p>Un popup sur un bouton dans la barre d'outils du navigateur qui s'ouvre lorsque le bouton est cliqué. La fenêtre contextuelle est définie dans un document HTML qui gère l'interaction de l'utilisateur.</p> + </td> + <td><img alt="Example of the pop-up on a toolbar button" src="https://mdn.mozillademos.org/files/15753/popup-shadow.png" style="height: 624px; width: 700px;"></td> + </tr> + <tr> + <td><a href="/fr/Add-ons/WebExtensions/user_interface/Page_actions">Bouton de la barre d'addresse</a> (action page)</td> + <td> + <p>Un bouton sur la barre d'adresse du navigateur qui distribue un événement à l'add-on lorsqu'il est cliqué. Par défaut, le bouton est caché dans tous les onglets.</p> + </td> + <td><img alt="Example showing an address bar button (page action) " src="https://mdn.mozillademos.org/files/15745/address_bar_button.png" style="height: 348px; width: 700px;"></td> + </tr> + <tr> + <td>Bouton de la barre d'addresse avec un <a href="/fr/Add-ons/WebExtensions/user_interface/Popups">popup</a></td> + <td> + <p>Un popup sur un bouton dans la barre d'adresse du navigateur qui s'ouvre lorsque le bouton est cliqué. La fenêtre contextuelle est définie dans un document HTML qui gère l'interaction de l'utilisateur.</p> + </td> + <td><img alt="Example of a popup on the address bar button" src="https://mdn.mozillademos.org/files/15747/page_action_popup.png" style="height: 524px; width: 700px;"></td> + </tr> + <tr> + <td><a href="/fr/Add-ons/WebExtensions/user_interface/Context_menu_items">Elément du menu contextuel</a></td> + <td> + <p>Les éléments de menu, les cases à cocher et les boutons radio sur un ou plusieurs des menus contextuels du navigateur. En outre, les menus peuvent être structurés en ajoutant des séparateurs. Lorsque les éléments du menu sont cliqués, un événement est envoyé à l'extension.</p> + </td> + <td><img alt="Example of content menu items added by a WebExtension, from the context-menu-demo example" src="https://mdn.mozillademos.org/files/15756/context_menu_example.png" style="height: 942px; width: 864px;"></td> + </tr> + <tr> + <td><a href="/fr/Add-ons/WebExtensions/user_interface/Sidebars">Barre latérale</a></td> + <td> + <p dir="ltr">Un document HTML s'affiche à côté d'une page Web, avec l'option de contenu unique par page. La barre latérale s'ouvre lorsque l'extension est installée, puis obéit à la sélection de visibilité de la barre latérale de l'utilisateur. L'interaction de l'utilisateur dans la barre latérale est traitée par son document HTML.</p> + </td> + <td><img alt="Example of a sidebar" src="https://mdn.mozillademos.org/files/15755/bookmarks-sidebar.png" style="height: 846px; width: 700px;"></td> + </tr> + <tr> + <td><a href="/fr/Add-ons/WebExtensions/user_interface/Options_pages">page d'options</a></td> + <td> + <p>Une page qui vous permet de définir les préférences pour votre WebExtension que vos utilisateurs peuvent modifier. L'utilisateur peut accéder à cette page dans le gestionnaire des extensions du navigateur.</p> + </td> + <td><img alt="Example showing the options page content added in the favorite colors example." src="https://mdn.mozillademos.org/files/15748/options_page.png"></td> + </tr> + <tr> + <td><a href="/fr/Add-ons/WebExtensions/user_interface/extension_pages">Extension pages</a></td> + <td> + <p>Utilisez les pages Web incluses dans votre WebExtension pour fournir des formulaires, de l'aide ou tout autre contenu requis, dans les fenêtres ou les onglets.</p> + </td> + <td><img alt="Example of a simple bundled page displayed as a detached panel." src="https://mdn.mozillademos.org/files/15752/bundled_page_as_panel_small.png" style="height: 432px; width: 700px;"></td> + </tr> + <tr> + <td><a href="/fr/Add-ons/WebExtensions/user_interface/Notifications">Notifications</a></td> + <td> + <p>Notifications transitoires affichées à l'utilisateur par le mécanisme de notification du système d'exploitation sous-jacent. Déclenche un événement vers l'extension lorsque l'utilisateur clique sur une notification ou lorsque une notification se ferme (automatiquement ou à la demande de l'utilisateur).</p> + </td> + <td><img alt="Example of an extension triggered system notification" src="https://mdn.mozillademos.org/files/15754/notify-shadowed.png" style="height: 294px; width: 780px;"></td> + </tr> + <tr> + <td><a href="/fr/Add-ons/WebExtensions/user_interface/Omnibox">Suggestions de la barre d'addresse</a></td> + <td> + <p>Offrez des suggestions de barèmes d'adresses personnalisées lorsque l'utilisateur entre un mot-clé.</p> + </td> + <td><img alt="Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions." src="https://mdn.mozillademos.org/files/15749/omnibox_example_small.png" style="height: 464px; width: 700px;"></td> + </tr> + <tr> + <td><a href="/fr/Add-ons/WebExtensions/user_interface/devtools_panels">Panneaux d'outils de développement</a></td> + <td> + <p>Un onglet avec un document HTML associé qui s'affiche dans les outils de développement du navigateur.</p> + </td> + <td><img alt="Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions." src="https://mdn.mozillademos.org/files/15746/developer_panel_tab.png" style="height: 224px; width: 700px;"></td> + </tr> + </tbody> +</table> + +<p>Les guides pratiques suivants fournissent des conseils étape par étape pour créer certaines options d'interface utilisateur:</p> + +<p> </p> + +<ul> + <li><a href="/fr/Add-ons/WebExtensions/user_interface/lignes_directrices_en_matiere_accessibilite">Lignes directrices en matière d'accessibilité</a></li> + <li><a href="/fr/Add-ons/WebExtensions/Add_a_button_to_the_toolbar">Ajouter un bouton à la barre d'outils</a></li> + <li><a href="/fr/Add-ons/WebExtensions/user_interface/Browser_styles">Styles des navigateurs</a></li> + <li><a href="/fr/Add-ons/WebExtensions/Extending_the_developer_tools">Extension des outils de développement</a></li> + <li><a href="/fr/Add-ons/WebExtensions/Implement_a_settings_page">Mettre en place une page de paramètres</a></li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/user_interface/lignes_directrices_en_matiere_accessibilite/index.html b/files/fr/mozilla/add-ons/webextensions/user_interface/lignes_directrices_en_matiere_accessibilite/index.html new file mode 100644 index 0000000000..e974f0871b --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_interface/lignes_directrices_en_matiere_accessibilite/index.html @@ -0,0 +1,153 @@ +--- +title: Lignes directrices en matière d'accessibilité +slug: >- + Mozilla/Add-ons/WebExtensions/user_interface/lignes_directrices_en_matiere_accessibilite +tags: + - Développement + - Extensions + - UI + - UX + - WebExtensions + - interface utilisateur +translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Accessibility_guidelines +--- +<p>{{AddonSidebar()}}</p> + +<p>En ce qui concerne l'accessibilité, les extensions devraient suivre les mêmes lignes directrices que les sites Web. Cependant, les extensions ont des caractéristiques uniques qui méritent d'être prises en considération lors de la conception pour l'accessibilité. Voici une ventilation des fonctions d'extension et comment elles devraient être utilisées pour rendre une extension accessible.</p> + +<p>Vous trouverez plus d'information sur la conception et l'accessibilité dans la section <a href="https://design.firefox.com/photon/">Photon Design System</a> et <a href="/en-US/docs/Mozilla/Accessibility">Accessibilité et Mozilla</a> section de MDN.</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Fonction d'interface utilisateur</th> + <th scope="col"> Lignes directrices</th> + </tr> + </thead> + <tbody> + <tr> + <td> + <p><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/commands">Raccourcis clavier (commands)</a></p> + </td> + <td> + <p>Les raccourcis clavier permettent d'activer facilement les fonctions d'extension.</p> + + <p>Pour améliorer l'accessibilité, ajoutez des raccourcis clavier pour :</p> + + <ul> + <li>éléments de l'interface utilisateur de l'extension, tels que les boutons de la barre d'outils et de la barre d'adresse.</li> + <li>toutes les fonctionnalités d'une extension, cependant, lorsque cela n'est pas pratique, fournissent des raccourcis pour les fonctionnalités d'extension couramment utilisées. </li> + </ul> + + <div class="blockIndicator note"> + <p>Les utilisateurs peuvent modifier les raccourcis clavier d'une extension en fonction de leurs besoins. Cependant, les utilisateurs ne peuvent pas ajouter de raccourcis, c'est pourquoi il est préférable d'en ajouter autant que possible.</p> + </div> + </td> + </tr> + <tr> + <td> + <p><a href="/Add-ons/WebExtensions/user_interface/Browser_action">Bouton de la barre d'outils (action du navigateur)</a></p> + </td> + <td> + <p>Pour tenir compte du thème actif, fournissez des <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action#theme_icons">icônes de boutons de la barre d'outils pour les thèmes avec du texte clair et foncé</a>.</p> + + <p>Suivez les directives du Photon Design System sur l'<a href="https://design.firefox.com/photon/visuals/iconography.html">Iconographie</a>. Utilisez différentes images pour transmettre l'état, par exemple basculé ou actif. N'utilisez pas d'icônes colorées ou de changements de couleur pour indiquer les changements d'état, car ils peuvent ne pas être visibles pour tous les utilisateurs.</p> + + <p>Incluez toujours un titre de texte pour que les détails des boutons puissent être lus par un lecteur d'écran. Le titre du bouton doit être mis à jour pour refléter :</p> + + <ul> + <li>l'état de l'extension.</li> + <li>le contenu des badges texte affichés sur le bouton.</li> + </ul> + + <p>Ajoutez un raccourci à l'action du bouton, en utilisant l'option spéciale de raccourci spécial <code>_execute_browser_action</code>.</p> + </td> + </tr> + <tr> + <td> + <p><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/user_interface/Popups">Bouton de la barre d'outils avec une fenêtre contextuelle</a></p> + </td> + <td> + <p>Le balisage dans la fenêtre contextuelle doit suivre les <a href="/fr/docs/Accessibilité">lignes directrices standard d'accessibilité au web</a>.</p> + </td> + </tr> + <tr> + <td> + <p><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/user_interface/Page_actions">Bouton de la barre d'adresse (action page)</a></p> + </td> + <td> + <p>Les mêmes directives que les boutons de la barre d'outils doivent être suivies.</p> + + <p>Ajoutez un raccourci à l'action du bouton, en utilisant l'option de raccourci <code>_execute_page_action</code>.</p> + </td> + </tr> + <tr> + <td> + <p><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/user_interface/Popups">Bouton de la bare d'adresse avec un popup</a></p> + </td> + <td> + <p>Le balisage dans la fenêtre contextuelle devrait suivre les <a href="/fr/docs/Accessibilité">lignes directrices standard d'accessibilité du web</a>.</p> + </td> + </tr> + <tr> + <td> + <p><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/user_interface/elements_menu_contextuel">Elément du menu contextuel</a></p> + </td> + <td> + <p>Les éléments de menu contextuel offrent aux utilisateurs un moyen accessible de découvrir les fonctions d'extension associées aux éléments d'une page Web. Par conséquent, dans la mesure du possible, ajoutez des fonctions d'extension à leurs menus contextuels pertinents.</p> + </td> + </tr> + <tr> + <td> + <p><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/user_interface/barres_laterales">Barre latérale</a></p> + </td> + <td> + <p>Le balisage dans la barre latérale doit être conforme aux <a href="/fr/docs/Accessibilité">lignes directrices standard d'accessibilité du web</a>.</p> + + <p>Ajoutez un raccourci clavier pour ouvrir une barre latérale, en utilisant l'option de raccourci spécial <code>_execute_sidebar_action</code>.</p> + </td> + </tr> + <tr> + <td> + <p><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages">Options page</a></p> + </td> + <td> + <p>Le balisage de la page des options doit suivre les <a href="/fr/docs/Accessibilité">lignes directrices standard d'accessibilité du Web</a>.</p> + </td> + </tr> + <tr> + <td> + <p><a href="/Add-ons/WebExtensions/user_interface/Extension_pages">Extension page</a></p> + </td> + <td> + <p>Le balisage de la page d'extension doit suivre les <a href="/fr/docs/Accessibilité">lignes directrices standard d'accessibilité du Web</a>.</p> + </td> + </tr> + <tr> + <td> + <p><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/user_interface/Notifications">Notification</a></p> + </td> + <td> + <p>Fournir des notifications pour les événements qui se produisent en arrière-plan ou qui ne sont pas autrement notifiés dans l'interface utilisateur. Soyez économe en notifications, mais veillez à ne pas les minimiser au détriment de l'accessibilité.</p> + </td> + </tr> + <tr> + <td> + <p><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/user_interface/Omnibox">Suggestion de la barre d'adresse</a></p> + </td> + <td> + <p>Ajoutez des suggestions selon le guide, il n'y a pas d'autres considérations d'accessibilité pour les extensions.</p> + </td> + </tr> + <tr> + <td> + <p><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/user_interface/panneaux_devtools">Panneau d'outils de développement</a></p> + </td> + <td> + <p>Le balisage dans la barre latérale doit être conforme aux <a href="/fr/docs/Accessibilité">conforme aux directives d'accessibilité du Web standard</a>.</p> + + <p>Il est recommandé d'offrir un raccourci clavier pour ouvrir un panneau devtools.</p> + </td> + </tr> + </tbody> +</table> diff --git a/files/fr/mozilla/add-ons/webextensions/user_interface/notifications/index.html b/files/fr/mozilla/add-ons/webextensions/user_interface/notifications/index.html new file mode 100644 index 0000000000..40dbdb303c --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_interface/notifications/index.html @@ -0,0 +1,53 @@ +--- +title: Notifications +slug: Mozilla/Add-ons/WebExtensions/user_interface/Notifications +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Notifications +--- +<div>{{AddonSidebar}}</div> + +<div> +<p><span class="seoSummary">Les notifications vous permettent d'afficher des informations sur votre extension ou son contenu en utilisant le système d'exploitation sous-jacent</span></p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15754/notify-shadowed.png" style="display: block; height: 147px; margin-left: auto; margin-right: auto; width: 390px;"></p> +Les notifications peuvent inclure un appel d'action pour l'utilisateur, et votre extension peut écouter l'utilisateur en cliquant sur la notification ou la fermeture de la notification. + +<h2 id="Spécification_des_notifications">Spécification des notifications</h2> + +<p>Vous gérez les notifications en programmant, en utilisant l'API {{WebExtAPIRef("notifications")}}. Pour utiliser cette API, vous devez demander la permission de notification dans votre manifest.json :</p> + +<pre class="brush: json"><span class="pl-s"><span class="pl-pds">"</span>permissions<span class="pl-pds">"</span></span>: [<span class="pl-s"><span class="pl-pds">"</span>notifications<span class="pl-pds">"</span></span>]</pre> + +<p>Vous utilisez ensuite {{WebExtAPIRef("notifications.create")}} pour créer vos notifications, comme dans cet exemple de <a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a> :</p> + +<pre class="brush: js">var title = browser.i18n.getMessage("notificationTitle"); +var content = browser.i18n.getMessage("notificationContent", message.url); +browser.notifications.create({ + "type": "basic", + "iconUrl": browser.extension.getURL("icons/link-48.png"), + "title": title, + "message": content +});</pre> + +<p>Ce code crée une notification avec un icône, un titre et un message.</p> + +<p>Si la notification inclut un appel à l'action, vous pouvez écouter l'utilisateur en cliquant sur la notification pour appeler la fonction pour gérer l'action:</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>notifications<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span> +</code></pre> + +<p>Si vous émettez des appels à l'action par le biais de notifications, vous souhaitez également définir l'ID de notification facultatif, afin de déterminer quel appel à l'action a sélectionné.</p> + +<h2 id="Icônes">Icônes</h2> + +<p>Pour plus d'informations sur la création d'icônes à utiliser avec votre notification, reportez-vous à la section <a href="https://design.firefox.com/photon/visuals/iconography.html">Iconography</a> dans la documentation <a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a>.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Le dépôt <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> sur GitHub contient plusieurs exemples de WebExtensions qui utilise la création de notifications :</p> + +<ul> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/notify-link-clicks-i18n">notify-link-clicks-i18n</a> utilise la création de notifications.</li> +</ul> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/user_interface/omnibox/index.html b/files/fr/mozilla/add-ons/webextensions/user_interface/omnibox/index.html new file mode 100644 index 0000000000..23520c7da0 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_interface/omnibox/index.html @@ -0,0 +1,76 @@ +--- +title: Suggestions de la barre d'adresse +slug: Mozilla/Add-ons/WebExtensions/user_interface/Omnibox +tags: + - User Interface + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Omnibox +--- +<div>{{AddonSidebar()}}</div> + +<p>En utilisant l'API {{WebExtAPIRef("omnibox")}}, WebExtensions peut personnaliser les suggestions proposées dans la liste déroulante de la barre d'adresse du navigateur lorsque l'utilisateur entre un mot-clé.</p> + +<p><img alt="Example showing the result of the firefox_code_search WebExtension's customization of the address bar suggestions." src="https://mdn.mozillademos.org/files/15749/omnibox_example_small.png" style="display: block; height: 232px; margin-left: auto; margin-right: auto; width: 350px;"></p> + +<p>Cela permet à votre extension, par exemple, de rechercher une bibliothèque d'ebooks gratuits ou comme dans l'exemple ci-dessus, un dépôt d'exemples de code.</p> + +<h2 id="Spécification_de_la_personnalisation_Omnibox">Spécification de la personnalisation Omnibox</h2> + +<p>Vous dites à votre extension qu'il va personnaliser les suggestions de la barre d'adresse en incluant la clé <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/omnibox">omnibox</a> et la définition du mot-clé de déclenchement dans son fichier <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> :</p> + +<pre class="brush: json line-numbers language-json"> "omnibox": { "keyword" : "cs" }</pre> + +<p>Dans le fichier JavaScript d'arrière-plan extension, en utilisant {{WebExtAPIRef("omnibox.setDefaultSuggestion()")}}, vous pouvez éventuellement définir la première suggestion à afficher dans la liste déroulante de la barre d'adresse. Utilisez ceci pour donner un indice sur l'utilisation de la fonction :</p> + +<pre class="brush: js line-numbers language-js">browser.omnibox.setDefaultSuggestion({ + description: `Search the firefox codebase + (e.g. "hello world" | "path:omnibox.js onInputChanged")` +});</pre> + +<article id="wikiArticle"> +<p>Vous pouvez ensuite ajouter le code pour fournir le contenu personnalisé en écoutant {{WebExtAPIRef("omnibox.onInputStarted")}}, qui est envoyé lorsque l'utilisateur a tapé le mot-clé et un espace, et {{WebExtAPIRef("omnibox.onInputChanged")}}, qui est expédié chaque fois que l'utilisateur met à jour l'entrée de la barre d'adresse. Vous pouvez ensuite remplir les suggestions, dans ce cas, créer une recherche de https://searchfox.org/mozilla-central utilisant le terme entré par l'utilisateur :</p> + +<pre class="brush: js">browser.omnibox.onInputChanged.addListener((text, addSuggestions) => { + let headers = new Headers({"Accept": "application/json"}); + let init = {method: 'GET', headers}; + let url = buildSearchURL(text); + let request = new Request(url, init); + + fetch(request) + .then(createSuggestionsFromResponse) + .then(addSuggestions); +});</pre> + +<p>Si la WebExtension définit une suggestion par défaut en utilisant {{WebExtAPIRef("omnibox.setDefaultSuggestion()")}}, alors cela apparaîtra en premier dans la liste déroulante.</p> + + +<p>L'extension peut ensuite écouter l'utilisateur en cliquant sur l'une des suggestions, en utilisant {{WebExtAPIRef("omnibox.onInputEntered")}}. Si la suggestion par défaut est cliquée, le terme personnalisé de l'utilisateur est renvoyé, sinon la chaîne de la suggestion est renvoyée. En outre, les informations sur les préférences du navigateur de l'utilisateur pour la gestion des nouveaux liens sont transmises. Dans le code ci-dessous, le terme personnalisé de l'utilisateur est employé pour créer une recherche différente, l'URL suggérée est ouverte:</p> + +<pre class="brush: js">browser.omnibox.onInputEntered.addListener((text, disposition) => { + let url = text; + if (!text.startsWith(SOURCE_URL)) { + // Update the url if the user clicks on the default suggestion. + url = `${SEARCH_URL}?q=${text}`; + } + switch (disposition) { + case "currentTab": + browser.tabs.update({url}); + break; + case "newForegroundTab": + browser.tabs.create({url}); + break; + case "newBackgroundTab": + browser.tabs.create({url, active: false}); + break; + } +});</pre> + + +<h2 id="Exemples">Exemples</h2> + +<p>Le depot <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> sur GitHub contient plusieurs exemples de WebExtensions qui utilise la personnalisation de omnibox</p> + +<ul> + <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/firefox-code-search">firefox-code-search</a> utilise la personnalisation de omnibox</li> +</ul> +</article> diff --git a/files/fr/mozilla/add-ons/webextensions/user_interface/options_pages/index.html b/files/fr/mozilla/add-ons/webextensions/user_interface/options_pages/index.html new file mode 100644 index 0000000000..cd81456555 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_interface/options_pages/index.html @@ -0,0 +1,71 @@ +--- +title: Options page +slug: Mozilla/Add-ons/WebExtensions/user_interface/Options_pages +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Options_pages +--- +<div>{{AddonSidebar}}</div> + +<div> +<p>Une page Option vous permet de définir des préférences pour votre WebExtension que vos utilisateurs peuvent modifier. Les utilisateurs peuvent accéder à la page d'options de l'extension à partir du gestionnaire des add-ons du navigateur:</p> + +<p>{{EmbedYouTube("eODy24csH5M")}}</p> + +<p>La façon dont les utilisateurs accèdent à la page et la manière dont elle est intégrée à l'interface utilisateur du navigateur varient d'un navigateur à l'autre.</p> + +<p>Vous pouvez ouvrir la page en programmant en appelant <a href="/fr/Add-ons/WebExtensions/API/Runtime/openOptionsPage" title="If your add-on does not have an options page, or the browser failed to create one for some other reason, runtime.lastError will be set."><code>runtime.openOptionsPage()</code></a>.</p> + +<p>Les pages d'options ont une politique de sécurité de contenu qui restreint les sources à partir de laquelle elles peuvent charger des ressources et interdit certaines pratiques dangereuses telles que l'utilisation <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code>. Voir la <a href="/fr/Add-ons/WebExtensions/Content_Security_Policy">politique de sécurité de contenu</a> pour plus de détails.</p> + +<h2 id="Spécification_de_la_page_doptions">Spécification de la page d'options</h2> + +<p>Pour créer une page d'options, écrivez un fichier HTML définissant la page. Cette page peut inclure des fichiers CSS et JavaScript, comme une page Web normale. Cette page, contine un exemple dans <a href="https://github.com/mdn/webextensions-examples/tree/master/favourite-colour">favourite-colour</a>, comprend un fichier :</p> + +<pre class="brush: html"><!DOCTYPE html> + +<html> + <head> + <meta charset="utf-8" /> + </head> + +<body> + <form> + <label>Favourite colour</label> + <input type="text" id="colour" > + <button type="submit">Save</button> + </form> + <script src="options.js"></script> +</body> + +</html></pre> + +<p>JavaScript en cours d'exécution dans la page peut utiliser toutes les <a href="/fr/Add-ons/WebExtensions/API">APIs des WebExtension</a> auxquelles l'extension a des <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permissions</a>. En particulier, vous pouvez utiliser l'API <a href="/fr/Add-ons/WebExtensions/API/Storage" title="Enables WebExtensions to store and retrieve data, and listen for changes to stored items."><code>storage</code></a> pour conserver les préférences.</p> + +<p>Insérez les fichiers de la page dans votre extension.</p> + +<p>Vous devez également inclure une clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code> dans votre fichier manifest.json, en lui donnant l'URL de la page.</p> + +<pre class="brush: json">"options_ui": { + "page": "options.html", + "browser_style": true +},</pre> + +<div class="note"> +<p><strong>Note:</strong> <strong>Google Chrome</strong> et <strong>Opera</strong> utilisent <code>chrome_style</code> au lieu de <code>browser_style</code>, donc si vous souhaitez les prendre en charge, vous devez ajouter les deux clés.</p> +</div> + +<p>Voir la page <code><a href="/fr/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code> pour les <strong>options de partage</strong> entre votre page d'options et les scripts d'arrière-plan ou de contenu.</p> + +<h2 id="Options_de_conception_de_contenu">Options de conception de contenu</h2> + +<p>Pour plus de détails sur la façon de concevoir le contenu de vos options en fonction du style de Firefox, voir le <a href="https://design.firefox.com/photon/index.html">system de conception Photon</a> et les <a href="/fr/Add-ons/WebExtensions/user_interface/Browser_styles">styles de navigateur</a> documentation.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Le depot <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> sur GitHub contient plusieurs exemples de WebExtensions qui utilisent les options de page :</p> + +<ul> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/favourite-colour">favourite-colour</a> utilise les options de page</li> +</ul> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/user_interface/page_actions/index.html b/files/fr/mozilla/add-ons/webextensions/user_interface/page_actions/index.html new file mode 100644 index 0000000000..b16b7b0284 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_interface/page_actions/index.html @@ -0,0 +1,109 @@ +--- +title: Bouton de la barre d'adresse +slug: Mozilla/Add-ons/WebExtensions/user_interface/Page_actions +tags: + - AddresseBarButton + - Page Action + - User Interface + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Page_actions +--- +<div>{{AddonSidebar}}</div> + +<p>Généralement appelée <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/pageAction">action de page</a>, cette option d'interface utilisateur est un bouton ajouté à la barre d'adresse du navigateur. Les utilisateurs cliquent sur le bouton pour interagir avec votre extension.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15745/address_bar_button.png" style="display: block; height: 174px; margin-left: auto; margin-right: auto; width: 350px;"></p> + +<h2 id="Actions_de_pages_et_actions_du_navigateur">Actions de pages et actions du navigateur</h2> + +<p>Le bouton de la barre d'adresse (ou action de la page) est très semblable au bouton de la barre d'outils (ou action du navigateur).</p> + +<p>Les différences sont :</p> + +<ul> + <li><strong>L'emplacement du bouton :</strong> + + <ul> + <li>L'action de la page s'affiche dans la barre d'adresse du navigateur.</li> + <li>L'action du navigateur s'affiche en dehors de la barre d'adresse, dans la barre d'outils du navigateur.</li> + </ul> + </li> + <li>La visibilité du bouton <strong>:</strong> + <ul> + <li>L'action page est masquée par défaut (bien que cette valeur par défaut puisse être modifiée via les propriétés <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/page_action">manifest </a>des clés <code>show_matches</code> et <code>hide_matches</code>), et vous appelez <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/PageAction/show" title="Shows the page action for a given tab. The page action is shown whenever the given tab is the active tab."><code>pageAction.show()</code></a> et <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/PageAction/hide" title="Hides the page action for a given tab."><code>pageAction.hide()</code></a> pour l'afficher ou la masquer dans des onglets spécifiques.</li> + <li>L'action du navigateur est toujours affichée.</li> + </ul> + </li> +</ul> + +<p>Utilisez une action de page lorsque l'action est liée à la page en cours, et une action navigateur lorsque l'action est liée au navigateur dans son ensemble ou à trop de pages. Par exemple :</p> + +<table class="fullwidth-table standard-table"> + <thead> + <tr> + <th scope="row">Type</th> + <th scope="col">Bookmarks action</th> + <th scope="col">Content action</th> + <th scope="col">Tabs operation</th> + </tr> + </thead> + <tbody> + <tr> + <th scope="row">page action</th> + <td>Bookmark this page</td> + <td>Reddit enhancement</td> + <td>Send tab</td> + </tr> + <tr> + <th scope="row">browser action</th> + <td>Show all bookmarks</td> + <td>Enable ad-blocking</td> + <td>Sync all open tabs</td> + </tr> + </tbody> +</table> + + + +<h2 id="Spécification_de_l'action_de_la_page">Spécification de l'action de la page</h2> + +<p>Vous définissez les propriétés de la clé de l'<code><a href="https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">action de page</a></code> dans le manifest.json:</p> + +<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"page_action":</span> <span class="punctuation token">{</span> + <span class="key token">"browser_style":</span> <span class="keyword token">true</span><span class="punctuation token">,</span> + <span class="key token">"default_icon":</span> <span class="punctuation token">{</span> + <span class="key token">"19":</span> <span class="string token">"button/geo-19.png"</span><span class="punctuation token">,</span> + <span class="key token">"38":</span> <span class="string token">"button/geo-38.png"</span> + <span class="punctuation token">}</span><span class="punctuation token">,</span> + <span class="key token">"default_title":</span> <span class="string token">"Whereami?"</span><span class="punctuation token">,</span> +<span class="punctuation token">}</span></code></pre> + +<p>La seule clé obligatoire est <code>default_icon</code>.</p> + +<p>Il y a deux façons de spécifier une action de page : avec ou sans <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Popups">popup</a>.</p> + +<ul> + <li><strong>Sans popup:</strong> Lorsque l'utilisateur clique sur le bouton, un événement est envoyé à l'extension, que l'extension écoute pour utiliser <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction/onClicked" title="Fired when a browser action icon is clicked. This event will not fire if the browser action has a popup."><code>pageAction.onClicked</code></a>:</li> + <li> + <pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>pageAction<span class="punctuation token">.</span>onClicked<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span>handleClick<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + </li> + <li><strong>Avec un popup:</strong> L'événement <code>click</code> n'est pas envoyé. Au lieu de cela, le popup apparaît lorsque l'utilisateur clique sur le bouton. L'utilisateur interagit alors avec le popup. Lorsque l'utilisateur clique à l'extérieur de la fenêtre contextuelle, celle-ci se ferme automatiquement. Voir l'article <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Popups">Popup </a>pour plus de détails sur la création et la gestion des popups.</li> +</ul> + +<p>Notez que votre extension ne peut avoir qu'une seule page action.</p> + +<p>Vous pouvez modifier l'une des propriétés d'action de la page de manière programmée en utilisant l'API de la <code><a href="https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/WebExtensions/API/pageAction">pageAction</a></code>.</p> + +<h2 id="Icônes">Icônes</h2> + +<p>Pour plus de détails sur la création d'icônes à utiliser avec l'action de votre page, voir <a href="https://design.firefox.com/photon/visuals/iconography.html">Iconography</a> dans la documentation du <a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a>.</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Le dépôt <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> sur GitHub contient plusieurs exemples de WebExtensions qui utilisent la page action :</p> + +<ul> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/chill-out">chill-out</a> utilise une action de navigateur sans popup</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/user_interface/pages_web_incluses/index.html b/files/fr/mozilla/add-ons/webextensions/user_interface/pages_web_incluses/index.html new file mode 100644 index 0000000000..d12b031f08 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_interface/pages_web_incluses/index.html @@ -0,0 +1,77 @@ +--- +title: Extension pages +slug: Mozilla/Add-ons/WebExtensions/user_interface/pages_web_incluses +tags: + - Débutant + - User Interface + - WebExtensions + - interface utilisateur +translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages +--- +<div>{{AddonSidebar()}}</div> + +<p><span class="seoSummary">Vous pouvez inclure des pages HTML dans votre extension sous la forme de formulaires, d’aide ou tout autre contenu dont votre extension a besoin.</span></p> + +<p><img alt="Example of a simple bundled page displayed as a detached panel." src="https://mdn.mozillademos.org/files/15752/bundled_page_as_panel_small.png" style="display: block; height: 216px; margin-left: auto; margin-right: auto; width: 350px;"></p> + +<p>Ces pages ont également accès aux mêmes API JavaScript privilégiées qui sont disponibles pour les scripts d’arrière<span>‐</span>plan de votre extension, mais elles sont dans leur propre onglet, leur propre file d’attente d’événements JavaScript, leurs propres globales etc.</p> + +<p>Pensez à la page d'arrière-plan comme une « page cachée d’extension ».</p> + +<h2 id="Spécification_des_pages_d’extension">Spécification des pages d’extension</h2> + +<p>Vous pouvez inclure des fichiers HTML - et les fichiers CSS ou JavaScript associés - dans votre extension. Les fichiers peuvent être inclus à la racine ou organisés dans des sous‐dossiers.***</p> + +<pre class="notranslate">/my-extension + /manifest.json + /my-page.html + /my-page.js</pre> + +<h2 id="Affichage_des_pages_d’extension">Affichage des pages d’extension</h2> + +<p>Il existe deux options pour afficher des pages d'extension : {{WebExtAPIRef("windows.create()")}} et {{WebExtAPIRef("tabs.create()")}}.</p> + +<p>À l’aide de <code>windows.create()</code>, vous pouvez ouvrir une page HTML intégrée dans un panneau détaché (une fenêtre sans l’interface utilisateur de la barre d’la barre de signet et similaire) pour créer une expérience utilisateur semblable à une boîte de dialogue :</p> + +<pre class="brush: js notranslate">var createData = { + type: "detached_panel", + url: "panel.html", + width: 250, + height: 100 +}; +var creating = browser.windows.create(createData);</pre> + +<p>Lorsque la fenêtre n'est plus nécessaire, elle peut être fermée par programme.</p> + +<p>Par exemple, après que l’utilisateur a cliqué sur un bouton, en passant l’ID de la fenêtre actuelle à {{WebExtAPIRef("windows.remove()")}} :</p> + +<pre class="brush: js notranslate">document.getElementById("closeme").addEventListener("click", function(){ + let winId = browser.windows.WINDOW_ID_CURRENT; + let removing = browser.windows.remove(winId); +});</pre> + +<h2 id="Pages_d’extension_et_historique">Pages d’extension et historique</h2> + +<p>Par défaut, les pages que vous ouvrez de cette manière seront stockées dans l’historique de l’utilisateur, comme les pages Web normales. Si vous ne voulez pas avoir ce comportement, utilisez {{WebExtAPIRef("history.deleteUrl()")}} pour supprimer l'enregistrement du navigateur :</p> + +<pre class="brush: js notranslate" id="ct-4">function onVisited(historyItem) { + if (historyItem.url == browser.extension.getURL(myPage)) { + browser.history.deleteUrl({url: historyItem.url}); + } +} + +browser.history.onVisited.addListener(onVisited);</pre> + +<p>Pour utiliser l’API historique, vous devez demander la <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions">permission</a> « <code>history</code> » dans votre fichier <code><a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a></code>.</p> + +<h2 id="Conception_des_pages_Web">Conception des pages Web</h2> + +<p>Pour plus de détails sur la façon de concevoir votre page Web pour correspondre au style de Firefox, voir la documentation sur le <a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">système de conception Photon</a> et les <a href="/fr/Add-ons/WebExtensions/user_interface/Browser_styles">styles de navigateur</a>.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Le dépôt <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> sur GitHub contient plusieurs exemples de WebExtensions qui utilise une action de navigateur :</p> + +<ul> + <li><a class="external external-icon" href="https://github.com/mdn/webextensions-examples/tree/master/window-manipulator">window-manipulator</a> utilise les options pour créer une fenêtre</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/user_interface/panneaux_devtools/index.html b/files/fr/mozilla/add-ons/webextensions/user_interface/panneaux_devtools/index.html new file mode 100644 index 0000000000..e487250175 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_interface/panneaux_devtools/index.html @@ -0,0 +1,74 @@ +--- +title: panneaux devtools +slug: Mozilla/Add-ons/WebExtensions/user_interface/panneaux_devtools +tags: + - Débutant + - Guide + - WebExtensions + - interface utilisateur +translation_of: Mozilla/Add-ons/WebExtensions/user_interface/devtools_panels +--- +<div>{{AddonSidebar}}</div> + +<div class="note"> +<p>Cette fonctionnalité deviendra disponible dans Firefox 54.</p> +</div> + +<p>Lorsqu'une extension fournit des outils utiles aux développeurs, il est possible d'ajouter une interface utilisateur pour les outils de développement du navigateur en tant que nouveau panneau.</p> + +<p><img alt='Simple example showing the addition of "My panel" to the Developer Tools tabs.' src="https://mdn.mozillademos.org/files/15746/developer_panel_tab.png" style="display: block; height: 112px; margin-left: auto; margin-right: auto; width: 350px;"></p> + +<h2 id="Spécification_d'un_panneau_d'outils_de_développement">Spécification d'un panneau d'outils de développement</h2> + +<p>Un panneau d'outils de développement est ajouté à l'aide de l'API <code><a href="/fr/Add-ons/WebExtensions/API/devtools.panels">devtools.panels</a></code>, qui, à son tour, doit être exécutée à partir d'une page spéciale devtools.</p> + +<p>Ajoutez la page devtools en incluant la clé <code><a href="/fr/Add-ons/WebExtensions/manifest.json/devtools_page">devtools_page</a></code> dans l'extension <a href="/fr/Add-ons/WebExtensions/manifest.json">manifest.json</a> et fournissez l'emplacement du fichier de la page HTML dans l'extension :</p> + +<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"devtools_page":</span> <span class="string token">"devtools-page.html"</span></code></pre> + +<p>Dans la page des devtools, appelez un script qui ajoutera un panneau dans devtools:</p> + +<pre class="brush: html"><body> + <script src="devtools.js"></script> +</body></pre> + +<p>Dans le script, créez un panneau devtools en spécifiant le titre, l'icône et le fichier HTML du panneau qui fournit le contenu du panneau:</p> + +<pre class="brush: js">function handleShown() { + console.log("panel is being shown"); +} + +function handleHidden() { + console.log("panel is being hidden"); +} + +browser.devtools.panels.create( + "My Panel", // title + "icons/star.png", // icon + "devtools/panel/panel.html" // content +).then((newPanel) => { + newPanel.onShown.addListener(handleShown); + newPanel.onHidden.addListener(handleHidden); +});</pre> + +<p>L'extension peut maintenant exécuter un code dans la fenêtre inspectée à l'aide de <code><a href="/fr/Add-ons/WebExtensions/API/devtools.inspectedWindow/eval"><code>devtools</code>.inspectedWindow.eval()</a></code> ou en injectant un script de contenu via le script en arrière en passant un message. Vous pouvez trouver plus de détails sur la façon de procéder dans l'<a href="/fr/Add-ons/WebExtensions/Extending_the_developer_tools">Extension des outils de développement.</a></p> + +<h2 id="Conception_du_panneau_de_développement">Conception du panneau de développement</h2> + +<p>Pour plus de détails sur la façon de concevoir la page Web de votre panneau de développeurs pour qu'elle corresponde au style de Firefox, consultez la documentation <a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a>.</p> + +<h2 id="Icônes">Icônes</h2> + +<p>Pour plus de détails sur la création d'icônes à utiliser avec votre panneau d'outils de développement, voir Iconographie dans la documentation du <a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a>.</p> + + + +<h2 id="Exemples">Exemples</h2> + +<p>Le depot <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> sur GitHub contient plusieurs exemples de WebExtensions qui utilisent les panneaux devtools:</p> + +<ul> + <li> + <p><a href="https://github.com/mdn/webextensions-examples/blob/master/devtools-panels/">devtools-panels</a> utilise la création d'un panneau dans devtools</p> + </li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/user_interface/popups/index.html b/files/fr/mozilla/add-ons/webextensions/user_interface/popups/index.html new file mode 100644 index 0000000000..69bd665e64 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/user_interface/popups/index.html @@ -0,0 +1,62 @@ +--- +title: Popups +slug: Mozilla/Add-ons/WebExtensions/user_interface/Popups +tags: + - WebExtensions + - interface utilisateur +translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Popups +--- +<div>{{AddonSidebar}}</div> + +<div> +<p>Une fenêtre contextuelle est une boîte de dialogue associée à un <a href="/fr/Add-ons/WebExtensions/Browser_action">bouton de la barre d'outils</a> ou à un <a href="/fr/Add-ons/WebExtensions/Page_actions">bouton de la barre d'adresse</a>. Cette page décrit les popups en général, leur spécification, leur débogage, leur redimensionnement et leur conception, ainsi que des exemples d'utilisation..</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15747/page_action_popup.png" style="display: block; height: 282px; margin-left: auto; margin-right: auto; width: 350px;"></p> + +<p>Lorsque l'utilisateur clique sur le bouton, la fenêtre contextuelle s'affiche. Lorsque l'utilisateur clique n'importe où en dehors de la fenêtre contextuelle, la fenêtre contextuelle est fermée. La fenêtre contextuelle peut être fermée par programmation en appelant <code><a href="https://developer.mozilla.org/fr/docs/Web/API/Window/close">window.close()</a></code> à partir d'un script exécuté dans la fenêtre contextuelle. Cependant, vous ne pouvez pas ouvrir le menu contextuel à partir d'un JavaScript de le l'extension : il ne peut être ouvert qu'en réponse à une action de l'utilisateur.</p> + +<p>Vous pouvez définir un raccourci clavier qui ouvre la fenêtre contextuelle en utilisant les raccourcis <code>"_execute_browser_action"</code> et <code>"_execute_page_action"</code>. Consultez la clé de <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/commands">commande</a></code><span style="display: none;"> </span> de la documentation du manifest.json.</p> + +<h2 id="Spécification_dune_fenêtre_contextuelle">Spécification d'une fenêtre contextuelle</h2> + +<p>Le popup est spécifié comme un fichier HTML, qui peut inclure des fichiers CSS et JavaScript, comme le fait une page Web normale. Contrairement à une page normale, le JavaScript peut utiliser toutes les <a href="/fr/Add-ons/WebExtensions/API">APIs WebExtension</a> auxquelles l'extension possède des <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a>.</p> + +<p>Le fichier HTML est inclus dans la WebExtension et spécifié en partie à la clé <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> ou <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a> par <code>"default_popup"</code> dans le manifest.json :</p> + +<pre class="brush: json"> "browser_action": { + "default_icon": "icons/beasts-32.png", + "default_title": "Beastify", + "default_popup": "popup/choose_beast.html" + }</pre> + +<p>Vous pouvez demander au navigateur d'inclure une feuille de style dans votre fenêtre contextuelle qui la rendra compatible avec l'interface utilisateur du navigateur. Pour ce faire, ajoutez <code>"browser_style": true</code> dans la clé <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> ou <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a>.</p> + +<p>Les popups ont une politique de sécurité de contenu qui restreint les sources à partir de laquelle ils peuvent charger des ressources et interdire certaines pratiques dangereuses telles que l'utilisation <code><a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code>. Voir la <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">politique de sécurité du contenu</a> pour plus de détails à ce sujet.</p> + +<h2 id="Déboguer_des_fenêtres_pop-up">Déboguer des fenêtres pop-up</h2> + +<p>Vous pouvez déboguer la balisage et le javaScript d'un popup en utilisant le débogueur de l'extension, mais vous devrez activer la fonction désactiver de la fonction d'occlusion automatique contextuelle pour éviter que les fenêtres contextuelles ne se cache lorsque vous cliquez à l'extérieur. <a href="https://developer.mozilla.org/fr/Add-ons/WebExtensions/Debugging#Debugging_popups">En savoir plus sur le débogage des fenêtres pop-up</a>.</p> + +<h2 id="Redimensionnement_contextuel">Redimensionnement contextuel</h2> + +<p>Le redimensionnement automatique des fenêtres contextuelles correspond à leur contenu.<br> + L'algorithme pour cela peut être différent d'un navigateur à l'autre.</p> + +<p>Dans Firefox, la taille est calculée juste avant que le popup ne s'affiche, et au plus, 10 fois par seconde après les mutations DOM. Pour les documents de mode strict, la taille est calculée en fonction de la taille de l'élément <code><a href="/fr/docs/Web/HTML/Element/body"><body></a></code>.</p> + +<p>Pour le mode quirks, c'est l'élément <code><a href="/fr/docs/Web/HTML/Element/html"><html></a></code>. Firefox calcule la largeur préférée du contenu de cet élément, le renvoie à cette largeur, puis redimensionne de sorte qu'il n'y a pas de défilement vertical. Il atteindra une taille de <strong>800x600 pixels</strong> au maximum si cela correspond à l'écran de l'utilisateur. (Avant Firefox 60, c'était seulement 680px.) . Si l'utilisateur <a href="https://support.mozilla.org/en-US/kb/customize-firefox-controls-buttons-and-toolbars#w_customize-the-menu-or-the-toolbar">déplace le bouton du complément dans le menu</a> ou il apparaît dans le dépassement de la barre d'outils, la fenêtre apparaît dans le panneau du menu avec une largeur fixe.</p> + +<p>Dans Firefox Android 57, la popup s'ouvre comme une page web dans un nouvel onglet.</p> + +<h2 id="Design_de_la_popup">Design de la popup</h2> + +<p>Pour plus de détails sur la façon de concevoir la page Web de votre popup pour qu'elle corresponde au style de Firefox, voir la documentation de <a class="grey-90 no-underline hover-no-underline" href="https://design.firefox.com/photon/index.html">Photon Design System</a>.</p> + +<h2 id="Exemples">Exemples</h2> + +<p>Le dépôt <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> sur GitHub contient plusieurs exemples de WebExtensions qui utilisent l'action du navigateur :</p> + +<ul> + <li><a href="https://github.com/mdn/webextensions-examples/tree/master/beastify">beastify</a> utilise l'action du navigateur.</li> +</ul> +</div> diff --git a/files/fr/mozilla/add-ons/webextensions/what_are_webextensions/index.html b/files/fr/mozilla/add-ons/webextensions/what_are_webextensions/index.html new file mode 100644 index 0000000000..7b2378f5e5 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/what_are_webextensions/index.html @@ -0,0 +1,59 @@ +--- +title: Qu'est-ce que les WebExtensions ? +slug: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions +tags: + - Extensions + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions +--- +<div>{{AddonSidebar}}</div> + +<p>Une extension ajoute des fonctionnalités et des fonctions à un navigateur. Elle est créée en utilisant des technologies Web familière: HTML, CSS et JavaScript. Elle peut bénéficier des mêmes API Web que ce d'une page web où JavaScript est utilisée. Cependant, une extension a également accès à son propre ensemble d'API JavaScript. Cela signifie que vous pouvez faire beaucoup plus dans une extension que ce que vous pouvez faire dans une page Web. Voici quelques exemples de fonctionnalités d'extension possibles :</p> + +<p><strong>Améliorer ou compléter un site web</strong> : Utiliser une extension pour ajouter de nouvelles fonctionnalités ou informations supplémentaires dans votre navigateur sur votre site Web. Permettre aux utilisateurs de collecter de l'information sur les pages qu'ils visitent pour améliorer le service que vous offrez.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15808/Amazon_add_on.png"></p> + +<p>Exemples: <a href="https://addons.mozilla.org/en-US/firefox/addon/amazon-browser-bar/">Amazon Assistant for Firefox</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/onenote-clipper/">OneNote Web Clipper</a>, and <a href="https://addons.mozilla.org/en-US/firefox/addon/grammarly-1/">Grammarly for Firefox</a></p> + +<p><strong>Laissez les utilisateurs montrer leur personnalité </strong>: Les extensions navigateur peuvent manipuler le contenu des pages web, par exemple en permettant aux utilisateurs d'ajouter leur logo ou leur image préférée en arrière-plan à chaque page qu'ils visitent. Les extensions peuvent également permettre aux utilisateurs de mettre à jour l'apparence de l'interface utilisatrice Firefox, de la même manière que les <a href="/fr/Add-ons/Themes/Theme_concepts">add-ons de thème</a>.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15809/MyWeb_New_Tab_add_on.png" style="height: 398px; width: 540px;"></p> + +<p>Exemples: <a href="https://addons.mozilla.org/en-US/firefox/addon/myweb-new-tab/">MyWeb New Tab</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/tabliss/">Tabliss</a>, et <a href="https://addons.mozilla.org/en-US/firefox/addon/vivaldifox/">VivaldiFox</a></p> + +<p><strong>Ajouter ou supprimer du contenu de pages web </strong>: vous pouvez aider les utilisateurs à bloquer les publicités intrusives sur les pages Web, à accéder à un guide de voyage chaque fois qu'un pays ou une ville est mentionné sur une page Web ou à reformater le contenu de la page. Avec la possibilité d'accéder et de mettre à jour le code HTML et CSS d'une page, vous pouvez aider les utilisateurs à voir le web comme ils le souhaitent.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15807/ublock_origin_add_on.png" style="height: 480px; width: 640px;"></p> + +<p>Exemples : <a href="https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/">uBlock Origin</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/reader/">Reader</a>, et <a href="https://addons.mozilla.org/en-US/firefox/addon/toolbox-google-play-store/">Toolbox for Google Play Store™</a></p> + +<p><strong>Ajout d'outils et de nouvelles fonctionnalités de navigation</strong>: Ajout de nouvelles fonctionnalités à un babillard ou générez des images de code QR à partir d'URLs, de liens hypertexte ou texte de page. Grâce aux options d'interface utilisatrice flexibles et à la puissance des <a href="/fr/Add-ons/WebExtensions">APIs WebExtensions</a>, vous pouvez facilement ajouter de nouvelles fonctionnalités à un navigateur. Vous pouvez aussi améliorer presque toutes les fonctionnalités d'un site web ou comment celles-ci sont utilisées même si ce n'est pas votre site Web.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15806/QR_Code_Image_Generator_add_on.png"></p> + +<p>Exemples: <a href="https://addons.mozilla.org/en-US/firefox/addon/qr-code-image-generator/">QR Code Image Generator</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/swimlanes-for-trello/">Swimlanes for Trello</a>, et <a href="https://addons.mozilla.org/en-US/firefox/addon/tomato-clock/">Tomato Clock</a></p> + +<p><strong>Jeux </strong>: Offrir des jeux-vidéo traditionnels, avec des fonctionnalités de jeu hors ligne ou explorer de nouvelles possibilités de jeu. (Par exemple, en intégrant le jeu dans la navigation quotidienne.)</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15805/Asteroids_in_Popup_add_on%20.png" style="height: 438px; width: 700px;"></p> + +<p>Exemples: <a href="https://addons.mozilla.org/en-US/firefox/addon/asteroids-in-popup/">Asteroids in Popup</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/solitaire-card-game-new-tab/">Solitaire Card Game New Tab</a>, et <a href="https://addons.mozilla.org/en-US/firefox/addon/2048-prime/">2048 Prime</a>.</p> + +<p><strong>Ajouter des outils de développement </strong>: Il se peut que vous fournissez des outils de développement pour le Web dans le cadre de votre business. Il se pourrait que vous ayez développer des techniques efficaces de développement Web que vous désirez partager. Quelque soit votre situation, vous pouvez améliorer les outils de développement intégrés de Firefox en ajoutant un nouvel onglet à la barre d'outils du développeur.</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/15804/aXe_Developer_Tools_add_on.png" style="height: 261px; width: 700px;"></p> + +<p>Exemples: <a href="https://addons.mozilla.org/en-US/firefox/addon/web-developer/">Web Developer</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/react-devtools/">Web React Developer Tools</a>, et <a href="https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/">aXe Developer Tools</a></p> + +<p>Les Extensions pour Firefox sont construites à l'aide d'<a href="/fr/Add-ons/WebExtensions">APIs WebExtensions</a>, un système multi-navigateur pour développer des extensions. De manière générale, L'API est compatible avec l' <a class="external external-icon" href="https://developer.chrome.com/extensions">API d'extension</a> de Google Chrome et Opera. Les extensions écrites pour ces navigateurs fonctionneraient dans la plupart des cas dans Firefox ou Microsoft Edge avec seulement quelques <a href="/fr/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension">changements</a>. L'API est également entièrement compatible avec <a href="/fr/Firefox/Multiprocess_Firefox">Firefox multi-processus</a>.</p> + +<p>Si vous avez des idées ou des questions, ou si vous avez besoin d'aide pour <a href="https://extensionworkshop.com/documentation/develop/porting-a-legacy-firefox-extension/">migrer un module complémentaire hérité vers les API WebExtensions</a>, vous pouvez nous contacter via la <a class="external external-icon" href="https://mail.mozilla.org/listinfo/dev-addons">la mailing-liste dev-addons</a> ou dans le <a href="https://chat.mozilla.org/#/room/#addons:mozilla.org">room des add-ons </a>sur <a href="https://wiki.mozilla.org/Matrix">Matrix</a>.</p> + +<h2 id="Pour_aller_plus_loin"> Pour aller plus loin?</h2> + +<ul> + <li>Parcourez le développement d'une extension simple dans <a href="/fr/Add-ons/WebExtensions/Your_first_WebExtension">votre première extension</a>.</li> + <li>En savoir plus sur la structure d'une extensions en consultant <a href="/fr/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">Architecture d'une extension</a>.</li> + <li>Essayez quelques exemples d'extensions dans les <a href="/fr/Add-ons/WebExtensions/Examples">extensions exemples</a>.</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/work_with_the_bookmarks_api/index.html b/files/fr/mozilla/add-ons/webextensions/work_with_the_bookmarks_api/index.html new file mode 100644 index 0000000000..9351ed7476 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/work_with_the_bookmarks_api/index.html @@ -0,0 +1,206 @@ +--- +title: Travailler avec l'API Bookmarks +slug: Mozilla/Add-ons/WebExtensions/Work_with_the_Bookmarks_API +tags: + - Add-ons + - Bookmarks + - Comment + - Débutant + - Extensions + - How-to + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Work_with_the_Bookmarks_API +--- +<p>{{AddonSidebar}}</p> + +<p>Les signets permettent aux utilisateurs de collecter et d'organiser des listes de pages Web, afin qu'ils puissent facilement retrouver leurs favoris. Grâce à l'API Bookmarks, vos extensions peuvent manipuler les signets de la même manière que les utilisateurs.</p> + + + +<h2 id="Permissions">Permissions</h2> + +<p>Pour utiliser l'API Bookmarks, vous devez demander la permission <code>"bookmarks"</code> dans le fichier manifest.json de votre extension</p> + +<pre class="brush: json">"permissions": [ + "bookmarks" +],</pre> + +<h2 id="Caractéristiques">Caractéristiques</h2> + +<p>L'API Bookmarks permet à votre extension de faire ce que les utilisateurs peuvent faire avec les signets et inclut des fonctions pour :</p> + +<ul> + <li>Manipulation élémentaire d'un signet, offrant : + <ul> + <li>Ajouter ({{WebExtAPIRef("bookmarks.create")}}).</li> + <li>Récupérer ({{WebExtAPIRef("bookmarks.get")}}).</li> + <li>Mettre à jour ({{WebExtAPIRef("bookmarks.update")}}).</li> + <li>Déplacer ({{WebExtAPIRef("bookmarks.move")}}).</li> + <li>Supprimer ({{WebExtAPIRef("bookmarks.remove")}}).</li> + <li>Rechercher ({{WebExtAPIRef("bookmarks.search")}}).</li> + </ul> + </li> + <li>Obtention d'une liste de signets récemment ajoutés ({{WebExtAPIRef("bookmarks.getRecent")}}).</li> + <li>Signet la manipulation de l'arborescence des dossiers pour : + <ul> + <li>Obtenir des informations sur l'arborescence ({{WebExtAPIRef("bookmarks.getTree")}}, {{WebExtAPIRef("bookmarks.getChildren")}}, and {{WebExtAPIRef("bookmarks.getSubTree")}}).</li> + <li>Ajouter des branches ({{WebExtAPIRef("bookmarks.create")}}).</li> + <li>Supprimer des noeuds ({{WebExtAPIRef("bookmarks.removeTree")}}).</li> + <li>Déplacer des nœuds ({{WebExtAPIRef("bookmarks.move")}}).</li> + </ul> + </li> + <li>Écoute des événements de signets (ou de dossiers d'arborescence de signets) qui : + <ul> + <li>Ajouter ({{WebExtAPIRef("bookmarks.onCreated")}}).</li> + <li>Changer ({{WebExtAPIRef("bookmarks.onChanged")}}).</li> + <li>Déplacer ({{WebExtAPIRef("bookmarks.onMoved")}}.</li> + <li>Ré-order ({{WebExtAPIRef("bookmarks.onChildrenReordered")}}).</li> + <li>Supprimer ({{WebExtAPIRef("bookmarks.onRemoved")}}).</li> + </ul> + </li> + <li>Écoute des importations de signets, qui peuvent être utilisées pour suspendre le traitement d'un autre signet pendant l'importation : + <ul> + <li>Importer commencé ({{WebExtAPIRef("bookmarks.onImportBegan")}}).</li> + <li>Importer terminé ({{WebExtAPIRef("bookmarks.onImportEnded")}}).</li> + </ul> + </li> +</ul> + +<h2 id="Exemple_de_procédure_pas_à_pas">Exemple de procédure pas à pas</h2> + +<p>Pour comprendre comment utiliser l'API Bookmarks, jetons un coup d'œil à l'exemple <a href="https://github.com/mdn/webextensions-examples/tree/master/bookmark-it">bookmark-it</a>. Cet exemple ajoute une icône de barre d'outils ({{WebExtAPIRef("browserAction")}}) lorsqu'on clique dessus, ajoute ou supprime la page en cours des signets. Si la page est mise en signet (ou supprimée des signets) d'une autre manière, l'icône est mise à jour pour montrer l'état du signet de la page.</p> + +<p>Cette vidéo montre l'extension en action :</p> + +<p>{{EmbedYouTube("hCDN0FotiFw")}}</p> + +<h3 id="manifest.json">manifest.json</h3> + +<p>Le <a href="https://github.com/mdn/webextensions-examples/blob/master/bookmark-it/manifest.json">manifest.json</a> décrit l'extension :</p> + +<pre class="brush: json">{ + "manifest_version": 2, + "name": "Bookmark it!", + "version": "1.1", + "description": "A simple bookmark button", + "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/bookmark-it",</pre> + + + +<p>Définit les icônes qui seront utilisées pour représenter l'extension, dans des endroits tels que le gestionnaire de modules complémentaires.</p> + + + +<pre class="brush: json"> "icons": { + "48": "icons/bookmark-it.png", + "96": "icons/bookmark-it@2x.png" + },</pre> + +<p>Demande des permissions. <code>"bookmarks"</code> est demandé pour permettre l'utilisation de l'API Bookmarks. Des <code>"onglets"</code> sont demandés afin que l'URL et le titre de l'onglet actif puissent être lus et utilisés pour créer ou rechercher le signet de la page. Le besoin de l'API Tabs pour accéder à ces détails signifie que vous ne pouvez pas utiliser l'API Bookmark sans l'API Tabs.</p> + +<pre class="brush: json"> "permissions": [ + "bookmarks", + "tabs" + ],</pre> + +<p>Définit les détails du bouton de la barre d'outils de base. La plupart des fonctionnalités du bouton seront configurées dans le code une fois que le statut du signet de la page sera connu.</p> + +<pre class="brush: json"> "browser_action": { + "default_icon": "icons/star-empty-38.png", + "default_title": "Bookmark it!" + },</pre> + +<p>Définit le script d'arrière-plan qui ajoutera et supprimera le signet de la page et définira les caractéristiques du bouton de la barre d'outils.</p> + +<pre class="brush: json"> "background": { + "scripts": ["background.js"] + } + +}</pre> + +<h3 id="background.js">background.js</h3> + +<p>Comme pour tout script d'arrière-plan, <a href="https://github.com/mdn/webextensions-examples/blob/master/bookmark-it/background.js">background.js</a>est exécuté dès que l'extension est démarrée. Initialement, le script appelle <code>updateActiveTab()</code> qui commence par obtenir l'objet <code>Tabs</code> pour l'onglet en cours, en utilisant {{WebExtAPIRef("tabs.query")}}, et en passant l'objet à <code>updatetab()</code> avec ce code :</p> + +<pre class="brush: js"> var gettingActiveTab = browser.tabs.query({active: true, currentWindow: true}); + gettingActiveTab.then(updateTab);</pre> + +<p><code>updatetab()</code> passe d'abord l'URL de l'onglet actif à <code>isSupportedProtocol()</code>:</p> + +<pre class="brush: js"> function updateTab(tabs) { + if (tabs[0]) { + currentTab = tabs[0]; + if (isSupportedProtocol(currentTab.url)) {</pre> + +<p><code>isSupportedProtocol()</code> determines if the URL displayed in the active tab is one that can be bookmarked. To extract the protocol from the tab’s URL, the extension takes advantage of the <a href="/fr/docs/Web/API/HTMLHyperlinkElementUtils">HTMLHyperlinkElementUtils</a> by adding the tab’s URL to an <code><a></code> element and then getting the protocol using the <code>protocol</code> property.</p> + +<pre class="brush: js"> function isSupportedProtocol(urlString) { + var supportedProtocols = ["https:", "http:", "ftp:", "file:"]; + var url = document.createElement('a'); + url.href = urlString; + return supportedProtocols.indexOf(url.protocol) != -1; + }</pre> + +<p>Si le protocole est pris en charge par les signets, l'extension détermine si l'URL de l'onglet est déjà référencée et si c'est le cas, appelle <code>updateIcon()</code>:</p> + +<pre class="brush: js"> var searching = browser.bookmarks.search({url: currentTab.url}); + searching.then((bookmarks) => { + currentBookmark = bookmarks[0]; + updateIcon();</pre> + +<p><code>updateIcon()</code> définit l'icône et le titre du bouton de la barre d'outils, selon que l'URL est mise en signet ou non.</p> + +<pre class="brush: js">function updateIcon() { + browser.browserAction.setIcon({ + path: currentBookmark ? { + 19: "icons/star-filled-19.png", + 38: "icons/star-filled-38.png" + } : { + 19: "icons/star-empty-19.png", + 38: "icons/star-empty-38.png" + }, + tabId: currentTab.id + }); + browser.browserAction.setTitle({ + // Screen readers can see the title + title: currentBookmark ? 'Unbookmark it!' : 'Bookmark it!', + tabId: currentTab.id + }); +}</pre> + +<p>Avec le bouton de la barre d'outils initialisé, l'extension commence à écouter un clic sur le bouton de la barre d'outils, en appelant <code>toggleBookmark()</code> lorsque cela se produit.</p> + +<pre class="brush: js">browser.browserAction.onClicked.addListener(toggleBookmark);</pre> + +<p><code>toggleBookmark()</code> utilise le résultat de la recherche effectuée par <code>updateTabs()</code>, qui recherche la présence de l'URL dans un signet, afin de déterminer s'il faut supprimer ou ajouter un signet pour l'URL actuelle.</p> + +<pre class="brush: js">function toggleBookmark() { + if (currentBookmark) { + browser.bookmarks.remove(currentBookmark.id); + } else { + browser.bookmarks.create({title: currentTab.title, url: currentTab.url}); + } +}</pre> + +<p>Pour mettre à jour l'icône de la barre d'outils, l'extension écoute la création ou la suppression des signets. Cette approche a l'avantage de capturer à la fois la mise à jour de signet effectuée par l'extension et toute mise à jour faite par l'utilisateur en dehors de l'extension.</p> + +<pre class="brush: js">// listen for bookmarks being created +browser.bookmarks.onCreated.addListener(updateActiveTab); + +// listen for bookmarks being removed +browser.bookmarks.onRemoved.addListener(updateActiveTab);</pre> + +<p>Enfin, l'extension est à l'écoute d'une modification apportée à l'URL de l'onglet actif, ou l'utilisateur passe à un autre onglet ou une autre fenêtre. Ces actions peuvent modifier l'URL affichée et donc l'état de l'icône de la barre d'outils de l'extension.</p> + +<pre class="brush: js">// listen to tab URL changes +browser.tabs.onUpdated.addListener(updateActiveTab); + +// listen to tab switching +browser.tabs.onActivated.addListener(updateActiveTab); + +// listen for window switching +browser.windows.onFocusChanged.addListener(updateActiveTab);</pre> + +<h2 id="Apprendre_encore_plus">Apprendre encore plus</h2> + +<p>Si vous voulez en savoir plus, consultez la <a href="/fr/Add-ons/WebExtensions/API/bookmarks">référence de l'API Bookmarks</a>.</p> diff --git a/files/fr/mozilla/add-ons/webextensions/working_with_files/index.html b/files/fr/mozilla/add-ons/webextensions/working_with_files/index.html new file mode 100644 index 0000000000..acf8458d47 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/working_with_files/index.html @@ -0,0 +1,160 @@ +--- +title: Travailler avec des fichiers +slug: Mozilla/Add-ons/WebExtensions/Working_with_files +tags: + - Guide + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Working_with_files +--- +<div>{{AddonSidebar()}}</div> + +<p>Votre extension de navigateur peut avoir besoin de fichiers pour offrir des fonctionnalités complètes. Cet article examine les cinq mécanismes permettant de gérer les fichiers :</p> + +<ul> + <li>Téléchargement de fichiers dans le dossier de téléchargement sélectionné de l'utilisateur.</li> + <li>Ouverture de fichiers à l'aide d'un sélecteur de fichiers dans une page Web.</li> + <li>Ouverture de fichiers par glisser-déposer sur une page Web.</li> + <li>Enregistrement de fichiers ou de blobs localement avec IndexedDB à l'aide de la bibliothèque idb-file-storage.</li> + <li>Transmission de fichiers à une application native sur l'ordinateur de l'utilisateur.</li> +</ul> + +<p>Pour chacun de ces mécanismes, nous présentons leur utilisation avec des références à la documentation API pertinente, des guides et des exemples montrant comment utiliser l'API.</p> + +<h2 id="Téléchargement_de_fichiers_avec_l'API_de_téléchargement">Téléchargement de fichiers avec l'API de téléchargement</h2> + +<p>Ce mécanisme vous permet d'obtenir un fichier depuis votre site Web (ou tout emplacement que vous pouvez définir comme URL) vers l'ordinateur de l'utilisateur. La clé est {{WebExtAPIRef("downloads.download()")}}, qui, dans sa forme la plus simple, accepte une URL et télécharge le fichier de cette URL vers le dossier de téléchargement par défaut de l'utilisateur :</p> + +<pre class="brush: js">browser.downloads.download({ url : ‘https://example.org/image.png’ })</pre> + +<p>Vous pouvez laisser l'utilisateur télécharger à un endroit de son choix en précisant le paramètre<code>saveAs</code>.</p> + +<div class="note"> +<p>En utilisant <a href="/fr/docs/Web/API/URL/createObjectURL">URL.createObjectURL()</a>, vous pouvez également télécharger des fichiers et des blobs définis dans votre JavaScript, y compris le contenu local extrait de IndexedDB.</p> +</div> + +<p>L'API de téléchargement fournit également des fonctionnalités pour annuler, mettre en pause, reprendre, effacer et supprimer les téléchargements, rechercher les fichiers téléchargés dans le gestionnaire de téléchargement, afficher les fichiers téléchargés dans le gestionnaire de fichiers de l'ordinateur, et ouvrir un fichier dans une application associée.</p> + +<p><span id="result_box" lang="fr"><span>Pour utiliser cette API, vous devez avoir les </span></span><a href="/fr/docs/Web/API/Permissions#API_permissions">permissions API</a> "downloads" spécifiées dans votre fichier<a href="/fr/Add-ons/WebExtensions/manifest.json"> manifest.json</a>.</p> + +<p>Exemple : <a href="https://github.com/mdn/webextensions-examples/tree/master/latest-download">Latest download</a><br> + API référence : <a href="/fr/Add-ons/WebExtensions/API/downloads">downloads API</a></p> + +<h2 id="Ouverture_de_fichiers_dans_une_extension_avec_un_sélecteur_de_fichiers">Ouverture de fichiers dans une extension avec un sélecteur de fichiers</h2> + +<p>Si vous souhaitez travailler avec un fichier de l'ordinateur de l'utilisateur, une option est de permettre à l'utilisateur de sélectionner un fichier à l'aide du navigateur de fichiers de l'ordinateur. Créez une nouvelle page ou injectez un code dans une page existante pour utiliser le type <code>file</code> de l'élément <code>input</code> HTML pour offrir à l'utilisateur un sélecteur de fichiers. Une fois que l'utilisateur a sélectionné un ou des fichiers, le script associé à la page peut accéder au contenu du fichier à l'aide du <a href="/fr/docs/Web/API/File">DOM File API</a>, de la même manière qu'une application web.</p> + +<p>Exemple : <a href="https://github.com/mdn/webextensions-examples/tree/master/imagify">Imagify</a><br> + Guide : <a href="/fr/docs/Using_files_from_web_applications">Using files from web applications</a><br> + API références : <a href="/fr/docs/Web/HTML/Element/input/file">HTML input element</a> | <a href="/fr/docs/Web/API/File">DOM File API</a></p> + +<div class="note"> +<p>Si vous souhaitez accéder ou traiter tous les fichiers dans un dossier sélectionné, vous pouvez le faire en utilisant <code><input type="file" webkitdirectory="true"/></code>pour sélectionner le dossier et récupérer tous les fichiers qu'il contient.</p> +</div> + +<h2 id="Ouverture_de_fichiers_dans_une_extension_avec_glisser-déposer"><span id="result_box" lang="fr"><span>Ouverture de fichiers dans une extension avec glisser-déposer</span></span></h2> + +<p>L'API Web Drag and Drop offre une alternative à l'utilisation d'un sélecteur de fichiers. Pour utiliser cette méthode, établissez une zone de stockage qui correspond à votre interface utilisateur, puis ajoutez les récepteurs pour les évènements<a href="/fr/docs/Web/Events/dragenter"> dragenter</a> <em>(entrer)</em>,<a href="/fr/docs/Web/Events/dragover"> dragover</a> <em>(glisser)</em>, et<a href="/fr/docs/Web/Events/drop"> drop</a> <em>(déposer)</em>. <span id="result_box" lang="fr"><span>Dans le gestionnaire de l'événement "déposer", votre code peut accéder à tout fichier déposé par l'utilisateur à partir de l'objet offert par la propriété dataTransfer en utilisant</span></span> <a href="/fr/docs/Web/API/DataTransfer/files">DataTransfer.files</a>. Votre code peut alors accéder aux fichiers et les traiter en utilisant le <a href="/fr/docs/Web/API/File">DOM File API</a>.</p> + +<p>Exemple : <a href="https://github.com/mdn/webextensions-examples/tree/master/imagify">Imagify</a><br> + Guides : <a href="/fr/docs/Using_files_from_web_applications">Using files from web applications</a> | <a href="/fr/docs/Web/API/HTML_Drag_and_Drop_API/File_drag_and_drop">File drag and drop</a><br> + API référence : <a href="/fr/docs/Web/API/File">DOM File API</a></p> + +<h2 id="Enregistrement_de_fichiers_de_données_localement_avec_la_bibliothèque_de_stockage_de_fichiers_IndexedDB">Enregistrement de fichiers de données localement avec la bibliothèque de stockage de fichiers IndexedDB</h2> + +<p>Si votre extension doit enregistrer des fichiers localement, <a href="https://www.npmjs.com/package/idb-file-storage">idb-file-storage library</a> fournit une simple enveloppe de <a href="/fr/docs/Web/API/API_IndexedDB">IndexedDB API</a> <span id="result_box" lang="fr"><span>pour faciliter le stockage et la récupération des fichiers et des blobs</span></span> .</p> + +<p>Sur Firefox, cette bibliothèque fournit également un " Promise-based API wrapper" pour l'API IDBMutableFile non standard. (L'API IDBMutableFile permet aux extensions de créer et de maintenir un fichier objet de base de données IndexedDB qui fournit une API pour lire et modifier le contenu du fichier sans charger tout le fichier dans la mémoire.)</p> + +<p>Les principales caractéristiques de la bibliothèque sont les suivantes :</p> + +<ul> + <li><a href="https://rpl.github.io/idb-file-storage/function/index.html#static-function-getFileStorage">getFileStorage</a> qui renvoie une instance IDBFileStorage, créant le stockage nommé s'il n'existe pas.</li> + <li><a href="https://rpl.github.io/idb-file-storage/class/src/idb-file-storage.js~IDBFileStorage.html">IDBFileStorage</a> qui fournit les méthodes pour sauvegarder et récupérer des fichiers tels que : + <ul> + <li>liste pour obtenir une liste de fichiers éventuellement filtrée dans la base de données.</li> + <li>mettre un fichier ou un blob dans la base de données.</li> + <li>récupérer un fichier ou un blob à partir de la base de données.</li> + <li>supprimer pour effacer un fichier ou un blob à partir de la base de données.</li> + </ul> + </li> +</ul> + +<p>L'exemple <a href="https://github.com/mdn/webextensions-examples/tree/master/store-collected-images/webextension-plain">Store Collected Images</a> illustre comment utiliser la plupart de ces fonctionnalités. (IDBMutableFile n'est pas inclus, mais vous pouvez trouver des exemples dans le <a href="https://rpl.github.io/idb-file-storage/examples/">idb-file-storage examples</a> ainsi qu'un certain nombre d'autres exemples de la bibliothèque en action).</p> + +<p>L'exemple <a href="https://github.com/mdn/webextensions-examples/tree/master/store-collected-images/webextension-plain">Store Collected Images</a> permet aux utilisateurs d'ajouter des images à une collection en utilisant une option dans le menu contextuel de l'image. Les images sélectionnées sont collectées dans une fenêtre contextuelle et peuvent être enregistrées dans une collection nommée. Un bouton de la barre d'outils ({{WebExtAPIRef("browserAction")}}) ouvre la collection dans une page de navigation, sur laquelle l'utilisateur peut visualiser et supprimer des images enregistrées, avec une option de filtrage pour réduire les choix. <a href="https://youtu.be/t6aVqMMe2Rc">Voir l'exemple en action</a>.</p> + +<p>Le fonctionnement de la bibliothèque peut être compris en regardant <a href="https://github.com/mdn/webextensions-examples/blob/master/store-collected-images/webextension-plain/utils/image-store.js">image-store.js</a> dans /utils/ :</p> + +<h3 id="Création_du_stockage_et_enregistrement_des_images"><span class="short_text" id="result_box" lang="fr"><span>Création du stockage et enregistrement des images</span></span></h3> + +<pre class="brush: js">async function saveCollectedBlobs(collectionName, collectedBlobs) { + const storedImages = await getFileStorage({name: "stored-images"}); + + for (const item of collectedBlobs) { + await storedImages.put(`${collectionName}/${item.uuid}`, item.blob); + } +}</pre> + +<p><code>saveCollectedBlobs</code> est appelé lorsque l'utilisateur clique sur Enregistrer dans la fenêtre contextuelle et a fourni un nom pour la collection d'images. D'abord, <code>getFileStorage</code> crée s'il n'existe pas déjà, ou récupère l' IndexedDB de la base de données "images stockées" dans l'objet <code>storedImages</code>. <code>storedImages.put</code> ajoute chaque image collectée à la base de données, sous le nom de la collection, en utilisant l'identifiant unique du blob (le nom du fichier). Si l'image en stock est identique à celle existatnt déjà dans la base de données, elle est écrasée. Si vous voulez éviter cela, interrogez la base de données d'abord en utilisant<code>imagesStore.list()</code> avec un filtre pour le nom du fichier et, si la liste renvoie un fichier, ajoutez un suffixe approprié au nom de la nouvelle image pour stocker un élément distinct.</p> + +<h3 id="Récupération_des_images_stockées_pour_l'affichage">Récupération des images stockées pour l'affichage</h3> + +<pre class="brush: js">export async function loadStoredImages(filter) { + const imagesStore = await getFileStorage({name: "stored-images"}); + let listOptions = filter ? {includes: filter} : undefined; + const imagesList = await imagesStore.list(listOptions); + let storedImages = []; + for (const storedName of imagesList) { + const blob = await imagesStore.get(storedName); + storedImages.push({storedName, blobUrl: URL.createObjectURL(blob)}); + } + return storedImages; +} +</pre> + +<p><code>loadStoredImages</code> est appelé lorsque l'utilisateur clique sur la vue ou la recharge dans la page de navigation de la collection. <code>getFileStorage</code> ouvre la base de données "images stockées", puis <code>imagesStore.list</code>obtient une liste filtrée des images stockées. Cette liste est ensuite utilisée pour récupérer des images avec <code>imagesStore.get</code> et créer une liste retournée à l'interface utilisateur.</p> + +<p>Notez l'utilisation de <a href="/fr/docs/Web/API/URL/createObjectURL">URL.createObjectURL(blob)</a> pour créer une URL qui fait référence au blob image. Cette URL est ensuite utilisée dans l'interface utilisateur (<a href="https://github.com/mdn/webextensions-examples/blob/master/store-collected-images/webextension-plain/navigate-collection.js">navigate-collection.js</a><a href="https://github.com/mdn/webextensions-examples/blob/master/store-collected-images/webextension-plain/navigate-collection.js">collection.js</a>) pour afficher l'image.</p> + +<h3 id="Suppression_d'images_collectées">Suppression d'images collectées</h3> + +<pre class="brush: js">async function removeStoredImages(storedImages) { + const imagesStore = await getFileStorage({name: "stored-images"}); + for (const storedImage of storedImages) { + URL.revokeObjectURL(storedImage.blobUrl); + await imagesStore.remove(storedImage.storedName); + } +} +</pre> + +<p><code>removeStoredImages</code> est appelé lorsque l'utilisateur clique sur "Delete" <em>(supprimer)</em> dans la page de navigation de la collection. À nouveau, <code>getFileStorage</code>ouvre la base de données “stored-images” et <code>imagesStore.remove</code> supprime chaque image à partir de la liste filtrée des images.</p> + +<p>Notez l'utilisation de <a href="/fr/docs/Web/API/URL/revokeObjectURL">URL.revokeObjectURL()</a> pour révoquer explicitement l'URL du blob. Cela permet de libérer la mémoire allouée à l'URL. Si cela n'est pas fait, la mémoire n'est pas libérée jusqu'à ce que la page sur laquelle l'URL a été créée soit fermée. Si l'URL a été créée dans la page d'arrière-plan d'une extension, celle-ci n'est pas déchargée jusqu'à ce que l'extension soit désactivée, désinstallée ou rechargée, ce qui risque d'affecter inutilement les performances du navigateur. Si l'URL est créée dans la page d'une extension (nouvel onglet, fenêtre contextuelle ou barre latérale), la mémoire est libérée lorsque la page est fermée, mais il demeure de bonne pratique de révoquer l'URL lorsqu'elle n'est plus nécessaire.</p> + +<p>Une fois que l'URL du blob a été révoquée, toute tentative de la charger entraînera une erreur. Par exemple, si l'URL du blob était utilisée comme attribut <code>SRC</code> d'un <code>IMG</code> tag, l'image ne sera pas chargée et ne sera pas visible. Il est donc recommandé de supprimer les URL de blobs révoquées des éléments HTML générés après leur révocation.</p> + +<p>Exemple : <a href="https://github.com/mdn/webextensions-examples/tree/master/store-collected-images/webextension-plain">Store Collected Images</a><br> + API Référence : <a href="https://rpl.github.io/idb-file-storage/">idb-file-storage library</a></p> + +<div class="note"> +<p>Note: Vous pouvez également utiliser l' <a href="/fr/docs/Web/API/API_IndexedDB">IndexedDB API</a> pour stocker des données de votre extension. Cela peut être utile lorsque vous devez stocker des données qui ne sont pas bien gérées par les paires de clés / valeurs simples offertes par le DOM <a href="/fr/Add-ons/WebExtensions/API/Storage">Storage API</a>.</p> +</div> + +<h2 id="Traitement_de_fichiers_dans_une_application_locale">Traitement de fichiers dans une application locale</h2> + +<p>Lorsque vous avez une application native ou que vous souhaitez offrir des fonctionnalités natives supplémentaires pour le traitement des fichiers, utilisez une messagerie pour transmettre un fichier à une application native pour traitement.</p> + +<p>Vous avez deux options :</p> + +<ul> + <li>Messagerie basée sur la connexion. Ici, vous déclenchez le processus avec "runtime.connectNative()", qui renvoie un objet <a href="/fr/Add-ons/WebExtensions/API/runtime/Port">runtime.Port</a>. Vous pouvez ensuite transmettre un message JSON à l'application native en utilisant la fonction de port "postMessage()". En utilisant la fonction de port "onMessage.addListener()" vous pouvez lire les messages venant de l'application native. Celle-ci est ouverte, si elle ne s'exécute pas, lorsque "runtime.connectNative()" est appelé et l'application reste en cours d'exécution jusqu'à ce que l'extension appelle la fonction "Port.disconnect()" ou que la page qui s'y rattache soit fermée.</li> + <li>Messagerie sans connexion. Ici, vous utilisez "runtime.sendNativeMessage()" pour envoyer un message JSON à une nouvelle instance temporaire de l'application native. Le navigateur la ferme après avoir reçu un message de l'application native.</li> +</ul> + +<p>Pour ajouter le fichier ou le blob, vous souhaitez que l'application native utilise <a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify">JSON.stringify()</a>.</p> + +<p>Pour utiliser cette méthode, l'extension doit demander la <a href="fr/Add-ons/WebExtensions/manifest.json/permissions"> permission</a> "nativeMessaging" dans son fichier manifest.json. Réciproquement, l'application native doit accorder l'autorisation à l'extension en incluant son ID dans le champ "allowed_extensions" de l'application "manifest".</p> + +<p>Exemple : <a href="https://github.com/mdn/webextensions-examples/tree/master/native-messaging">Native Messaging</a> (illustre simplement une messagerie)<br> + Guide : <a href="/fr/Add-ons/WebExtensions/Native_messaging">Native messaging</a><br> + API référence : <a href="/fr/Add-ons/WebExtensions/API/runtime">runtime API</a></p> diff --git a/files/fr/mozilla/add-ons/webextensions/your_first_webextension/index.html b/files/fr/mozilla/add-ons/webextensions/your_first_webextension/index.html new file mode 100644 index 0000000000..346463406a --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/your_first_webextension/index.html @@ -0,0 +1,161 @@ +--- +title: Votre première WebExtension +slug: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension +tags: + - Add-ons + - Extensions + - Guide + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension +--- +<div>{{AddonSidebar}}</div> + +<div class="blockIndicator note"> +<p>Si vous connaissez déjà les concepts de base des extensions de navigateur, passez cette section pour <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">voir comment les fichiers d'extension sont assemblés</a>. Ensuite, utilisez la <a href="/fr/docs/Mozilla/Add-ons/WebExtensions#Reference">documentation de référence</a> pour commencer la construction de votre extension. Visitez l'<a href="https://extensionworkshop.com/?utm_source=developer.mozilla.org&utm_medium=documentation&utm_campaign=your-first-extension">atelier sur les extensions de Firefox</a> pour en savoir plus sur le flux de travail pour le test, la publication et les extensions Firefox.</p> +</div> + +<p>Cet article vous montre comment créer une extension Firefox, du début à la fin. L'extension ajoute une bordure de couleur rouge sur toutes les pages chargées depuis le site "mozilla.org" ou n'importe lequels de ses sous-domaines.</p> + +<p>Le code source de cet exemple est disponible sur GitHub : <a href="https://github.com/mdn/webextensions-examples/tree/master/borderify">https://github.com/mdn/webextensions-examples/tree/master/borderify</a>.</p> + +<p>Pour commencer, il vous faut Firefox version 45 ou supérieure.</p> + +<h2 id="Ecriture_de_lextension">Ecriture de l'extension</h2> + +<p>Créez un nouveau répertoire et rendez vous à l'intérieur. Par exemple, dans votre ligne de commande/terminal vous pourriez le faire comme ceci :</p> + +<pre class="brush: bash notranslate">mkdir borderify +cd borderify</pre> + +<h3 id="manifest.json">manifest.json</h3> + +<p>Créez un nouveau fichier nommé "manifest.json" directement dans le répertoire "borderify" et tapez-y le contenu suivant :</p> + +<pre class="brush: json notranslate">{ + + "manifest_version": 2, + "name": "Borderify", + "version": "1.0", + + "description": "Adds a solid red border to all webpages matching mozilla.org.", + + "icons": { + "48": "icons/border-48.png" + }, + + "content_scripts": [ + { + "matches": ["*://*.mozilla.org/*"], + "js": ["borderify.js"] + } + ] + +}</pre> + +<ul> + <li>Les trois premières clés : <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/manifest_version">manifest_version</a></code>, <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/name">name</a></code>, et <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/version">version</a></code> sont obligatoires et contiennent des métadonnées fondamentaux qui sont nécessaires au module.</li> + <li><code><a href="/en-US/Add-ons/WebExtensions/manifest.json/description">description</a></code> est optionnelle, mais recommandée : elle s'affiche dans le gestionnaire de module.</li> + <li><code><a href="/en-US/Add-ons/WebExtensions/manifest.json/icons">icons</a></code> est optionnelle, mais recommandée : elle permet d'établir l'icône du module qui s'affichera dans le gestionnaire de module.</li> +</ul> + +<p>La clé la plus intéressante ici est <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>, qui demande à Firefox de charger un script dans toutes les pages dont l'URL correspond à un patron de correspondance de domaines spécifique. Dans notre cas, nous demandons à Firefox de charger un script appelé "borderify.js" dans toutes les pages HTTP ou HTTPS du domaine "mozilla.org" et tous ses sous-domaines.</p> + +<ul> + <li><a href="/en-US/Add-ons/WebExtensions/Content_scripts">En savoir plus sur les scripts de contenu.</a></li> + <li><a href="/en-US/Add-ons/WebExtensions/Match_patterns">En savoir plus sur les patrons de correspondance de domaines</a>.</li> +</ul> + +<div class="warning"> +<p><a href="/en-US/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID#When_do_you_need_an_add-on_ID">Dans certaines situations, vous devez établir un ID pour votre extension</a>. Si vous avez besoin d'établir un ID pour votre extension, incluez la clé <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings">browser_specific_settings</a></code> dans <code>manifest.json</code> et définissez sa propriété <code>gecko.id</code> :</p> + +<pre class="brush: json notranslate">"browser_specific_settings": { + "gecko": { + "id": "borderify@example.com" + } +}</pre> +</div> + +<h3 id="iconsborder-48.png">icons/border-48.png</h3> + +<p>Le module doit posséder une icône qui sera affichée à côté en haut à droite de votre navigateur firefox. Le fichier "manifest.json" a établit une icône "icons/border-48.png".</p> + +<p>Créons le répertoire "icons" directement sous le répertoire "borderify". Fournissez une icône nommée "border-48.png". Vous pouvez utiliser <a href="https://raw.githubusercontent.com/mdn/webextensions-examples/master/borderify/icons/border-48.png">celle-ci</a>, qui est tirée du repértoire d'icônes Google Material Design, et est utilisable à condition de respecter les termes de la license <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike</a>.</p> + +<p>Si vous décidez d'fournir votre propre icône, sa taille devra être de 48x48 pixels. Il est aussi possible d'fournir une icône de 96x96 pixels, adaptée à l'affichage en haute résolution et, dans ce cas, elle devra être spécifiée par la propriété <code>96</code> de l'objet icon dans le fichier "manifest.json" :</p> + +<pre class="brush: json line-numbers language-json notranslate"><code class="language-json"><span class="key token">"icons":</span> <span class="punctuation token">{</span> + <span class="key token">"48":</span> <span class="string token">"icons/border-48.png", + "96": "icons/border-96.png"</span> +<span class="punctuation token">}</span></code></pre> + +<p>Une alternative est de fournir un fichier SVG qui sera automatiquement mis à la bonne échelle.</p> + +<ul> + <li><a href="/en-US/Add-ons/WebExtensions/manifest.json/icons">En savoir plus sur la spécification d'icône.</a></li> +</ul> + +<h3 id="borderify.js">borderify.js</h3> + +<p>Enfin, créez un fichier nommé "borderify.js" directement dans le répertoire "borderify" et insérez-y ceci :</p> + +<pre class="brush: js notranslate">document.body.style.border = "5px solid red";</pre> + +<p>Ce script sera chargé dans chaque page dont le patron de correspondance de domaines correspond au patron de correspondance de domaine définit par la clé <code>content_scripts</code> du manifest.json. Ce script a un accès direct au document contrairement à des scripts chargés par la page elle-même.</p> + +<ul> + <li><a href="/en-US/Add-ons/WebExtensions/Content_scripts">Pour en savoir plus sur les scripts de contenu.</a></li> +</ul> + +<h2 id="Essai">Essai</h2> + +<p>D'abord, vérifiez de nouveau que les bons fichiers sont au bon endroit :</p> + +<pre class="notranslate">borderify/ + icons/ + border-48.png + borderify.js + manifest.json</pre> + +<h3 id="Installation">Installation</h3> + +<p>Dans Firefox : Ouvrez la page <a href="https://wiki.developer.mozilla.org/en-US/docs/Tools/about:debugging">about:debugging</a>, cliquez sur "Firefox" (dans les versions plus récentes de Firefox), cliquez sur "Load Temporary Add-on", puis sélectionnez n'importe quel fichier dans le répertoire de votre extension.</p> + +<p>{{EmbedYouTube("cer9EUKegG4")}}</p> + +<p>Le module complémentaire est dorénavant installé et résidera jusqu’à ce que vous redémarriez Firefox.</p> + +<p>Une autre alternative est d’exécuter la WebExtension depuis la ligne de commande à l'aide de l'outil <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a>.</p> + +<h3 id="Test">Test</h3> + +<p>Rendez-vous sur une page web du domaine "mozilla.org". Vous devriez y voir une bordure rouge qui entoure la page :</p> + +<p>{{EmbedYouTube("rxBQl2Z9IBQ")}}</p> + +<div class="note"> +<p>Toutefois, n'essayez pas ce module sur addons.mozilla.org ! Les content scripts sont bloqués sur ce domaine.</p> +</div> + +<p>Expérimentez un peu en modifiant le contenu du script, en changeant par exemple la couleur de la bordure ou en altérant le contenu de la page. Puis sauvegardez le content script, rechargez les fichiers du module en cliquant sur le bouton "Reload" dans about:debugging. Les changements sont immédiats :</p> + +<p>{{EmbedYouTube("NuajE60jfGY")}}</p> + +<ul> + <li><a href="/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">En savoir plus sur le chargement des extensions</a></li> +</ul> + +<h2 id="Empaqueter_et_publier">Empaqueter et publier</h2> + +<p>Afin que d'autres personnes puissent utiliser votre module, il vous faut l'empaqueter et le soumettre à la signature de Mozilla. Pour en apprendre plus, voir <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension">"Publier votre extension"</a>.</p> + +<h2 id="Et_ensuite">Et ensuite ?</h2> + +<p>Maintenant, vous avez eu une introduction au processus de développement d'une WebExtension pour Firefox :</p> + +<ul> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Your_second_WebExtension">Rédiger une extension plus complexe</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">en lire d'avantage sur l'anatomie d'une WebExtensions</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Exemples">explorer les exemples d'extension</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/que_faire_ensuite">découvrir ce dont vous avez besoin pour développer, tester et publier votre extension</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/que_faire_ensuite#Continuez_votre_expérience_d'apprentissage">poursuivre votre apprentissage</a>.</li> +</ul> diff --git a/files/fr/mozilla/add-ons/webextensions/your_second_webextension/index.html b/files/fr/mozilla/add-ons/webextensions/your_second_webextension/index.html new file mode 100644 index 0000000000..896ce3b346 --- /dev/null +++ b/files/fr/mozilla/add-ons/webextensions/your_second_webextension/index.html @@ -0,0 +1,360 @@ +--- +title: Votre deuxième WebExtension +slug: Mozilla/Add-ons/WebExtensions/Your_second_WebExtension +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Your_second_WebExtension +--- +<div>{{AddonSidebar}} +<p>Si vous avez lu l'article <a href="/fr/Add-ons/WebExtensions/Your_first_WebExtension">votre première extension</a>, vous avez déjà une idée de la manière d'écrire une extension. <span class="seoSummary">Dans cet article, nous allons écrire une extension légèrement plus complexe qui illustre un peu plus les API.</span></p> + +<p>L'extension ajoute un nouveau bouton à la barre d'outils Firefox. Lorsque l'utilisateur clique sur le bouton, nous affichons une fenêtre contextuelle qui leur permet de choisir un animal. Une fois qu'ils choisissent un animal, nous remplacerons le contenu de la page actuelle par une image de l'animal choisi.</p> + +<p>Pour implémenter ce module, il nous faut :</p> + +<ul> + <li><strong>définir une action du navigateur, matérialisée par un bouton dans la barre d'outils de Firefox</strong>.<br> + Pour ce bouton, nous avons besoin de : + <ul> + <li>une icône, nommée "beasts-32.png"</li> + <li>une popup qui s'ouvrira lorsque le bouton est cliqué. La popup sera constituée d'HTML, de CSS et de JavaScript.</li> + </ul> + </li> + <li><strong>définir l'icône de l'extension,</strong> nommée "beasts-48.png". Elle apparaîtra dans le gestionnaire de module.</li> + <li><strong>écrire un content script, "beastify.js" qui sera injecté dans chaque page web</strong>.<br> + C'est le code qui va effectivement transformer les pages.</li> + <li><strong>packager les images d'animaux, afin de remplacer les images de la page web</strong>.<br> + Nous définirons les images comme étant des "web accessible resources" (des ressources accessible par le web) de sorte que la page web puisse y accéder.</li> +</ul> + +<p>Voici une visualisation globale possible de la structure du module :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/13671/Untitled-1.png" style="display: block; height: 1200px; margin-left: auto; margin-right: auto; width: 860px;"></p> + +<p>C'est une simple extension mais qui démontre plusieurs concepts élémentaires de l'API des WebExtensions :</p> + +<ul> + <li>ajout d'un bouton à la barre d'outil</li> + <li>définition d'une popup à l'aide de HTML, CSS et JavaScript</li> + <li>injection des content scripts dans chaque page web</li> + <li>communication entre les content scripts et le reste du module</li> + <li>packager les ressources dans le module qui peuvent ensuite être utilisées par les pages web</li> +</ul> + +<p>Le <a href="https://github.com/mdn/webextensions-examples/tree/master/beastify">code source complet du module est disponble sur GitHub</a>.</p> + +<p>Afin d'écrire cet extension, il nous faut Firefox 45 ou plus récent.</p> + +<h2 id="Ecriture_de_lextension">Ecriture de l'extension</h2> + +<p>Créez un nouveau répertoire et positionnez vous dedans :</p> + +<pre class="brush: bash">mkdir beastify +cd beastify</pre> + +<h3 id="manifest.json">manifest.json</h3> + +<p>Créez un nouveau fichier nommé "manifest.json" directement dans le répertoire "beastify" et tapez-y le contenu suivant :</p> + +<pre class="brush: json">{ + + "manifest_version": 2, + "name": "Beastify", + "version": "1.0", + + "description": "Adds a browser action icon to the toolbar. Click the button to choose a beast. The active tab's body content is then replaced with a picture of the chosen beast. See https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Examples#beastify", + "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/beastify", + "icons": { + "48": "icons/beasts-48.png" + }, + + "permissions": [ + "activeTab" + ], + + "browser_action": { + "default_icon": "icons/beasts-32.png", + "default_title": "Beastify", + "default_popup": "popup/choose_beast.html" + }, + + "web_accessible_resources": [ + "beasts/frog.jpg", + "beasts/turtle.jpg", + "beasts/snake.jpg" + ] + +} +</pre> + +<ul> + <li>Les trois premières clés : <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version">manifest_version</a></code>, <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/name">name</a></code>, et <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/version">version</a></code>, sont obligatoires et contiennent les métadatas élémentaires nécessaires à l'extension.</li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/description">description</a></code> and <code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url">homepage_url</a></code> sont optionnelles mais recommandées : elles apportent de l'information utile à propos de l'extension.</li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons">icons</a></code> est optionnelle mais recommandée : elle permet de spécifier l'icône du module qui s'affichera dans le gestionnaire d'extension.</li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> liste les permissions nécessaires à cet extension. Ici, uniquement <a href="/fr/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission"><code>la permission activeTab</code> </a>est demandée.</li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> spécifie le bouton de la barre d'outil. Nous fournissons trois informations : + <ul> + <li><code>default_icon</code> est obligatoire et référence l'icône du bouton</li> + <li><code>default_title</code> est optionelle et s'affichera dans une bulle d'aide</li> + <li><code>default_popup</code> est nécessaire si vous souhaitez qu'une popup s'affiche lorsque l'utilisateur clique sur le bouton. C'est notre cas, nous avons donc défini cette clé et l'avons faites pointer sur un fichier HTML inclus dans le module.</li> + </ul> + </li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a></code> liste les fichiers qui doivent être accessibles aux pages web. Comme cette extension remplace le contenu de la page web par les images inclues dans cette extension, il faut les rendre accessibles à la page.</li> +</ul> + +<p>Il est à noter que tous les chemins sont relatifs au fichier manifest.json.</p> + +<h3 id="Licône">L'icône</h3> + +<p>L'extension doit posséder une icône qui sera affichée à côté de la liste des extensions du gestionnaire des Add-ons module (vous pouvez afficher le gestionnaire en ouvrant l'URL "about:addons"). Le fichier manifest.json a déclaré une icône pour la barre d'outil, "icons/beasts-48.png".</p> + +<p>Créer le répertoire "icons" et enregistrez-y une icône nommée "beasts-48.png". Il vous est possible d'en utiliser <a href="https://github.com/mdn/webextensions-examples/raw/master/beastify/icons/beasts-48.png">une de notre exemple</a>, provenant du jeu d'icônes de <a href="https://www.iconfinder.com/iconsets/free-retina-icon-set">Aha-Soft’s Free Retina</a> et utilisable selon les termes de sa <a href="http://www.aha-soft.com/free-icons/free-retina-icon-set/">license</a>.</p> + +<p>Si vous décidez de fournir votre propre icône, sa taille devra être de 48 pixels par 48 pixels. Il vous est aussi possible de fournir une icône de taille 96 pixels par 96 pixels, adpatée aux affichages hautes résolutions, et, devra dans ce cas, être spécifiée par la propriété <code>96</code> de l'objet icon du manifest.json :</p> + +<pre class="brush: json line-numbers language-json"><code class="language-json">"icons": { + "48": "icons/beasts-48.png", + "96": "icons/beasts-96.png" +}</code></pre> + +<h3 id="Le_bouton_de_la_barre_doutils">Le bouton de la barre d'outils</h3> + +<p>Une icône est nécessaire pour le bouton de la barre d'outils et le manifest.json déclare une icône "icons/beasts-32.png" pour la barre d'outils.</p> + +<p>Enregistrez une icône nommée "beasts-32.png" dans le répertoire "icons". Il vous est possible d'en utiliser <a href="https://github.com/mdn/webextensions-examples/blob/master/beastify/icons/beasts-32.png">une de notre exemple</a>, provenant du jeu d'icône <a href="http://www.iconbeast.com/free">IconBeast Lite icon</a> et utilisable selon les termes de sa <a href="http://www.iconbeast.com/faq/">license</a>.</p> + +<p>Si vous ne mettez pas à disposition une popup, alors un événement "click" est propagé au module lorque l'utilisateur clique le bouton. Si vous mettez à disposition une popup l'évenement "click" n'est pas propagé, mais la popup s'ouvre à la place. Nous souhaitons une popup, alors créons là.</p> + +<h3 id="La_popup">La popup</h3> + +<p>La but de la popup est de permettre à l'utilisateur de choisir une des trois bêtes.</p> + +<p>Créez un nouveau répertoire nommé popup à la racine de l'extension. Ce sera l'emplacement du code de la popup. La popup sera constituée de trois fichiers :</p> + +<ul> + <li><strong><code>choose_beast.html</code></strong> qui définit le contenu du panneau</li> + <li><strong><code>choose_beast.css</code></strong> qui stylise le contenu</li> + <li><strong><code>choose_beast.js</code></strong> qui gére le choix de l'utilisateur en exécutant un content script dans l'onglet actif</li> +</ul> + +<h4 id="choose_beast.html">choose_beast.html</h4> + +<p>Voici le contenu du fichier HTML :</p> + +<pre class="brush: html"><!DOCTYPE html> + +<html> + <head> + <meta charset="utf-8"> + <link rel="stylesheet" href="choose_beast.css"/> + </head> + + <body> + <div class="beast">Frog</div> + <div class="beast">Turtle</div> + <div class="beast">Snake</div> + + <script src="choose_beast.js"></script> + </body> + +</html></pre> + +<p>Un seul élément est défini pour chaque animal. Il est à noter que le ficher CSS et le fichier JS sont inclus depuis ce fichier, tout comme une page web normale.</p> + +<h4 id="choose_beast.css">choose_beast.css</h4> + +<p>Le CSS fixe la taille de la popup, s'assure que les trois choix remplissent l'espace et les stylise de façon élémentaire :</p> + +<pre class="brush: css">html, body { + width: 100px; +} + +.beast { + margin: 3% auto; + padding: 4px; + text-align: center; + font-size: 1.5em; + background-color: #E5F2F2; + cursor: pointer; +} + +.beast:hover { + background-color: #CFF2F2; +} +</pre> + +<h4 id="choose_beast.js">choose_beast.js</h4> + +<p>Dans le JavaScript de la popup, nous écoutons les événements click. Si le click se produit sur un de nos trois choix d'animaux, nous injectons un content script dans l'onglet actif. Une fois le content script chargé, nous lui envoyons un message contenant le choix de l'animal :</p> + +<pre class="brush: js">/* +Given the name of a beast, get the URL to the corresponding image. +*/ +function beastNameToURL(beastName) { + switch (beastName) { + case "Frog": + return browser.extension.getURL("beasts/frog.jpg"); + case "Snake": + return browser.extension.getURL("beasts/snake.jpg"); + case "Turtle": + return browser.extension.getURL("beasts/turtle.jpg"); + } +} + +/* +Listen for clicks in the popup. + +If the click is on one of the beasts: + Inject the "beastify.js" content script in the active tab. + + Then get the active tab and send "beastify.js" a message + containing the URL to the chosen beast's image. + +If it's on a button wich contains class "clear": + Reload the page. + Close the popup. This is needed, as the content script malfunctions after page reloads. +*/ + +// execute the script now so it can listen to the messages sent by the code below +browser.tabs.executeScript(null, { file: "/content_scripts/beastify.js" }); + + +document.addEventListener("click", (e) => { + if (e.target.classList.contains("beast")) { + var chosenBeast = e.target.textContent; + var chosenBeastURL = beastNameToURL(chosenBeast); + + + + var gettingActiveTab = browser.tabs.query({active: true, currentWindow: true}); + gettingActiveTab.then((tabs) => { + browser.tabs.sendMessage(tabs[0].id, {beastURL: chosenBeastURL}); + }); + } + else if (e.target.classList.contains("clear")) { + browser.tabs.reload(); + window.close(); + } +}); +</pre> + +<p>Ce script utilise trois fonctions de l'API WebExtension :</p> + +<ul> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript">browser.tabs.executeScript</a></code> qui injecte le content script, de chemin "content_scripts/beastify.js" dans l'onglet actif</li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">browser.tabs.query</a></code> pour récupérer l'onglet actif</li> + <li><code><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage">browser.tabs.sendMessage</a></code> pour envoyer un message au content scripts s'exécutant dans l'onglet actif. Le message contient l'URL pointant vers l'image de la bête choisie.</li> +</ul> + +<h3 id="Le_content_script">Le content script</h3> + +<p>Créez un nouveau répertoire sous la racine du module nommé "content_scripts" et créez un nouveau fichier nommé "beastify.js", contenant :</p> + +<pre class="brush: js">/* +beastify(): +* removes every node in the document.body, +* then inserts the chosen beast +* then removes itself as a listener +*/ +function beastify(request, sender, sendResponse) { + removeEverything(); + insertBeast(request.beastURL); + browser.runtime.onMessage.removeListener(beastify); +} + +/* +Remove every node under document.body +*/ +function removeEverything() { + while (document.body.firstChild) { + document.body.firstChild.remove(); + } +} + +/* +Given a URL to a beast image, create and style an IMG node pointing to +that image, then insert the node into the document. +*/ +function insertBeast(beastURL) { + var beastImage = document.createElement("img"); + beastImage.setAttribute("src", beastURL); + beastImage.setAttribute("style", "width: 100vw"); + beastImage.setAttribute("style", "height: 100vh"); + document.body.appendChild(beastImage); +} + +/* +Assign beastify() as a listener for messages from the extension. +*/ +browser.runtime.onMessage.addListener(beastify); +</pre> + +<p>Le content script ajoute un listener sur les messages émis depuis le module (et spécifiquement depuis "choose_beast.js" ci-dessus). Dans le listener, il :</p> + +<ul> + <li>supprime tous les éléments dans le <code>document.body</code></li> + <li>crée un élément <code><img></code> pointant sur l'URL définie et l'insère dans le DOM</li> + <li>supprime le listener du message.</li> +</ul> + +<h3 id="Les_bêtes">Les bêtes</h3> + +<p>Enfin, nous devons inclure les images d'animaux.</p> + +<p>Créez un nouveau répertoire nommé "beasts", et ajoutez-y les trois images, nommées de façon appropriée. Vous pouvez récuperer les images du <a href="https://github.com/mdn/webextensions-examples/tree/master/beastify/beasts">dépôt GitHub</a>, ou bien ci-après :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/11459/frog.jpg" style="display: inline-block; height: 200px; margin: 20px; width: 200px;"><img alt="" src="https://mdn.mozillademos.org/files/11461/snake.jpg" style="display: inline-block; height: 200px; margin: 20px; width: 200px;"><img alt="" src="https://mdn.mozillademos.org/files/11463/turtle.jpg" style="display: inline-block; height: 200px; margin: 20px; width: 200px;"></p> + +<h2 id="Test">Test</h2> + +<p>D'abord, vérifiez de nouveau que les bons fichiers sont au bon endroit :</p> + +<pre>beastify/ + + beasts/ + frog.jpg + snake.jpg + turtle.jpg + + content_scripts/ + beastify.js + + icons/ + beasts-32.png + beasts-48.png + + popup/ + choose_beast.css + choose_beast.html + choose_beast.js + + manifest.json</pre> + +<p>A partir de Firefox version 45, il est possible d'installer les WebExtensions temporairement.</p> + +<p>Ouvrez "about:debugging" dans Firefox, cliquez sur "Load Temporary Add-on", et choisissez le fichier manifest.json. Vous devriez voir apparaitre l'icône du module dans la barre d'outils de Firefox :</p> + +<p>{{EmbedYouTube("sAM78GU4P34")}}</p> + +<p>Ouvrez une page web et cliquez sur l'icône, sélectionnez une bête et observez la page web se modifier :</p> + +<p>{{EmbedYouTube("YMQXyAQSiE8")}}</p> + +<h2 id="Développement_depuis_la_ligne_de_commande">Développement depuis la ligne de commande</h2> + +<p>Il est possible d'automatiser l'installation temporaire de modules, étape par étape en utilisant l'outil <a href="/fr/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> tool. Essayez ainsi :</p> + +<pre class="brush: bash">cd beastify +web-ext run</pre> +</div> + +<h2 id="Quelle_est_la_prochaine_étape">Quelle est la prochaine étape ?</h2> + +<p>Vous avez maintenant créé une extension Web avancée pour Firefox :</p> + +<ul> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">lisez l'anatomie d'une extension</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/Examples">explorer les exemples d'extension</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/que_faire_ensuite">découvrir ce dont vous avez besoin pour développer, tester et publier votre extension</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/WebExtensions/que_faire_ensuite#Continuez_votre_expérience_d'apprentissage">approfondir votre apprentissage</a>.</li> +</ul> |