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 | |
| 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')
883 files changed, 100964 insertions, 0 deletions
diff --git a/files/fr/mozilla/about_omni.ja_(formerly_omni.jar)/index.html b/files/fr/mozilla/about_omni.ja_(formerly_omni.jar)/index.html new file mode 100644 index 0000000000..9f040164df --- /dev/null +++ b/files/fr/mozilla/about_omni.ja_(formerly_omni.jar)/index.html @@ -0,0 +1,61 @@ +--- +title: omni.ja (formerly omni.jar) +slug: Mozilla/About_omni.ja_(formerly_omni.jar) +translation_of: Mozilla/About_omni.ja_(formerly_omni.jar) +--- +<p>{{ gecko_minversion_header("2.0") }}</p> + +<p><span class="seoSummary">Firefox et Thunderbird réalisent des améliorations de performances en déplaçant plusieurs de leurs fichiers autonomes dans un seul fichier JAR appelé <code>omni.ja</code>; ce qui réduit le nombre d'E/S nécessaire pour charger l'application. Cet article couvre le contenu de l'archive et des techniques d'inspection de ces contenus.</span></p> + +<div class="note"> +<p><strong>Remarque: </strong>Depuis Firefox 10 et Thunderbird 10, l'extension de fichier <code>.ja</code> est utilisée parce que Windows System Restore ne sauvegarde pas les fichiers <code>.jar</code>.</p> +</div> + +<h2 id="Inspecter_omni.ja">Inspecter omni.ja</h2> + +<div class="note"><strong>Remarque: </strong> Lors de l'extraction <code>omni.ja</code>, vous pouvez obtenir de manière incorrecte de faux avertissements de certains logiciels de protection contre les virus.</div> + +<p>Plusieurs outils d'archivage et de zip/unzip (y compris toutes les versions de 7-Zip) ne peuvent pas lire <code>omni.ja</code>, en raison de l'optimisation qui est appliquée au fichier. Il est suggéré que les utilisateurs de Windows 7 décompressent le fichier en le renommant <code>omni.zip</code> et en utilisant l'Explorateur Windows pour extraire tous les fichiers. Les utilisateurs de versions plus anciennes de Windows peuvent utiliser <a href="ftp://ftp.info-zip.org/pub/infozip/win32/unz552dn.zip" title="ftp://ftp.info-zip.org/pub/infozip/win32/unz552dn.zip">l'outil</a> InfoZip pour extraire les fichiers - faire une copie de <code>omni.ja</code>, et glisser-déposer sur <code>unzip.exe</code>. Les utilisateurs de Linux peuvent utiliser simplement <strong> unzip </strong> pour decompresser les fichiers de omni.ja.</p> + +<p><code>omni.ja </code> est également incompatible avec les fichiers Zip dans l'autre sens; l'édition de fichiers extraits n'affecteront pas Firefox et le zip des fichiers modifiés peuvent empecher Firefox de fonctionner si vous n'utilisez pas les bonnes options. La commande correcte pour zipper <code>omni.ja</code> est:</p> + +<pre>zip -qr9XD omni.ja *</pre> + +<div class="note"><strong>Remarque: </strong> Avant Firefox 10 et Thunderbird 10, <code>omni.ja</code> était appelé <code>omni.jar</code> .</div> + +<h2 id="contenu_de_omni.ja">contenu de omni.ja</h2> + +<p>Le fichier <code>omni.ja</code> contient des ressources d'application variés:</p> + +<dl> + <dt><code>chrome.manifest</code></dt> + <dd>Le fichier <a href="/fr/Chrome_Registration" title="/fr/Chrome_Registration"> chrome manifest</a>.</dd> + <dt><code>/chrome/</code></dt> + <dd>fichiers d'interface utilisateur pour l'application</dd> + <dt><code>/chrome/localized.manifest</code></dt> + <dd>Manifeste du contenu francisé; référencé par le fichier chrome manifeste principal.</dd> + <dt><code>/chrome/nonlocalized.manifest</code></dt> + <dd>Manifest de contenu non-francisé; référencé par le fichier chrome manifeste principal.</dd> + <dt><code>/components/</code></dt> + <dd>Composants de l'application reposant sur XPCOM.</dd> + <dt><code>/defaults/</code></dt> + <dd>Fichiers de préférences par défaut.</dd> + <dt><code>/modules</code></dt> + <dd><a href="/fr/docs/Mozilla/JavaScript_code_modules" title="en/JavaScript code modules">modules de code JavaScript</a>.</dd> + <dt><code>/res/</code></dt> + <dd>Divers fichiers de ressources.</dd> +</dl> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="/fr/Firefox/Versions/4" title="fr/Firefox 4 for developers">Firefox 4 for developers</a></li> + <li><a href="/fr/docs/Mozilla/Thunderbird/Releases/5" title="fr/Thunderbird 3.3 for developers">Thunderbird 3.3 for developers</a></li> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/Themes/Obsolete/Theme_changes_in_Firefox_4" title="fr/Theme changes in Firefox 4">Theme changes in Firefox 4</a></li> + <li><a class="external" href="http://blog.mozilla.com/tglek/2010/09/14/firefox-4-jar-jar-jar/" title="http://blog.mozilla.com/tglek/2010/09/14/firefox-4-jar-jar-jar/">Firefox 4: jar jar jar</a> (blog post)</li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=701875">Bug 701875 - Rename omni.jar to omni.ja</a></li> +</ul> + +<div class="noinclude"> +<p>{{ languages( { "ja": "ja/About_omni.jar" } ) }}</p> +</div> diff --git a/files/fr/mozilla/add-ons/add-on_debugger/index.html b/files/fr/mozilla/add-ons/add-on_debugger/index.html new file mode 100644 index 0000000000..0cb1094c3f --- /dev/null +++ b/files/fr/mozilla/add-ons/add-on_debugger/index.html @@ -0,0 +1,94 @@ +--- +title: Débogueur de module complémentaire +slug: Mozilla/Add-ons/Add-on_Debugger +tags: + - Développement + - Extensions + - Firefox + - Guide + - JavaScript + - Modules complémentaires + - debogueur +translation_of: 'https://extensionworkshop.com/documentation/develop/debugging/' +--- +<div>{{AddonSidebar}}</div> + +<p>Le débogueur de module complémentaire <em>(Add-on)</em> <span id="result_box" lang="fr"><span>vous permet d'exécuter un ensemble d'outils de développement de Firefox dans le contexte de votre module</span></span> :</p> + +<ul> + <li><a href="https://developer.mozilla.org/fr/docs/Outils/D%C3%A9bogueur">Débogueur</a>, <span id="result_box" lang="fr"><span>pour définir des points d'arrêt et examiner l'état interne de votre code</span></span>.</li> + <li><a href="https://developer.mozilla.org/fr/docs/Outils/Console_Web">Console web</a>, <span id="result_box" lang="fr"><span>pour voir les messages enregistrés et évaluer le JavaScript dans le contexte du module complémentaire</span></span>.</li> + <li><a href="https://developer.mozilla.org/fr/docs/Outils/Ardoise">Ardoise JavaScript</a>, <span id="result_box" lang="fr"><span>pour évaluer commodément le JavaScript multiligne du module complémentaire et l'enregistrer dans un fichier.</span></span></li> +</ul> + +<p><span id="result_box" lang="fr"><span>Le débogueur de module complémentaire n'est pas disponible pour les modules de superposition XUL requis pour le redémarrage.</span> <span>Pour déboguer des modules comme ceux-ci, utilisez la</span></span> <a href="https://developer.mozilla.org/fr/docs/Outils/Bo%C3%AEte_%C3%A0_outils_du_navigateur">boîte à outils du navigateur</a>.</p> + +<p>Pour une rapide introduction sur le débogueur, regardez la rapide démonstration ici (en) :</p> + +<p>{{EmbedYouTube("KU3Xsck7qy0")}}</p> + +<h2 id="Ouverture_du_débogueur_de_module_complémentaire">Ouverture du débogueur de module complémentaire</h2> + +<div class="note"> +<p><span id="result_box" lang="fr"><span>Ceci décrit comment ouvrir le débogueur à partir de Firefox 45.</span> <span>Pour les versions antérieures de Firefox, vous devez :</span></span></p> + +<ul> + <li> + <p><span id="result_box" lang="fr"><span>activer le débogage d'extension en cochant les <a href="https://developer.mozilla.org/fr/docs/Outils/Settings">options</a> «Activer les scripts chrome et boîte à outils de débogage des extensions» <em>(</em></span></span><em>Enable browser chrome and add-on debugging toolboxes)</em> <span lang="fr"><span>et «Activer le débogage distant» <em>(</em></span></span><em>Enable remote debugging)</em> <span lang="fr"><span>dans les outils de développement</span></span></p> + </li> + <li> + <p><span id="result_box" lang="fr"><span>trouver l'extension dans about:addons (pas </span></span> about:debugging<span lang="fr"><span>), et cliquer sur le bouton "Debogage" sur cette page.</span></span></p> + </li> +</ul> + +<ul> +</ul> +</div> + +<p><span id="result_box" lang="fr"><span>Pour connecter le débogueur d'extensions à un module complémentaire, ouvrez la page <a href="https://developer.mozilla.org/fr/docs/Outils/about:debugging">modules</a> dans Firefox, assurez-vous que la case "</span></span>Activer le débogage des modules<span lang="fr"><span>" est cochée et cliquez sur le bouton "Déboguer" à proximité de votre add-on</span> <span>dans la page.</span></span></p> + +<p><span id="result_box" lang="fr"><span>Ensuite, vous verrez une boîte de dialogue vous demandant d'accepter une connexion entrante.</span> <span>Cliquez sur "OK", et le débogueur va commencer dans une fenêtre séparée.</span> <span>Notez que parfois la fenêtre du débogueur est masquée par la fenêtre principale de Firefox.</span></span></p> + +<p>{{EmbedYouTube("tGGcA3bT3VA")}}</p> + +<h2 id="Utilisation_du_débogueur_de_module_complémentaire">Utilisation du débogueur de module complémentaire</h2> + +<p><span id="result_box" lang="fr"><span>Le débogueur de module complémentaire a une apparence et un comportement proches de ceux de la <a href="https://developer.mozilla.org/fr/docs/Outils/Bo%C3%AEte_%C3%A0_outils_du_navigateur">Boîte à outils du navigateur</a>, à ceci près que, que la portée de la boîte à outils est l'intégralité du navigateur, alors que celle du débogueur de module est sur le seul module pour lequel il a été lancé.</span> <span>À l'instar de la boîte à outils du navigateur, une barre d'outils en haut vous permet de basculer entre plusieurs outils différents.</span> <span>Dans Firefox 31, il n'y a qu'un seul outil, le débogueur JavaScript, mais à partir de Firefox 32, vous obtenez également la console et l'ardoise.</span></span></p> + +<h3 id="Le_débogueur_JavaScript">Le débogueur JavaScript</h3> + +<p><span id="result_box" lang="fr"><span>Il se comporte comme le <a href="https://developer.mozilla.org/fr/docs/Outils/D%C3%A9bogueur">débogueur JavaScript</a> normal, à l'exception de sa portée qui est le module complémentaire et non une page Web.</span> <span>Sur la gauche, il répertorie les sources JavaScript:</span></span></p> + +<ul> + <li><span id="result_box" lang="fr"><span>en haut <code>bootstrap.js</code> : celui que vous avez écrit si votre extension est un <a href="https://developer.mozilla.org/fr/Add-ons/Bootstrapped_extensions">module complémentaire "bootstrapé"</a> <em>(avec des commandes de démarrage écrites manuellement)</em> , ou celui inclus dans le SDK si votre extension est un module complémentaire SDK.</span></span></li> + <li><span id="result_box" lang="fr"><span>ensuite, si votre extension est un module complémentaire SDK, vous trouverez le fichier <code>main.js</code> de votre module, tous les <a href="https://developer.mozilla.org/fr/Add-ons/SDK/Guides/Module_structure_of_the_SDK#Modules_locaux">modules locaux</a> livrés avec et les scripts de contenu actuellement chargés</span></span></li> + <li>puis, <span id="result_box" lang="fr"><span>tous les modules SDK utilisés directement ou indirectement par votre extension.</span></span></li> +</ul> + +<h4 id="Scripts_de_contenu">Scripts de contenu</h4> + +<p><span id="result_box" lang="fr"><span>Les scripts de contenu ne sont listés que s'ils sont chargés.</span> <span>Par conséquent, si votre module complémentaire <a href="/fr/docs/">charge un script de contenu</a> avec <code>contentScriptFile</code>, le fichier n'apparaîtra pas dans les sources du débogueur tant que vous n'allez pas sur une page qui le charge.</span></span></p> + +<p><span id="result_box" lang="fr"><span>Si vous définissez un point d'arrêt dans un script de contenu, il ne sera pas actif pour les instances du script de contenu chargées après la définition du point d'arrêt.</span></span></p> + +<p><span id="result_box" lang="fr"><span>Par exemple, supposons que vous ayez un module complémentaire qui attache un script de contenu à chaque onglet chargé par l'utilisateur.</span> <span>Le script de contenu ajoute un gestionnaire de clics à la page.</span> <span>Dès que vous ouvrez un onglet, ce script de contenu sera répertorié dans le débogueur.</span> <span>Si vous définissez ensuite un point d'arrêt dans le gestionnaire de clics du script de contenu, l'exécution s'arrêtera lorsque vous cliquerez sur la page.</span> <span>Mais si vous ouvrez un nouvel onglet, il y a maintenant deux instances du script de contenu, et le point d'arrêt ne sera pas activé pour la deuxième instance. Vous devez définir un nouveau point d'arrêt si vous voulez qu'il fonctionne pour la seconde.</span></span></p> + +<p><span class="short_text" id="result_box" lang="fr"><span>Nous étudions des améliorations à ce</span></span> <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1016046">bug 1016046</a>.</p> + +<h3 id="La_console">La console</h3> + +<p>La console se comporte comme la <a href="https://developer.mozilla.org/fr/docs/Outils/Console_Web">console web</a>, mais sa portée est le module complémentaire et non une page web.</p> + +<p><span id="result_box" lang="fr"><span>Notez toutefois qu'elle s'exécute réellement dans le contexte du <code>bootstrap.js</code> du module complémentaire, ce qui n'est peut-être pas ce à quoi vous vous attendez si votre module utilise le SDK : vous ne verrez aucun objet défini dans le <code>main.js</code></span><span>de votre extension, et vous ne verrez pas <code>require()</code> non plus.</span> <span>Ce problème fait l'objet d'un suivi</span></span> <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1005193">bug 1005193</a>.</p> + +<p>Vous pouvez exécuter des instructions de la console dans le contexte de <code>main.js</code> <span id="result_box" lang="fr"><span>tandis que l'exécution est interrompue dans</span></span> <code>main.js</code>.</p> + +<h3 id="L'ardoise_JavaScript">L'ardoise JavaScript</h3> + +<p>L'ardoise se comporte comme l'<a href="https://developer.mozilla.org/fr/docs/Outils/Ardoise">ardoise JavaScript</a> normale, <span id="result_box" lang="fr"><span>mais sa portée est l'extension et non la page web.</span></span></p> + +<p><span id="result_box" lang="fr"><span>Comme pour la console, le module complémentaire s'exécute dans le contexte du <code>bootstrap.js</code> du module complémentaire, même s'il utilise le SDK et, comme avec la console, vous pouvez exécuter le code de l'ardoise dans le contexte de <code>main.js</code> pendant que l'exécution</span> <span>est suspendue dans main.js.</span></span></p> + +<h2 id="Débogage_des_pages_chrome_et_about">Débogage des pages chrome: et about:</h2> + +<p><span id="result_box" lang="fr"><span>À partir de Firefox 37, vous pouvez déboguer les pages chrome: et about: en utilisant le débogueur normal, comme s'il s'agissait de pages de contenu ordinaires.</span></span></p> diff --git a/files/fr/mozilla/add-ons/amo/règles/featured/index.html b/files/fr/mozilla/add-ons/amo/règles/featured/index.html new file mode 100644 index 0000000000..6955588244 --- /dev/null +++ b/files/fr/mozilla/add-ons/amo/règles/featured/index.html @@ -0,0 +1,85 @@ +--- +title: AMO Featured Extensions Policies +slug: Mozilla/Add-ons/AMO/Règles/Featured +translation_of: Mozilla/Add-ons/AMO/Policy/Featured +--- +<p>{{AddonSidebar}}</p> + +<p>Featured add-ons are top-quality extensions and themes highlighted on <a href="https://addons.mozilla.org/en-US/firefox/extensions/?sort=featured">AMO</a>, Firefox's Add-ons Manager, and across other Mozilla websites. These add-ons showcase the power of Firefox customization and are useful to a wide audience.</p> + +<p>Featured extensions are chosen by the Featured Extensions Advisory Board, a small group of extension developers and fans from the Mozilla community who have volunteered to review and vote on nominations.</p> + +<p>New <a href="https://addons.mozilla.org/en-US/firefox/search/?featured=true&type=extension">featured extensions</a> are chosen every month.</p> + +<h3 id="Criteria_for_Featured_Extensions">Criteria for Featured Extensions</h3> + +<p>Before nominating an extension to be featured, please ensure it meets the following criteria:</p> + +<ol> + <li>The extension must have a complete and informative listing on AMO. This means: + <ul> + <li>a 64-pixel custom icon</li> + <li>a clear and concise name (no lengthy keywords)</li> + <li>a clear and concise summary of the extension's functionality</li> + <li>detailed description and privacy policy, if applicable</li> + <li>updated screenshots of the extension's functionality</li> + </ul> + </li> + <li>The extension must have excellent user reviews and any problems or support requests must be promptly addressed by the developer.</li> + <li>The extension must have a minimum of 500 users.</li> + <li>The extension must be built with <a href="https://developer.mozilla.org/Add-ons/WebExtensions">WebExtensions</a> API.</li> + <li>The extension must be compatible with the latest release of Firefox.</li> + <li><strong>Most importantly</strong>, the extension must have wide consumer appeal to Firefox's users and be outstanding in nearly every way: user experience, performance, security, and usefulness or entertainment value.</li> +</ol> + +<h3 id="Discovery_Pane">Discovery Pane</h3> + +<p>The Get Add-ons section (also referred to as the Discovery Pane) in about:addons serves a distinct editorial function: it is a tightly curated list of extensions and themes selected by Mozilla staff to address an array of the most common user needs (e.g. ad blockers, screenshot tools, etc.). The Discovery Pane is primarily intended to introduce extensions to Firefox users who have limited experience with browser customization. As such, we only select extensions that meet the highest standards of functionality, user experience, and Firefox compatibility.</p> + +<p>Only content that is part of AMO’s <a class="external text" href="https://addons.mozilla.org/en-US/firefox/search/?featured=true&type=extension" rel="nofollow">Featured Extensions collection</a> will be considered for the Discovery Pane; please note that featured content must meet certain <a href="https://wiki.mozilla.org/AMO/Featured_Board_Process#Add-on_Requirements" title="AMO/Featured Board Process">criteria</a>.</p> + +<p>Discovery Pane content is updated monthly, though some highly popular extensions may remain on the page for an indefinite period of time.</p> + +<p>If you’d like to nominate a great extensions for consideration in the Discovery Pane, please send us a link to the add-on on AMO to <strong>amo-featured@mozilla.org</strong> and we’ll add your nomination to the editorial review queue. There’s no need to mention you’re nominating add-ons specifically for the Discovery Pane, but feel free to note that if you like.</p> + +<h3 id="Nominating_an_Add-on">Nominating an Add-on</h3> + +<p>If you wish to nominate an extension to be featured and it meets the criteria above, send an email to <a href="mailto:amo-featured@mozilla.org">amo-featured@mozilla.org</a> with:</p> + +<ul> + <li>the extension name, URL, and whether you are its developer</li> + <li>a short explanation of why the extension has wide appeal and should be featured</li> + <li>optionally, links to any external reviews or articles mentioning the extension</li> +</ul> + +<p>Extension nominations are reviewed by the Advisory Board once a month. Common reasons for rejection include lacking wide appeal to consumers, a suboptimal user experience, quality or security issues, incompatibility, and similarity to another featured extension. Rejected extension cannot be re-nominated within 3 months.</p> + +<h3 id="Rotating_Featured_Extensions">Rotating Featured Extensions</h3> + +<p>Mozilla and the Featured Extensions Advisory Board regularly evaluate and rotate out featured extensions. Some of the most common reasons for extensions being removed from the featured list are:</p> + +<ul> + <li>Lack of growth — Extensions that are featured typically experience a substantial gain in both downloads and active users. If an extension is not demonstrating growth in any substantial way, that's a good indicator the extension may not be very useful to our users.</li> + <li>Negative reviews — Featured extensions should have a great experience and very few bugs, so extensions with many negative reviews may be reconsidered.</li> + <li>Incompatibility with upcoming Firefox versions — Featured extensions are expected to be compatible with stable and beta versions of Firefox. Extensions not yet compatible with a Beta version of Firefox four weeks before its expected release will lose their featured status.</li> +</ul> + +<h3 id="Joining_the_Featured_Extensions_Advisory_Board">Joining the Featured Extensions Advisory Board</h3> + +<p>Every six months a new Advisory Board is chosen based on applications from the add-ons community. Members must:</p> + +<ul> + <li>be active members of the add-ons community, whether as a developer, evangelist, or fan</li> + <li>commit to trying all the nominations submitted, giving their feedback, and casting their votes every month</li> + <li>abstain from voting on extensions that they have any business or personal affiliations with, as well as direct competitors of any such extensions</li> +</ul> + +<p>Members of the Mozilla Add-ons team may veto any extension's selection because of security, privacy, compatibility, or any other reason, but in general it is up to the Board to select extensions to feature.</p> + +<p>This featured policy only applies to the addons.mozilla.org global list of featured extensions. Extensions featured in other locations are often pulled from this list, but Mozilla may feature any extension in other locations without the Board's consent. Additionally, locale-specific features override the global defaults, so if a locale has opted to select its own features, some or all of the global features may not appear in that locale.</p> + +<p>Follow the <a href="http://blog.mozilla.com/addons">Add-ons Blog</a> or <a href="http://www.twitter.com/mozamo">@mozamo</a> on Twitter to learn when the next application period opens.</p> + +<p><em>Last updated: April 12, 2018</em></p> + +<p><span class="comment seoSummary">How up-and-coming add-ons become featured and what's involved in the process. </span></p> diff --git a/files/fr/mozilla/add-ons/amo/règles/index.html b/files/fr/mozilla/add-ons/amo/règles/index.html new file mode 100644 index 0000000000..c99c0d1094 --- /dev/null +++ b/files/fr/mozilla/add-ons/amo/règles/index.html @@ -0,0 +1,21 @@ +--- +title: Règles des modules +slug: Mozilla/Add-ons/AMO/Règles +translation_of: Mozilla/Add-ons/AMO/Policy +--- +<p>{{AddonSidebar}}</p> + +<p><span id="result_box" lang="fr"><span>Mozilla s'engage à assurer une excellente expérience pour nos utilisateurs et développeurs d'extensions.</span> <span>Veuillez consulter les règles ci-dessous avant de soumettre votre module.</span></span></p> + +<dl> + <dd></dd><dt><a href="/Mozilla/Add-ons/AMO/Policy/Agreement">Agrément du développeur</a></dt> +<dd>Effective January 5, 2016</dd><br> + <dt><a href="/Mozilla/Add-ons/AMO/Policy/Reviews">Processus de revue</a></dt> +<dd>Add-ons extend the core capabilities of Firefox, allowing users to modify and personalize their Web experience. A healthy add-on ecosystem, built on trust, is vital for developers to be successful and users to feel safe making Firefox their own. For these reasons, Mozilla requires all add-ons to comply with the following set of policies on acceptable practices. The below is not intended to serve as legal advice, nor is it intended to serve as a comprehensive list of terms to include in your add-on’s privacy policy.</dd><br> + <dt><a href="/Mozilla/Add-ons/AMO/Policy/Featured">Présentation des extensions</a></dt> +<dd>How up-and-coming add-ons become featured and what's involved in the process. </dd><br> + <strong><a href="/en-US/Add-ons#Contact_us">Nous contacter</a></strong> + + <p> Comment nous contacter à propos de ces règles ou de votre module.</p> + +</dl> diff --git a/files/fr/mozilla/add-ons/amo/règles/reviews/index.html b/files/fr/mozilla/add-ons/amo/règles/reviews/index.html new file mode 100644 index 0000000000..fab668a282 --- /dev/null +++ b/files/fr/mozilla/add-ons/amo/règles/reviews/index.html @@ -0,0 +1,157 @@ +--- +title: Add-on Policies +slug: Mozilla/Add-ons/AMO/Règles/Reviews +translation_of: Mozilla/Add-ons/AMO/Policy/Reviews +--- +<p>{{AddonSidebar}}</p> + +<p>Add-ons extend the core capabilities of Firefox, allowing users to modify and personalize their Web experience. A healthy add-on ecosystem, built on trust, is vital for developers to be successful and users to feel safe making Firefox their own. For these reasons, Mozilla requires all add-ons to comply with the following set of policies on acceptable practices. The below is not intended to serve as legal advice, nor is it intended to serve as a comprehensive list of terms to include in your add-on’s privacy policy.</p> + +<p>All add-ons are subject to these policies, regardless of how they are distributed. Add-ons that do not comply with these policies may be subject to rejection or disabling by Mozilla.</p> + +<h2 id="No_Surprises">No Surprises</h2> + +<p>Surprises can be appropriate in many situations, but they are not welcome when user security, privacy and control are at stake. It is extremely important to be as transparent as possible when submitting an add-on. Users should be able to easily discern what the functionality of your add-on is and not be presented with unexpected user experiences after installing it.</p> + +<h3 id="Unexpected_Features">Unexpected Features</h3> + +<p>“Unexpected” features are those that are unrelated to the add-on’s primary function, and are not likely from the add-on name or description to be expected by a user installing that add-on.</p> + +<p>Should an add-on include any unexpected feature that falls into one of the following categories:</p> + +<ul> + <li>Potentially compromises user privacy or security (like sending data to third parties)</li> + <li>Changes default settings like the new tab page, homepage or search engine</li> + <li>Makes unexpected changes to the browser or web content</li> + <li>Includes features or functionality not related to the add-on’s core function(s)</li> +</ul> + +<p>Then the “unexpected” feature(s) must adhere to all of the following requirements:</p> + +<ul> + <li>The add-on description must clearly state what changes the add-on makes.</li> + <li>All changes must be “opt-in”, meaning the user has to take non-default action to enact the change. Changes that prompt users via the permissions system don’t require an additional opt-in.</li> + <li>The opt-in interface must clearly state the name of the add-on requesting the change.</li> +</ul> + +<h2 id="Content">Content</h2> + +<p>Add-ons that make use of Mozilla trademarks must comply with the <a href="https://www.mozilla.org/en-US/foundation/trademarks/policy/">Mozilla Trademark Policy</a>. If the add-on uses “Firefox” in its name, the naming standard the add-on is expected to follow is “<Add-on name> for Firefox”.</p> + +<p>In addition, add-ons listed on addons.mozilla.org (AMO) must adhere to the following policies:</p> + +<ul> + <li>All add-ons submitted for listing on AMO are subject to Mozilla’s <a href="https://www.mozilla.org/en-US/about/legal/acceptable-use/">Conditions of Use</a>.</li> + <li>Add-ons must disclose when payment is required to enable any functionality.</li> + <li>Any add-ons, or add-on content, hosted on Mozilla site(s) must conform to the laws of the United States.</li> + <li>The add-on listing should have an easy-to-read description about everything it does, and any information it collects. Please consult our best practices guide for <a href="https://developer.mozilla.org/en-US/Add-ons/Listing">creating an appealing listing</a>.</li> + <li>Add-ons that are intended for internal or private use, or for distribution testing may not be listed on AMO. Such add-ons may be <a href="https://developer.mozilla.org/en-US/Add-ons/Distribution#Self-distributed_(unlisted)_versions">uploaded for self-distribution</a> instead.</li> + <li>If the add-on is a fork of another add-on, the name must clearly distinguish it from the original and provide a significant difference in functionality and/or code.</li> +</ul> + +<h2 id="Submission_Guidelines">Submission Guidelines</h2> + +<p>Add-ons must function only as described, and should provide an appealing user experience. Based on the description of the add-on, a user must be able to understand and use the add-on’s features without requiring expert knowledge. Tips on how to create a good user experience for your add-on can be found <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/User_experience_best_practices">here</a>.</p> + +<p>During review, the add-on undergoes basic testing in addition to code review. To facilitate the functional testing, the add-on author must provide testing information and, if applicable, testing credentials required to use the add-on if an account is needed for any part of the add-on’s functionality.</p> + +<p>Issues brought up during review must be addressed using best efforts. If corrections have been requested, the new version should not contain unrelated changes, as this complicates the review process and can lead to further rejections.</p> + +<h3 id="Source_Code_Submission">Source Code Submission</h3> + +<p>Add-ons may contain transpiled, obfuscated, minified or otherwise machine-generated code, but Mozilla needs to review a copy of the human-readable source code. The author must provide this information to Mozilla during submission as well as instructions on how to reproduce the build.</p> + +<p>The provided source code will be reviewed by an administrator and will not be redistributed in any way. The code will only be used for the purpose of reviewing the add-on. Failure to provide this information will result in rejection.</p> + +<p>Please read our <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Source_Code_Submission">Source Code Submission guidelines</a> to avoid unexpected rejections.</p> + +<h2 id="Development_Practices">Development Practices</h2> + +<p>In general, developers are free to maintain their add-ons in the manner they choose. However, in order to maintain appropriate data security and effectively review code, we do have certain technical requirements that all add-ons must meet. In particular, potentially dangerous APIs may only be used in ways that are demonstrably safe, and code within add-ons that cannot be verified as behaving safely and correctly may need to be refactored.</p> + +<p>While any code, method or practice in a submitted add-on is subject to review and rejection, the following requirements are of particular importance:</p> + +<ul> + <li>Add-ons must only request those permissions that are necessary for function</li> + <li>Add-ons must be self-contained and not load remote code for execution</li> + <li>Add-ons must use encrypted channels for sending sensitive user data</li> + <li>Add-ons should avoid including duplicate or unnecessary files</li> + <li>Add-on code must be written in a way that is reviewable and understandable. Reviewers may ask you to refactor parts of the code if it is not reviewable.</li> + <li>Add-ons must not negatively impact the performance or stability of Firefox.</li> + <li>Only release versions of third-party libraries and/or frameworks may be included with an add-on. Modifications to these libraries/frameworks are not permitted.</li> +</ul> + +<h2 id="Data_Disclosure_Collection_and_Management">Data Disclosure, Collection and Management</h2> + +<p>You must disclose how the add-on collects, uses, stores and shares user data in the privacy policy field on AMO. Mozilla expects that the add-on limits data collection whenever possible, in keeping with Mozilla’s <a href="https://www.mozilla.org/en-US/about/policy/lean-data/">Lean Data Practices</a> and Mozilla’s <a href="https://www.mozilla.org/en-US/privacy/principles/">Data Privacy Principles</a>, and uses the data only for the purpose for which it was originally collected.</p> + +<p>User data includes all information the add-on collects, regardless of the manner. It can be personal data actively provided by the user (such as a name or email address), technical data (such as operating system, build ID, version numbers, crash reports, activation, updates), and interaction or activity data (add-on activity data, visited URLs, console logs), including interactions with Firefox.</p> + +<p>The add-on’s privacy policy must be the full policy text; it cannot be a link to an externally hosted privacy policy. In addition, the privacy policy must:</p> + +<ul> + <li>be specific and exclusive to the add-on,</li> + <li>clearly describe the purpose of the data collection,</li> + <li>set forth the exact data to be collected,</li> + <li>address the add-on’s particular privacy properties.</li> +</ul> + +<p>A summary of this information must be included in the add-on’s listing description. Finally, you and your add-on must also comply with all applicable data privacy laws as well as any other laws that may apply to your specific add-on.</p> + +<h3 id="User_Interactions_Technical_Data">User Interactions & Technical Data</h3> + +<ul> + <li>Users must be provided a clear way to control this data collection. The control mechanism must be shown during the installation process of the add-on.</li> + <li>Add-ons must only collect information about add-on performance and/or use.</li> + <li>Collecting ancillary information (e.g. any data not explicitly required for the add-on’s basic functionality) is prohibited.</li> +</ul> + +<h3 id="Cookies">Cookies</h3> + +<ul> + <li>If your add-on installs cookies, this must also be disclosed in the add-on’s privacy policy.</li> + <li>The add-on privacy policy must clearly express the placing and purposes of the cookie(s). It is highly recommended that you disclose the types of cookies being used.</li> + <li>Users must be provided an opportunity to refuse the storage of or access to cookies, and must be informed of the consequences of doing so (e.g., without a functional cookie, the add-on may not work).</li> + <li>Installing cookies that are not explicitly required for the add-on’s functionality is prohibited.</li> +</ul> + +<h3 id="Personal_Data">Personal Data</h3> + +<ul> + <li>If you are collecting any personal information, the users must provide affirmative consent (i.e., explicit opt-in from the user). It must be clear to the user that they give consent to the collection of personal data.</li> + <li>Collecting ancillary personal information (e.g., any data not explicitly required for the add-on’s basic functionality) is prohibited.</li> + <li>Any transmission of this type of data must use secure, encrypted connections.</li> +</ul> + +<h3 id="Additional_Privacy_Protocols">Additional Privacy Protocols</h3> + +<ul> + <li>Leaking local or user-sensitive information to websites or other processes (e.g., using native messaging) is prohibited.</li> + <li>If the add-on uses native messaging, the privacy policy must clearly disclose which information is being exchanged with the native application. Data exchanged with the native application must be in accordance with our No Surprises policy.</li> + <li>HTTPS must be used for security and privacy-sensitive operations such as transmitting passwords or tokens.</li> + <li>Browsing data from private browsing sessions must not be stored.</li> + <li>Identity information must not be leaked to web content in private browsing sessions.</li> +</ul> + +<h2 id="Security_Vulnerabilities">Security Vulnerabilities</h2> + +<p>Because add-ons run in an environment with elevated privileges relative to ordinary web pages, they present a very serious set of security considerations. They have the potential to open security holes not only in the add-ons themselves, but also in the browser, in web pages, and, in particularly distressing cases, the entire system the browser is running on.</p> + +<p>As a result, we take our security policies very seriously and apply them to all add-ons, whether hosted on AMO or not. We expect all add-ons to be secure and well-maintained in handling both their own data and their user’s data. They must also securely manage all of their interactions with the web, the browser and the operating system.</p> + +<h2 id="Monetization">Monetization</h2> + +<ul> + <li>Monetization mechanisms must comply with the policies in the <em>Data Disclosure, Collection and Management</em> section. In particular, an add-on must be accompanied with a clear user control mechanism (and opt-in for personal data) presented during the installation or update process of the add-on. Collecting ancillary information for monetization is prohibited.</li> + <li>An add-on injecting advertising into web page content must clearly identify the injected content as originating from the add-on.</li> + <li>The inclusion of any cryptocurrency miners or similar functionality in an add-on is prohibited.</li> + <li>Modifying web content or facilitating redirects to include affiliate promotion tags is not permitted. Conversely, the use of affiliate promotion in user interface elements clearly identified as belonging to the add-on are acceptable.</li> +</ul> + +<h2 id="Compliance_Blocklisting">Compliance & Blocklisting</h2> + +<p>For add-ons that don’t meet these policies, Mozilla may reject or blocklist affected versions or entire add-ons, depending on the extent of their non-compliance.</p> + +<p>Generally, Mozilla will attempt to contact the add-on’s developer(s) and provide a reasonable time frame for the problems to be corrected before a block is deployed. If an add-on is considered malicious or its developers have proven unreachable or unresponsive, or in case of repeat violations, blocklisting may be immediate.</p> + +<p>Mozilla reserves the right to block or delete the developer’s account on addons.mozilla.org, thereby preventing further use of the service.</p> diff --git a/files/fr/mozilla/add-ons/bootstrapped_extensions/index.html b/files/fr/mozilla/add-ons/bootstrapped_extensions/index.html new file mode 100644 index 0000000000..4cc231fe1d --- /dev/null +++ b/files/fr/mozilla/add-ons/bootstrapped_extensions/index.html @@ -0,0 +1,348 @@ +--- +title: Modules complémentaires bootstrapés +slug: Mozilla/Add-ons/Bootstrapped_extensions +tags: + - Extensions + - Guide + - Modules complémentaires +translation_of: Archive/Add-ons/Bootstrapped_extensions +--- +<p>{{LegacyAddonsNotice}}{{AddonSidebar}}</p> + +<p>{{ gecko_minversion_header("2.0") }}</p> + +<p><span id="result_box" lang="fr"><span>Les extensions traditionnelles incluent des <strong>superpositions</strong>, dans lesquelles l'application peut charger XUL depuis le paquet de l'extension et l'appliquer automatiquement sur sa propre interface utilisateur.</span> <span>Bien que la création d'extensions, qui ajoutent à l'interface utilisateur de l'application, soit relativement simple, cela signifie que la mise à jour, l'installation ou la désactivation d'une extension nécessite un redémarrage de l'application.</span></span></p> + +<p><span id="result_box" lang="fr"><span>Gecko 2.0 {{geckoRelease ("2.0")}} introduit des <strong>extensions "bootstrapées"</strong>.</span> <span>Ce sont des extensions spéciales qui, au lieu d'utiliser une superposition pour appliquer leur interface utilisateur à l'application, s'insèrent par programmation dans l'application.</span> <span>Ceci est fait en utilisant un fichier de script spécial inclus dans l'extension qui contient les fonctions que le navigateur appelle pour commander à l'extension d'installer, désinstaller, démarrer et arrêter.</span></span></p> + +<p><span id="result_box" lang="fr"><span>Toute l'application fait appel à ce fichier de script;</span> <span>l'extension est responsable de l'ajout et de la suppression de son interface utilisateur et de la gestion des autres tâches d'installation et d'arrêt nécessaires.</span></span></p> + +<p><span id="result_box" lang="fr"><span>Cet article explique comment fonctionnent les extensions "bootstrap".</span> <span>Consultez ce didacticiel sur la <a href="https://developer.mozilla.org/fr/Add-ons/How_to_convert_an_overlay_extension_to_restartless">conversion d'une extension superposée en une opération sans redémarrage</a> pour obtenir un guide pratique étape par étape de la migration.</span></span></p> + +<h2 id="Le_processus_de_démarrage_et_d'arrêt"><span class="short_text" id="result_box" lang="fr"><span>Le processus de démarrage et d'arrêt</span></span></h2> + +<p><span id="result_box" lang="fr"><span>Une fonctionnalité clé des extensions "bootstrapées" est qu'elles doivent pouvoir démarrer et arrêter à la demande de l'application.</span> <span>Lorsque la fonction de </span></span> <code>startup()</code> <em>(</em><span lang="fr"><span><em>démarrage)</em> de l'extension est appelée, elle doit injecter manuellement son interface utilisateur et tout autre comportement dans l'application.</span> <span>De même, lorsque sa fonction <code>shutdown()</code> <em>(arrêt)</em> est appelée, elle doit supprimer tout ce qu'elle a ajouté à l'application, ainsi que toutes les références à l'un de ses objets.</span></span></p> + +<p><span id="result_box" lang="fr"><span>Il existe plusieurs scénarios dans lesquels la fonction <code>startup()</code> peut être appelée,</span> <span>par exemple :</span></span></p> + +<ul> + <li><span id="result_box" lang="fr"><span>lorsque l'extension est installée pour la première fois, en supposant qu'elle soit compatible avec l'application et activée.</span></span></li> + <li><span id="result_box" lang="fr"><span>lorsque l'extension est activée à l'aide de la fenêtre du gestionnaire de modules complémentaires.</span></span></li> + <li><span id="result_box" lang="fr"><span>lorsque l'application est démarrée, si l'extension est activée et compatible avec l'application.</span></span></li> +</ul> + +<p>Quelques exemples <span id="result_box" lang="fr"><span>de situations où la fonction <code>shutdown()</code> peut être appelée :</span></span></p> + +<ul> + <li><span id="result_box" lang="fr"><span>lorsque l'extension est désinstallée, si elle est actuellement activée.</span></span></li> + <li><span class="short_text" id="result_box" lang="fr"><span>lorsque l'extension est désactivée.</span></span></li> + <li><span id="result_box" lang="fr"><span>lorsque l'utilisateur quitte l'application, si l'extension est activée.</span></span></li> +</ul> + +<h2 id="Notes_sur_la_modification_de_l'interface_utilisateur_de_l'application"><span id="result_box" lang="fr"><span>Notes sur la modification de l'interface utilisateur de l'application</span></span></h2> + +<h3 id="chrome.manifest_dans_les_extensions_bootstrapées">chrome.manifest dans les extensions "bootstrapées"</h3> + +<p>Vous pouvez utiliser un fichier <a href="https://developer.mozilla.org/fr/docs/Enregistrement_chrome#Exemple_de_fichier_manifest_chrome"><code>chrome.manifest</code></a> dans l'extension "bootstrapée" pour :</p> + +<ul> + <li><span id="result_box" lang="fr"><span>Rendre le contenu de votre module complémentaire disponible via une URL <code>chrome://</code> (en utilisant les instructions </span></span> <code>content</code> <em>(</em><span lang="fr"><span><em>contenu)</em>, </span></span> <code>locale</code> <em>(</em><span lang="fr"><span><em>langue)</em> et </span></span> <code>skin</code> <em>(</em><span lang="fr"><span><em>habillage)</em> dans le manifeste).</span></span></li> + <li>Remplacer les URI du <code>chrome://</code> existant avec votre contenu (en utilisant l'instruction <code>override</code> <em>(passer outre)</em>).</li> +</ul> + +<p>Toutes les instructions <code>chrome.manifest</code> ne sont pas supportées dans les extensions bootstrapées, <span id="result_box" lang="fr"><span>par exemple, vous ne pouvez toujours pas enregistrer d'</span></span> <a href="https://developer.mozilla.org/fr/docs/Overlays_XUL">Overlays XUL</a> à partir d'une extension "bootstrapée". Voir la documentation <a href="https://developer.mozilla.org/fr/docs/Enregistrement_chrome"><code>Enregistrement chrome</code></a> pour les détails.</p> + +<p><span id="result_box" lang="fr"><span>Dans Firefox 10 et versions ultérieures, le fichier <code>chrome.manifest</code> situé dans la racine du XPI du module complémentaire (c'est-à-dire un frère du fichier <code>install.rdf</code>) est chargé automatiquement.</span> <span>Dans Firefox 8 et 9, vous devez charger / décharger manuellement le manifeste en utilisant {{ifmethod ("nsIComponentManager", "addBootstrappedManifestLocation")}} et {{ifmethod ("nsIComponentManager", "removeBootstrappedManifestLocation")}}.</span> <span>Cette fonctionnalité n'était pas disponible dans les versions de Firefox avant 8.</span></span></p> + +<h3 id="Ajout_manuel_d'une_interface_utilisateur">Ajout manuel d'une interface utilisateur</h3> + +<p><span id="result_box" lang="fr"><span>Si vous décidez de développer une extension "bootstrapée", qui modifie l'interface utilisateur de l'application, voici quelques suggestions pour vous aider à démarrer.</span></span></p> + +<p><span id="result_box" lang="fr"><span>Vous devez rechercher les éléments d'interface utilisateur de l'application appropriés par leur ID en appelant {{domxref ("document.getElementById ()")}}, puis les manipuler pour injecter votre interface utilisateur.</span> <span>Par exemple, vous pouvez accéder à la barre de menus de Firefox avec <code>document.getElementById ("main-menubar")</code>.</span></span></p> + +<p><span id="result_box" lang="fr"><span>Assurez-vous qu'au moment de l'arrêt, vous supprimez toute interface utilisateur que vous avez ajoutée.</span></span></p> + +<h2 id="Création_d'une_extension_bootstrapée">Création d'une extension "bootstrapée"</h2> + +<p><span id="result_box" lang="fr"><span>Pour marquer une extension comme "bootstrappable", vous devez ajouter l'élément suivant à son</span></span> <a href="https://developer.mozilla.org/fr/Add-ons/Install_Manifests">manifeste d'installation</a> :</p> + +<pre><code><em:bootstrap>true</em:bootstrap></code></pre> + +<p>Alors, vous devez ajouter un fichier <a href="https://developer.mozilla.org/fr/docs/Extensions/bootstrap.js"><code><strong>bootstrap.js</strong></code></a> qui contient les fonctions requises ; <span class="short_text" id="result_box" lang="fr"><span>elles devraient être à côté du fichier</span></span> <a href="https://developer.mozilla.org/fr/Add-ons/Install_Manifests"><code>install.rdf</code></a> dans le paquet de l'extension.</p> + +<h3 id="Rétrocompatibilité"><span class="short_text" id="result_box" lang="fr"><span>Rétrocompatibilité</span></span></h3> + +<p><span id="result_box" lang="fr"><span>Parce que les anciennes versions de Firefox ne connaissent pas la propriété <code>bootstrap</code> ou le fichier <code>bootstrap.js</code>, il n'est pas trop difficile de créer un XPI qui fonctionnera à la fois comme une extension "bootstrapable" et comme une extension traditionnelle.</span> <span>Créez votre extension en tant qu'extension "bootstrapable", puis ajoutez les "overlays" <em>(superpositions)</em> traditionnels.</span> <span>Les versions plus récentes de Firefox utiliseront le script <code>bootstrap.js</code>, en ignorant les composants et les superpositions, alors que les versions plus anciennes utiliseront les superpositions.</span></span></p> + +<h2 id="Points_d'entrée_Bootstrap"><span class="short_text" id="result_box" lang="fr"><span>Points d'entrée Bootstrap</span></span></h2> + +<p><span id="result_box" lang="fr"><span>Le script <code>bootstrap.js</code> doit contenir plusieurs fonctions spécifiques, appelées par le navigateur pour gérer l'extension.</span> <span>Le script est exécuté dans un bac à sable privilégié, qui est mis en cache jusqu'à ce que l'extension soit arrêtée.</span></span></p> + +<h3 id="startup_(démarrage)">startup <em>(démarrage)</em></h3> + +<p><span id="result_box" lang="fr"><span>Appelé lorsque l'extension doit se démarrer elle-même.</span> <span>Il se produit au moment du lancement de l'application, lorsque l'extension est activée après avoir été désactivée ou après son arrêt afin d'installer une mise à jour.</span> <span>Il peut être appelé plusieurs fois pendant la durée de vie de l'application.</span></span></p> + +<p><span id="result_box" lang="fr"><span>C'est à ce moment que votre extension doit injecter son interface utilisateur, démarrer toutes les tâches qu'elle peut avoir besoin d'exécuter et ainsi de suite.</span></span></p> + +<pre>void startup( + data, + reason +); +</pre> + +<h6 id="Paramètres">Paramètres</h6> + +<dl> + <dt><code>data </code><em>(donnée)</em></dt> + <dd>Une <a href="#Données bootstrap">donnée bootstrap</a>.</dd> + <dt><code>reason <em>(motif)</em></code></dt> + <dd>Une des <a href="#Constantes causales">constantes causales</a>, <span id="result_box" lang="fr"><span>indiquant pourquoi l'extension est en cours de démarrage.</span></span> Ce peut être l'une d'entre elles : <code>APP_STARTUP</code>, <code>ADDON_ENABLE</code>, <code>ADDON_INSTALL</code>, <code>ADDON_UPGRADE ou</code> <code>ADDON_DOWNGRADE</code>.</dd> +</dl> + +<h3 id="shutdown_(arrêt)">shutdown <em>(arrêt)</em></h3> + +<p><span id="result_box" lang="fr"><span>Appelé lorsque l'extension doit se fermer, par exemple lorsque l'application est en cours de fermeture, ou lorsqu'elle est sur le point d'être mise à niveau ou désactivée.</span> <span>Toute interface utilisateur qui a été injectée doit être supprimée, les tâches doivent être arrêtées et les objets éliminés.</span></span></p> + +<pre>void shutdown( + data, + reason +); +</pre> + +<h6 id="Paramètres_2">Paramètres</h6> + +<dl> + <dt><code>data <em>(donnée)</em></code></dt> + <dd>Une <a href="#Données bootstrap">donnée bootstrap</a>.</dd> + <dt><code>reason <em>(motif)</em></code></dt> + <dd>Une des <a href="#Constantes causales">constantes causales</a>, indiquant pourquoi l'extension est en train de se fermet. Ce peut être l'une d'entre elles : <code>APP_SHUTDOWN</code>, <code>ADDON_DISABLE</code>, <code>ADDON_UNINSTALL</code>, <code>ADDON_UPGRADE</code> ou <code>ADDON_DOWNGRADE</code>.</dd> +</dl> + +<h3 id="install_(installation)">install <em>(installation)</em></h3> + +<p><span id="result_box" lang="fr"><span>Votre script "bootstrap" doit inclure une fonction <code>install()</code> que l'application appelle avant le premier appel </span></span> <code>startup()</code> <span lang="fr"><span> après l'installation, la mise à niveau ou le déclassement de l'extension.</span></span></p> + +<pre>void install( + data, + reason +); +</pre> + +<h6 id="Paramètres_3">Paramètres</h6> + +<dl> + <dt><code>data <em>(donnée)</em></code></dt> + <dd>Une <a href="#Données bootstrap">donnée bootstrap</a>.</dd> + <dt><code>reason <em>(motif)</em></code></dt> + <dd>Une des <a href="#Constantes causales">constantes causales</a>, indiquant pourquoi l'extension est en train d'être installée. Ce peut être l'une d'entre elles : <code>ADDON_INSTALL</code>, <code>ADDON_UPGRADE</code>, ou <code>ADDON_DOWNGRADE</code>.</dd> +</dl> + +<h3 id="uninstall_(désinstallation)">uninstall <em>(désinstallation)</em></h3> + +<p>Cette fonction est appelée après le dernier appel à <code>shutdown()</code> <span id="result_box" lang="fr"><span>avant qu'une version particulière de l'extension soit désinstallée.</span></span> Il n'est pas appelé si <code>install()</code> <span class="short_text" id="result_box" lang="fr"><span>n'a jamais été appelé</span></span> .</p> + +<div class="note"><strong>Note :</strong> <span id="result_box" lang="fr"><span>Si vous ouvrez le gestionnaire de modules complémentaires, puis cliquez sur «Supprimer» sur un module complémentaire, il n'appellera pas la fonction de désinstallation immédiatement.</span> <span>Il s'agit d'une désinstallation en raison de l'option "Annuler" disponible.</span> <span>Si le gestionnaire de modules complémentaires est fermé ou qu'un autre événement se déroule de telle sorte que l'option "Annuler" devient indisponible, la désinstallation en dur a lieu et la fonction de désinstallation est appelée.</span></span></div> + +<div class="note"><strong>Note :</strong> <span id="result_box" lang="fr"><span>La fonction de désinstallation s'exécute sur déclassement et mise à niveau, ainsi vous devriez vous assurer qu'il s'agit d'une désinstallation en faisant ceci :</span></span><br> +<code>function uninstall(aData, aReason) {</code><br> +<code> if (aReason == ADDON_UNINSTALL) {</code><br> +<code> console.log('really uninstalling');</code><br> +<code> } else {</code><br> +<code> console.log('not a permanent uninstall, likely an upgrade or downgrade');</code><br> +<code> }</code><br> +<code>}</code></div> + +<pre>void uninstall( + data, + reason +); +</pre> + +<h6 id="Paramètres_4">Paramètres</h6> + +<dl> + <dt><code>data <em>(donnée)</em></code></dt> + <dd>Une <a href="#Données bootstrap">donnée bootstrap</a>.</dd> + <dt><code>reason</code></dt> + <dd>Une des <a href="#Constantes causales">constantes causales,</a> indiquant pourquoi l'extension est en train d'être désinstallée. Ce peut être l'une d'entre elles : <code>ADDON_UNINSTALL</code>, <code>ADDON_UPGRADE</code> ou <code>ADDON_DOWNGRADE</code>.</dd> +</dl> + +<h2 id="Constantes_causales"><a id="Constantes causales" name="Constantes causales">Constantes causales</a></h2> + +<p>La fonction bootstrap accepte un paramètre <code>reason</code> (motif), qui explique pourquoi l'extension est appelée. Les constantes causales sont :</p> + +<table class="standard-table"> + <tbody> + <tr> + <td class="header">Constante</td> + <td class="header">Valeur</td> + <td class="header">Description</td> + </tr> + <tr> + <td><code>APP_STARTUP</code></td> + <td>1</td> + <td>L'application est démarrée.</td> + </tr> + <tr> + <td><code>APP_SHUTDOWN</code></td> + <td>2</td> + <td>L'application est fermée.</td> + </tr> + <tr> + <td><code>ADDON_ENABLE</code></td> + <td>3</td> + <td><span class="short_text" id="result_box" lang="fr"><span>Le module complémentaire est activé.</span></span></td> + </tr> + <tr> + <td><code>ADDON_DISABLE</code></td> + <td>4</td> + <td>Le module complémentaire est désactivé. (également <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=620541">envoyé pendant la désinstallation</a>)</td> + </tr> + <tr> + <td><code>ADDON_INSTALL</code></td> + <td>5</td> + <td>Le module complémentaire est installé.</td> + </tr> + <tr> + <td><code>ADDON_UNINSTALL</code></td> + <td>6</td> + <td>Le module complémentaire est désinstallé.</td> + </tr> + <tr> + <td><code>ADDON_UPGRADE</code></td> + <td>7</td> + <td>Le module complémentaire est mis à jour.</td> + </tr> + <tr> + <td><code>ADDON_DOWNGRADE</code></td> + <td>8</td> + <td>Le module complémentaire est déclassé.</td> + </tr> + </tbody> +</table> + +<h2 id="Données_bootstrap"><a id="Données bootstrap" name="Données bootstrap">Données bootstrap</a></h2> + +<p><span id="result_box" lang="fr"><span>Chacun des points d'entrée est transmis à une structure de données simple contenant des informations utiles sur le module complémentaire "bootstrapé".</span> <span>Plus d'informations sur l'extension peuvent être obtenues en appelant</span></span> <code><a href="/en-US/docs/Addons/Add-on_Manager/AddonManager#getAddonByID()">AddonManager.getAddonByID()</a></code>. <span id="result_box" lang="fr"><span>Les données sont un objet JavaScript simple avec les propriétés suivantes :</span></span></p> + +<table class="standard-table"> + <tbody> + <tr> + <td class="header">Propriété</td> + <td class="header">Type</td> + <td class="header">Description</td> + </tr> + <tr> + <td><code>id</code></td> + <td><code>chaîne de caractères</code></td> + <td>L'ID du module complémentaire est "bootstrapé".</td> + </tr> + <tr> + <td><code>version</code></td> + <td><code>chaîne de caractères</code></td> + <td>La version du module complémentaire est "bootstrapée".</td> + </tr> + <tr> + <td><code>installPath <em>(chemin d'installation)</em></code></td> + <td><code>nsIFile</code></td> + <td><span id="result_box" lang="fr"><span>L'emplacement d'installation du module complémentaire est "bootstrapé".</span> <span>Il peut s'agir d'un répertoire ou d'un fichier XPI selon que le module complémentaire est installé décompressé ou non.</span></span></td> + </tr> + <tr> + <td><code>resourceURI </code><em>(URI ressource)</em></td> + <td><code>nsIURI</code></td> + <td><span id="result_box" lang="fr"><span>L'URI pointe sur la racine des fichiers complémentaires, il peut s'agir d'un URI <code>jar:</code> ou <code>file:</code> , selon que le module complémentaire est installé ou non.</span></span> {{ gecko_minversion_inline("7.0") }}</td> + </tr> + <tr> + <td><code>oldVersion </code><em>(ancienne version)</em></td> + <td><code>chaîne de caractères</code></td> + <td>La précédente version installée, si le motif est <code>ADDON_UPGRADE</code> ou <code>ADDON_DOWNGRADE</code>, et si la méthode est <code>install</code> ou<code>startup</code>. {{ gecko_minversion_inline("22.0") }}</td> + </tr> + <tr> + <td><code>newVersion </code><em>(nouvelle version)</em></td> + <td><code>chaîne de caractères</code></td> + <td>La version à installer, si le motif est <code>ADDON_UPGRADE</code> ou <code>ADDON_DOWNGRADE</code>, et si la méthode est <code>shutdown</code> ou <code>uninstall</code>. {{ gecko_minversion_inline("22.0") }}</td> + </tr> + </tbody> +</table> + +<div class="note"> +<p><strong>Note :</strong> <span id="result_box" lang="fr"><span>Un module complémentaire peut être mis à niveau / déclassé au démarrage de l'application, dans ce cas, le motif de la méthode </span></span> <code>startup</code> <span lang="fr"><span> est <code>APP_STARTUP</code> et la propriété <code>oldVersion</code> n'est pas définie.</span> <span>Sachez également que, dans certaines circonstances, une mise à niveau ou un déclassement additif peut se produire sans que la méthode de désinstallation soit appelée.</span></span></p> +</div> + +<h2 id="Débogueur_de_module_complémentaire">Débogueur de module complémentaire</h2> + +<p><span id="result_box" lang="fr"><span>A partir de Firefox 31, vous pouvez utiliser le <a href="https://developer.mozilla.org/fr/Add-ons/Add-on_Debugger">débogueur de module complémentaire</a> pour déboguer les modules complémentaires "bootstrapés".</span></span></p> + +<h2 id="Localisation_(L10n)">Localisation (L10n)</h2> + +<p><span id="result_box" lang="fr"><span>La localisation des modules complémentaires "bootstrapés" est très similaire à celle de Firefox 7, car c'est à ce moment-là que la compatibilité de chrome.manifest a démarré.</span></span></p> + +<h3 id="Fichiers_JS_et_JSM_-_Utilisation_des_fichiers_de_propriétés">Fichiers JS et JSM - Utilisation des fichiers de propriétés</h3> + +<p>Pour localiser vos fichiers .js et .jsm , vous avez à utiliser <a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Tutoriel_XUL/Les_fichiers_de_propri%C3%A9t%C3%A9s">les fichiers de propriétés</a>.</p> + +<p>Le minimum absolument nécessaire est :</p> + +<ol> + <li>Fichier : install.rdf</li> + <li>Fichier : chrome.manifest</li> + <li>Fichier : bootstrap.js</li> + <li>Dossier : locale <em>(langue)</em> + <ol> + <li>Dossier : VALID_LOCALE_HERE <em>(localisation valide ici)</em> + <ol> + <li>Fichier : ANYTHING.properties <em>(toutes les propriétés)</em></li> + </ol> + </li> + </ol> + </li> +</ol> + +<p><span id="result_box" lang="fr"><span>Dans le dossier "locale", vous devez disposer de dossiers pour chacune des langues que vous souhaitez fournir;</span> <span>chaque dossier doit être nommé avec un nom "locale" valide (exemple : fr).</span> <span>Dans ce dossier, doit exister un fichier de propriétés.</span> <span>Dans le fichier chrome.manifest, ces paramètres régionaux doivent être définis.</span> <span>Par exemple, si vous disposez d'un sous-dossier fr dans le dossier "locale", votre fichier chrome.manifest devra contenir : locale NAME_OF_YOUR_ADDON fr locale/fr/</span></span></p> + +<p>Ici un exemple : <a href="https://github.com/Noitidart/l10n/tree/properties">GitHub :: l10n-properties</a> - <span id="result_box" lang="fr"><span>au démarrage de ce module, il affichera une invite indiquant USA ou Grande-Bretagne, avec laquelle choisir la langue la plus proche de la vôtre.</span> <span>Vous pouvez tester différents "locale" en allant sur </span></span> about:config <span lang="fr"><span> et en changeant les préférences de general.useragent.locale, et en désactivant puis en réactivant le module complémentaire.</span></span></p> + +<h3 id="Fichiers_XUL_et_HTML_-_Utilisation_d'entités_à_partir_de_fichiers_DTD">Fichiers XUL et HTML - Utilisation d'entités à partir de fichiers DTD</h3> + +<p><span id="result_box" lang="fr"><span>Plusieurs pages HTML sont utilisées, mais elles ne peuvent pas être localisées avec des fichiers DTD.</span> <span>Il y a trois changements que vous devez faire :</span></span></p> + +<ol> + <li><span id="result_box" lang="fr"><span>Vous devez changer l'extension du fichier HTML en</span></span> <code>.xhtml</code></li> + <li>Le doctype <span id="result_box" lang="fr"><span>doit être défini pointant sur un fichier DTD dans votre dossier "locale", ainsi par exemple</span></span> : <code><!DOCTYPE html SYSTEM <span class="pl-s1">"chrome://l10n/locale/mozilla.dtd"</span>></code></li> + <li>Vous devez ajouter l'attribut xmlns à la balise html, par exemple : <code><<span class="pl-ent">html</span> <span class="pl-e">xmlns</span>=<span class="pl-s1"><span class="pl-pds">"</span>http://www.w3.org/1999/xhtml<span class="pl-pds">"</span></span>></code></li> + <li>Si vous avez plusieurs fichiers DTD lisez ceci : <a href="https://developer.mozilla.org/fr/docs/Utilisation_de_plusieurs_DTD">Utilisation de plusieurs DTD</a></li> +</ol> + +<p><span class="short_text" id="result_box" lang="fr"><span>Le minimum nécessaire est</span></span> :</p> + +<ol> + <li>Fichier : install.rdf</li> + <li>Fichier : chrome.manifest</li> + <li>Fichier : bootstrap.js</li> + <li>Dossier : locale + <ol> + <li>Dossier : VALID_LOCALE_HERE + <ol> + <li>Fichier : ANYTHING.dtd</li> + </ol> + </li> + </ol> + </li> +</ol> + +<p><span id="result_box" lang="fr"><span>Le fichier chrome.manifest doit inclure une définition pour le contenu, par exemple:</span></span> <code>content NAME_OF_YOUR_ADDON ./</code></p> + +<p>Le fichier chrome.manifest doit aussi inclure une ligne pointant sur le dossier "locale", <span class="short_text" id="result_box" lang="fr"><span>comme dans la section de propriété ci-dessus</span></span>, si vous avez un dossier nommé en-US dans le dossier "locale", le fichier chrome.manifest doit contenir : <code>locale NAME_OF_YOUR_ADDON en-US locale/en-US/</code></p> + +<p>ici un exemple de module complémentaire qui ouvre une page HTML et une page XUL sur install : <a href="https://github.com/Noitidart/l10n/tree/c456cc82a8a66b6d552cd8c2299cd2babc383af0">GitHub :: l10n-xhtml-xul</a>. <span id="result_box" lang="fr"><span>Voici un exemple montrant comment utiliser une page HTML localisée en tant que page d'options</span></span> : <a href="https://github.com/Noitidart/l10n/tree/html-options">GitHub :: l10n-html-options</a>. Vous pouvez aller sur about:config et changer la valeur de la préférence <code>general.useragent.locale </code><code>en-US</code> par <code>en-GB</code> et recharger la page ouverte pour voir les changements sur les paramètres régionaux.</p> + +<h2 id="Plus_de_lecture">Plus de lecture</h2> + +<ul> + <li><a href="https://developer.mozilla.org/fr/Add-ons/How_to_convert_an_overlay_extension_to_restartless">Comment convertir une extension superposée en redémarrage</a> un guide étape par étape. Quelques exemples de code sont fournis. La page est basée et étendue à partir du guide étape par étape de Dave Garrett <a class="external" href="https://flagfox.wordpress.com/2014/01/19/writing-restartless-addons/">convert an old overlay based extension into a restartless addon</a> <em>(<span id="result_box" lang="fr"><span>convertir une ancienne extension basée sur une superposition en un module complémentaire sans redémarrage).</span></span></em></li> + <li>Dave Townsend fournit un code basique <a class="external" href="http://www.oxymoronical.com/blog/2011/01/Playing-with-windows-in-restartless-bootstrapped-extensions">charger l'interface utilisateur pour chaque fenêtre ouverte</a> (en) dans un module complémentaire "bootstrapé".</li> + <li>Mark Finkle fournit quelques exemples simples de code pour <a class="external" href="http://starkravingfinkle.org/blog/2011/01/bootstrap-jones-adventures-in-restartless-add-ons/">modules complémentaires sans redémarrage dans Firefox mobile</a>, <a class="external" href="http://starkravingfinkle.org/blog/2011/01/restartless-add-ons-more-resources/">ajouter des ressources (comme la fenêtre d'options)</a> (en) pour les extensions "bootstrapées" et <a class="external" href="http://starkravingfinkle.org/blog/2011/01/restartless-add-ons-%e2%80%93-default-preferences/">utilisation des préférences par defaut</a> (en) sans fichier <code>default/preferences/prefs.js</code> .</li> + <li>Kris Maglione écrit au sujet de <a class="external" href="http://maglione-k.users.sourceforge.net/bootstrapped.xhtml">les exigences pour les procédures de nettoyage</a> (en) dans les modules complémentaires "bootstrapés".</li> + <li>Edward Lee montre quelques <a class="external" href="http://ed.agadak.net/2011/01/restartless-add-on-example-code">modèles de codage utiles et exemples</a> que vous pouvez utiliser dans votre module complémentaire "bootstrapé".</li> + <li>Documentation pour <a href="https://developer.mozilla.org/fr/Add-ons/Inline_Options">Options en ligne</a> dans Firefox 7 et suivants.</li> +</ul> diff --git a/files/fr/mozilla/add-ons/distribution/gagner_de_l_argent_avec_les_extensions_de_navigateur/index.html b/files/fr/mozilla/add-ons/distribution/gagner_de_l_argent_avec_les_extensions_de_navigateur/index.html new file mode 100644 index 0000000000..3a2515f3ce --- /dev/null +++ b/files/fr/mozilla/add-ons/distribution/gagner_de_l_argent_avec_les_extensions_de_navigateur/index.html @@ -0,0 +1,213 @@ +--- +title: Gagner de l'argent avec les extensions de navigateur +slug: >- + Mozilla/Add-ons/Distribution/gagner_de_l_argent_avec_les_extensions_de_navigateur +tags: + - Guide + - Monétisation + - WebExtensions + - distribution +translation_of: Mozilla/Add-ons/Distribution/Make_money_from_browser_extensions +--- +<p>{{AddonSidebar}}</p> + +<p>Alors que les utilisateurs peuvent télécharger des extensions de navigateur pour Firefox gratuitement depuis addons.mozilla.org (AMO), cela ne signifie pas que vous ne pouvez pas faire de l'argent avec des extensions de navigateur, et dans une mesure plus limitée thèmes.</p> + +<p>Cet article passe en revue vos options pour générer des revenus à partir des extensions de navigateur en ajoutant des fonctions payantes, en faisant de la publicité ou en demandant des dons. L'article conclut ensuite en suggérant certaines choses que vous pouvez faire pour maximiser la production de revenus. Mais, tout d'abord, l'article se penche sur l'AMO et les limites des mécanismes de revenu dans les extensions de navigateur..</p> + +<h2 id="Est-ce_que_je_pourrai_un_jour_vendre_par_l'entremise_d'AMO">Est-ce que je pourrai un jour vendre par l'entremise d'AMO ?</h2> + +<p>Mozilla a l'intention de maintenir AMO en tant que source gratuite à télécharger d'extensions de navigateur et de thèmes. Mozilla n'a pas non plus l'intention de fournir des mécanismes pour les achats d'applications dans les extensions.</p> + +<h2 id="Qu'est-ce_que_tu_ne_peux_pas_faire">Qu'est-ce que tu ne peux pas faire ?</h2> + +<p>Mozilla place peu de restrictions sur la façon dont vous pouvez monétiser votre extension de navigateur. Les restrictions en place visent généralement à assurer un bon comportement lors de l'interaction avec vos utilisateurs tout en générant des revenus. Donc, avant d'envisager de faire de l'argent, sachez que vous devez le faire :</p> + +<ul> + <li>Divulguez quand le paiement est requis pour activer n'importe quelle fonctionnalité dans votre poste.</li> + <li>Fournissez une description facile à lire de toute information recueillie par votre extension.</li> + <li>S'assurer que tous les mécanismes de monétisation sont conformes aux politiques de divulgation, de collecte et de gestion des données.</li> + <li>Fournir un mécanisme clair de contrôle de l'utilisateur (et opt-in pour les données personnelles) pour toutes les fonctions de monétisation lors de l'installation ou de la mise à jour de l'extension.</li> + <li>Collecte uniquement les données essentielles nécessaires au fonctionnement du mécanisme de monétisation.</li> + <li>Identifiez toute publicité injectée dans une page Web comme provenant de l'extension.</li> + <li>Ne pas inclure les mineurs de cryptocurrency ou des fonctionnalités similaires.</li> + <li>Identifier les promotions d'affiliation comme faisant partie de l'extension. Toutefois, il est interdit de modifier le contenu du site Web ou de faciliter les redirections afin d'inclure des balises promotionnelles d'affiliation.</li> +</ul> + +<p>Pour plus de détails, consultez les sections <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/AMO/Policy/Reviews#Content">contenu</a> et <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/AMO/Policy/Reviews#Monetization">monétisation</a> des politiques complémentaires.</p> + +<h2 id="Que_pouvez-vous_faire">Que pouvez-vous faire ?</h2> + +<p>Il y a trois approches que vous pouvez adopter pour monétiser l'extension de votre navigateur :</p> + +<ul> + <li>Facturation des fonctions</li> + <li>Affichage d'annonces</li> + <li>Demander des dons</li> +</ul> + +<h3 id="Facturation_des_fonctions">Facturation des fonctions</h3> + +<p>Il existe de nombreuses approches que vous pouvez prendre pour facturer les fonctionnalités de votre extension de navigateur, vous pouvez par exemple :</p> + +<ul> + <li>Placez toutes vos fonctions derrière un mur payant.</li> + <li>Offrez des fonctions de base gratuitement et placez des fonctions améliorées derrière un mur payant.</li> + <li>Offrir un certain nombre d'utilisations gratuites d'une fonction ou l'utilisation gratuite de cette fonction pendant un certain temps avant de la placer derrière un mur payant.</li> +</ul> + +<p>À moins que vous ne fournissiez une fonctionnalité ayant une valeur intrinsèque très élevée, l'approche la plus efficace consistera probablement à fournir aux utilisateurs certaines fonctionnalités gratuites moyennant des frais supplémentaires. Si vous êtes réticent à offrir des fonctionnalités gratuites, considérez que les développeurs qui ont essayé de commercialiser des extensions sans fonctionnalités gratuites rapportent qu'il est difficile d'attirer un public vers un produit entièrement commercial. Un avantage supplémentaire de fournir une partie ou la totalité de vos fonctionnalités sous une forme ou une autre gratuitement est que les utilisateurs peuvent confirmer que votre extension répond à leurs attentes. Si vous demandez aux utilisateurs de payer d'avance, certains demanderont un remboursement parce que l'extension n'avait pas les fonctionnalités qu'ils attendaient.</p> + +<h4 id="Choisir_un_fournisseur_de_paiement">Choisir un fournisseur de paiement</h4> + +<p>La clé pour implémenter des fonctions payantes dans votre navigateur est de choisir un fournisseur de traitement des paiements. Il existe de nombreux fournisseurs auxquels vous pouvez faire appel, mais celui qui répond le mieux à vos besoins et celui de vos utilisateurs n'est pas nécessairement le plus connu. Lorsque vous choisissez votre fournisseur de paiement, voici quelques points à prendre en considération :</p> + +<ul> + <li>Offrent-ils à la fois des paiements uniques et des abonnements ?</li> + <li>Offrent-ils des mécanismes pour générer des clés de licence ou émettre des clés de licence à partir d'une liste ?</li> + <li>Est-ce qu'ils traitent dans les devises les plus populaires parmi mes utilisateurs ?</li> + <li>Quels sont les types de paiement pris en charge ? (N'oubliez pas que les cartes de crédit ne sont pas nécessairement courantes dans tous les marchés du monde.)</li> + <li>Est-ce qu'ils s'occupent de toutes les questions relatives à la taxe d'achat pour moi ?</li> +</ul> + +<h4 id="Choix_de_la_fréquence_de_paiement">Choix de la fréquence de paiement</h4> + +<p>De nombreux fournisseurs de paiement vous permettront de proposer des achats ponctuels ou par abonnement. Les achats uniques offrent l'approche la plus simple, car vous n'avez pas à vous soucier de surveiller les paiements d'abonnement et d'annuler la licence si elle expire. D'autre part, avec l'abonnement, vous pouvez offrir des fonctions à un prix de transaction plus bas, réduisant ainsi l'obstacle au paiement. Les abonnements peuvent également créer une source de revenus fiable et récurrente.</p> + +<h4 id="Mise_en_œuvre_d'un_mécanisme_de_paiement_et_d'octroi_de_licences">Mise en œuvre d'un mécanisme de paiement et d'octroi de licences</h4> + +<p>Si vous rendez l'extension de votre navigateur disponible sur Chrome, vous pouvez profiter de l'API de paiement Google in-app pour gérer les transactions.</p> + +<p>Pour Firefox, et la plupart des autres navigateurs majeurs, vous aurez besoin d'installer un système de paiement. Une approche simple et raisonnablement robuste consiste à faire ce qui suit :</p> + +<ul> + <li>Vendre aux utilisateurs une licence à vie avec une clé de licence privée.</li> + <li>Sur un serveur approprié, stockez les détails de la clé de licence et une adresse e-mail associée.</li> + <li>Dans le navigateur, stockez la clé de licence avec un code de hachage de la clé et certaines données privées de l'utilisateur, telles qu'un code PIN.</li> + <li>Lorsque la fonction payante est utilisée, vérifiez si le code de hachage est valide. Si le code de hachage n'est pas valide, demandez au serveur d'envoyer un e-mail à l'adresse enregistrée avec la clé de licence afin de revalider (c'est-à-dire recalculer et enregistrer) le code de hachage. Cela empêche que la clé de licence soit largement partagée.</li> +</ul> + +<p>En plus d'avoir un moyen pour l'utilisateur d'entrer la clé de licence manuellement, il est important de gérer les interactions avec la page d'achat afin que la licence soit installée automatiquement. Cela permet d'économiser beaucoup de travail d'assistance en expliquant comment installer la licence.</p> + +<p>Conseil du développeur : Ne passez pas trop de temps à protéger votre système de licence contre les pirates informatiques, car les utilisateurs qui sont enclins à utiliser une licence piratée sont peu susceptibles d'en payer le prix. Votre temps est mieux employé à développer de nouvelles fonctions d'extension qui attirent plus d'utilisateurs payants.</p> + +<h4 id="Conversion_de_la_gratuité_en_paiement">Conversion de la gratuité en paiement</h4> + +<p>Si vous avez initialement lancé votre extension de navigateur en tant que produit gratuit, votre meilleure approche pour générer des revenus est d'ajouter de nouvelles fonctionnalités commerciales. La conversion d'un produit gratuit en un produit payant n'est pas susceptible de plaire à vos utilisateurs. Même l'ajout de caractéristiques commerciales doit être fait avec soin. Vous devriez vous préparer à une réaction négative, du genre "il était gratuit", même si vous ne modifiez pas ou ne limitez pas l'accès aux fonctions gratuites.</p> + +<h3 id="Affichage_d'annonces">Affichage d'annonces</h3> + +<p>Si vous pensez que la base d'utilisateurs de votre navigateur est peu susceptible d'être réceptive aux fonctions payantes, les publicités peuvent être une option viable pour générer des revenus. Cependant, sachez que les publicités ne sont susceptibles de générer des revenus importants que si votre extension dispose d'une large base d'utilisateurs.</p> + +<p>Il y a trois façons d'afficher techniquement des publicités, mais toutes ne sont pas acceptables pour les canaux publicitaires et les utilisateurs. Les options sont :</p> + +<ul> + <li>Injection d'annonces dans des pages Web. Dans ce cas d'utilisation, vous modifiez une page Web consultée pour injecter des annonces ou modifier des cibles publicitaires existantes. Il peut s'agir à la fois de pages générées par l'extension de votre navigateur et de pages provenant de sites Web tiers dont l'extension de navigateur est installée. La pratique consistant à modifier les pages Web de tiers est autorisée par la plupart des magasins d'extension de navigateur, y compris AMO et le Chrome Web Store. Cependant, la résistance de l'utilisateur aux extensions de navigateur qui modifient les pages de tiers peut être élevée et peut entraîner des critiques négatives et des désinstallations.</li> + <li>La plupart des programmes publicitaires n'autorisent pas cette méthode (ils vérifient le référent au niveau de la cible du lien) en raison du risque de fraude, à travers l'extension générant des clics publicitaires. Lorsqu'un fournisseur de publicité autorise ce mécanisme, il est probable qu'il vous demandera d'examiner votre extension. Si vous pouvez trouver un fournisseur, l'avantage de ce mécanisme, en particulier lorsque vous indiquez clairement que vous financez le développement de votre extension de navigateur, est qu'il est relativement bien toléré par les utilisateurs.</li> + <li>Afficher des annonces dans les pages Web à partir du site d'extension. Dans ce cas, vous incluriez de la publicité dans le site Web de votre extension et afficheriez ensuite ces pages déclenchées par des événements appropriés dans l'extension du navigateur. Des exemples de déclencheurs appropriés incluent l'installation, la mise à jour ou la désinstallation de l'extension du navigateur, ainsi que l'aide, les meilleures pratiques, des trucs et astuces ou des pages similaires ouvertes depuis l'extension du navigateur. Vous devriez pouvoir utiliser n'importe quel programme publicitaire avec cette méthode.</li> +</ul> + +<h4 id="Choisir_un_programme_publicitaire">Choisir un programme publicitaire</h4> + +<p>Il existe de nombreux fournisseurs d'ajouts allant des grands fournisseurs mondiaux bien connus, comme Google AdSense, jusqu'aux petits services régionaux. Trouver le bon fournisseur dépendra beaucoup de l'extension de votre navigateur, mais voici quelques points à considérer :</p> + +<ul> + <li>Le service dispose-t-il d'un bon inventaire publicitaire pour les pays où vivent mes utilisateurs ?</li> + <li>Le service jouit-il d'une bonne réputation en matière de paiement rapide et régulier ?</li> + <li>Est-ce que le service me permet d'inclure des annonces dans l'interface d'extension de mon navigateur ?</li> + <li>Quelles options le service offre-t-il pour générer des revenus, par exemple des impressions publicitaires, des clics ou autres ?</li> + <li>Le service me permet-il de filtrer les annonces pour qu'elles soient pertinentes pour mes utilisateurs ?</li> + <li>Quelles sont les tailles et les modes d'affichage des publicités proposées par le service ?</li> +</ul> + +<p>Vous pouvez toujours chercher à vendre de l'espace publicitaire vous-même. Toutefois, cela ne sera probablement viable que si vous disposez de ressources importantes que vous pouvez mobiliser pour vendre de l'espace publicitaire et que vous avez le trafic nécessaire pour soutenir cette approche. Cependant, vous pourriez être en mesure d'identifier un fournisseur d'un produit ou d'un service complémentaire qui serait intéressé par votre base d'utilisateurs et être en mesure de faire une vente en gros de votre espace publicitaire.</p> + +<h4 id="Meilleures_pratiques_pour_l'affichage_des_annonces">Meilleures pratiques pour l'affichage des annonces</h4> + +<p>Les publicités représentent un défi intéressant, la nécessité de trouver un compromis entre elles étant suffisamment visible pour générer des revenus, mais pas assez visible pour décourager les utilisateurs. Il n'y a pas de règles strictes et rapides pour une bonne conception de l'incorporation de publicités, mais ce sont certaines des choses que vous devriez considérer.</p> + +<ul> + <li>Précisez clairement que l'extension de votre navigateur est financée par la publicité, par exemple dans sa description AMO. Les utilisateurs sont plus enclins à tolérer les publicités s'ils savent qu'ils s'y attendent.</li> + <li>Utilisez les annonces interstitielles (publicités qui s'emparent d'une page entière et interrompent le flux de l'extension) avec précaution. Recherchez les événements où le flux est naturellement interrompu, comme les transitions entre les niveaux dans les jeux ou au début du téléchargement d'un fichier. Pensez également à rejeter automatiquement ces annonces.</li> + <li>Là où votre réseau publicitaire le permet, ciblez l'audience de votre extension.</li> + <li>Ne rendez pas les publicités trop intrusives.</li> +</ul> + +<h3 id="Demander_des_dons">Demander des dons</h3> + +<p>Si la mise en place d'un accès payant aux fonctionnalités de l'extension de votre navigateur ou la navigation dans les méandres de la mise en œuvre d'annonces publicitaires semble inappropriée pour votre extension, demander des dons peut être la voie à suivre.</p> + +<p>Cependant, sachez que la plupart des développeurs rapportent que les dons ne génèrent des revenus importants que lorsque l'extension du navigateur a une large base d'utilisateurs.</p> + +<p>Les dons peuvent également être une bonne option par rapport au passage à un modèle payant où vous pourriez rencontrer des résistances de la part des utilisateurs, où l'extension de votre navigateur est déjà disponible gratuitement et avec toutes ses fonctionnalités.</p> + +<p>Il existe un certain nombre de plates-formes que vous pouvez utiliser pour fournir des services de paiement pour les dons, y compris :</p> + +<ul> + <li><a href="http://liberapay.com">liberapay.com</a>—une plateforme open source, financée par des dons, conçue pour gérer les contributions récurrentes aux créateurs de Commons.</li> + <li><a href="http://micropayment.de">micropayment.de</a>—un fournisseur de paiement commercial offrant des fonctionnalités pour les dons uniques et récurrents.</li> + <li><a href="http://opencollective.com">opencollective.com</a>—une plateforme open source, financée par les sponsors, conçue pour gérer le remboursement des dépenses au sein des collectifs.</li> + <li><a href="http://patreon.com">patreon.com</a>—une plateforme commerciale axée sur la génération de revenus pour les créateurs à partir d'abonnements réguliers.</li> + <li><a href="http://paypal.com">paypal.com</a>—une plateforme commerciale supportant les dons uniques et récurrents.</li> + <li><a href="http://paypal.me">paypal.me</a>—un add-on à PayPal qui fournit un lien simple vers une page de paiement où les utilisateurs peuvent faire des dons uniques.</li> +</ul> + +<p>Lorsque vous choisissez un fournisseur de plateforme de dons, tenez compte de ce qui suit :</p> + +<ul> + <li>Prévoit-il des paiements dans les devises les plus susceptibles d'être utilisées par vos utilisateurs ?</li> + <li>Quel pourcentage de vos dons le site retient-il comme frais de gestion ?</li> + <li>Est-ce que le fournisseur me protège contre la fraude au paiement ?</li> + <li>Est-ce que le suivi de l'activité du fournisseur a entraîné l'annulation des abonnements ?</li> +</ul> + +<p>Avec les extensions de navigateur pour Firefox, vous avez deux façons de demander des dons : par AMO et par votre extension.</p> + +<h4 id="Demande_de_dons_par_l'entremise_de_l'AMO">Demande de dons par l'entremise de l'AMO</h4> + +<p>Vous pouvez ajouter un bouton "contributions" à la page AMO de votre extension qui renvoie à votre page de paiement à partir d'un des fournisseurs supportés. Pour ajouter le bouton :</p> + +<ul> + <li>Créez un compte auprès d'un des fournisseurs pris en charge : <a href="http://liberapay.com">liberapay.com</a>,<a href="http://micropayment.de"> micropayment.de</a>,<a href="http://opencollective.com"> opencollective.com</a>,<a href="http://patreon.com"> patreon.com</a>,<a href="http://paypal.com"> paypal.com</a>,<a href="http://paypal.me"> or paypal.me</a>.</li> + <li>Obtenez le lien vers votre page de dons.</li> + <li>Dans le hub du développeur AMO, pour l'extension web ou le thème auquel vous voulez ajouter un bouton de contributions, cliquez sur Modifier les détails.</li> + <li>Dans la section Informations de base, ajoutez le lien de votre page de dons à l'URL Contributions.<br> + <img alt="The field in an extension's or theme's Basic information section where the URL of a donations page is entered." src="https://mdn.mozillademos.org/files/16252/Contributions_URL.png" style="height: 340px; width: 2174px;"></li> +</ul> + +<p>Une section de contribution est alors ajoutée à la page AMO de votre poste.</p> + +<p><img alt="Example extension page on AMO highlighting the contribution next section" src="https://mdn.mozillademos.org/files/16251/Contribute_now.png" style="height: 643px; width: 723px;"></p> + +<h4 id="Demander_des_dons_à_partir_de_l'extension_de_votre_navigateur">Demander des dons à partir de l'extension de votre navigateur</h4> + +<p>Pour ce faire, vous ajoutez un bouton de don ou un lien vers un endroit approprié dans votre extension.</p> + +<h4 id="Bonnes_pratiques">Bonnes pratiques</h4> + +<p>Vous n'obtiendrez pas de don si vous ne le demandez pas, mais les demandes excessives de dons peuvent être déconcertantes pour vos utilisateurs et peuvent les encourager à supprimer votre extension de navigateur. Cependant, trouver la bonne méthode et la bonne fréquence pour les demandes de dons sera une question d'essais et d'erreurs. Lorsque vous ajoutez des demandes de dons, tenez compte de ce qui suit :</p> + +<ul> + <li>Lier les demandes de dons aux caractéristiques que l'utilisateur est susceptible d'utiliser régulièrement ou leur donner une "valeur" significative.</li> + <li>Donner à l'utilisateur une option claire pour fermer une demande de don.</li> + <li>Si possible, désactivez les demandes de dons une fois que l'utilisateur a donné.</li> + <li>Si vous demandez des dons uniques, ne redémarrez les demandes de dons qu'après une mise à niveau majeure, et identifiez les caractéristiques nouvelles ou améliorées dans la demande.</li> +</ul> + +<p>N'oubliez pas non plus que si vous demandez des dons réguliers, vous devrez également fournir régulièrement du nouveau contenu ou de nouvelles fonctionnalités.</p> + +<h2 id="Offres_non_sollicitées">Offres non sollicitées</h2> + +<p>Au fur et à mesure que votre extension gagnera en popularité, il est fort probable que vous serez contacté par des agences qui vous proposeront de vous transformer en millionnaire en un rien de temps, sans grand effort de votre part ; quelque chose du genre : "Insérez juste une ligne dans le code de votre add-on et devenez riche en ne faisant rien !"</p> + +<p>Traitez ces offres avec la plus grande prudence. Il est probable que le système cherchera à capturer les données privées de vos utilisateurs pour les vendre. Et, si vous obtenez de l'argent, il est probable qu'il soit beaucoup moins élevé que ce qui vous avait été promis à l'origine. Mais pire encore, vous pourriez vous retrouver avec votre extension bloquée et votre réputation ternie.</p> + +<h2 id="Comment_puis-je_maximiser_mon_revenu">Comment puis-je maximiser mon revenu ?</h2> + +<p>La création d'une base d'utilisateurs large et fidèle est essentielle pour maximiser les revenus que vous générez, quel que soit le mécanisme que vous choisissez. Pour construire votre base d'utilisateurs :</p> + +<ul> + <li>implémenter l'extension de votre navigateur sur autant de plateformes que possible, au minimum Firefox et Chrome.</li> + <li>se concentrer sur les fonctionnalités et la qualité de l'extension de votre navigateur, les extensions de mauvaise qualité retiennent rarement un nombre significatif d'utilisateurs.</li> + <li>engagez autant que possible le dialogue avec vos utilisateurs par le biais des médias sociaux, des forums et en répondant aux demandes d'assistance et aux retours d'information.</li> +</ul> diff --git a/files/fr/mozilla/add-ons/distribution/retrait_de_votre_extension/index.html b/files/fr/mozilla/add-ons/distribution/retrait_de_votre_extension/index.html new file mode 100644 index 0000000000..f2a3c408f0 --- /dev/null +++ b/files/fr/mozilla/add-ons/distribution/retrait_de_votre_extension/index.html @@ -0,0 +1,68 @@ +--- +title: Retrait de votre extension +slug: Mozilla/Add-ons/Distribution/retrait_de_votre_extension +tags: + - Extensions + - WebExtension + - end of life + - publication +translation_of: Mozilla/Add-ons/Distribution/Retiring_your_extension +--- +<p>{{AddonSidebar}}</p> + +<p>Il peut arriver que vous souhaitiez retirer une de vos extensions. Cet article suggère les étapes à suivre, ainsi que des pointeurs vers un calendrier approprié.</p> + +<h2 id="Raisons_du_retrait_d'une_extension">Raisons du retrait d'une extension</h2> + +<p>Il y a deux raisons principales pour lesquelles vous pourriez vouloir mettre fin à votre extension :</p> + +<ul> + <li>vous envisagez de supprimer le support pour un produit ou un service. Dans ce cas, vous devez supprimer l'extension des navigateurs lorsque la prise en charge cesse.</li> + <li>vous remplacez l'extension par une nouvelle, qui n'est pas une mise à niveau directe. Dans ce cas, vous devez encourager les utilisateurs existants à installer la nouvelle extension avant de supprimer l'ancienne extension des navigateurs.</li> +</ul> + +<h2 id="Étapes_à_suivre_pour_retirer_une_extension">Étapes à suivre pour retirer une extension</h2> + +<p>Lorsque vous souhaitez retirer une extension, envisagez de prendre les mesures suivantes :</p> + +<ol> + <li>Concevoir un calendrier pour la fin de vie de votre extension<br> + Envisagez d'inclure les étapes suivantes dans un calendrier de retrait de votre extension : + <ol> + <li>publier le calendrier de fin de vie de votre poste, y compris une explication des raisons pour lesquelles vous retirez votre poste.</li> + <li>publier une mise à jour qui supprime les copies installées de votre extension.</li> + <li>rendre l'extension indisponible pour les nouvelles installations, en rendant sa liste AMO invisible.</li> + </ol> + </li> + <li>Publier des conseils que vous prévoyez de mettre fin à votre extension<br> + Considérez les options suivantes pour informer les gens de votre intention de prendre votre extension : + <ol> + <li>mettez à jour la page AMO de votre extension avec son calendrier de fin de vie.</li> + <li>Si votre extension est remplacée par une autre, fournissez un lien vers la nouvelle extension. Vous pouvez utiliser {{WebExtAPIRef("management.onInstalled")}} pour écouter l'installation de la nouvelle extension afin de déclencher la suppression de l'extension d'origine en utilisant {{WebExtAPIRef("management.uninstallSelf")}}.</li> + <li>communiquez le calendrier par le biais des médias sociaux, des forums ou, si possible, par courrier électronique.</li> + </ol> + </li> + <li>Publier une version finale, auto-supprimée de votre extension<br> + Utilisez {{WebExtAPIRef("management.uninstallSelf")}} pour que votre extension se désinstalle automatiquement. Avant cela, fournissez un avis rappelant à l'utilisateur la suppression de l'extension. Si votre extension est remplacée par une autre, n'oubliez pas de fournir un rappel concernant le lien vers la nouvelle extension. Vous pouvez offrir à l'utilisateur la possibilité de supprimer l'extension maintenant ou dans quelques jours.</li> + <li>Rendez votre liste AMO invisible pour éviter de nouvelles installations<br> + Pour masquer la liste des AMO de votre extension + <ol> + <li>Ouvrez la liste de votre extension dans AMO.</li> + <li>Dans le menu de la barre latérale, ouvrez <strong>Gérer le statut & les versions</strong>.</li> + <li>Dans la section Visibilité de la liste, cliquez sur <strong>Invisible</strong>.</li> + </ol> + </li> +</ol> + +<p>Votre extension cachée ne sera pas disponible pour une recherche d'AMO ou pour tenter d'y accéder directement en utilisant l'URL AMO de la page.</p> + +<h2 id="Calendrier_de_départ_suggéré">Calendrier de départ suggéré</h2> + +<p>Il n'y a pas de période idéale entre la publication de votre calendrier de fin de vie et la suppression de votre extension des navigateurs des utilisateurs. En établissant le calendrier, vous pourriez envisager :</p> + +<ul> + <li>Si vous ne fournissez pas une extension de remplacement, vous pourriez envisager une période de préavis relativement courte, peut-être quelques semaines.</li> + <li>Si vous remplacez l'extension par une autre version, vous souhaiterez peut-être prévoir une période de préavis plus longue, avec des rappels réguliers sur la nouvelle extension. Dans ce cas, vous pouvez laisser des semaines ou des mois entre le conseil de fin de vie initial et la suppression finale des copies installées.</li> +</ul> + +<p>Lorsque vous avez commencé à retirer l'extension, utilisez les statistiques d'utilisateur actives sur AMO pour affiner votre timing. Par exemple, si le nombre d'utilisateurs actifs ne diminue pas de manière significative, vous pouvez retarder le déploiement de la version finale de votre extension et envoyer un rappel concernant vos projets. Pour accéder aux statistiques de l'utilisateur actif, ouvrez votre extension dans AMO Developer Hub et cliquez sur <strong>Afficher le tableau de bord des statistiques</strong> dans le menu contextuel.</p> diff --git a/files/fr/mozilla/add-ons/index.html b/files/fr/mozilla/add-ons/index.html new file mode 100644 index 0000000000..b6c7708369 --- /dev/null +++ b/files/fr/mozilla/add-ons/index.html @@ -0,0 +1,108 @@ +--- +title: Modules +slug: Mozilla/Add-ons +tags: + - Add-ons + - Extensions + - Landing + - Modules + - Mozilla +translation_of: Mozilla/Add-ons +--- +<div>{{AddonSidebar}}</div> + +<p><span class="seoSummary">Les modules complémentaires (<em>add-ons</em>) permettent aux développeurs d'ajouter et de modifier les fonctionnalités de Firefox.</span> Les modules sont écrits à l'aide de technologies web standard : JavaScript, HTML, et CSS - et d'API JavaScript spécifiques à ces modules. Un module complémentaire peut, par exemple, être utilisé pour :</p> + +<ul> + <li>Modifier l'apparence ou le contenu de certains sites web</li> + <li>Modifier l'interface utilisateur de Firefox</li> + <li>Ajouter de nouvelles fonctionnalités à Firefox</li> +</ul> + +<p>Il y a plusieurs types de modules complémentaires<em> (add-ons)</em>, mais le plus courant est l'extension.</p> + +<h2 id="Développer_des_modules_complémentaires">Développer des modules complémentaires</h2> + +<p>Par le passé, il a existé différents outils et formats pour développer des modules complémentaires pour Firefox. Cependant,depuis Novembre 2017, les <a href="/fr/Add-ons/WebExtensions">WebExtensions</a> sont devenues le format standard. Les autres outils (le SDK Add-On par exemple) sont maintenant dépréciés.</p> + +<p><a href="/fr/Add-ons/WebExtensions">En savoir plus à propos des WebExtensions</a></p> + +<p>Si vous développez un nouveau module complémentaire, nous vous recommandons d'utiliser WebExtension.</p> + +<p>Les extensions qui respectent le format WebExtensions de Firefox sont conçues pour pouvoir être utilisées sur différents navigateurs. Les extensions WebExtensions écrites pour Firefox fonctionneront pour la plupart dans Chrome, Edge et Opera, nécessitant peu, si ce n'est aucun changements. Elles sont également compatibles avec le mode multi-processus de Firefox.<br> + <br> + <a href="/fr/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">Voici la liste des API actuellement prises en charge par Firefox et les autres navigateurs</a>. Nous continuons à concevoir et à implémenter de nouvelles API afin de répondre aux besoins des développeurs.<br> + <br> + La plupart des API utilisées pour WebExtension sont également disponibles pour Firefox pour Android.</p> + +<h3 id="Latelier_des_extensions_Firefox_Extension_Workshop">L'atelier des extensions Firefox <em>(Extension Workshop)</em></h3> + +<p>L'<a href="https://extensionworkshop.com/">atelier des extensions firefox <em>(Extension Workshop)</em></a> est utile pour aider à développer une extension pour Firefox en offrant à l'utilisateur une façon simple et efficace de personnaliser sa navigatrion sur internet. On peut notamment y trouver : </p> + +<ul> + <li><a href="https://extensionworkshop.com/#about">Une vue d'ensemble des fonctionnalités des extensions Firefox</a></li> + <li><a href="https://extensionworkshop.com/documentation/develop/">Les outils et les procédés pour développer et tester son application</a></li> + <li><a href="https://extensionworkshop.com/documentation/publish/">Comment publier son extensions sur addons.mozilla.org et la distribuer</a></li> + <li><a href="https://extensionworkshop.com/documentation/manage/">Comment gérer son extension, une fois celle-ci publiée</a></li> + <li><a href="https://extensionworkshop.com/documentation/enterprise/">Guide pour développer et utiliser une extension pour les entreprises</a></li> + <li><a href="https://extensionworkshop.com/documentation/themes/">Comment développer un thème pour Firefox</a></li> + <li><a href="https://extensionworkshop.com/community/">La communauté de Firefox (Firefox Community)</a></li> +</ul> + +<h3 id="Les_extensions_pour_Firefox_pour_Android">Les extensions pour Firefox pour Android</h3> + +<p>En 2020, Mozilla sortira une nouvelle expérience Firefox pour Android. Le nouveau Firefox ultra-performant pour Android a été entièrement repensé avec <a href="https://mozilla.github.io/geckoview/">GeckoView</a>, le nouveau moteur de rendu pour mobiles de Mozilla. Nous travaillons actuellement à la création d'un support pour WebExtensions sur GeckoView.</p> + +<h3 id="Migrer_un_module_existant">Migrer un module existant</h3> + +<p>Si vous maintenez un module complémentaire historique utilisant XUL ou le SDK Add-on, nous vous recommandons de le porter vers une extension WebExtensions. <a href="/fr/Add-ons/WebExtensions/Porting_a_legacy_Firefox_add-on">Voici quelques ressources MDN à propos du portage d'extension</a>.</p> + +<p>Nous avons rassemblé <a href="https://wiki.mozilla.org/Add-ons/developer/communication">un ensemble de ressources</a> sur un page wiki afin d'aider les développeurs pendant cette phase de transition. Pour commencer, vous pouvez utiliser l'outil <a href="https://compatibility-lookup.services.mozilla.com/">Lookup </a>afin de détecter si votre module complémentaire est impacté.</p> + +<h2 id="Publier_des_modules">Publier des modules</h2> + +<p><a href="https://addons.mozilla.org">addons.mozilla.org</a>, aussi appelé AMO, est le site officiel de Mozilla sur lequel sont publiés les modules complémentaires et que les utilisateurs peuvent parcourir pour découvrir de nouveaux modules. Publier un module complémentaire sur AMO permet d'entretenir la communauté d'utilisateurs et de créateurs de modules. C'est également une ressource essentielle pour qu'un module puisse être découvert.</p> + +<p>Il n'est pas nécessaire que votre module soit publié sur AMO. En revanche, votre module doit être signé par Mozilla afin que les utilisateurs puissent l'installer.</p> + +<p><a href="/fr/Add-ons/Distribution">Dans cet article</a>, vous trouverez différentes informations relatives au processus de publication de son module.</p> + +<h2 id="Les_autres_types_de_modules">Les autres types de modules</h2> + +<p>Généralement, lorsqu'on évoque les modules complémentaires, on parle des extensions. Ceci étant dit, il existe d'autres types de modules qui permettent aux utilisateurs de personnaliser Firefox. Ces modules peuvent être :</p> + +<ul> + <li><a href="/fr/Add-ons/Thèmes/Fond">Des thèmes légers</a> : un outil simple qui permet de personnaliser Firefox de façon limitée</li> + <li><a href="/fr/docs/Extensions/Mobile">Les modules mobiles</a> : des modules complémentaires destinés à Firefox pour Android. Attention, certaines des API utilisées pour ces modules sont dépréciées (ou le seront dans un avenir proche). Par la suite, Firefox pour Android prendra pleinement en charge le format WebExtension</li> + <li><a href="/fr/Add-ons/Creating_OpenSearch_plugins_for_Firefox">Des plugins pour les moteurs de recherche</a> qui permettent d'ajouter de nouveaux moteurs de recherche à la barre de recherche du navigateur</li> + <li><a href="/fr/docs/Mozilla/Creating_a_spell_check_dictionary_add-on">Des dictionnaires utilisateur</a> qui permettent d'utiliser la vérification orthographique dans différentes langues</li> + <li><a href="https://support.mozilla.org/kb/use-firefox-interface-other-languages-language-pack">Des packs de langues</a> qui permettent de traduire l'interface de Firefox dans plus de langues.</li> +</ul> + +<hr> +<h2 id="Nous_contacter">Nous contacter</h2> + +<p>Vous pouvez utiliser les liens qui suivent pour demander de l'aide, être tenu-e informé-e des actualités concernant les modules complémentaires et nous fournir vos retours.</p> + +<h3 id="Forum">Forum</h3> + +<p><a href="https://discourse.mozilla-community.org/c/add-ons">Le forum Discourse dédié aux modules complémentaires</a> est un lieu où discuter du développement de modules complémentaires et où demander de l'aide.</p> + +<h3 id="Liste_de_diffusion">Liste de diffusion</h3> + +<p>La liste de diffusion <strong>dev-addons</strong> (anglophone) est utilisée afin de discuter du développement des modules complémentaires et de leur environnement. Les thèmes abordés incluent le format WebExtensions et AMO (<a href="https://addons.mozilla.org">https://addons.mozilla.org</a>) :</p> + +<ul> + <li><a href="https://mail.mozilla.org/pipermail/dev-addons/">Informations sur la liste dev-addons</a></li> + <li><a href="https://mail.mozilla.org/pipermail/dev-addons/">Archives de la liste dev-addons</a></li> +</ul> + +<h3 id="IRC">IRC</h3> + +<p>Si vous utilisez IRC, vous pouvez utiliser ces canaux (anglophones) :</p> + +<ul> + <li><a href="irc://irc.mozilla.org/addons">#addons</a> (discussions sur l'écosystème des modules complémentaires)</li> + <li><a href="irc://irc.mozilla.org/extdev">#extdev</a> (discussions sur le développement des modules complémentaires)</li> + <li><a href="irc://irc.mozilla.org/webextensions">#webextensions</a> (discussion sur les modules de type WebExtensions)</li> +</ul> diff --git a/files/fr/mozilla/add-ons/install_manifests/index.html b/files/fr/mozilla/add-ons/install_manifests/index.html new file mode 100644 index 0000000000..841725f370 --- /dev/null +++ b/files/fr/mozilla/add-ons/install_manifests/index.html @@ -0,0 +1,566 @@ +--- +title: Install Manifests +slug: Mozilla/Add-ons/Install_Manifests +translation_of: Archive/Add-ons/Install_Manifests +--- +<h2 id="Présentation">Présentation</h2> + +<p>Un manifeste d'installation est un fichier d'application XUL add-on Manager-enabled (par exemple de Firefox ou de Thunderbird) utilisé pour déterminer les informations sur une add-on quant il est en cours d'installation. Il contient des métadonnées identifiant l'add-on, fournit des informations sur son créateur, des informations sur les versions, ses compatibilités, sa mis à jour, etc...</p> + +<p>Le format du manifest d'installation est RDF/XML.</p> + +<p>Le fichier doit être appelé <code>install.rdf</code> et se trouver au niveau le plus haut du fichier <a href="https://developer.mozilla.org/fr/docs/XPI">XPI</a> de l'add-on.</p> + +<h2 id="Disposition">Disposition</h2> + +<p>La disposition de base d'un Manifest d'installation est comme cela:</p> + +<div style="overflow: hidden;"> +<pre class="brush:xml;auto-links:false"><?xml version="1.0" encoding="UTF-8"?> + +<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:em="http://www.mozilla.org/2004/em-rdf#"> + <Description about="urn:mozilla:install-manifest"> + <!-- properties --> + </Description> +</RDF> +</pre> +</div> + +<p>Certaines des propriétés sont essentielles, d'autres sont optionnelles. Certaines ont de simples chaînes comme valeur, d'autres sont de complexes ressources.</p> + +<h2 id="Référence_de_Propriété_Requise">Référence de Propriété Requise</h2> + +<p>Votre Manifest d'installation doit spécifier ces propriétés autrement votre add-on ne s'installera pas.</p> + +<h3 id="id">id</h3> + +<p>L'ID de l'extension, qui doit être l'une des suivantes:</p> + +<ul> + <li><a href="/en-US/docs/Generating_GUIDs" title="Generating_GUIDs">GUID</a> (Firefox 1.0)</li> + <li>{{ Fx_minversion_inline(1.5) }} Une chaîne formatée ainsi: <code class="plain">extensionname@example.org</code></li> +</ul> + +<p><span class="tlid-translation translation" lang="fr"><span title="">Ce dernier format est considérablement plus facile à générer et à manipuler.</span> <span title="">Firefox 1.5 vérifie que votre <code>id</code> correspond à un format ou à l'autre et refusera d'installer des addons contenant des <code>id</code> mal formés.</span> <span title="">Cependant, vous ne devriez pas utiliser une adresse email réelle pour votre <code>id</code>, car cela pourrait attirer des spams.</span></span></p> + +<p><strong>Exemples</strong></p> + +<pre class="brush:xml;auto-links:false"><em:id>extensionname@example.org</em:id> + +<em:id>{daf44bf7-a45e-4450-979c-91cf07434c3d}</em:id></pre> + +<h3 id="version">version</h3> + +<p>A version string identifying the version of the add-on being supplied.</p> + +<p>For Firefox/Thunderbird 1.0, the format must conform to the rules specified in <a href="/en-US/docs/Extension_Versioning,_Update_and_Compatibility" title="Extension_Versioning,_Update_and_Compatibility">Extension Versioning, Update and Compatibility</a>. For Firefox/Thunderbird 1.5, see <a href="/en-US/docs/Toolkit_version_format" title="Toolkit_version_format">Toolkit version format</a>.</p> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><em:version>2.0</em:version> + +<em:version>1.0.2</em:version> + +<em:version>0.4.1.2005090112</em:version></pre> + +<p><strong>Firefox 1.5 / XULRunner 1.8</strong> - add-ons that do not use a valid version format will not be installed. The version format is different from, although backwards-compatible with, 1.0's.</p> + +<p><strong>For addons hosted on addons.mozilla.org</strong> - Mozilla's update website may repackage your add-on and correct or reject malformed version strings.</p> + +<h3 id="type">type</h3> + +<p>An integer value representing the type of add-on.</p> + +<table> + <tbody> + <tr> + <td>2</td> + <td>Extensions</td> + </tr> + <tr> + <td>4</td> + <td>Themes</td> + </tr> + <tr> + <td>8</td> + <td>Locale</td> + </tr> + <tr> + <td>32</td> + <td><a href="/en-US/docs/Multiple_Item_Packaging" title="Multiple_Item_Packaging">Multiple Item Package</a></td> + </tr> + <tr> + <td>64</td> + <td>Spell check dictionary</td> + </tr> + <tr> + <td>128</td> + <td><a href="https://wiki.mozilla.org/Telemetry/Experiments" title="Telemetry Experiments">Telemetry Experiment</a></td> + </tr> + </tbody> +</table> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><em:type>2</em:type></pre> + +<p>{{ Fx_minversion_inline(1.5) }} This property was added for Firefox 1.5, and is only required for add-on types other than Extensions and Themes.</p> + +<p>{{ Fx_minversion_inline(3) }} Firefox 2 and previous supported a value of 16 to represent plug-ins. In Firefox 3 this has been removed.</p> + +<h3 id="targetApplication">targetApplication</h3> + +<p>An object specifying an application targeted by this add-on. This means that the add-on will work with the application identified by the id property (<code><em:id></code>) specified (for a comprehensive list of application IDs and valid min/maxVersions for them see <a class="link-https" href="https://addons.mozilla.org/en-US/firefox/pages/appversions">Valid application versions for add-on developers</a>), from the minimum version (<code><em:minVersion></code>) up to and including the maximum version (<code><em:maxVersion></code>). These version strings are formatted in the same fashion as the <a href="#version"><code>version</code> property</a> and will be compared to the application version; this allows the extension author to specify which versions of Firefox an extension has been tested with.</p> + +<p><code>id</code>, <code>minVersion</code>, and <code>maxVersion</code> are all required.</p> + +<div class="note"><strong>Note:</strong> Extensions compatible with Firefox 3.5 should specify a <code>maxVersion</code> of<code> 3.5.*</code>, so that they are automatically compatible with security and stability updates. For Firefox 3.0, a <code>maxVersion</code> of<code> 3.0.*</code> should be used. Extensions compatible only with Firefox or Thunderbird 2 should specify a <code>maxVersion</code> of <code>2.0.0.*</code>.</div> + +<p>The Install Manifest must specify at least one of these objects, and may specify more if the add-on targets multiple applications that support the Add-on Manager (e.g. Firefox and Thunderbird).</p> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><em:targetApplication> + <Description> + <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id> <!--Firefox--> + <em:minVersion>1.5</em:minVersion> + <em:maxVersion>3.0.*</em:maxVersion> + </Description> +</em:targetApplication></pre> + +<p>{{ Fx_minversion_inline(3) }} Gecko 1.9 based applications allow you to use the special <code>targetApplication </code>id <code class="plain">toolkit@mozilla.org</code> to say that the add-on is compatible with any toolkit app with a toolkit version matching the <code>minVersion</code> and <code>maxVersion</code>.</p> + +<h3 id="name">name</h3> + +<p>The name of the add-on; intended for display in the UI.</p> + +<p><strong>Examples </strong></p> + +<pre class="brush:xml"><em:name>My Extension</em:name></pre> + +<h2 id="Optional_Property_Reference">Optional Property Reference</h2> + +<p>You may need to supply these properties, depending on the capabilities of your add-on.</p> + +<h3 id="bootstrap">bootstrap</h3> + +<p>{{ Fx_minversion_inline(4) }} A Boolean value that tells the application whether the extension is boot-strappable. At the moment this only works for add-ons with em:type="2". The default value is <code>false</code>. For more information, see <a href="/en-US/docs/Extensions/Bootstrapped_extensions" title="Extensions/Bootstrapped extensions">Bootstrapped extensions</a>.</p> + +<h3 id="unpack">unpack</h3> + +<p>{{ Fx_minversion_inline(4) }} A true or false value that tells the application whether the extension requires its files be unpacked into a directory in order to work or whether the extension can be loaded direct from the XPI. In versions before Gecko 2.0 all extensions were unpacked, in Gecko 2.0 and later the default is to not unpack. If an extension includes the following then it must request unpacking:</p> + +<ul> + <li>Binary <a href="/en-US/docs/XPCOM" title="XPCOM">XPCOM</a> components</li> + <li><a href="/en-US/docs/Shipping_a_plugin_as_a_Toolkit_bundle" title="Shipping a plugin as a Toolkit bundle">Plugins</a></li> + <li><a href="/en-US/docs/Creating_MozSearch_plugins" title="Creating MozSearch plugins">Search plugins</a></li> + <li>DLLs loaded with <a href="/en-US/docs/Mozilla/js-ctypes" title="js-ctypes">ctypes</a></li> + <li>Dictionaries</li> + <li>Window icons</li> +</ul> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><Description about="urn:mozilla:install-manifest"> + <em:id>extension@mysite.com</em:id> + <em:unpack>true</em:unpack> + ... +</Description></pre> + +<h3 id="skinnable">skinnable</h3> + +<p>{{ Fx_minversion_inline(4) }} A true or false value property fo that tells the application whether the (complete) theme can be skinned by lightweight themes/personas:</p> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><em:skinnable>true</em:skinnable> +</pre> + +<h3 id="localized">localized</h3> + +<p>{{ Fx_minversion_inline(3) }} Allows you to localize the add-on's name, description, contributors and other metadata. The localized description must specify at least one <code>em:locale</code> which indicates which locales to use this information for.</p> + +<p><strong>Examples</strong></p> + +<p>This declares a set of add-on metadata to be displayed when the application is running in the de-DE locale.</p> + +<pre class="brush:xml"><em:localized> + <Description> + <em:locale>de-DE</em:locale> + <em:name>Tab Sidebar</em:name> + <em:description>Zeigt in einer Sidebar Vorschaubilder der Inhalte aller offenen Tabs an.</em:description> + </Description> +</em:localized></pre> + +<p>The following properties which are described elsewhere in this page can be included in the localized property:</p> + +<ul> + <li>name</li> + <li>description</li> + <li>creator</li> + <li>homepageURL</li> + <li>developer</li> + <li>translator</li> + <li>contributor</li> +</ul> + +<p>More documentation can be found at <a href="/en-US/docs/Localizing_extension_descriptions" title="Localizing_extension_descriptions">Localizing extension descriptions</a>.</p> + +<h3 id="description">description</h3> + +<p>A short description of the add-on - intended for display in the user interface. This description should fit on one short line of text.</p> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><em:description>Advanced foo tools.</em:description></pre> + +<h3 id="creator">creator</h3> + +<p>The name of the creator/principal developer - intended for display in the user interface.</p> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><em:creator>John Doe</em:creator></pre> + +<p>or</p> + +<pre class="brush:xml"><em:creator>CoolExtension Team</em:creator></pre> + +<h3 id="developer">developer</h3> + +<p>{{ Fx_minversion_inline(2) }} The name(s) of co-developers. You may specify more than one of this value to specify multiple developers.</p> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><em:developer>Jane Doe</em:developer> +<em:developer>Koos van der Merwe</em:developer> +</pre> + +<h3 id="translator">translator</h3> + +<p>{{ Fx_minversion_inline(2) }} The name(s) of translators. You may specify more than one of this value to specify multiple translators.</p> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><em:translator>Janez Novak</em:translator> +<em:translator>Kari Nordmann</em:translator> +</pre> + +<h3 id="contributor">contributor</h3> + +<p>The name(s) of additional contributors. You may specify more than one of this value to specify multiple contributors.</p> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><em:contributor>John Doe</em:contributor> + +<em:contributor>John Doe</em:contributor> +<em:contributor>Jane Doe</em:contributor> +<em:contributor>Elvis Presley</em:contributor> +</pre> + +<h3 id="homepageURL">homepageURL</h3> + +<p>A link to the add-on's home page - intended for display in the user interface.</p> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml;auto-links:false"><em:homepageURL>http://www.foo.com/</em:homepageURL> +</pre> + +<h3 id="updateURL">updateURL</h3> + +<p>A link to a custom Update Manifest file that specifies available updates to the add-on. The format is described below. If enabled, the add-on manager periodically checks with this Manifest file to determine if newer versions are available. When not included, the add-on manager will still check for updates on AMO, using the ID of the extension.</p> + +<div class="note"><strong>Note:</strong> It is strongly recommended that the <code>updateURL</code> be an HTTPS (secure) link. Non-secure update URLs can be hijacked by a malicious <code>update.rdf</code> file, enabling malware to infiltrate the user's computer. <strong>Alternatively, you could host your extension on </strong><a class="external" href="http://addons.mozilla.org"><strong>AMO</strong></a><strong> and leave out the <code>updateURL</code> completely.</strong> This provides secure updates automatically.</div> + +<p>{{ Fx_minversion_inline(3) }} For security reasons, Gecko 1.9 applications <strong>require</strong> that if you specify an <code>updateURL</code>, it must be an https URL, or you must include an <code><a href="#updateKey">updateKey</a></code>.</p> + +<p>Your server must send this file as <code>text/rdf</code>, <code>text/xml</code> or <code>application/rdf+xml</code> or the update checker may not work.</p> + +<p>The addon manager will substitute the following values into this URL in case you wish to generate the response RDF dynamically, such as using PHP or CGI:</p> + +<table> + <tbody> + <tr> + <td><code>%REQ_VERSION%</code></td> + <td>The version of the request. Currently 1</td> + </tr> + <tr> + <td><code>%ITEM_ID%</code></td> + <td>The <code>id</code> of the addon being updated</td> + </tr> + <tr> + <td><code>%ITEM_VERSION%</code></td> + <td>The <code>version</code> of the addon being updated</td> + </tr> + <tr> + <td><code>%ITEM_MAXAPPVERSION%</code></td> + <td>The <code>maxVersion</code> of the <code>targetApplication</code> object corresponding to the current application for the addon being updated.</td> + </tr> + <tr> + <td><code>%ITEM_STATUS%</code></td> + <td>{{ Fx_minversion_inline(2) }} Comma separated list of the add-ons operating status in the application. Contains at the least either <code>userEnabled</code> or <code>userDisabled</code> plus any number of <code>incompatible</code>, <code>blockslisted</code> or <code>needsDependencies</code>.</td> + </tr> + <tr> + <td><code>%APP_ID%</code></td> + <td>The <code>id</code> of the current application</td> + </tr> + <tr> + <td><code>%APP_VERSION%</code></td> + <td>The <code>version</code> of the application to check for updates for</td> + </tr> + <tr> + <td><code>%CURRENT_APP_VERSION%</code></td> + <td>{{ Fx_minversion_inline(3.5) }} The <code>version</code> of the current application</td> + </tr> + <tr> + <td><code>%APP_OS%</code></td> + <td>{{ Fx_minversion_inline(1.5) }} The value of <code><a href="/en-US/docs/OS_TARGET" title="OS_TARGET">OS_TARGET</a></code> from the Firefox build system, identifying the operating system being used.</td> + </tr> + <tr> + <td><code>%APP_ABI%</code></td> + <td>{{ Fx_minversion_inline(1.5) }} The value of the <code><a href="/en-US/docs/XPCOM_ABI" title="XPCOM_ABI">TARGET_XPCOM_ABI</a></code> value from the Firefox build system, identifying the compiler/architecture combination used to compile the current application.</td> + </tr> + <tr> + <td><code>%APP_LOCALE%</code></td> + <td>{{ Fx_minversion_inline(3) }} The current application's locale.</td> + </tr> + <tr> + <td><code>%UPDATE_TYPE%</code></td> + <td>{{ Fx_minversion_inline(4) }} <code>UPDATE_TYPE_COMPATIBILITY(32)</code>, <code>UPDATE_TYPE_NEWVERSION(64)</code></td> + </tr> + <tr> + <td><code>%COMPATIBILITY_MODE%</code></td> + <td>{{ Fx_minversion_inline(10) }} related to <a href="/en-US/docs/Firefox/Updating_add-ons_for_Firefox_10#Compatible_by_default" title="https://developer.mozilla.org/en-US/docs/Firefox/Updating_add-ons_for_Firefox_10#Compatible_by_default">default to compatible</a>, values could be <code>normal</code>, <code>ignore</code> or <code>strict</code>.</td> + </tr> + </tbody> +</table> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml;auto-links:false"><em:updateURL>http://www.foo.com/update.cgi?id=%ITEM_ID%&amp;version=%ITEM_VERSION%</em:updateURL> +<em:updateURL>http://www.foo.com/extension/windows.rdf</em:updateURL> +</pre> + +<p><strong>For add-ons hosted on addons.mozilla.org:</strong> You may not specify an <code>updateURL</code> property. By default, Mozilla applications using the Add-on Manager (such as Firefox and Thunderbird) will send update requests to <code>addons.mozilla.org</code> using the default web service. Every time you upload a new version of your add-on or change its compatibility parameters through the author interface, your update manifest will be generated automatically.</p> + +<p><strong>Format of the Update Manifest:</strong> The Update Manifest is a RDF/XML datasource. For an example of an update manifest, see <a href="/en-US/docs/Extension_Versioning,_Update_and_Compatibility#Update_RDF_Format" title="Extension_Versioning,_Update_and_Compatibility#Update_RDF_Format">Extension Versioning, Update and Compatibility</a>.</p> + +<h3 id="updateKey">updateKey</h3> + +<div>{{ Gecko_minversion_header(1.9) }} {{ Fx_minversion_header(3) }}</div> + +<p>To ensure the security of update rdf data that is retrieved over plain http you must use a digital signature to verify the contents of the data. In order to do so you must include the public part of the cryptographic key in an updateKey entry in the install.rdf of the add-on. This can be generated using the <a href="/en-US/docs/McCoy" title="McCoy">McCoy</a> tool. Any line breaks and whitespace as part of this entry are ignored.</p> + +<pre class="brush:xml"><em:updateKey>MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDK426erD/H3XtsjvaB5+PJqbhj + Zc9EDI5OCJS8R3FIObJ9ZHJK1TXeaE7JWqt9WUmBWTEFvwS+FI9vWu8058N9CHhD + NyeP6i4LuUYjTURnn7Yw/IgzyIJ2oKsYa32RuxAyteqAWqPT/J63wBixIeCxmysf + awB/zH4KaPiY3vnrzQIDAQAB</em:updateKey> +</pre> + +<h3 id="optionsURL">optionsURL</h3> + +<p>The <code>chrome://</code> URL of the extension's options dialog box. This is only useful to extensions. If this property is specified, when the extension is selected in the Extensions list, the Options button is enabled and will show this.</p> + +<pre class="brush:xml"><em:optionsURL>chrome://myext/content/options.xul</em:optionsURL></pre> + +<p>{{ gecko_minversion_note("7", "In Firefox 7 you can also simply include your options XUL as a file named <code>options.xul</code>, in the base directory of the add-on.") }}</p> + +<p>{{ h3_gecko_minversion("optionsType", 7) }}</p> + +<p>The type of user-interface used for displaying the options. Accepted values are:</p> + +<table> + <tbody> + <tr> + <td>1</td> + <td>Opens optionsURL in a dialog box</td> + </tr> + <tr> + <td>2</td> + <td><a href="/en-US/docs/Extensions/Inline_Options" title="Extensions/Inline Options">Options are displayed inside the Add-on Manager</a></td> + </tr> + <tr> + <td>3</td> + <td>Opens optionsURL in a new tab (if the application supports that), or a dialog box</td> + </tr> + </tbody> +</table> + +<p>optionsType defaults to 1 if there is an optionsURL included in install.rdf or 2 if there is no optionsURL and the file <code>options.xul</code> exists in the root of the add-on.</p> + +<pre class="brush:xml"><em:optionsType>2</em:optionsType> +</pre> + +<h4 id="Open_Options_in_New_Tab_Gecko_minversion_header(7)">Open Options in New Tab {{ Gecko_minversion_header(7) }}</h4> + +<p>Options can be opened in a new tab since Firefox 7.0a1. To do so, set optionsType to 3 and set optionsURL to a the path of a page to open.</p> + +<pre class="brush:xml"><em:optionsType>3</em:optionsType> +<em:optionsURL>chrome://myaddon/content/options.html</em:optionsURL></pre> + +<p>This section here contains an example of localized HTML page as an option panel in a new tab: <a href="/en-US/Add-ons/Bootstrapped_extensions#Localization_%28L10n%29">Bootstrapped Extensions :: Localization (L10n)</a> (example linked to is: <a href="https://github.com/Noitidart/l10n/tree/html-options">GitHub :: l10n-html-options</a>)</p> + +<h4 id="Make_Options_Button_Execute_Arbitrary_Javascript">Make Options Button Execute Arbitrary Javascript</h4> + +<div class="note"> +<p>This method is not recomended by AMO Editors, however it is noted here in case none of the default methods suit the developers needs. For example: Overlay a panel over Add-on Manager on click of options button</p> +</div> + +<p>If the default methods offered by <code>optionsType</code> does not fit your needs (see the table above), there is a last resort option. The method here is to use inline JavaScript and the observer service. The observer service is used to send a notification on click of the options button and then from your add-on, when you receive that notification, you can do whatever you want. For example, in the <code>install.rdf</code> we would have:</p> + +<pre class="brush:xml"><em:optionsType>2</em:optionsType> +<em:optionsURL>javascript:Components.utils.import('resource://gre/modules/Services.jsm');Services.obs.notifyObservers(window, 'hellothisisyourcaptainspeaking', 'options'); window.close();</em:optionsURL></pre> + +<p>This sends a notification <code>hellothisisyourcaptainspeaking</code> and passes <code>window </code>to the listener. Notice the <code>window.close()</code> at the end of this inline script. This is important, because an invisible modal dialog is opened and this script runs in that context. So if you do not close the window, you will be stuck modal mode (clicks and key presses will not take). That's why we have to re-import the <code>Services.jsm</code>. Now in your add-on have a listener that does this:</p> + +<pre class="brush: js">var observer = { + observe: function(aSubject, aTopic, aData) { + //do something here, such as insert panel element into addon manager and load your page in an iframe in this panel + } +}; + +Services.obs.addObserver(observer, "hellothisisyourcaptainspeaking", false); +// Don't forget to remove your observer when your add-on is shut down.</pre> + +<h3 id="aboutURL">aboutURL</h3> + +<p>The<code> chrome://</code> URL of the extension's about dialog box. This is only useful to extensions. If this property is specified, in the <code>about:addons</code> extensions list, the <code>About..</code>. link in the extension's context menu will show this dialog, rather than the default.</p> + +<div class="note"> +<p><strong>Note:</strong> As of {{Gecko("2.0")}}, the dialog receives the <code>Addon</code> object representing your add-on as a parameter.</p> +</div> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><em:aboutURL><a class="external" rel="freelink">chrome://myext/content/about.xul</a></em:aboutURL> +</pre> + +<h3 id="iconURL">iconURL</h3> + +<p>A <code>chrome://</code> URL to an icon to display in the add-ons list. The icon will be displayed at 32x32 in Firefox 3.6 and lower. In Firefox 4.0 and later the icon can be up to 48x48 pixels in size. If this property is not specified, a default icon is used.</p> + +<pre class="brush:xml"><em:iconURL><a class="external" rel="freelink">chrome://myext/skin/icon.png</a></em:iconURL> +</pre> + +<div class="note"><strong>Note:</strong> For the above example to work you will also have to add a <code>skin package</code> line to your <code>chrome.manifest</code> file. See <a href="/en-US/docs/Chrome_Registration#skin" title="Chrome_Registration#skin">Chrome Registration#skin</a>. Alternatively you can place your icon in the directory specified in your <code>content package</code> line.</div> + +<p>{{ gecko_minversion_note("1.9.2", "Starting in Gecko 1.9.2 (Firefox 3.6), you can also simply include your icon, named <code>icon.png</code>, in the base directory of the add-on. This allows your add-on's icon to be displayed even when the add-on is disabled, or if the manifest is missing an <code>iconURL</code> entry.") }}</p> + +<p>{{ h3_gecko_minversion("icon64URL", "2.0") }}</p> + +<p>A <code>chrome://</code> URL to a 64x64 pixel icon to display in the add-on's details view . If this property is not specified, the smaller icon above will be used.</p> + +<pre class="brush:xml"><em:icon64URL><a class="external" rel="freelink">chrome://myext/skin/icon64.png</a></em:icon64URL> +</pre> + +<div class="note"><strong>Note:</strong> For the above example to work you will also have to add a <code>skin package</code> line to your <code>chrome.manifest</code> file. See <a href="/en-US/docs/Chrome_Registration#skin" title="Chrome_Registration#skin">Chrome Registration#skin</a>. Alternatively you can place your icon in the directory specified in your <code>content package</code> line.</div> + +<p>{{ gecko_minversion_note("2.0", "Starting in Gecko 2.0 (Firefox 4.0), you can also simply include your icon, named <code>icon64.png</code>, in the base directory of the add-on. This allows your add-on's icon to be displayed even when the add-on is disabled, or if the manifest is missing an <code>icon64URL</code> entry.") }}</p> + +<p>{{ h3_gecko_minversion("targetPlatform", "1.8") }}</p> + +<p>A string specifying a platform that the add-on supports. It contains either the value of <code><a href="/en-US/docs/OS_TARGET" title="OS_TARGET">OS_TARGET</a></code> alone or combined with <code><a href="/en-US/docs/XPCOM_ABI" title="XPCOM_ABI">TARGET_XPCOM_ABI</a></code>, separated by an underscore (_).</p> + +<p>You can specify multiple <code>targetPlatform</code> properties per manifest. If any value matches the application's build parameters, it will be installed; if not, the user will get an appropriate error message.</p> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><em:targetPlatform>WINNT_x86-msvc</em:targetPlatform> + +<em:targetPlatform>Linux</em:targetPlatform> + +<em:targetPlatform>Darwin_ppc-gcc3</em:targetPlatform> + +<em:targetPlatform>SunOS_sparc-sunc</em:targetPlatform></pre> + +<p>Usually, you would use only the OS part for themes or for extensions that are not fully cross-platform. For extensions including binary (compiled) components, you should never use the OS alone, but include the <a href="/en-US/docs/XPCOM_ABI" title="XPCOM_ABI">ABI (s)</a> that you compiled the components with. If you want to include multiple versions of the components, you should also use <a href="/en-US/docs/Bundles#Platform-specific_Subdirectories" title="Bundles#Platform-specific_Subdirectories">Platform-specific Subdirectories</a>.</p> + +<p><strong>Notes</strong></p> + +<ul> + <li>In the same manifest file, you could even mix values with and without ABI. If a value for the application's OS is encountered that requires any specific ABI, the ABI is considered important for that OS and the application will refuse to install the add-on if it does not find a matching OS/ABI combination. This means that if all of the above examples would occur in one manifest, the add-on will install on any Linux build of the application, regardless of its ABI, but not on a Windows Cygwin build.</li> + <li>There may be builds of Firefox and Thunderbird which do not "know" their ABI (most likely ports to rare platforms, or non-official builds). These builds will refuse to install any addon that requires a specific ABI for their platform.</li> +</ul> + +<p>This property was added for Firefox/Thunderbird 1.5. Previous versions of these applications will ignore the restrictions and install the add-on regardless of the platform.</p> + +<p>{{ h3_gecko_minversion("strictCompatibility", "10.0") }}</p> + +<p>A Boolean value indicating if the add-on should be enabled when the version of the application is greater than its max version. By default, the value of this property is <code>false</code> meaning that the compatibility checking will not be performed against the max version.</p> + +<pre class="brush:xml"><em:strictCompatibility>true</em:strictCompatibility></pre> + +<p>Usually, there is no need to restrict the compatibility: not all new releases will break your extension and, if it is hosted on AMO, you'll get notice several weeks in advance if a potential risk has been detected. Moreover, an extension being disabled, even for a short period, leads to a bad experience for the user. About the only time you should need to set this if your add-on does things that are likely to be broken by Firefox updates. You <strong>do not</strong> need to set this flag if your add-on has a binary component, since add-ons with binary components are always subject to strict compatibility checking (because binary components need to be rebuilt for every major application release anyway).</p> + +<div class="note"><strong>Note:</strong> If you want to restore the old behavior of strict compatibility checking of all add-ons, regardless of the value of this setting in their manifests, you can set the <code>extensions.strictCompatibility</code> preference to <code>true</code>.</div> + +<div class="note"> +<p><strong>Note:</strong> Starting in {{Gecko("11.0")}}, applications such as Firefox will assume add-ons that have not been updated in a very long time are no longer compatible by default.</p> +</div> + +<p>{{ h3_gecko_minversion("multiprocessCompatible", "33.0") }}</p> + +<p>A Boolean value declaring whether this add-on is, or is not, compatible with <a href="/en-US/Add-ons/Working_with_multiprocess_Firefox">multiprocess Firefox</a>. If present and set to <code>true</code>, this flag instructs Firefox not to load various <a href="/en-US/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts#Compatibility_shims">compatibility shims</a> that enable many add-ons to work even when the add-on is not compatible with multiprocess Firefox:</p> + +<pre class="brush: xml"><em:multiprocessCompatible>true</em:multiprocessCompatible></pre> + +<p>The setting defaults to <code>false</code>, meaning that if you omit the property, the shims are loaded for your add-on.</p> + +<p>You can set this property to test whether your add-on is multiprocess compatible, or after you have ensured that it is multiprocess compatible. In some future release we will change the default to <code>true</code>, and after that point incompatible add-ons will have to explicitly declare that they are not compatible.</p> + +<h2 id="Obsolete_Property_Reference">Obsolete Property Reference</h2> + +<p>These properties were required in older versions of the Add-on Manager, but have been replaced with newer and better mechanisms.</p> + +<h3 id="file">file</h3> + +<p><strong>Firefox 1.0</strong> This property pointed to a chrome <code>.jar</code> file that contains chrome packages that require registration with the Chrome Registry.</p> + +<p>The <code><em:file></code> property has a complex object value. The uri of the value is <code>urn:mozilla:extension:file:jarFile.jar</code> where <code>jarFile.jar</code> is the name of the jar file that contains the chrome package's files. This could also be the name of a directory that contains the chrome package's files, un-jarred (e.g. <code>urn:mozilla:extension:file:directory</code>). In either case, the referenced chrome package file(s) must be placed in the <code>chrome</code> subdirectory of the XPI's top level.</p> + +<p>This object has a <code>package</code> property (with a path within the jar file or directory that leads to the location where the <code>contents.rdf</code> file responsible for registering that package is located), a <code>locale</code> property (ditto, but to register the locale) and a <code>skin</code> property (ditto, but to register the theme material).</p> + +<p>In extensions for Firefox 1.5, this property is no longer necessary: the <code><a href="/en-US/docs/Chrome_Registration" title="Chrome_Registration">chrome.manifest</a></code> at the top level of the XPI is used to locate chrome to register. If there is no chrome.manifest, this property is still read by the Add-on Manager and a chrome.manifest is generated from old-style contents.rdf.</p> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><em:file> + <Description about="urn:mozilla:extension:file:myext.jar"> + <em:package>content/myext/</em:package> + <em:locale>locale/en-US/myext/</em:locale> + <em:skin>skin/classic/myext/<em:skin> + </Description> +</em:file> +</pre> + +<p>An Install Manifest may specify multiple <code>file</code> properties, one for each jar file or subdirectory that contains chrome to register.</p> + +<h3 id="hidden">hidden</h3> + +<p><strong>Firefox 1.0</strong><strong> - 3.5</strong> A boolean value that when <code>true</code> makes the add-on not show up in the add-ons list, provided the add-on is installed in a {{ Anch("restricted access area") }} (so it does not work for add-ons installed in the profile). This is for bundling integration hooks to larger applications where having an entry in the Extensions list does not make sense.</p> + +<div class="note"><strong>Note:</strong> This property is no longer supported under Gecko 1.9.2 (Firefox 3.6) or later, to prevent extensions from being installed in such a way that the user might not be able to tell they're installed.</div> + +<p><strong>Examples</strong></p> + +<pre class="brush:xml"><em:hidden>true</em:hidden> +</pre> + +<h3 id="requires">requires</h3> + +<p><strong>Firefox 2.0 - 3.6.x</strong>. Other versions will ignore the restrictions and install the add-on regardless of the requirements.</p> + +<p>See <a class="link-https" href="https://groups.google.com/forum/#!topic/mozilla.dev.platform/u9QT2ZucV-c" title="https://groups.google.com/forum/#!topic/mozilla.dev.platform/u9QT2ZucV-c">Replacement for install.rdf property "requires"</a> discussion for rationale behind removing this feature and the suggested workaround.</p> + +<p><code><em:requires</code>> has a similar syntax to the <code><em:targetApplication></code> tag (i.e. you must specify <code><em:id></code>, <code><em:minVersion></code>, <code><em:maxVersion></code> when using it). If the add-on specified by the <code><em:id></code> tag is not installed or has an incompatible version, the extension manager will disable your extension and show the message "Requires additional items". You can add as many <code><em:requires></code> tags as you like. Your extension will be disabled if any of the specified requirements fail. It is not possible to add dependencies that are specific to a <code><em:targetApplication></code>. See <a href="https://wiki.mozilla.org/Extension_Dependencies" title="https://wiki.mozilla.org/Extension_Dependencies">Extension Dependencie</a>s for more details.</p> + +<h2 id="Glossary">Glossary</h2> + +<h2 id="restricted_access_area">restricted access area</h2> + +<p>A <em>restricted access area</em> is an install location that could be restricted on a restricted-access account, regardless of whether or not the location is restricted with the current user privileges (see {{ Source("toolkit/mozapps/extensions/public/nsIExtensionManager.idl#80", "nsIInstallLocation::restricted") }}). Currently, the <code>($APPDIR)/extensions</code> folder and the registry install location under <code>HKEY_LOCAL_MACHINE</code> (see <a href="/en-US/docs/Adding_Extensions_using_the_Windows_Registry" title="Adding_Extensions_using_the_Windows_Registry">Adding Extensions using the Windows Registry</a> for details) are restricted.</p> + +<p>The <code>($PROFILE)/extensions</code> and <code>HKEY_CURRENT_USER</code> install locations, on the other hand, are not restricted.</p> diff --git a/files/fr/mozilla/add-ons/nous_contacter/index.html b/files/fr/mozilla/add-ons/nous_contacter/index.html new file mode 100644 index 0000000000..b15844c18c --- /dev/null +++ b/files/fr/mozilla/add-ons/nous_contacter/index.html @@ -0,0 +1,45 @@ +--- +title: Nous contacter +slug: Mozilla/Add-ons/nous_contacter +tags: + - Add-ons + - Extension + - Extensions + - Mozilla +translation_of: Mozilla/Add-ons/Contact_us +--- +<p>{{AddonSidebar}}</p> + +<p>Utilisez les liens ci-dessous pour obtenir de l'aide, pour vous tenir au courant des actualités des add-ons et pour nous faire part de vos commentaires.</p> + +<h3 id="Forum_des_add-ons">Forum des add-ons</h3> + +<p>Utilisez le <a href="https://discourse.mozilla.org/c/add-ons">forum Discourse Add-ons</a> pour discuter de tous les aspects du développement d'add-on et demander de l'aide.</p> + +<h3 id="Mailing_listes">Mailing listes</h3> + +<p>Utilisez la liste <strong>dev-addons</strong> pour discuter du développement de l'écosystème des add-ons, y compris le système WebExtensions et addons.mozilla.org:</p> + +<ul> + <li><a href="https://mail.mozilla.org/listinfo/dev-addons">informations sur la liste dev-addons</a></li> + <li><a href="https://mail.mozilla.org/pipermail/dev-addons/">archives dev-addons</a></li> +</ul> + +<h3 id="Chat">Chat</h3> + +<p><a class="external text" href="https://matrix.org/" rel="nofollow">Matrix</a> est un protocole ouvert et léger pour les communications décentralisées en temps réel. Pour plus d'informations sur la manière de rejoindtre l'instance Matrix de Mozilla, reportez-vous à la page <a href="https://wiki.mozilla.org/Matrix">Matrix sur MozillaWiki</a>.</p> + +<ul> + <li><a href="https://chat.mozilla.org/#/room/#addons:mozilla.org">Add-ons</a> (prise en charge des extensions, des thèmes et de l'API WebExtensions)</li> + <li><a href="https://chat.mozilla.org/#/room/#amo:mozilla.org">AMO</a> (discussion autour de addons.mozilla.org)</li> +</ul> + +<h3 id="Signaler_des_problèmes">Signaler des problèmes</h3> + +<h4 id="Vulnérabilités_de_sécurité">Vulnérabilités de sécurité</h4> + +<p>Si vous découvrez une vulnérabilité de sécurité d'un add-on, même si l'add-on n'est pas hébergé sur un site Mozilla, veuillez nous en informer. Nous travaillerons avec le développeur pour corriger le problème. Veuillez signaler les failles de sécurité de manière <a href="http://www.mozilla.org/projects/security/security-bugs-policy.html">confidentielle</a> dans <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=addons.mozilla.org&component=Add-on%20Security&maketemplate=Add-on%20Security%20Bug&bit-23=1&rep_platform=All&op_sys=All">Bugzilla </a>ou par e-mail à <a href="mailto:amo-admins@mozilla.com">amo-admins@mozilla.com</a>.</p> + +<h4 id="Bugs_sur_addons.mozilla.org_AMO">Bugs sur addons.mozilla.org (AMO)</h4> + +<p>Si vous rencontrez un problème avec le site, nous serions ravis de le résoudre. Veuillez déposer un <a href="https://github.com/mozilla/addons/issues/new">rapport de bug </a>et inclure autant de détails que possible.</p> diff --git a/files/fr/mozilla/add-ons/performance_best_practices_in_extensions/index.html b/files/fr/mozilla/add-ons/performance_best_practices_in_extensions/index.html new file mode 100644 index 0000000000..f7043ecc70 --- /dev/null +++ b/files/fr/mozilla/add-ons/performance_best_practices_in_extensions/index.html @@ -0,0 +1,103 @@ +--- +title: Bonnes pratiques pour la performance des extensions +slug: Mozilla/Add-ons/Performance_best_practices_in_extensions +tags: + - Bonnes pratiques + - Exemple nécessaire + - Extensions + - Guide + - Performance +translation_of: Archive/Add-ons/Performance_best_practices_in_extensions +--- +<p>Un des grands avantages de Firefox est son extrême extensibilité. Les extensions peuvent faire presque tout. Toutefois, il y a un revers à cela : des extensions mal écrites peuvent avoir des conséquences graves sur l'usage de la navigation, y compris sur la performance globale de Firefox. Cet article propose quelques bonnes pratiques et recommandations qui peuvent non seulement améliorer la performance et la vitesse de votre extension, mais aussi de Firefox lui-même.</p> + +<h2 id="Améliorer_les_performances_du_démarrage">Améliorer les performances du démarrage</h2> + +<p>Les extensions sont chargées et exécutées dès que s'ouvre une nouvelle fenêtre du navigateur. Cela signifie qu'à chaque fois qu'une fenêtre s'ouvre, votre extension peut avoir une incidence sur la durée de visualisation du contenu. Plusieurs procédés sont possibles pour réduire le délai d'attente d'affichage des contenus provoqué par votre extension.</p> + +<h3 id="Chargez_seulement_ce_dont_vous_avez_besoin_quand_vous_en_avez_besoin">Chargez seulement ce dont vous avez besoin quand vous en avez besoin</h3> + +<p>Ne chargez pas lors du démarrage les ressources qui ne seront nécessaires que lorsque l'utilisateur cliquera sur un bouton, ou qu'une préférence donnée sera activée alors qu'elle ne l'est pas encore. De la même façon, si votre extension dispose de caractéristiques qui s'exécutent uniquement quand l'utilisateur est identifié à un service, n'en chargez pas les ressources avant qu'il ne soit réellement connecté.</p> + +<h3 id="Utilisez_les_modules_de_code_JavaScript">Utilisez les modules de code JavaScript</h3> + +<p>Vous pouvez créer vos propres <a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Using" title="/en-US/docs/Mozilla/JavaScript_code_modules/Using">modules de code JavaScript</a> regroupant les fonctionnalités nécessaires dans des circonstances précises. Cela permet de charger votre extension par grand bloc à la volée au cas par cas, au lieu de tout charger à la fois.</p> + +<p>Bien que les modules JavaScript puissent être extrêmement utiles et offrir des avantages de performance significatifs, ils doivent être utilisés à bon escient. Le chargement des modules engage peu de coût, donc segmenter le code jusqu'à un degré inutile peut être contre-productif. Le code devrait être modulaire, à souhait, ce qui augmente la clarté et le chargement des morceaux importants ou coûteux de fragments de code, s'ils peuvent être différés d'une façon significative.</p> + +<h3 id="Différez_tout_ce_que_vous_pouvez">Différez tout ce que vous pouvez</h3> + +<p>La plupart des extensions ont un auditeur d'événements de chargement dans leur séquence principale qui exécute les fonctions de démarrage. Faites-en le moins possible à cet endroit. La fenêtre du navigateur est bloquée pendant que le gestionnaire de chargement de votre extension fonctionne, ainsi plus il tarde dans cette opération, plus Firefox semblera lent à l'utilisateur.</p> + +<p>S'il y a quelque chose qui peut être fait, même en une fraction de seconde plus tard, vous pouvez utiliser les méthodes {{ interface("nsITimer") }} ou {{ domxref("window.setTimeout()") }} pour planifier une exécution différée. Même un court report peut avoir un grand impact.</p> + +<h2 id="Conseils_sur_les_performances_générales">Conseils sur les performances générales</h2> + +<h3 id="Évitez_de_créer_des_fuites_de_mémoire">Évitez de créer des fuites de mémoire</h3> + +<p>Les fuites de mémoire exigent du ramasse-miette et du collecteur de cycle un travail plus intense qui peut de manière significative dégrader les performances.</p> + +<p>Les compartiments zombie sont un type particulier de fuite mémoire que vous pouvez détecter avec un minimum d'effort. Consultez la page <a href="https://developer.mozilla.org/en/Zombie_compartments" title="en/Zombie_compartments">Compartiments zombie</a>, particulièrement la section <a href="https://developer.mozilla.org/en/Zombie_compartments#Proactive_checking_of_add-ons" title="en/Zombie_compartments#Proactive_checking_of_add-ons">Vérification proactive des extensions</a>.</p> + +<p>Consultez les <a href="https://developer.mozilla.org/en/Extensions/Common_causes_of_memory_leaks_in_extensions" title="en/Extensions/Common_causes_of_zombie_compartments_in_extensions">Causes classiques de fuites de mémoire dans les extensions </a>afin d'éviter les compartiments zombie et d'autres genres de fuites.</p> + +<p>Aussi bien que la recherche de ces types spécifiques de fuite, il vaut la peine de s'exercer sur les fonctionnalités de votre extension et d'examiner le contenu de la mémoire pour s'assurer de toute utilisation excessive. Par exemple, le <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=719601" title="https://bugzilla.mozilla.org/show_bug.cgi?id=719601">bug 719601</a> de Firefox a indiqué un compartiment JavaScript « Système principal » contenant des centaines de Mo de mémoire, ce qui est beaucoup plus important qu'habituellement.</p> + +<h3 id="Évitez_l'écriture_de_CSS_lent">Évitez l'écriture de CSS lent</h3> + +<ul> + <li>Lisez le guide <a href="/en/CSS/Writing_Efficient_CSS" title="en/CSS/Writing_Efficient_CSS">Écriture de CSS efficace</a>.</li> + <li>Rappelez-vous que n'importe quel sélecteur dans votre règle qui pourrait s'appairer avec beaucoup de nœuds différents est une source d'inefficacité, soit durant l'apparemment du sélecteur ou soit durant le traitement dynamique de mise à jour. C'est particulièrement déconseillé pour ce dernier si le sélecteur peut dynamiquement démarrer ou cesser l'appairement. Évitez les « :hover » excessifs comme la peste.</li> +</ul> + +<h3 id="Évitez_les_auditeurs_d'événements_de_mutation_dans_un_DOM">Évitez les auditeurs d'événements de mutation dans un DOM</h3> + +<p>Les auditeurs d'événements de mutation sont extrêmement consommateurs de temps, une fois ajoutés même brièvement à un document, ils nuisent de manière significative à sa performance.</p> + +<p>Les événements de mutation sont officiellement obsolètes, et il existe de<a href="/en-US/Add-ons/Overlay_Extensions/XUL_School/Appendix_F:_Monitoring_DOM_changes">nombreuses alternatives</a> ; ils devraient donc être évités à tout prix.</p> + +<h3 id="Chargez_les_services_en_mode_paresseux">Chargez les services en mode paresseux</h3> + +<p>Le <a href="/en/JavaScript_code_modules/XPCOMUtils.jsm#Methods" title="en/JavaScript_code_modules/XPCOMUtils.jsm#Methods">module XPCOMUtils JavaScript</a> fournit deux méthodes pour le chargement lent de ressources :</p> + +<ul> + <li><code>defineLazyGetter()</code> définit une fonction sur un objet spécifié qui agit comme un getter et qui sera créée dès la première fois qu'elle est utilisée. <a class="external" href="http://mxr.mozilla.org/mozilla-central/search?string=defineLazyGetter">Voir exemples</a>.</li> + <li><code>defineLazyServiceGetter()</code> définit une fonction sur un objet spécifié qui agit comme un getter pour un service. Le service s'active dès la première fois que l'on utilise. {{ LXRSearch("ident", "string", "defineLazyServiceGetter", "Look through the source") }} par exemples.</li> +</ul> + +<p>Beaucoup de services communs sont déjà mis en cache pour vous dans <a href="/en-US/JavaScript_code_modules/Services.jsm">Services.jsm</a>.</p> + +<h3 id="Utilisez_les_entrées-sorties_en_asynchrone">Utilisez les entrées-sorties en asynchrone</h3> + +<p>Cela ne peut pas être suffisamment souligné : ne jamais faire d'entrées-sorties dans une tâche principale.</p> + +<p>N'importe quel genre d'entrée-sortie dans un traitement principal, que ce soit l'entrée-sortie de disque ou de réseau, peut causer les questions sérieuses de réactivité de l'unité centrale.</p> + +<ul> + <li>Ne jamais utiliser XMLHttpRequests en synchrone.</li> + <li><a href="/en-US/JavaScript_code_modules/NetUtil.jsm">NetUtils.jsm</a> fournit des aides pour la lecture et la copie asynchrones des dossiers.</li> + <li>Ne jamais accéder en synchrone à une base de données SQLite. Utiliser l'API asynchrone à la place.</li> + <li>Effectuer des opérations séquentielles et asynchrones peuvent souvent être considérablement simplifiées <a href="/en-US/Add-ons/Techniques/Promises">en utilisant Promises</a>.</li> +</ul> + +<h3 id="Évitez_les_événements_de_mouvement_de_souris">Évitez les événements de mouvement de souris</h3> + +<p>Évitez d'utiliser les auditeurs d'événement de souris, y compris le mouseover, le mouseout, le mouseenter, le mouseexit, et particulièrement le mousemove. Ces événements se produisent avec la haute fréquence, ainsi leurs auditeurs peuvent trivialement créer des surcharges très élevées de l'unité centrale .</p> + +<p>Quand ces événements ne peuvent pas être évités, pendant le calcul, les auditeurs devraient être maintenus à un minimum et à un travail réel restreint. Les auditeurs devraient être ajoutés à l'élément le plus spécifique possible, et être enlevés lorsqu'ils ne sont pas immédiatement nécessaires.</p> + +<h3 id="Évitez_les_images_animées">Évitez les images animées</h3> + +<p>Généralement les images animées sont beaucoup plus consommatrices de temps que prévu, particulièrement lorsqu'elles sont utilisées dans l'élément XUL {{ XULElem("tree") }}.</p> + +<h3 id="Envisagez_d'utiliser_les_exécuteurs_du_Chrome">Envisagez d'utiliser les exécuteurs du Chrome</h3> + +<p>Vous pouvez utiliser l'élément {{ domxref("ChromeWorker") }} pour exécuter des tâches de longue durée ou faire du traitement de données.</p> + +<h2 id="Consulter_aussi">Consulter aussi</h2> + +<ul> + <li><a href="/en/Performance/Measuring_add-on_startup_performance" title="en/Measuring Add-on Startup Performance">Mesure de performence au démarrage d'une extensions</a></li> + <li><a class="external" href="http://blog.mozilla.com/addons/2010/06/14/improve-extension-startup-performance/" title="http://blog.mozilla.com/addons/2010/06/14/improve-extension-startup-performance/">Comment améliorer la performance de démarrage d'une extension</a></li> + <li><a href="/en-US/docs/Performance">Information générale relative à la mesure et à l'amélioration de la perfomance dans le code Mozilla</a></li> +</ul> diff --git a/files/fr/mozilla/add-ons/plugins/index.html b/files/fr/mozilla/add-ons/plugins/index.html new file mode 100644 index 0000000000..c978874fe1 --- /dev/null +++ b/files/fr/mozilla/add-ons/plugins/index.html @@ -0,0 +1,110 @@ +--- +title: Plugins +slug: Mozilla/Add-ons/Plugins +translation_of: Archive/Plugins +--- +<div class="blockIndicator warning"> +<p><strong>Important</strong>: Since <a href="/en-US/docs/Mozilla/Firefox/Releases/52">Firefox 52</a>, all plugin support except Flash has been dropped (see <span><a href="https://www.fxsitecompat.com/en-CA/docs/2016/plug-in-support-has-been-dropped-other-than-flash/">Plug-in support has been dropped other than Flash</a> for more details</span>). Flash usage is also set to be phased out in the future.</p> +</div> + +<div class="blockIndicator note"> +<p><strong>Note</strong>: Plugins are now a legacy technology. They are not available on most mobile devices. Mozilla encourages website developers to avoid using plugins wherever possible and use standard Web APIs instead. If there are plugin features which are not available in the web platform, we encourage developers to post their use cases to mozilla.dev.platform project list, so that Mozilla can prioritize web platform work to make those use cases possible.</p> +</div> + +<p>For more information about plugin roadmap, see <a href="/en-US/docs/Plugins">non-archived plugin information</a>.</p> + +<p>Plugins are shared libraries that users can install to display content that the browser can't display natively. For example, the Adobe Reader plugin lets the user open PDF files directly inside the browser, and the QuickTime and RealPlayer plugins are used to play special format videos in a web page.</p> + +<p>Plugins are written using <strong>NPAPI</strong>, the cross-browser API for plugins. The main source of documentation for NPAPI is the <a href="/en/Gecko_Plugin_API_Reference" title="en/Gecko_Plugin_API_Reference">Gecko Plugin API Reference</a>. To make your plugin scriptable from web pages, use <a href="/en/Gecko_Plugin_API_Reference/Scripting_plugins" title="en/Gecko_Plugin_API_Reference/Scripting_plugins">npruntime</a>.</p> + +<p>Plugins can be written completely from scratch using C APIs (usually in C or C++) or they may be built on a plugin framework such as <a class="external" href="http://www.firebreath.org" title="http://www.firebreath.org/">Firebreath</a>, <a class="external" href="http://www.juce.com/" title="http://www.rawmaterialsoftware.com/juce.php">JUCE</a>, or <a class="external" href="http://doc.qt.nokia.com/solutions/4/qtbrowserplugin/developingplugins.html" title="http://doc.qt.nokia.com/solutions/4/qtbrowserplugin/developingplugins.html">QtBrowserPlugin</a>. There are also some code generation tools that may be helpful. More information about these tools can be found on the <a href="/en/Plugins/External_resources_for_plugin_creation" title="en/Plugins/External resources for plugin creation">External Resources</a> page.</p> + +<p>Plugins are different from <a href="/en/Extensions" title="en/Extensions">extensions</a>, which modify or enhance the functionality of the browser itself. Plugins are also different from <a href="/en/Creating_OpenSearch_plugins_for_Firefox" title="en/Creating_OpenSearch_plugins_for_Firefox">search plugins</a>, which plug additional search engines in the search bar.</p> + +<hr> +<div class="topicpage-table"> +<div class="section"> +<dl> + <dt><a href="/en/Gecko_Plugin_API_Reference" title="en/Gecko_Plugin_API_Reference">Gecko Plugin API Reference</a> (NPAPI)</dt> + <dd>This reference describes the application programming interfaces for NPAPI plugins and provides information about how to use these interfaces.</dd> + <dt><a href="/en-US/docs/Site_Author_Guide_for_Click-To-Activate_Plugins">Site Author Guide For Click-To-Activate Plugins</a></dt> + <dd>These guidelines will help website authors use plugins when they are blocked by default with the Firefox click-to-activate feature.</dd> +</dl> + +<dl> + <dt><a href="/en/Gecko_Plugin_API_Reference/Scripting_plugins" title="en/Gecko_Plugin_API_Reference/Scripting_plugins">Scripting plugins</a> (npruntime)</dt> + <dd>This reference describes the new cross-browser NPAPI extensions that let plugins be scriptable and also let them access the script objects in the browser.</dd> +</dl> + +<dl> + <dt><a href="/en/Shipping_a_plugin_as_a_Toolkit_bundle" title="en/Shipping_a_plugin_as_a_Toolkit_bundle">Shipping a plugin as a Toolkit bundle</a></dt> + <dd>Plugins can be shipped as a Toolkit <a href="/en/Bundles" title="Bundles">bundle</a>, allowing a user to easily install, uninstall and manage their personal plugins.</dd> +</dl> + +<dl> + <dt><a class="internal" href="/En/Supporting_private_browsing_in_plugins" title="en/Supporting private browsing in plugins">Supporting private browsing in plugins</a></dt> + <dd>Firefox 3.5 introduced support for private browsing; learn how to make your plugin respect the user's privacy wishes.</dd> + <dt><a href="/en/Plugins/Multi-Process_Plugin_Architecture" title="en/Plugins/Multi-Process Plugin Architecture">Multi-Process Plugin Architecture</a></dt> + <dd>How Firefox loads plugins into a separate process. Firefox 3.6.4 introduced out-of-process plugins which execute in a separate process so that a crashing plugin does not crash the browser.</dd> + <dt><a href="/en/Plugins/Logging" title="en/Plugins/Logging">Logging and Debugging for Multi-Process Plugins</a></dt> + <dd>How to create a plugin log to aid in debugging problems with multi-process plugins.</dd> +</dl> +</div> + +<div class="section"> +<dl> + <dt><a class="internal" href="/En/Writing_a_plugin_for_Mac_OS_X" title="en/Writing a plugin for Mac OS X">Writing a plugin for Mac OS X</a></dt> + <dd>Learn how to write a plugin for Mac OS X; a template Xcode project is provided.</dd> +</dl> + +<dl> + <dt><a href="/en/Monitoring_plugins" title="en/Monitoring_plugins">Monitoring Plugins</a></dt> + <dd>Use an observer service notification to monitor the amount of time spent executing calls in plugins. This can be useful when trying to determine if a plug-in is consuming too many resources.</dd> +</dl> + +<dl> + <dt><a href="/en/Scripting_Plugins/Adobe_Flash" title="en/Scripting_Plugins/Macromedia_Flash">Scripting Plugins: Macromedia Flash</a></dt> + <dd>This article explains how JavaScript can be used to access methods from within the Flash plugin, as well as how a feature called FSCommands can be used to access JavaScript functions from within the Flash animation.</dd> +</dl> + +<dl> + <dt><a href="/en/Gecko_Plugin_API_Reference/Plug-in_Development_Overview" title="en/Plugins/The_First_Install_Problem">Plugins: The First Install Problem</a></dt> + <dd>The First Install Problem is the name given to the conditions arising when a plugin or embeddable software installs itself on a system first, before any other Gecko-based browser.</dd> +</dl> + +<dl> + <dt><a href="/en/Plugins/Samples_and_Test_Cases" title="en/Plugins/Samples_and_Test_Cases">Plugins: Samples and Test Cases</a></dt> + <dd>NPAPI plugin samples and test cases.</dd> + <dt><a href="/en/Plugins/External_resources_for_plugin_creation" title="https://developer.mozilla.org/en/Plugins/External_resources_for_plugin_creation">External Resources for Plugin Creation</a></dt> + <dd>External projects, frameworks, and blog posts that may be useful.</dd> +</dl> + +<dl> + <dt><a href="/en/XEmbed_Extension_for_Mozilla_Plugins" title="en/XEmbed_Extension_for_Mozilla_Plugins">XEmbed Extension for Mozilla Plugins</a></dt> + <dd>Recent versions of Mozilla on *nix-based systems include an extension for writing plugins that use XEmbed instead of using the old Xt-based main loop that most plugins have been using since the Netscape 3.x days.</dd> +</dl> +</div> +</div> + +<hr> +<p><span class="comment">Categories</span></p> + +<p><span class="comment">Interwiki Language Links</span></p> + +<div class="blockIndicator communitybox" dir="ltr"> +<div class="column-container"> +<h2 id="Join_the_plugin_development_community">Join the plugin development community</h2> + +<div class="column-half"> +<div class="communitysubhead">Choose your preferred method for joining the discussion:</div> + +<ul class="communitymailinglist"> + <li><a href="https://lists.mozilla.org/listinfo/dev-tech-plugins">Mailing list</a></li> + <li><a href="http://groups.google.com/group/mozilla.dev.tech.plugins">Newsgroup</a></li> + <li><a href="http://groups.google.com/group/mozilla.dev.tech.plugins/feeds">RSS feed</a></li> +</ul> +</div> + +<div class="column-half"> </div> +</div> +</div> diff --git a/files/fr/mozilla/add-ons/sdk/high-level_apis/base64/index.html b/files/fr/mozilla/add-ons/sdk/high-level_apis/base64/index.html new file mode 100644 index 0000000000..f4d71166d9 --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/high-level_apis/base64/index.html @@ -0,0 +1,111 @@ +--- +title: base64 +slug: Mozilla/Add-ons/SDK/High-Level_APIs/base64 +translation_of: Archive/Add-ons/Add-on_SDK/High-Level_APIs/base64 +--- +<p> <span id="result_box" lang="fr"><span class="hps">Le codage des données</span> <span class="hps">et le décodage</span> <span class="hps">en utilisant des algorithmes</span> <span class="hps">Base64</span><span>.</span><br> + <br> + <span class="hps">var</span> <span class="hps">base64</span> <span class="hps">=</span> <span class="atn hps">require (</span><span class="atn hps">"</span><span>sdk</span> <span class="hps">/</span> <span class="hps">base64</span><span>"</span><span>)</span><span>;</span><br> + <br> + <span class="hps">var</span> <span class="hps">encodedData</span> <span class="hps">=</span> <span class="hps">base64.encode</span> <span class="atn hps">(</span><span class="atn hps">"</span><span>Bonjour,</span> <span class="hps">monde»</span><span>)</span><span>;</span><br> + <span class="hps">var</span> <span class="hps">decodedData</span> <span class="hps">=</span> <span class="hps">base64.decode</span> <span class="atn hps">(</span><span>encodedData</span><span>)</span><span>;</span></span></p> + +<div class="almost_half_cell" id="gt-res-content"> +<div dir="ltr" style="zoom: 1;"><span id="result_box" lang="fr"><span class="hps">Les fonctions</span><br> +<span class="atn hps">encode (</span><span>données</span><span>,</span> <span class="hps">charset)</span><br> +<br> +<span class="hps">Crée une</span> <span class="hps">chaîne de caractères ASCII</span> <span class="hps">de base</span> <span class="hps">64</span> <span class="hps">codé</span> <span class="hps">à partir d'une</span> <span class="hps">chaîne de données</span> <span class="hps">binaires</span><span>.</span><br> +<span class="hps">Paramètres</span><br> +<br> +<span class="hps">données</span><span>: string</span><br> +<span class="hps">Les données</span> <span class="hps">pour coder</span><br> +<br> +<span class="hps">charset</span><span>: string</span><br> +<span class="hps">Le</span> <span class="hps">charset</span> <span class="hps">de la chaîne à</span> <span class="hps">coder</span> <span class="hps">(en option</span><span>)</span><span>.</span> <span class="hps">La seule valeur</span> <span class="hps">acceptée est</span> <span class="atn hps">"</span><span>utf-8"</span><span>.</span> <span class="hps">Pour</span> <span class="hps">coder et décoder</span> <span class="hps">les chaînes Unicode</span><span>,</span> <span class="hps">le paramètre charset</span> <span class="hps">doit être réglé</span><span>:</span><br> +<br> +<span class="hps">var</span> <span class="hps">base64</span> <span class="hps">=</span> <span class="atn hps">require (</span><span class="atn hps">"</span><span>sdk</span> <span class="hps">/</span> <span class="hps">base64</span><span>"</span><span>)</span><span>;</span><br> +<br> +<span class="hps">var</span> <span class="hps">encodedData</span> <span class="hps">=</span> <span class="hps">base64.encode</span> <span class="atn hps">(</span><span>UnicodeString</span><span>,</span> <span class="atn hps">"</span><span>utf-8"</span><span>)</span><span>;</span><br> +<br> +<span class="hps">résultats</span><br> +<br> +<span class="hps">string:</span> <span class="hps">La chaîne</span> <span class="hps">codée</span><br> +<span class="atn hps">decode (</span><span>données</span><span>,</span> <span class="hps">charset)</span><br> +<br> +<span class="hps">Décode</span> <span class="hps">une chaîne de données</span> <span class="hps">qui a été codé</span> <span class="hps">en utilisant la base</span> <span class="hps">64</span> <span class="hps">codage.</span><br> +<span class="hps">Paramètres</span><br> +<br> +<span class="hps">données</span><span>: string</span><br> +<span class="hps">Les données codées</span><br> +<br> +<span class="hps">charset</span><span>: string</span><br> +<span class="hps">Le</span> <span class="hps">charset</span> <span class="hps">de la chaîne à</span> <span class="hps">coder</span> <span class="hps">(en option</span><span>)</span><span>.</span> <span class="hps">La seule valeur</span> <span class="hps">acceptée est</span> <span class="atn hps">"</span><span>utf-8"</span><span>.</span> <span class="hps">Pour</span> <span class="hps">coder et décoder</span> <span class="hps">les chaînes Unicode</span><span>,</span> <span class="hps">le paramètre charset</span> <span class="hps">doit être réglé</span><span>:</span><br> +<br> +<span class="hps">var</span> <span class="hps">base64</span> <span class="hps">=</span> <span class="atn hps">require (</span><span class="atn hps">"</span><span>sdk</span> <span class="hps">/</span> <span class="hps">base64</span><span>"</span><span>)</span><span>;</span><br> +<br> +<span class="hps">var</span> <span class="hps">decodedData</span> <span class="hps">=</span> <span class="hps">base64.decode</span> <span class="atn hps">(</span><span>encodedData</span><span>,</span> <span class="atn hps">"</span><span>utf-8"</span><span>)</span><span>;</span><br> +<br> +<span class="hps">résultats</span><br> +<br> +<span class="hps">string:</span> <span class="hps">La chaîne</span> <span class="hps">décodée</span> <span class="atn hps">(</span><span>encodedData</span><span>)</span><span>;</span></span></div> +</div> + +<div class="note"> +<p>{{AddonSidebar}}</p> +</div> + +<div class="note"> +<p>Unstable</p> +</div> + +<p>Data encoding and decoding using Base64 algorithms.</p> + +<pre class="brush: js">var base64 = require("sdk/base64"); + +var encodedData = base64.encode("Hello, World"); +var decodedData = base64.decode(encodedData);</pre> + +<h2 id="Globals">Globals</h2> + +<h3 id="Functions">Functions</h3> + +<h4 class="addon-sdk-api-name" id="encode(data_charset)"><code>encode(data, charset)</code></h4> + +<p>Creates a base-64 encoded ASCII string from a string of binary data.</p> + +<h5 id="Parameters">Parameters</h5> + +<p><strong>data : string</strong><br> + The data to encode</p> + +<p><strong>charset : string</strong><br> + The charset of the string to encode (optional). The only accepted value is <code>"utf-8"</code>. In order to encode and decode Unicode strings, the charset parameter needs to be set:</p> + +<pre class="brush: js">var base64 = require("sdk/base64"); + +var encodedData = base64.encode(unicodeString, "utf-8"); +</pre> + +<h5 id="Returns">Returns</h5> + +<p><strong>string</strong> : The encoded string</p> + +<h4 class="addon-sdk-api-name" id="decode(data_charset)"><code>decode(data, charset)</code></h4> + +<p>Decodes a string of data which has been encoded using base-64 encoding.</p> + +<h5 id="Parameters_2">Parameters</h5> + +<p><strong>data : string</strong><br> + The encoded data</p> + +<p><strong>charset : string</strong><br> + The charset of the string to encode (optional). The only accepted value is <code>"utf-8"</code>. In order to encode and decode Unicode strings, the charset parameter needs to be set:</p> + +<pre class="brush: js">var base64 = require("sdk/base64"); + +var decodedData = base64.decode(encodedData, "utf-8");</pre> + +<h5 id="Returns_2">Returns</h5> + +<p><strong>string</strong> : The decoded string</p> diff --git a/files/fr/mozilla/add-ons/sdk/high-level_apis/context-menu/index.html b/files/fr/mozilla/add-ons/sdk/high-level_apis/context-menu/index.html new file mode 100644 index 0000000000..9af486cc64 --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/high-level_apis/context-menu/index.html @@ -0,0 +1,833 @@ +--- +title: context-menu +slug: Mozilla/Add-ons/SDK/High-Level_APIs/context-menu +translation_of: Archive/Add-ons/Add-on_SDK/High-Level_APIs/context-menu +--- +<p>{{AddonSidebar}}</p> + +<div class="note"> +<p>Stable</p> +</div> + +<p><span class="seoSummary">Ajouez des éléments, sous-menus et des séparateurs au menu contextuel.</span></p> + +<h2 id="Usage">Usage</h2> + +<p>Instead of manually adding items when particular contexts occur and then removing them when those contexts go away, you <em>bind</em> items to contexts, and the adding and removing is automatically handled for you. Items are bound to contexts in much the same way that event listeners are bound to events. When the user invokes the context menu, all of the items bound to the current context are automatically added to the menu. If no items are bound, none are added. Likewise, any items that were previously in the menu but are not bound to the current context are automatically removed from the menu. You never need to manually remove your items from the menu unless you want them to never appear again.</p> + +<p>For example, if your add-on needs to add a context menu item whenever the user visits a certain page, don't create the item when that page loads, and don't remove it when the page unloads. Rather, create your item only once and supply a context that matches the target URL.</p> + +<p>Context menu items are displayed in the order created or in the case of sub menus the order added to the sub menu. Menu items for each add-on will be grouped together automatically. If the total number of menu items in the main context menu from all add-ons exceeds a certain number (normally 10 but configurable with the <code>extensions.addon-sdk.context-menu.overflowThreshold</code> preference) all of the menu items will instead appear in an overflow menu to avoid making the context menu too large.</p> + +<h3 id="Specifying_contexts">Specifying contexts</h3> + +<p>As its name implies, the context menu should be reserved for the occurrence of specific contexts. Contexts can be related to page content or the page itself, but they should never be external to the page.</p> + +<p>For example, a good use of the menu would be to show an "Edit Image" item when the user right-clicks an image in the page. A bad use would be to show a submenu that listed all the user's tabs, since tabs aren't related to the page or the node the user clicked to open the menu.</p> + +<h4 id="The_page_context">The page context</h4> + +<p>First of all, you may not need to specify a context at all. When a top-level item does not specify a context, the page context applies. An item that is in a submenu is visible unless you specify a context.</p> + +<p>The <em>page context</em> occurs when the user invokes the context menu on a non-interactive portion of the page. Try right-clicking a blank spot in this page, or on text. Make sure that no text is selected. The menu that appears should contain the items "Back", "Forward", "Reload", "Stop", and so on. This is the page context.</p> + +<p>The page context is appropriate when your item acts on the page as a whole. It does not occur when the user invokes the context menu on a link, image, or other non-text node, or while a selection exists.</p> + +<h4 id="Declarative_contexts">Declarative contexts</h4> + +<p>You can specify some simple, declarative contexts when you create a menu item by setting the <code>context</code> property of the options object passed to its constructor, like this:</p> + +<pre class="brush: js">var cm = require("sdk/context-menu"); +cm.Item({ + label: "My Menu Item", + context: cm.URLContext("*.mozilla.org") +});</pre> + +<table class="standard-table"> + <tbody> + <tr> + <th>Constructor</th> + <th>Description</th> + </tr> + <tr> + <td><code>PageContext() </code></td> + <td>The page context.</td> + </tr> + <tr> + <td><code>SelectionContext() </code></td> + <td>This context occurs when the menu is invoked on a page in which the user has made a selection.</td> + </tr> + <tr> + <td><code>SelectorContext(selector) </code></td> + <td>This context occurs when the menu is invoked on a node that either matches <code>selector</code>, a CSS selector, or has an ancestor that matches. <code>selector</code> may include multiple selectors separated by commas, e.g., <code>"a[href], img"</code>.</td> + </tr> + <tr> + <td><code>URLContext(matchPattern) </code></td> + <td>This context occurs when the menu is invoked on pages with particular URLs. <code>matchPattern</code> is a match pattern string or an array of match pattern strings. When <code>matchPattern</code> is an array, the context occurs when the menu is invoked on a page whose URL matches any of the patterns. These are the same match pattern strings that you use with the <a href="/en-US/Add-ons/SDK/High-Level_APIs/page-mod"><code>page-mod</code></a> <code>include</code> property. <a href="/en-US/Add-ons/SDK/Low-Level_APIs/util_match-pattern">Read more about patterns</a>.</td> + </tr> + <tr> + <td><code>PredicateContext(predicateFunction)</code></td> + <td><code>predicateFunction</code> is called when the menu is invoked, and the context occurs when the function returns a true value. The function is passed an object with properties describing the menu invocaton context.</td> + </tr> + <tr> + <td>array</td> + <td>An array of any of the other types. This context occurs when all contexts in the array occur.</td> + </tr> + </tbody> +</table> + +<p>Menu items also have a <code>context</code> property that can be used to add and remove declarative contexts after construction. For example:</p> + +<pre class="brush: js">var context = require("sdk/context-menu").SelectorContext("img"); +myMenuItem.context.add(context); +myMenuItem.context.remove(context);</pre> + +<p>When a menu item is bound to more than one context, it appears in the menu when all of those contexts occur.</p> + +<h3 id="In_content_scripts">In content scripts</h3> + +<p>The declarative contexts are handy but not very powerful. For instance, you might want your menu item to appear for any page that has at least one image, but declarative contexts won't help you there.</p> + +<p>When you need more control over the context in which your menu items are shown, you can use content scripts. Like other APIs in the SDK, the <code>context-menu</code> API uses <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">content scripts</a> to let your add-on interact with pages in the browser. Each menu item you create in the top-level context menu can have a content script.</p> + +<p>A special event named <code>"context"</code> is emitted in your content scripts whenever the context menu is about to be shown. If you register a listener function for this event and it returns true, the menu item associated with the listener's content script is shown in the menu.</p> + +<p>For example, this item appears whenever the context menu is invoked on a page that contains at least one image:</p> + +<pre class="brush: js">require("sdk/context-menu").Item({ + label: "This Page Has Images", + contentScript: 'self.on("context", function (node) {' + + ' return !!document.querySelector("img");' + + '});' +});</pre> + +<p>Note that the listener function has a parameter called <code>node</code>. This is the node in the page that the user context-clicked to invoke the menu. You can use it to determine whether your item should be shown.</p> + +<p>You can both specify declarative contexts and listen for contexts in a content script. Your context listener is called even if any declarative contexts are not current (since Firefox 36).</p> + +<p>If you combine <code>SelectorContext</code> and the <code>"context"</code> event, be aware that the <code>node</code> argument passed to the <code>"context"</code> event will not always match the type specified in <code>SelectorContext</code>.</p> + +<p><code>SelectorContext</code> will match if the menu is invoked on the node specified <em>or any descendant of that node</em>, but the <code>"context"</code> event handler is passed <em>the actual node</em> on which the menu was invoked. The example above works because <code><IMG></code> elements can't contain other elements, but in the example below, <code>node.nodeName</code> is not guaranteed to be "P" - for example, it won't be "P" if the user context-clicked a link inside a paragraph:</p> + +<pre class="brush: js">var cm = require("sdk/context-menu"); +cm.Item({ + label: "A Paragraph", + context: cm.SelectorContext("p"), + contentScript: 'self.on("context", function (node) {' + + ' console.log(node.nodeName);' + + ' return true;' + + '});' +});</pre> + +<p>The content script is executed for every page that a context menu is shown for. It will be executed the first time it is needed (i.e. when the context menu is first shown and all of the declarative contexts for your item are current) and then remains active until you destroy your context menu item or the page is unloaded.</p> + +<h3 id="Handling_menu_item_clicks">Handling menu item clicks</h3> + +<p>In addition to using content scripts to listen for the <code>"context"</code> event as described above, you can use content scripts to handle item clicks. When the user clicks your menu item, an event named <code>"click"</code> is emitted in the item's content script.</p> + +<p>Therefore, to handle an item click, listen for the <code>"click"</code> event in that item's content script like so:</p> + +<pre class="brush: js">require("sdk/context-menu").Item({ + label: "My Item", + contentScript: 'self.on("click", function (node, data) {' + + ' console.log("Item clicked!");' + + '});' +});</pre> + +<p>Note that the listener function has parameters called <code>node</code> and <code>data</code>.</p> + +<h4 id="The_node_argument">The "node" argument</h4> + +<p><code>node</code> is the node that the user context-clicked to invoke the menu.</p> + +<ul> + <li>If you did not use <code>SelectorContext</code> to decide whether to show the menu item, then this is the actual node clicked.</li> + <li>If you did use <code>SelectorContext</code>, then this is the node that matched your selector.</li> +</ul> + +<p>For example, suppose your add-on looks like this:</p> + +<pre class="brush: js">var script = "self.on('click', function (node, data) {" + + " console.log('clicked: ' + node.nodeName);" + + "});"; + +var cm = require("sdk/context-menu"); + +cm.Item({ + label: "body context", + context: cm.SelectorContext("body"), + contentScript: script +});</pre> + +<p>This add-on creates a context-menu item that uses <code>SelectorContext</code> to display the item whenever the context menu is activated on any descendant of the <code><BODY></code> element. When clicked, the item just logs the <a href="https://developer.mozilla.org/en-US/docs/DOM/Node.nodeName"><code>nodeName</code></a> property for the node passed to the click handler.</p> + +<p>If you run this add-on you'll see that it always logs "BODY", even if you click on a paragraph element inside the page:</p> + +<pre>info: contextmenu-example: clicked: BODY</pre> + +<p>By contrast, this add-on uses the <code>PageContext</code>:</p> + +<pre class="brush: js">var script = "self.on('click', function (node, data) {" + + " console.log('clicked: ' + node.nodeName);" + + "});"; + +var cm = require("sdk/context-menu"); + +cm.Item({ + label: "body context", + context: cm.PageContext(), + contentScript: script +});</pre> + +<p>It will log the name of the actual node clicked:</p> + +<pre>info: contextmenu-example: clicked: P</pre> + +<h4 id="The_data_Argument">The "data" Argument</h4> + +<p><code>data</code> is the <code>data</code> property of the menu item that was clicked. Note that when you have a hierarchy of menu items the click event will be sent to the content script of the item clicked and all ancestors so be sure to verify that the <code>data</code> value passed matches the item you expect. You can use this to simplify click handling by providing just a single click listener on a <code>Menu</code> that reacts to clicks for any child items.:</p> + +<pre class="brush: js">var cm = require("sdk/context-menu"); +cm.Menu({ + label: "My Menu", + contentScript: 'self.on("click", function (node, data) {' + + ' console.log("You clicked " + data);' + + '});', + items: [ + cm.Item({ label: "Item 1", data: "item1" }), + cm.Item({ label: "Item 2", data: "item2" }), + cm.Item({ label: "Item 3", data: "item3" }) + ] +}); +</pre> + +<h4 id="Communicating_With_the_Add-on">Communicating With the Add-on</h4> + +<p>Often you will need to collect some kind of information in the click listener and perform an action unrelated to content. To communicate to the menu item associated with the content script, the content script can call the <code>postMessage</code> function attached to the global <code>self</code> object, passing it some JSON-able data. The menu item's <code>"message"</code> event listener will be called with that data.</p> + +<pre class="brush: js">var cm = require("sdk/context-menu"); +cm.Item({ + label: "Edit Image", + context: cm.SelectorContext("img"), + contentScript: 'self.on("click", function (node, data) {' + + ' self.postMessage(node.src);' + + '});', + onMessage: function (imgSrc) { + openImageEditor(imgSrc); + } +});</pre> + +<h3 id="Updating_a_menu_item's_label">Updating a menu item's label</h3> + +<p>Each menu item must be created with a label, but you can change its label later using a couple of methods.</p> + +<p>The simplest method is to set the menu item's <code>label</code> property. This example updates the item's label based on the number of times it's been clicked:</p> + +<pre class="brush: js">var numClicks = 0; +var myItem = require("sdk/context-menu").Item({ + label: "Click Me: " + numClicks, + contentScript: 'self.on("click", self.postMessage);', + onMessage: function () { + numClicks++; + this.label = "Click Me: " + numClicks; + // Setting myItem.label is equivalent. + } +});</pre> + +<p>Sometimes you might want to update the label based on the context. For instance, if your item performs a search with the user's selected text, it would be nice to display the text in the item to provide feedback to the user. In these cases you can use the second method. Recall that your content scripts can listen for the <code>"context"</code> event and if your listeners return true, the items associated with the content scripts are shown in the menu. In addition to returning true, your <code>"context"</code> listeners can also return strings. When a <code>"context"</code> listener returns a string, it becomes the item's new label.</p> + +<p>This item implements the aforementioned search example:</p> + +<pre class="brush: js">var cm = require("sdk/context-menu"); +cm.Item({ + label: "Search Google", + context: cm.SelectionContext(), + contentScript: 'self.on("context", function () {' + + ' var text = window.getSelection().toString();' + + ' if (text.length > 20)' + + ' text = text.substr(0, 20) + "...";' + + ' return "Search Google for " + text;' + + '});' +});</pre> + +<p>The <code>"context"</code> listener gets the window's current selection, truncating it if it's too long, and includes it in the returned string. When the item is shown, its label will be "Search Google for <code>text</code>", where <code>text</code> is the truncated selection.</p> + +<p>You can also get the selected text using the High Level <code><a href="/en-US/Add-ons/SDK/High-Level_APIs/selection">selection</a></code> API.</p> + +<pre class="brush: js">var selection = require("sdk/selection");</pre> + +<p>and within the contentScript, reference the selected text as <code>selection.text</code></p> + +<h3 id="Private_windows">Private windows</h3> + +<p>If your add-on has not opted into private browsing, then any menus or menu items that you add will not appear in context menus belonging to private browser windows.</p> + +<p>To learn more about private windows, how to opt into private browsing, and how to support private browsing, refer to the <a href="/en-US/Add-ons/SDK/High-Level_APIs/private-browsing">documentation for the <code>private-browsing</code> module</a>.</p> + +<h3 id="More_examples">More examples</h3> + +<p>For conciseness, these examples create their content scripts as strings and use the <code>contentScript</code> property. In your own add-on, you will probably want to create your content scripts in separate files and pass their URLs using the <code>contentScriptFile</code> property. See <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">Working with Content Scripts</a> for more information.</p> + +<div class="warning"> +<p><strong>Warning:</strong> Unless your content script is extremely simple and consists only of a static string, don't use <code>contentScript</code>: if you do, you may have problems getting your add-on approved on AMO.</p> + +<p>Instead, keep the script in a separate file and load it using <code>contentScriptFile</code>. This makes your code easier to maintain, secure, debug and review.</p> +</div> + +<p>Show an "Edit Page Source" item when the user right-clicks a non-interactive part of the page:</p> + +<pre class="brush: js">require("sdk/context-menu").Item({ + label: "Edit Page Source", + contentScript: 'self.on("click", function (node, data) {' + + ' self.postMessage(document.URL);' + + '});', + onMessage: function (pageURL) { + editSource(pageURL); + } +});</pre> + +<p>Show an "Edit Image" item when the menu is invoked on an image:</p> + +<pre class="brush: js">var cm = require("sdk/context-menu"); +cm.Item({ + label: "Edit Image", + context: cm.SelectorContext("img"), + contentScript: 'self.on("click", function (node, data) {' + + ' self.postMessage(node.src);' + + '});', + onMessage: function (imgSrc) { + openImageEditor(imgSrc); + } +});</pre> + +<p>Show an "Edit Mozilla Image" item when the menu is invoked on an image in a mozilla.org or mozilla.com page:</p> + +<pre class="brush: js">var cm = require("sdk/context-menu"); +cm.Item({ + label: "Edit Mozilla Image", + context: [ + cm.URLContext(["*.mozilla.org", "*.mozilla.com"]), + cm.SelectorContext("img") + ], + contentScript: 'self.on("click", function (node, data) {' + + ' self.postMessage(node.src);' + + '});', + onMessage: function (imgSrc) { + openImageEditor(imgSrc); + } +});</pre> + +<p>Show an "Edit Page Images" item when the page contains at least one image:</p> + +<pre class="brush: js">var cm = require("sdk/context-menu"); +cm.Item({ + label: "Edit Page Images", + // This ensures the item only appears during the page context. + context: cm.PageContext(), + contentScript: 'self.on("context", function (node) {' + + ' var pageHasImgs = !!document.querySelector("img");' + + ' return pageHasImgs;' + + '});' + + 'self.on("click", function (node, data) {' + + ' var imgs = document.querySelectorAll("img");' + + ' var imgSrcs = [];' + + ' for (var i = 0 ; i < imgs.length; i++)' + + ' imgSrcs.push(imgs[i].src);' + + ' self.postMessage(imgSrcs);' + + '});', + onMessage: function (imgSrcs) { + openImageEditor(imgSrcs); + } +});</pre> + +<p>Show a "Search With" menu when the user right-clicks an anchor that searches Google or Wikipedia with the text contained in the anchor:</p> + +<pre class="brush: js">var cm = require("sdk/context-menu"); +var googleItem = cm.Item({ + label: "Google", + data: "http://www.google.com/search?q=" +}); +var wikipediaItem = cm.Item({ + label: "Wikipedia", + data: "http://en.wikipedia.org/wiki/Special:Search?search=" +}); +var searchMenu = cm.Menu({ + label: "Search With", + context: cm.SelectorContext("a[href]"), + contentScript: 'self.on("click", function (node, data) {' + + ' var searchURL = data + node.textContent;' + + ' window.location.href = searchURL;' + + '});', + items: [googleItem, wikipediaItem] +});</pre> + +<p>To create sub-menus, one of the items in your main menu must be defined as a menu.</p> + +<pre class="brush: js">var cm = require("sdk/context-menu"); +var googleItem = cm.Item({ + label: "Google", + data: "http://www.google.com/search?q=" +}); +var wikipediaItem = cm.Item({ + label: "Wikipedia", + data: "http://en.wikipedia.org/wiki/Special:Search?search=" +}); +var bingItem = cm.Item({ + label: "Bing", + data: "http://www.bing.com/search?q=" +}); +var yahooItem = cm.Item({ + label: "Yahoo", + data: "https://search.yahoo.com/search?p=" +}); +var moreMenu = cm.Menu({ + label: "More Search", + items: [bingItem, yahooItem] +}); +var searchMenu = cm.Menu({ + label: "Search With", + context: cm.SelectorContext("a[href]"), + contentScript: 'self.on("click", function (node, data) {' + + ' var searchURL = data + node.textContent;' + + ' window.location.href = searchURL;' + + '});', + items: [googleItem, wikipediaItem, moreMenu] +});</pre> + +<p>If you need a <strong>tooltip</strong>:</p> + +<p><img alt="tooltip" src="https://github.com/vitaly-zdanevich/extension-firefox-yandex-translate/raw/master/screenshot-hover.png" style="height: 500px; width: 800px;"></p> + +<p>First you need a dummy menu item that will serve as a trigger and subsequently will add the tooltips to the actual menu items.</p> + +<p>It is easy to find out which menu items are constructed by the addon-sdk module because they have the class <code>addon-context-menu-item</code>. The difficult part it to identify those that belong to your extension.</p> + +<p>One way to achieve this it to utilize the <code>data</code> attribute of <code>Item</code> class constructor, which conveniently maps to the <code>value</code> attribute of the underlying xul element.</p> + +<p>So if <code>data</code> consists of unique prefix and the desired tooltip text, it is just a matter of kicking in the right moment.</p> + +<pre><code>const { getMostRecentBrowserWindow } = require("sdk/window/utils"); + +var cm = require("sdk/context-menu"); +var uuid = require('sdk/util/uuid').uuid(); +var uuidstr = uuid.number.substring(1,37); + +cm.Item({ + data: uuidstr+"This is a tooltip", + label: "Just a tigger, will never show up", + contentScript: 'self.on("context", function(){self.postMessage(); return false;})', + onMessage: function(){ + var cmitems = getMostRecentBrowserWindow().document.querySelectorAll(".addon-context-menu-item[value^='"+ uuidstr +"']"); + for(var i=0; i < cmitems.length; i++) + cmitems[i].tooltipText = cmitems[i].value.substring(36); + } +});</code></pre> + +<p> </p> + +<h2 id="Globals">Globals</h2> + +<h3 id="Constructors">Constructors</h3> + +<h4 class="addon-sdk-api-name" id="Item(options)"><code>Item(options)</code></h4> + +<p>Creates a labeled menu item that can perform an action when clicked.</p> + +<h5 id="Parameters">Parameters</h5> + +<p><strong>options : object</strong><br> + Required options:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col"> </th> + </tr> + </thead> + <tbody> + <tr> + <td>label</td> + <td>string</td> + <td> + <p>The item's label. It must either be a string or an object that implements <code>toString()</code>.</p> + </td> + </tr> + </tbody> +</table> + +<p>Optional options:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col"> </th> + </tr> + </thead> + <tbody> + <tr> + <td>image</td> + <td>string</td> + <td> + <p>The item's icon, a string URL. The URL can be remote, a reference to an image in the add-on's <code>data</code> directory, or a data URI.</p> + </td> + </tr> + <tr> + <td>data</td> + <td>string</td> + <td> + <p>An optional arbitrary value to associate with the item. It must be either a string or an object that implements <code>toString()</code>. It will be passed to click listeners.</p> + </td> + </tr> + <tr> + <td>accesskey</td> + <td>single-character string</td> + <td> + <div class="geckoVersionNote"> + <p>New in Firefox 35.</p> + </div> + + <p>Access key for the item. Pressing this key selects the item when the context menu is open.</p> + </td> + </tr> + <tr> + <td>context</td> + <td>value</td> + <td> + <p>If the item is contained in the top-level context menu, this declaratively specifies the context under which the item will appear; see Specifying Contexts above.</p> + </td> + </tr> + <tr> + <td>contentScript</td> + <td>string,array</td> + <td> + <p>If the item is contained in the top-level context menu, this is the content script or an array of content scripts that the item can use to interact with the page.</p> + </td> + </tr> + <tr> + <td>contentScriptFile</td> + <td>string,array</td> + <td> + <p>If the item is contained in the top-level context menu, this is the local file URL of the content script or an array of such URLs that the item can use to interact with the page.</p> + </td> + </tr> + <tr> + <td>onMessage</td> + <td>function</td> + <td> + <p>If the item is contained in the top-level context menu, this function will be called when the content script calls <code>self.postMessage</code>. It will be passed the data that was passed to <code>postMessage</code>.</p> + </td> + </tr> + </tbody> +</table> + +<h4 class="addon-sdk-api-name" id="Menu(options)"><code>Menu(options)</code></h4> + +<p>Creates a labeled menu item that expands into a submenu.</p> + +<h5 id="Parameters_2">Parameters</h5> + +<p><strong>options : object</strong><br> + Required options:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col"> </th> + </tr> + </thead> + <tbody> + <tr> + <td>label</td> + <td>string</td> + <td> + <p>The item's label. It must either be a string or an object that implements <code>toString()</code>.</p> + </td> + </tr> + <tr> + <td>items</td> + <td>array</td> + <td> + <p>An array of menu items that the menu will contain. Each must be an <code>Item</code>, <code>Menu</code>, or <code>Separator</code>.</p> + </td> + </tr> + </tbody> +</table> + +<p>Optional options:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col"> </th> + </tr> + </thead> + <tbody> + <tr> + <td>image</td> + <td>string</td> + <td> + <p>The menu's icon, a string URL. The URL can be remote, a reference to an image in the add-on's <code>data</code> directory, or a data URI.</p> + </td> + </tr> + <tr> + <td>context</td> + <td>value</td> + <td> + <p>If the menu is contained in the top-level context menu, this declaratively specifies the context under which the menu will appear; see Specifying Contexts above.</p> + </td> + </tr> + <tr> + <td>contentScript</td> + <td>string,array</td> + <td> + <p>If the menu is contained in the top-level context menu, this is the content script or an array of content scripts that the menu can use to interact with the page.</p> + </td> + </tr> + <tr> + <td>contentScriptFile</td> + <td>string,array</td> + <td> + <p>If the menu is contained in the top-level context menu, this is the local file URL of the content script or an array of such URLs that the menu can use to interact with the page.</p> + </td> + </tr> + <tr> + <td>onMessage</td> + <td>function</td> + <td> + <p>If the menu is contained in the top-level context menu, this function will be called when the content script calls <code>self.postMessage</code>. It will be passed the data that was passed to <code>postMessage</code>.</p> + </td> + </tr> + </tbody> +</table> + +<h4 class="addon-sdk-api-name" id="Separator()"><code>Separator()</code></h4> + +<p>Creates a menu separator.</p> + +<h4 class="addon-sdk-api-name" id="PageContext()"><code>PageContext()</code></h4> + +<p>Creates a page context. See Specifying Contexts above.</p> + +<h4 class="addon-sdk-api-name" id="SelectionContext()"><code>SelectionContext()</code></h4> + +<p>Creates a context that occurs when a page contains a selection. See Specifying Contexts above.</p> + +<h4 class="addon-sdk-api-name" id="SelectorContext(selector)"><code>SelectorContext(selector)</code></h4> + +<p>Creates a context that matches a given CSS selector. See Specifying Contexts above.</p> + +<h5 id="Parameters_3">Parameters</h5> + +<p><strong>selector : string</strong><br> + A CSS selector.</p> + +<h4 class="addon-sdk-api-name" id="URLContext(matchPattern)"><code>URLContext(matchPattern)</code></h4> + +<p>Creates a context that matches pages with particular URLs. See Specifying Contexts above.</p> + +<h5 id="Parameters_4">Parameters</h5> + +<p><strong>matchPattern : string,array</strong><br> + A <a href="/en-US/Add-ons/SDK/Low-Level_APIs/util_match-pattern">match pattern</a> string, regexp or an array of match pattern strings or regexps.</p> + +<h4 class="addon-sdk-api-name" id="PredicateContext(predicateFunction)"><code>PredicateContext(predicateFunction)</code></h4> + +<div class="geckoVersionNote"> +<p>New in Firefox 29</p> +</div> + +<p>Creates a context that occurs when predicateFunction returns a true value. See Specifying Contexts above.</p> + +<h5 id="Parameters_5">Parameters</h5> + +<p><strong>predicateFunction : function(context)</strong><br> + A function which will be called with an object argument that provide information about the invocation context. <code>context</code> object properties:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Property</th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>documentType</code></td> + <td>The MIME type of the document the menu was invoked in. E.g. <code>text/html</code> for HTML pages, <code>application/xhtml+xml</code> for XHTML, or <code>image/jpeg</code> if viewing an image directly.</td> + </tr> + <tr> + <td><code>documentURL</code></td> + <td>The URL of the document the menu was invoked in.</td> + </tr> + <tr> + <td><code>targetName</code></td> + <td>The name of the DOM element that the menu was invoked on, in lower-case.</td> + </tr> + <tr> + <td><code>targetID</code></td> + <td>The <code>id</code> attribute of the element that the menu was invoked on, or <code>null</code> if not set.</td> + </tr> + <tr> + <td><code>isEditable</code></td> + <td><code>true</code> if the menu was invoked in an editable element, and that element isn't disabled or read-only. This includes non-input elements with the <code>contenteditable</code> attribute set to <code>true</code>.</td> + </tr> + <tr> + <td><code>selectionText</code></td> + <td>The current selection as a text string, or <code>null</code>. If the menu was invoked in an input text box or area, this is the selection of that element, otherwise the selection in the contents of the window.</td> + </tr> + <tr> + <td><code>srcURL</code></td> + <td>The <code>src</code> URL of the element that the menu was invoked on, or <code>null</code> if it doesn't have one.</td> + </tr> + <tr> + <td><code>linkURL</code></td> + <td>The <code>href</code> URL of the element that the menu was invoked on, or <code>null</code> if it doesn't have one.</td> + </tr> + <tr> + <td><code>value</code></td> + <td>The current contents of a input text box or area if the menu was invoked in one, <code>null</code> otherwise.</td> + </tr> + </tbody> +</table> + +<h2 id="Item">Item</h2> + +<p>A labeled menu item that can perform an action when clicked.</p> + +<h3 id="Methods">Methods</h3> + +<h4 class="addon-sdk-api-name" id="destroy()"><code>destroy()</code></h4> + +<p>Permanently removes the item from its parent menu and frees its resources. The item must not be used afterward. If you need to remove the item from its parent menu but use it afterward, call <code>removeItem()</code> on the parent menu instead.</p> + +<h3 id="Properties">Properties</h3> + +<h4 class="addon-sdk-api-name" id="label"><code>label</code></h4> + +<p>The menu item's label. You can set this after creating the item to update its label later.</p> + +<h4 class="addon-sdk-api-name" id="image"><code>image</code></h4> + +<p>The item's icon, a string URL. The URL can be remote, a reference to an image in the add-on's <code>data</code> directory, or a data URI. You can set this after creating the item to update its image later. To remove the item's image, set it to <code>null</code>.</p> + +<h4 class="addon-sdk-api-name" id="data"><code>data</code></h4> + +<p>An optional arbitrary value to associate with the item. It must be either a string or an object that implements <code>toString()</code>. It will be passed to click listeners. You can set this after creating the item to update its data later.</p> + +<h4 class="addon-sdk-api-name" id="context"><code>context</code></h4> + +<p>A list of declarative contexts for which the menu item will appear in the context menu. Contexts can be added by calling <code>context.add()</code> and removed by called <code>context.remove()</code>.</p> + +<h4 class="addon-sdk-api-name" id="parentMenu"><code>parentMenu</code></h4> + +<p>The item's parent <code>Menu</code>, or <code>null</code> if the item is contained in the top-level context menu. This property is read-only. To add the item to a new menu, call that menu's <code>addItem()</code> method.</p> + +<h4 class="addon-sdk-api-name" id="contentScript"><code>contentScript</code></h4> + +<p>The content script or the array of content scripts associated with the menu item during creation.</p> + +<h4 class="addon-sdk-api-name" id="contentScriptFile"><code>contentScriptFile</code></h4> + +<p>The URL of a content script or the array of such URLs associated with the menu item during creation.</p> + +<h3 id="Events">Events</h3> + +<h4 class="addon-sdk-api-name" id="message"><code>message</code></h4> + +<p>If you listen to this event you can receive message events from content scripts associated with this menu item. When a content script posts a message using <code>self.postMessage()</code>, the message is delivered to the add-on code in the menu item's <code>message</code> event.</p> + +<h5 id="Arguments">Arguments</h5> + +<p><strong>value</strong> : Listeners are passed a single argument which is the message posted from the content script. The message can be any <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/using_port#JSON-Serializable_Values">JSON-serializable value</a>.</p> + +<h2 id="Menu">Menu</h2> + +<p>A labeled menu item that expands into a submenu.</p> + +<h3 id="Methods_2">Methods</h3> + +<h4 class="addon-sdk-api-name" id="addItem(item)"><code>addItem(item)</code></h4> + +<p>Appends a menu item to the end of the menu. If the item is already contained in another menu or in the top-level context menu, it's automatically removed first. If the item is already contained in this menu it will just be moved to the end of the menu.</p> + +<h5 id="Parameters_6">Parameters</h5> + +<p><strong>item : Item,Menu,Separator</strong><br> + The <code>Item</code>, <code>Menu</code>, or <code>Separator</code> to add to the menu.</p> + +<h4 class="addon-sdk-api-name" id="removeItem(item)"><code>removeItem(item)</code></h4> + +<p>Removes the given menu item from the menu. If the menu does not contain the item, this method does nothing.</p> + +<h5 id="Parameters_7">Parameters</h5> + +<p><strong>item : Item,Menu,Separator</strong><br> + The menu item to remove from the menu.</p> + +<h4 class="addon-sdk-api-name" id="destroy()_2"><code>destroy()</code></h4> + +<p>Permanently removes the menu from its parent menu and frees its resources. The menu must not be used afterward. If you need to remove the menu from its parent menu but use it afterward, call <code>removeItem()</code> on the parent menu instead.</p> + +<h3 id="Properties_2">Properties</h3> + +<h4 class="addon-sdk-api-name" id="label_2"><code>label</code></h4> + +<p>The menu's label. You can set this after creating the menu to update its label later.</p> + +<h4 class="addon-sdk-api-name" id="items"><code>items</code></h4> + +<p>An array containing the items in the menu. The array is read-only, meaning that modifications to it will not affect the menu. However, setting this property to a new array will replace all the items currently in the menu with the items in the new array.</p> + +<h4 class="addon-sdk-api-name" id="image_2"><code>image</code></h4> + +<p>The menu's icon, a string URL. The URL can be remote, a reference to an image in the add-on's <code>data</code> directory, or a data URI. You can set this after creating the menu to update its image later. To remove the menu's image, set it to <code>null</code>.</p> + +<h4 class="addon-sdk-api-name" id="context_2"><code>context</code></h4> + +<p>A list of declarative contexts for which the menu will appear in the context menu. Contexts can be added by calling <code>context.add()</code> and removed by called <code>context.remove()</code>.</p> + +<h4 class="addon-sdk-api-name" id="parentMenu_2"><code>parentMenu</code></h4> + +<p>The menu's parent <code>Menu</code>, or <code>null</code> if the menu is contained in the top-level context menu. This property is read-only. To add the menu to a new menu, call that menu's <code>addItem()</code> method.</p> + +<h4 class="addon-sdk-api-name" id="contentScript_2"><code>contentScript</code></h4> + +<p>The content script or the array of content scripts associated with the menu during creation.</p> + +<h4 class="addon-sdk-api-name" id="contentScriptFile_2"><code>contentScriptFile</code></h4> + +<p>The URL of a content script or the array of such URLs associated with the menu during creation.</p> + +<h3 id="Events_2">Events</h3> + +<h4 class="addon-sdk-api-name" id="message_2"><code>message</code></h4> + +<p>If you listen to this event you can receive message events from content scripts associated with this menu item. When a content script posts a message using <code>self.postMessage()</code>, the message is delivered to the add-on code in the menu item's <code>message</code> event.</p> + +<h5 id="Arguments_2">Arguments</h5> + +<p><strong>value</strong> : Listeners are passed a single argument which is the message posted from the content script. The message can be any <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/using_port#JSON-Serializable_Values">JSON-serializable value</a>.</p> + +<h2 id="Separator">Separator</h2> + +<p>A menu separator. Separators can be contained only in <code>Menu</code>s, not in the top-level context menu.</p> + +<h3 id="Methods_3">Methods</h3> + +<h4 class="addon-sdk-api-name" id="destroy()_3"><code>destroy()</code></h4> + +<p>Permanently removes the separator from its parent menu and frees its resources. The separator must not be used afterward. If you need to remove the separator from its parent menu but use it afterward, call <code>removeItem()</code> on the parent menu instead.</p> + +<h3 id="Properties_3">Properties</h3> + +<h4 class="addon-sdk-api-name" id="parentMenu_3"><code>parentMenu</code></h4> + +<p>The separator's parent <code>Menu</code>. This property is read-only. To add the separator to a new menu, call that menu's <code>addItem()</code> method.</p> diff --git a/files/fr/mozilla/add-ons/sdk/high-level_apis/index.html b/files/fr/mozilla/add-ons/sdk/high-level_apis/index.html new file mode 100644 index 0000000000..e78b5f5cb5 --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/high-level_apis/index.html @@ -0,0 +1,13 @@ +--- +title: High-Level APIs +slug: Mozilla/Add-ons/SDK/High-Level_APIs +tags: + - Add-on SDK + - TopicStub +translation_of: Archive/Add-ons/Add-on_SDK/High-Level_APIs +--- +<p>{{AddonSidebar}}</p> + +<p>Les modules répertoriés sur cette page implémentent des API de haut niveau pour la création de modules complémentaires: création d'interfaces utilisateur, interaction avec le Web et interaction avec le navigateur.</p> + +<p>Sauf indication contraire explicite de la documentation, tous ces modules sont "Stables": nous éviterons d'y apporter des modifications incompatibles. {{ LandingPageListSubpages ("/en-US/Add-ons/SDK/High-Level_APIs", 5) }}</p> diff --git a/files/fr/mozilla/add-ons/sdk/high-level_apis/indexed-db/index.html b/files/fr/mozilla/add-ons/sdk/high-level_apis/indexed-db/index.html new file mode 100644 index 0000000000..4a73e29e98 --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/high-level_apis/indexed-db/index.html @@ -0,0 +1,166 @@ +--- +title: indexed-db +slug: Mozilla/Add-ons/SDK/High-Level_APIs/indexed-db +translation_of: Archive/Add-ons/Add-on_SDK/High-Level_APIs/indexed-db +--- +<p>{{AddonSidebar}}</p> + +<div class="note"> +<p>Expérimental</p> +</div> + +<p><span class="seoSummary">Expose l'<a href="https://developer.mozilla.org/fr/docs/IndexedDB" title="https://developer.mozilla.org/fr/docs/IndexedDB">API IndexedDB</a> pour les add-ons.</span></p> + +<h2 id="Utilisation">Utilisation</h2> + +<p>Les scripts en cours d'exécution dans les pages Web peuvent accéder à IndexedDB via <code>window</code>. Par exemple:</p> + +<pre class="brush: js">window.indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB; + +var request = window.indexedDB.open("MyDatabase"); +request.onerror = function(event) { + console.log("failure"); +}; +request.onsuccess = function(event) { + console.log("success"); +};</pre> + +<p>Parce que votre code add-on principale ne peut pas accéder au DOM, vous ne pouvez pas faire cela. Mais vous pouvez utiliser le module <code>indexed-db</code> pour y accéder:</p> + +<pre class="brush: js">var { indexedDB } = require('sdk/indexed-db'); + +var request = indexedDB.open('MyDatabase'); +request.onerror = function(event) { + console.log("failure"); +}; +request.onsuccess = function(event) { + console.log("success"); +};</pre> + +<p>La plupart des objets qui mettent en œuvre l'API IndexedDB, tels que <a href="https://developer.mozilla.org/fr/docs/IndexedDB/IDBTransaction" title="https://developer.mozilla.org/fr/docs/IndexedDB/IDBTransaction"> IDBTransaction </a>, <a href="https://developer.mozilla.org/fr/docs/IndexedDB/IDBOpenDBRequest" title="https://developer.mozilla.org/fr/docs/IndexedDB/IDBOpenDBRequest"> IDBOpenDBRequest </a>, et <a href="https://developer.mozilla.org/fr/docs/IndexedDB/IDBObjectStore" title="https://developer.mozilla.org/fr/docs/IndexedDB/IDBObjectStore"> IDBObjectStore </a>, sont accessibles à travers l'objet IndexedDB lui-même. < br></p> + +<p>L'API exposée par <code>indexed-db</code> est presque identique à l'API DOM IndexedDB, donc on n'a pas répété sa documentation ici, référer vous à la <a href="https://developer.mozilla.org/fr/docs/IndexedDB" title="https://developer.mozilla.org/fr/docs/IndexedDB">documentation de l'API IndexedDB</a> pour tous les détails.</p> + +<p>La base de données créé sera unique et privée pour l'add-on, et n'est pas liés à une base de données de site. Le module ne peut pas être utilisé pour interagir avec une base de données du site donné. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=779197" title="https://bugzilla.mozilla.org/show_bug.cgi?id=779197"> bug 778197 </a> et <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=786688" title="https://bugzilla.mozilla.org/show_bug.cgi?id=786688"> bug 786688 </a>.</p> + +<h3 id="Exemple">Exemple</h3> + +<div class="note"> +<p>Cet exemple utilise l'<a href="https://developer.mozilla.org/fr/Add-ons/SDK/Low-Level_APIs/ui_button_action" title="https://developer.mozilla.org/fr/Add-ons/SDK/Low-Level_APIs/ui_button_action">API bouton d'action </a>, qui est uniquement disponible à partir de Firefox 29 partir.</p> +</div> + +<p>Voici un add-on complet qui ajoute deux boutons pour le navigateur: le bouton "Ajouter" ajoute le titre de l'onglet en cours à une base de données, tandis que le bouton intitulé «Liste» répertorie tous les titres dans la base de données .</p> + +<p>L'add-on implémente les fonctions <code>open()</code>, <code>addItem()</code> et <code>getItems()</code> pour ouvrir la base de données, ajouter un nouvel élément à la base de données, et d'obtenir tous les éléments de la base de données.</p> + +<pre class="brush: js">var { indexedDB, IDBKeyRange } = require('sdk/indexed-db'); + +var database = {}; + +database.onerror = function(e) { + console.error(e.value) +} + +function open(version) { + var request = indexedDB.open("stuff", version); + + request.onupgradeneeded = function(e) { + var db = e.target.result; + e.target.transaction.onerror = database.onerror; + + if(db.objectStoreNames.contains("items")) { + db.deleteObjectStore("items"); + } + + var store = db.createObjectStore("items", + {keyPath: "time"}); + }; + + request.onsuccess = function(e) { + database.db = e.target.result; + }; + + request.onerror = database.onerror; +}; + +function addItem(name) { + var db = database.db; + var trans = db.transaction(["items"], "readwrite"); + var store = trans.objectStore("items"); + var time = new Date().getTime(); + var request = store.put({ + "name": name, + "time": time + }); + + request.onerror = database.onerror; +}; + +function getItems(callback) { + var cb = callback; + var db = database.db; + var trans = db.transaction(["items"], "readwrite"); + var store = trans.objectStore("items"); + var items = new Array(); + + trans.oncomplete = function() { + cb(items); + } + + var keyRange = IDBKeyRange.lowerBound(0); + var cursorRequest = store.openCursor(keyRange); + + cursorRequest.onsuccess = function(e) { + var result = e.target.result; + if(!!result == false) + return; + + items.push(result.value.name); + result.continue(); + }; + + cursorRequest.onerror = database.onerror; +}; + +function listItems(itemList) { + console.log(itemList); +} + +open("1"); + +var add = require("sdk/ui/button/action").ActionButton({ + id: "add", + label: "Add", + icon: "./add.png", + onClick: function() { + addItem(require("sdk/tabs").activeTab.title); + } +}); + +var list = require("sdk/ui/button/action").ActionButton({ + id: "list", + label: "List", + icon: "./list.png", + onClick: function() { + getItems(listItems); + } +}); +</pre> + +<p>Notez que pour exécuter cet add-on, vous aurez besoin de fournir des icônes nommées "add.png" et "list.png" dans le répertoire "data" de l'add-ons .</p> + +<h2 id="Globals">Globals</h2> + +<h3 id="Propriétés">Propriétés</h3> + +<h4 class="addon-sdk-api-name" id="indexedDB"><code>indexedDB</code></h4> + +<p>Permet de créer, ouvrir et supprimer des bases de données. Voir la <a href="https://developer.mozilla.org/fr/docs/IndexedDB/IDBFactory" title="https://developer.mozilla.org/fr/docs/IndexedDB/IDBFactory"> documentation IDBFactory</a>.</p> + +<h4 class="addon-sdk-api-name" id="IDBKeyRange"><code>IDBKeyRange</code></h4> + +<p>Définit une plage de clés. Voir la <a href="https://developer.mozilla.org/fr/docs/IndexedDB/IDBKeyRange" title="https://developer.mozilla.org/fr/docs/IndexedDB/IDBKeyRange"> documentation IDBKeyRange</a>.</p> + +<h4 class="addon-sdk-api-name" id="DOMException"><code>DOMException</code></h4> + +<p>Fournit des informations plus détaillées sur une exception. Voir la <a href="https://developer.mozilla.org/fr/docs/DOM/DOMException" title="https://developer.mozilla.org/fr/docs/DOM/DOMException"> documentation DOMException</a>.</p> diff --git a/files/fr/mozilla/add-ons/sdk/high-level_apis/simple-storage/index.html b/files/fr/mozilla/add-ons/sdk/high-level_apis/simple-storage/index.html new file mode 100644 index 0000000000..2b35fc120b --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/high-level_apis/simple-storage/index.html @@ -0,0 +1,170 @@ +--- +title: simple-storage +slug: Mozilla/Add-ons/SDK/High-Level_APIs/simple-storage +translation_of: Archive/Add-ons/Add-on_SDK/High-Level_APIs/simple-storage +--- +<p>{{AddonSidebar}}</p> + +<div class="note"> +<p>Stable</p> +</div> + +<p><span class="seoSummary">Permet au add-on le stockage des données afin qu'il soit conservé entre les redémarrages de Firefox. </span> Ce module fonctionne de façon similaire au <a href="https://developer.mozilla.org/en/DOM/Storage" title="https://developer.mozilla.org/en/DOM/Storage"> DOM Storage</a> du Web, mais il est uniquement disponible pour des add-ons.</p> + +<h2 id="Utilisation">Utilisation</h2> + +<p>Le module de stockage simple exporte un objet appelé <code>storage</code> qui est persistant et à porté de votre add-on. C'est un objet JavaScript normal, et vous pouvez le traiter comme vous le feriez pour tout autre.</p> + +<p>Pour stocker une valeur, il faut juste l'affecter avec la propriété <code>storage</code>:</p> + +<pre class="brush: js">var ss = require("sdk/simple-storage"); +ss.storage.myArray = [1, 1, 2, 3, 5, 8, 13]; +ss.storage.myBoolean = true; +ss.storage.myNull = null; +ss.storage.myNumber = 3.1337; +ss.storage.myObject = { a: "foo", b: { c: true }, d: null }; +ss.storage.myString = "O frabjous day!";</pre> + +<p>Vous pouvez stocker des valeurs tableau, booléennes, nombre, objet, null et des textes. Si vous souhaitez stocker d'autres types de valeurs, vous devrez d'abord les convertir en chaînes ou un autre de ces types.</p> + +<p>Veillez à définir les propriétés avec <code>storage</code> et non avec le module lui-même:</p> + +<pre class="brush: js">// This is not good! +var ss = require("sdk/simple-storage"); +ss.foo = "I will not be saved! :(";</pre> + +<h3 id="stockage_simple_et_jpm_run">stockage simple et "jpm run"</h3> + +<p>Le module de stockage simple stocke ses données dans votre profil. Parce que <code>jpm run</code> utilise par défaut un profil frais chaque fois qu'il est exécuté, le stockage simple ne fonctionnera pas avec des add-ons exécutées en utilisant <code>jpm run</code> - les données stockées ne persisteront pas d'une exécution à l'autre.</p> + +<p>La solution la plus simple à ce problème est d'utiliser l'option <a href="https://developer.mozilla.org/fr/Add-ons/SDK/Tools/jpm#Using_profiles_2">--profile de jpm</a> avec un chemin d'accès à un profil - pas seulement un nom de profil. Vous pouvez aussi avoir besoin d'inclure l'option<a href="https://developer.mozilla.org/fr/Add-ons/SDK/Tools/jpm#Using_profiles_2"> --no-copie</a> pour empêcher Firefox de copier le profil dans un répertoire de temporaire chaque fois qu'il démarre.</p> + +<pre class="brush: bash">jpm run --no-copy --profile path/to/profile/dir</pre> + +<p>Si vous spécifiez un profil non-existant, il sera créé.</p> + +<blockquote> +<p>Important: Si vous utilisez cette méthode, vous devez mettre fin à votre session de débogage en quittant Firefox normalement, en annulant la commande shell. Si vous ne fermez pas Firefox normalement, puis un simple stockage ne sera pas informé que la session est terminée, et ne sera pas écrire vos données à la mémoire de sauvegarde.</p> +</blockquote> + +<h3 id="Accès_au_stockage_à_partir_de_la_console">Accès au stockage à partir de la console</h3> + +<p>Dans l'<a href="/fr/Add-ons/Add-on_Debugger" title="/fr/Add-ons/Add-on_Debugger"> Add-on Debugger </a>, vous pouvez accéder à vos addons simple stockage par programmation à partir de la console en utilisant ce qui suit:</p> + +<pre class="brush: js">loader.modules['resource://gre/modules/commonjs/sdk/simple-storage.js'].exports.storage</pre> + +<h3 id="Constructeur_de_tableaux">Constructeur de tableaux</h3> + +<p>Pour ne pas remettre à zéro un tableau, attention au constructeur. Par exemple, cet add-on essaie de stocker les URL des pages visitées:</p> + +<pre class="brush: js">var ss = require("sdk/simple-storage"); +ss.storage.pages = []; + +require("sdk/tabs").on("ready", function(tab) { + ss.storage.pages.push(tab.url); +}); + +require("sdk/ui/button/action").ActionButton({ + id: "read", + label: "Read", + icon: "./read.png", + onClick: function() { + console.log(ss.storage.pages); + } +});</pre> + +<p>Mais cela ne fonctonne pas, car il vide le tableau chaque fois que l'add-on est apellée (par exemple, chaque fois que Firefox est lancé). La ligne 2 a besoin d'être subordonné, de sorte que le tableau est uniquement construite si il n'existe pas déjà:</p> + +<pre class="brush: js">if (!ss.storage.pages) + ss.storage.pages = [];</pre> + +<h3 id="Suppression_de_données">Suppression de données</h3> + +<p>Vous pouvez supprimer des propriétés en utilisant l'opérateur <code>delete</code>. Voici une add-on qui ajoute trois boutons pour écrire, lire et supprimer une valeur:</p> + +<pre class="brush: js">var ss = require("sdk/simple-storage"); + +require("sdk/ui/button/action").ActionButton({ + id: "write", + label: "Write", + icon: "./write.png", + onClick: function() { + ss.storage.value = 1; + console.log("Setting value"); + } +}); + +require("sdk/ui/button/action").ActionButton({ + id: "read", + label: "Read", + icon: "./read.png", + onClick: function() { + console.log(ss.storage.value); + } +}); + +require("sdk/ui/button/action").ActionButton({ + id: "delete", + label: "Delete", + icon: "./delete.png", + onClick: function() { + delete ss.storage.value; + console.log("Deleting value"); + } +});</pre> + +<p>Si vous l'exécutez, vous verrez que si vous cliquez sur "Lire" après avoir cliqué sur "Supprimer" vous aurez le résultat escompté:</p> + +<pre>info: undefined +</pre> + +<p>Notez que pour exécuter cet add-on, vous aurez à enregistrer des fichiers icône nommées "write.png", "read.png", et "delete.png" dans le répertoire "data".</p> + +<h3 id="Quotas">Quotas</h3> + +<p>Le stockage simple à la disposition de votre add-on est limité. Actuellement, cette limite est environ cinq mégaoctets (5,242,880 octets). Vous pouvez choisir d'être averti lorsque vous dépassez le quota, et vous devez répondre en réduisant la quantité de données dans le stockage. Si vous quittez l'application pendant que vous êtes hors quota, toutes les données stockées depuis la dernière fois que vous étiez sous le quota ne sont pas conservées. Vous ne devriez pas laisser cela se produire.</p> + +<p>Pour écouter les notifications du quota, utiliser l'evenement <code>"OverQuota"</code>. il sera appelée quand votre stockage dépasse le quota.</p> + +<pre class="brush: js">function myOnOverQuotaListener() { + console.log("Uh oh."); +} +ss.on("OverQuota", myOnOverQuotaListener);</pre> + +<p>Les auditeurs peuvent également être retirés:</p> + +<pre><code><code class="brush: js">ss.removeListener("OverQuota", myOnOverQuotaListener);</code></code></pre> + +<p>Pour connaitre le % de saturation du quota utiliser la proprieté <code>quotaUsage</code>. Si vous êtes dans votre quota, c'est un nombre entre 0 et 1. Si votre add-on utilise plus que son quota, cette valeur est supérieure à 1,0.</p> + +<p>Par conséquent, lorsque vous êtes averti que vous êtes hors quota, vous devez répondre en supprimant les données de l'espace de stockage jusqu'à ce que votre <code>quotaUsage</code> soit inférieur ou égal à 1.</p> + +<pre class="brush: js">ss.storage.myList = [ /* some long array */ ]; +ss.on("OverQuota", function () { + while (ss.quotaUsage > 1) + ss.storage.myList.pop(); +});</pre> + +<h3 id="Navigation_privée">Navigation privée</h3> + +<p>Si votre mémoire est liée à l'histoire de vos utilisateurs Web, des renseignements personnels, ou d'autres données sensibles, votre add-on devrait respecter la <a href="http://support.mozilla.com/fr/kb/Private+Browsing" title="http://support.mozilla.com/fr/kb/Private+Browsing"> navigation privé </a>.</p> + +<p>Pour en savoir plus sur la façon de choisir en mode de navigation privée et comment utiliser le SDK pour éviter de stocker des données d'utilisateur associées aux fenêtres privées, reportez-vous à la documentation du <a href="/fr/Add-ons/SDK/High-Level_APIs/private-browsing" title="/fr/Add-ons/SDK/High-Level_APIs/private-browsing"> <code>private-browsing</code> Module </a> .</p> + +<h2 id="Globals">Globals</h2> + +<h3 id="Propriétés">Propriétés</h3> + +<h4 class="addon-sdk-api-name" id="storage"><code>storage</code></h4> + +<p>Un objet persistant privé de votre add-on.</p> + +<h4 class="addon-sdk-api-name" id="quotaUsage"><code>quotaUsage</code></h4> + +<p>Un certain nombre dans l'intervalle [0, Infinity) qui indique le pourcentage de quota occupé par le stockage. Une valeur dans l'intervalle [0, 1] indique que le stockage est dans le quota. Une valeur supérieure à 1 indique que le stockage dépasse le quota.</p> + +<h3 id="Événements">Événements</h3> + +<h4 class="addon-sdk-api-name" id="OverQuota"><code>OverQuota</code></h4> + +<p>Le module émet cet événement lorsque votre stockage add-ons dépasse son quota.</p> diff --git a/files/fr/mozilla/add-ons/sdk/high-level_apis/tabs/index.html b/files/fr/mozilla/add-ons/sdk/high-level_apis/tabs/index.html new file mode 100644 index 0000000000..5ffa11d9a4 --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/high-level_apis/tabs/index.html @@ -0,0 +1,669 @@ +--- +title: tabs +slug: Mozilla/Add-ons/SDK/High-Level_APIs/tabs +translation_of: Archive/Add-ons/Add-on_SDK/High-Level_APIs/tabs +--- +<p>{{AddonSidebar}}</p> + +<div class="note"> +<p>Stable</p> +</div> + +<p><span class="seoSummary">Ouvre, manipule, accède et recevoir les événements des onglets.</span></p> + +<h2 id="Utilisation">Utilisation</h2> + +<h3 id="Ouvrez_un_onglet">Ouvrez un onglet</h3> + +<p>Vous pouvez ouvrir un nouvel onglet, en spécifiant diverses propriétés, y compris l'emplacement:</p> + +<pre class="brush: js">var tabs = require("sdk/tabs"); +tabs.open("http://www.example.com");</pre> + +<h3 id="Track_tabs">Track tabs</h3> + +<p>You can register event listeners to be notified when tabs open, close, finish loading DOM content, or are made active or inactive:</p> + +<pre class="brush: js">var tabs = require("sdk/tabs"); + +// Listen for tab openings. +tabs.on('open', function onOpen(tab) { + myOpenTabs.push(tab); +}); + +// Listen for tab content loads. +tabs.on('ready', function(tab) { + console.log('tab is loaded', tab.title, tab.url); +});</pre> + +<h3 id="Access_tabs">Access tabs</h3> + +<p>The module itself can be used as a list of all opened tabs across all windows. In particular, you can enumerate it:</p> + +<pre class="brush: js">var tabs = require('sdk/tabs'); +for (let tab of tabs) + console.log(tab.title);</pre> + +<p>You can also access individual tabs by index:</p> + +<pre class="brush: js">var tabs = require('sdk/tabs'); + +tabs.on('ready', function () { + console.log('first: ' + tabs[0].title); + console.log('last: ' + tabs[tabs.length-1].title); +});</pre> + +<p>You can access the currently active tab:</p> + +<pre class="brush: js">var tabs = require('sdk/tabs'); + +tabs.on('activate', function () { + console.log('active: ' + tabs.activeTab.url); +});</pre> + +<h3 id="Track_a_single_tab">Track a single tab</h3> + +<p>Given a tab, you can register event listeners to be notified when the tab is closed, activated or deactivated, or when the page hosted by the tab is loaded or retrieved from the <a href="https://developer.mozilla.org/en-US/docs/Working_with_BFCache">"back-forward cache"</a>:</p> + +<pre class="brush: js">var tabs = require("sdk/tabs"); + +function onOpen(tab) { + console.log(tab.url + " is open"); + tab.on("pageshow", logShow); + tab.on("activate", logActivate); + tab.on("deactivate", logDeactivate); + tab.on("close", logClose); +} + +function logShow(tab) { + console.log(tab.url + " is loaded"); +} + +function logActivate(tab) { + console.log(tab.url + " is activated"); +} + +function logDeactivate(tab) { + console.log(tab.url + " is deactivated"); +} + +function logClose(tab) { + console.log(tab.url + " is closed"); +} + +tabs.on('open', onOpen);</pre> + +<h3 id="Manipulate_a_tab">Manipulate a tab</h3> + +<p>You can get and set various properties of tabs (but note that properties relating to the tab's content, such as the URL, will not contain valid values until after the tab's <code>ready</code> event fires). By setting the <code>url</code> property you can load a new page in the tab:</p> + +<pre class="brush: js">var tabs = require("sdk/tabs"); +tabs.on('activate', function(tab) { + tab.url = "http://www.example.com"; +});</pre> + +<h3 id="Run_scripts_in_a_tab">Run scripts in a tab</h3> + +<p>You can attach a <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">content script</a> to the page hosted in a tab, and use that to access and manipulate the page's content (see the <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">Modifying the Page Hosted by a Tab</a> tutorial):</p> + +<pre class="brush: js">var tabs = require("sdk/tabs"); + +tabs.on('activate', function(tab) { + var worker = tab.attach({ + contentScript: 'self.port.emit("html", document.body.innerHTML);' + }); + worker.port.on("html", function(message) { + console.log(message) + }) +});</pre> + +<p>Note that <code>tab.attach</code> is tab-centric: if the user navigates to a new page in the same tab, then the worker and content scripts will be reattached to the new page.</p> + +<h3 id="Attaching_stylesheets">Attaching stylesheets</h3> + +<div class="geckoVersionNote"> +<p>New in Firefox 34.</p> +</div> + +<p>You can't attach style sheets to a tab using <code>tab.attach()</code>, but from Firefox 34 onwards you can attach and detach them using the low-level <a href="/en-US/Add-ons/SDK/Low-Level_APIs/stylesheet_style">stylesheet/style</a> and <a href="/en-US/Add-ons/SDK/Low-Level_APIs/content_mod">content/mod</a> APIs. Here's an add-on that uses a toggle button to attach a stylesheet to the active tab, and detach it again. The stylesheet is called "style.css" and is located in the add-on's "data" directory:</p> + +<pre class="brush: js">var tabs = require("sdk/tabs"); +var { attach, detach } = require('sdk/content/mod'); +var { Style } = require('sdk/stylesheet/style'); +var { ToggleButton } = require("sdk/ui/button/toggle"); + +var style = Style({ + uri: './style.css' +}); + +var button = ToggleButton({ + id: "stylist", + label: "stylist", + icon: "./icon-16.png", + onChange: function(state) { + if (state.checked) { + attach(style, tabs.activeTab); + } + else { + detach(style, tabs.activeTab); + } + } +});</pre> + +<h3 id="Private_windows">Private windows</h3> + +<p>If your add-on has not opted into private browsing, then you won't see any tabs that are hosted by private browser windows.</p> + +<p>Tabs hosted by private browser windows won't be seen if you enumerate the <code>tabs</code> module itself, and you won't receive any events for them.</p> + +<p>To learn more about private windows, how to opt into private browsing, and how to support private browsing, refer to the <a href="/en-US/Add-ons/SDK/High-Level_APIs/private-browsing">documentation for the <code>private-browsing</code> module</a>.</p> + +<h3 id="Converting_to_XUL_tabs">Converting to XUL tabs</h3> + +<p>To convert from the high-level <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#Tab"><code>Tab</code></a> objects used in this API to the low-level <a href="/en-US/docs/Mozilla/Tech/XUL/tab">XUL <code>tab</code></a> objects used in the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/tabs_utils"><code>tabs/utils</code></a> API and by traditional add-ons, use the <code>viewFor()</code> function exported by the <code>viewFor</code> module.</p> + +<p>To convert back the other way, from a XUL <code>tab</code> to a high-level <code>Tab</code> object, use the <code>modelFor()</code> function, exported by the <code>modelFor</code> module.</p> + +<p>Here's an example converting from a high-level <code>Tab</code> to a XUL <code>tab</code> and then back the other way:</p> + +<pre class="brush: js">var { modelFor } = require("sdk/model/core"); +var { viewFor } = require("sdk/view/core"); + +var tabs = require("sdk/tabs"); +var tab_utils = require("sdk/tabs/utils"); + +function mapHighLevelToLowLevel(tab) { + // get the XUL tab that corresponds to this high-level tab + var lowLevelTab = viewFor(tab); + // now we can, for example, access the tab's content directly + var browser = tab_utils.getBrowserForTab(lowLevelTab); + console.log(browser.contentDocument.body.innerHTML); + // get the high-level tab back from the XUL tab + var highLevelTab = modelFor(lowLevelTab); + console.log(highLevelTab.url); +} + +tabs.on("ready", mapHighLevelToLowLevel); +</pre> + +<p>Note that directly accessing XUL objects and web content like this means you're no longer protected by the compatibility guarantees made by the SDK's high-level APIs. In particular, your code might not work with <a href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">multiprocess Firefox</a>.</p> + +<h2 id="Globals">Globals</h2> + +<h3 id="Functions">Functions</h3> + +<h4 class="addon-sdk-api-name" id="open(options)"><code>open(options)</code></h4> + +<p>Opens a new tab. The new tab will open in the active window or in a new window, depending on the <code>inNewWindow</code> option.</p> + +<p><strong>Example</strong></p> + +<pre class="brush: js">var tabs = require("sdk/tabs"); + +// Open a new tab on active window and make tab active. +tabs.open("http://www.mysite.com"); + +// Open a new tab in a new window and make it active. +tabs.open({ + url: "http://www.mysite.com", + inNewWindow: true +}); + +// Open a new tab on active window in the background. +tabs.open({ + url: "http://www.mysite.com", + inBackground: true +}); + +// Open a new tab as an app tab and do something once it's open. +tabs.open({ + url: "http://www.mysite.com", + isPinned: true, + onOpen: function onOpen(tab) { + // do stuff like listen for content + // loading. + } +});</pre> + +<h5 id="Parameters">Parameters</h5> + +<p><strong>options : object</strong><br> + Required options:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col"> </th> + </tr> + </thead> + <tbody> + <tr> + <td>url</td> + <td>string</td> + <td> + <p>String URL to be opened in the new tab. This is a required property.</p> + </td> + </tr> + </tbody> +</table> + +<p>Optional options:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col"> </th> + </tr> + </thead> + <tbody> + <tr> + <td>isPrivate</td> + <td>boolean</td> + <td> + <p>Boolean which will determine whether the new tab should be private or not. If your add-on does not support private browsing this will have no effect. See the <a href="/en-US/Add-ons/SDK/High-Level_APIs/private-browsing">private-browsing</a> documentation for more information. Defaults to <code>false</code>.</p> + </td> + </tr> + <tr> + <td>inNewWindow</td> + <td>boolean</td> + <td> + <p>If present and true, a new browser window will be opened and the URL will be opened in the first tab in that window. This is an optional property.</p> + </td> + </tr> + <tr> + <td>inBackground</td> + <td>boolean</td> + <td> + <p>If present and true, the new tab will be opened to the right of the active tab and will not be active. This is an optional property.</p> + </td> + </tr> + <tr> + <td>isPinned</td> + <td>boolean</td> + <td> + <p>If present and true, then the new tab will be pinned as an <a href="http://support.mozilla.com/en-US/kb/what-are-app-tabs">app tab</a>.</p> + </td> + </tr> + <tr> + <td>onOpen</td> + <td>function</td> + <td> + <p>A callback function that will be registered for the 'open' event. This is an optional property.</p> + </td> + </tr> + <tr> + <td>onClose</td> + <td>function</td> + <td> + <p>A callback function that will be registered for the 'close' event. This is an optional property.</p> + </td> + </tr> + <tr> + <td>onReady</td> + <td>function</td> + <td> + <p>A callback function that will be registered for the 'ready' event. This is an optional property.</p> + </td> + </tr> + <tr> + <td>onLoad</td> + <td>function</td> + <td> + <p>A callback function that will be registered for the 'load' event. This is an optional property.</p> + </td> + </tr> + <tr> + <td>onPageShow</td> + <td>function</td> + <td> + <p>A callback function that will be registered for the 'pageshow' event. This is an optional property.</p> + </td> + </tr> + <tr> + <td>onActivate</td> + <td>function</td> + <td> + <p>A callback function that will be registered for the 'activate' event. This is an optional property.</p> + </td> + </tr> + <tr> + <td>onDeactivate</td> + <td>function</td> + <td> + <p>A callback function that will be registered for the 'deactivate' event. This is an optional property.</p> + </td> + </tr> + </tbody> +</table> + +<h3 id="Properties">Properties</h3> + +<h4 class="addon-sdk-api-name" id="activeTab"><code>activeTab</code></h4> + +<p>The currently active tab in the active window. This property is read-only. To activate a <code>Tab</code> object, call its <code>activate</code> method.</p> + +<p><strong>Example</strong></p> + +<pre class="brush: js">// Get the active tab's title. +var tabs = require("sdk/tabs"); +console.log("title of active tab is " + tabs.activeTab.title);</pre> + +<h4 class="addon-sdk-api-name" id="length"><code>length</code></h4> + +<p>The number of open tabs across all windows.</p> + +<h3 id="Events">Events</h3> + +<h4 class="addon-sdk-api-name" id="open"><code>open</code></h4> + +<p>This event is emitted when a new tab is opened. This does not mean that the content has loaded, only that the browser tab itself is fully visible to the user.</p> + +<p>Properties relating to the tab's content (for example: <code>title</code>, <code>favicon</code>, and <code>url</code>) will not be correct at this point. If you need to access these properties, listen for the <code>ready</code> event:</p> + +<pre class="brush: js">var tabs = require("sdk/tabs"); +tabs.on('open', function(tab){ + tab.on('ready', function(tab){ + console.log(tab.url); + }); +});</pre> + +<h5 id="Arguments">Arguments</h5> + +<p><strong>Tab</strong> : Listeners are passed the tab object that just opened.</p> + +<h4 class="addon-sdk-api-name" id="close"><code>close</code></h4> + +<p>This event is emitted when a tab is closed. When a window is closed this event will be emitted for each of the open tabs in that window.</p> + +<h5 id="Arguments_2">Arguments</h5> + +<p><strong>Tab</strong> : Listeners are passed the tab object that has closed.</p> + +<h4 class="addon-sdk-api-name" id="ready"><code>ready</code></h4> + +<p>This event is emitted when the DOM for a tab's content is ready. It is equivalent to the <code>DOMContentLoaded</code> event for the given content page.</p> + +<p>A single tab will emit this event every time the DOM is loaded: so it will be emitted again if the tab's location changes or the content is reloaded.</p> + +<p>After this event has been emitted, all properties relating to the tab's content can be used.</p> + +<h5 id="Arguments_3">Arguments</h5> + +<p><strong>Tab</strong> : Listeners are passed the tab object that has loaded.</p> + +<h4 class="addon-sdk-api-name" id="activate"><code>activate</code></h4> + +<p>This event is emitted when an inactive tab is made active.</p> + +<h5 id="Arguments_4">Arguments</h5> + +<p><strong>Tab</strong> : Listeners are passed the tab object that has become active.</p> + +<h4 class="addon-sdk-api-name" id="deactivate"><code>deactivate</code></h4> + +<p>This event is emitted when the active tab is made inactive.</p> + +<h5 id="Arguments_5">Arguments</h5> + +<p><strong>Tab</strong> : Listeners are passed the tab object that has become inactive.</p> + +<h2 id="Tab">Tab</h2> + +<p>A <code>Tab</code> instance represents a single open tab. It contains various tab properties, several methods for manipulation, as well as per-tab event registration.</p> + +<p>Tabs emit all the events described in the Events section. Listeners are passed the <code>Tab</code> object that triggered the event.</p> + +<h3 id="Methods">Methods</h3> + +<h4 class="addon-sdk-api-name" id="pin()"><code>pin()</code></h4> + +<p>Pins this tab as an <a href="http://support.mozilla.com/en-US/kb/what-are-app-tabs">app tab</a>.</p> + +<h4 class="addon-sdk-api-name" id="unpin()"><code>unpin()</code></h4> + +<p>Unpins this tab.</p> + +<h4 class="addon-sdk-api-name" id="close(callback)"><code>close(callback)</code></h4> + +<p>Closes this tab.</p> + +<h5 id="Parameters_2">Parameters</h5> + +<p><strong>callback : function</strong><br> + A function to be called when the tab finishes its closing process. This is an optional argument.</p> + +<h4 class="addon-sdk-api-name" id="reload()"><code>reload()</code></h4> + +<p>Reloads this tab.</p> + +<h4 class="addon-sdk-api-name" id="activate()"><code>activate()</code></h4> + +<p>Makes this tab active, which will bring this tab to the foreground.</p> + +<h4 class="addon-sdk-api-name" id="getThumbnail()"><code>getThumbnail()</code></h4> + +<p>Returns thumbnail data URI of the page currently loaded in this tab.</p> + +<h4 class="addon-sdk-api-name" id="attach(options)"><code>attach(options)</code></h4> + +<p>Attach one or more scripts to the document loaded in the tab. Note that by attaching inside <em>ready</em> event, this becomes tab-centric: if the user navigates to a new page in the same tab, then the content scripts will be reattached to the new page.</p> + +<p><strong>Example</strong></p> + +<pre class="brush: js">var tabs = require("sdk/tabs"); + +tabs.on('ready', function(tab) { + var worker = tab.attach({ + contentScript: + 'document.body.style.border = "5px solid red";' + }); +});</pre> + +<h5 id="Parameters_3">Parameters</h5> + +<p><strong>options : object</strong><br> + Optional options:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col"> </th> + </tr> + </thead> + <tbody> + <tr> + <td>contentScriptFile</td> + <td>string,array</td> + <td> + <p>The local file URLs of content scripts to load. Content scripts specified by this option are loaded <em>before</em> those specified by the <code>contentScript</code> option. Optional.</p> + </td> + </tr> + <tr> + <td>contentScript</td> + <td>string,array</td> + <td> + <p>A string or an array of strings of code to be evaluated in the context. Content scripts specified by this option are loaded <em>after</em> those specified by the <code>contentScriptFile</code> option. Optional.</p> + </td> + </tr> + <tr> + <td>contentScriptOptions</td> + <td>object</td> + <td> + <p>You can use this option to define read-only values for your content scripts.</p> + + <p>The option consists of an object literal listing <code>name:value</code> pairs for the values you want to provide to the content script. For example:</p> + + <pre class="brush: js"> +// main.js + +const tabs = require("sdk/tabs"); + +tabs.open({ + url: "./page.html", + onReady: function(tab) { + tab.attach({ + contentScriptFile: "./content-script.js", + contentScriptOptions: { + a: "blah" + } + }); + } +});</pre> + + <p>The values are accessible to content scripts via the <code>self.options</code> property:</p> + + <pre class="brush: js"> +// content-script.js + +alert(self.options.a);</pre> + </td> + </tr> + <tr> + <td>onMessage</td> + <td>function</td> + <td> + <p>A function called when the content worker receives a message from content scripts. Listeners are passed a single argument, the message posted from the content script. Optional.</p> + </td> + </tr> + <tr> + <td>onError</td> + <td>function</td> + <td>A function called when the content worker receives an error from content scripts. Listeners are passed a single argument, <code>error</code>, which is the error posted from the content script and an object of type <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error">Error</a>. Optional</td> + </tr> + </tbody> +</table> + +<h5 id="Returns">Returns</h5> + +<p><strong>Worker</strong> : The <a href="/en-US/Add-ons/SDK/Low-Level_APIs/content_worker">Worker</a> object can be used to communicate with the content script. See <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">Content Scripts guide</a> to learn the details.</p> + +<h3 id="Properties_2">Properties</h3> + +<h4 class="addon-sdk-api-name" id="id"><code>id</code></h4> + +<p>The unique id for the tab. This property is read-only.</p> + +<h4 class="addon-sdk-api-name" id="title"><code>title</code></h4> + +<p>The title of the tab (usually the title of the page currently loaded in the tab) This property can be set to change the tab title.</p> + +<h4 class="addon-sdk-api-name" id="url"><code>url</code></h4> + +<p>The URL of the page currently loaded in the tab. This property can be set to load a different URL in the tab.</p> + +<h4 class="addon-sdk-api-name" id="favicon"><code>favicon</code></h4> + +<p>The URL of the favicon for the page currently loaded in the tab. This property is read-only.</p> + +<div class="warning">This property is deprecated. From version 1.15, use the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/places_favicon">favicon module's <code>getFavicon()</code></a> function instead.</div> + +<h4 class="addon-sdk-api-name" id="contentType"><code>contentType</code></h4> + +<div class="note"> +<p><strong>This is currently an experimental API, so we might change it in future releases.</strong></p> + +<p>Returns the MIME type that the document currently loaded in the tab is being rendered as. This may come from HTTP headers or other sources of MIME information, and might be affected by automatic type conversions performed by either the browser or extensions. This property is read-only.</p> +</div> + +<h4 class="addon-sdk-api-name" id="index"><code>index</code></h4> + +<p>The index of the tab relative to other tabs in the application window. This property can be set to change its relative position.</p> + +<h4 class="addon-sdk-api-name" id="isPinned"><code>isPinned</code></h4> + +<p>Whether or not this tab is pinned as an <a href="http://support.mozilla.com/en-US/kb/what-are-app-tabs">app tab</a>. This property is read-only.</p> + +<h4 class="addon-sdk-api-name" id="window"><code>window</code></h4> + +<p>The <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows#BrowserWindow"><code>window</code></a> object for this tab.</p> + +<h4 class="addon-sdk-api-name" id="readyState"><code>readyState</code></h4> + +<div class="geckoVersionNote"> +<p>New in Firefox 33.</p> +</div> + +<p>A string telling you the load state of the document hosted by this tab. This corresponds directly to <a href="/en-US/docs/Web/API/document.readyState"><code>Document.readyState</code></a>. It has one of four possible values:</p> + +<ul> + <li>"uninitialized": the tab's document is not yet loading</li> + <li>"loading": the tab's document is still in the process of loading</li> + <li>"interactive": the tab's document has loaded and is parsed, but resources such as images and stylesheets may still be loading</li> + <li>"complete": the tab's document and all resources are fully loaded</li> +</ul> + +<p>Once a tab's <code>readyState</code> has entered "interactive", you can retrieve properties such as the document's URL.</p> + +<h3 id="Events_2">Events</h3> + +<h4 class="addon-sdk-api-name" id="close_2"><code>close</code></h4> + +<p>This event is emitted when the tab is closed. It's also emitted when the tab's window is closed.</p> + +<h5 id="Arguments_6">Arguments</h5> + +<p><strong>Tab</strong> : Listeners are passed the tab object.</p> + +<h4 class="addon-sdk-api-name" id="ready_2"><code>ready</code></h4> + +<p>This event is emitted when the DOM for the tab's content is ready. It is equivalent to the <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/DOMContentLoaded"><code>DOMContentLoaded</code></a> event for the given content page. At this point the document itself is fully loaded and parsed, but resources such as stylesheets and images may still be loading.</p> + +<p>A single tab will emit this event every time the DOM is loaded: so it will be emitted again if the tab's location changes or the content is reloaded. After this event has been emitted, all properties relating to the tab's content can be used.</p> + +<h5 id="Arguments_7">Arguments</h5> + +<p><strong>Tab</strong> : Listeners are passed the tab object.</p> + +<h4 class="addon-sdk-api-name" id="load"><code>load</code></h4> + +<p>This event is emitted when the page for the tab's content is loaded. It is equivalent to the <a href="https://developer.mozilla.org/en-US/docs/Web/Reference/Events/load"><code>load</code></a> event for the given content page. At this point the document and its resources, such as images and stylesheets, have finished loading.</p> + +<p>This event can be used for pages that do not have a <code>DOMContentLoaded</code> event, like images. For pages that have a <code>DOMContentLoaded</code> event, <code>load</code> is fired after <code>ready</code>.</p> + +<p>A single tab will emit this event every time the page is loaded: so it will be emitted again if the tab's location changes or the content is reloaded. After this event has been emitted, all properties relating to the tab's content can be used.</p> + +<h5 id="Arguments_8">Arguments</h5> + +<p><strong>Tab</strong> : Listeners are passed the tab object.</p> + +<h4 class="addon-sdk-api-name" id="pageshow"><code>pageshow</code></h4> + +<p>The <code>pageshow</code> event is emitted when the page for a tab's content is loaded. It is equivalent to the <a href="https://developer.mozilla.org/en-US/docs/DOM/Mozilla_event_reference/pageshow"><code>pageshow</code></a> event for the given content page.</p> + +<p>This event is similar to the <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#load"><code>load</code></a> and <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#ready"><code>ready</code></a> events, except unlike <code>load</code> and <code>ready</code>, <code>pageshow</code> is triggered if the page was retrieved from the <a href="https://developer.mozilla.org/en-US/docs/Working_with_BFCache">bfcache</a>. This means that if the user loads a page, loads a new page, then moves back to the previous page using the "Back" button, the <code>pageshow</code> event is emitted when the user moves back to the previous page, while the <code>load</code> and <code>ready</code> events are not.</p> + +<p>This event is <em>not</em> emitted when the tab is made the active tab: to get notified about that, you need to listen to the <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#activate"><code>activate</code></a> event.</p> + +<p>After this event has been emitted, all properties relating to the tab's content can be used. It is emitted after <code>load</code> and <code>ready</code>.</p> + +<h5 id="Arguments_9">Arguments</h5> + +<p><strong>Tab</strong> : Listeners are passed the tab object.</p> + +<p><strong>persisted</strong> : Listeners are passed a boolean value indicating whether or not the page was loaded from the <a href="https://developer.mozilla.org/en-US/docs/Working_with_BFCache">bfcache</a>.</p> + +<h4 class="addon-sdk-api-name" id="activate_2"><code>activate</code></h4> + +<p>This event is emitted when the tab is made active.</p> + +<p>Note that you cannot guarantee that a tab's content, or even its <code>url</code>, are initialized at the time <code>activate</code> is emitted. This is because when a new tab is opened, its <code>activate</code> event may be emitted before the content is loaded.</p> + +<p>You can use the tab's <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#readyState"><code>readyState</code></a> property to determine whether the tab's content and <code>url</code> will be available: if <code>readyState</code> is <code>uninitialized</code> or <code>loading</code>, then you can't access the tab's properties and must wait for the tab's <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#ready_2"><code>ready</code></a> event.</p> + +<h5 id="Arguments_10">Arguments</h5> + +<p><strong>Tab</strong> : Listeners are passed the tab object.</p> + +<h4 class="addon-sdk-api-name" id="deactivate_2"><code>deactivate</code></h4> + +<p>This event is emitted when the tab is made inactive.</p> + +<h5 id="Arguments_11">Arguments</h5> + +<p><strong>Tab</strong> : Listeners are passed the tab object.</p> diff --git a/files/fr/mozilla/add-ons/sdk/index.html b/files/fr/mozilla/add-ons/sdk/index.html new file mode 100644 index 0000000000..4de1603cd2 --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/index.html @@ -0,0 +1,337 @@ +--- +title: Add-on SDK +slug: Mozilla/Add-ons/SDK +tags: + - Add-on SDK + - Jetpack +translation_of: Archive/Add-ons/Add-on_SDK +--- +<p> </p> + +<div class="warning"> +<p>Support for extensions using XUL/XPCOM or the Add-on SDK was removed in Firefox 57, released November 2017. As there is no supported version of Firefox enabling these technologies, this page will be removed by December 2020.</p> + +<p>Add-ons using the techniques described in this document are considered a legacy technology in Firefox. Don't use these techniques to develop new add-ons. Use <a href="/en-US/Add-ons/WebExtensions">WebExtensions</a> instead. If you maintain an add-on which uses the techniques described here, consider migrating it to use WebExtensions.</p> + +<p><strong>Starting from <a href="https://wiki.mozilla.org/RapidRelease/Calendar">Firefox 53</a>, no new legacy add-ons will be accepted on addons.mozilla.org (AMO) for desktop Firefox and Firefox for Android.</strong></p> + +<p><strong>Starting from <a href="https://wiki.mozilla.org/RapidRelease/Calendar">Firefox 57</a>, only extensions developed using WebExtensions APIs will be supported on Desktop Firefox and Firefox for Android. </strong></p> + +<p>Even before Firefox 57, changes coming up in the Firefox platform will break many legacy extensions. These changes include multiprocess Firefox (e10s), sandboxing, and multiple content processes. Legacy extensions that are affected by these changes should migrate to use WebExtensions APIs if they can. See the <a href="https://blog.mozilla.org/addons/2017/02/16/the-road-to-firefox-57-compatibility-milestones/">"Compatibility Milestones" document</a> for more information.</p> + +<p>A wiki page containing <a href="https://wiki.mozilla.org/Add-ons/developer/communication">resources, migration paths, office hours, and more</a>, is available to help developers transition to the new technologies.</p> +</div> + +<section class="Quick_links" id="Quick_Links"> +<ol> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions"><strong>Browser extensions</strong></a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions#Getting_started">Getting started</a> + <ol> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions">What are extensions?</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension">Your first extension</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_second_WebExtension">Your second extension</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">Anatomy of an extension</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Examples">Example extensions</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/What_next_">What next?</a></li> + </ol> + </li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions#Concepts">Concepts</a> + <ol> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Using_the_JavaScript_APIs">Using the JavaScript APIs</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">Content scripts</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns">Match patterns</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Working_with_files">Working with files</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Internationalization">Internationalization</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Security_best_practices">Security best practices</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Content Security Policy</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging">Native messaging</a></li> + </ol> + </li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions#User_Interface">User interface</a> + <ol> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface">User Interface</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action">Toolbar button</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Page_actions">Address bar button</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars">Sidebars</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Context_menu_items">Context menu items</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages">Options page</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages">Extension pages</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Notifications">Notifications</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Omnibox">Address bar suggestions</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/devtools_panels">Developer tools panels</a></li> + </ol> + </li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions#How_to">How to</a> + <ol> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests">Intercept HTTP requests</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Modify_a_web_page">Modify a web page</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Safely_inserting_external_content_into_a_page">Insert external content</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar">Add a button to the toolbar</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Implement_a_settings_page">Implement a settings page</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Working_with_the_Tabs_API">Work with the Tabs API</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Work_with_the_Bookmarks_API">Work with the Bookmarks API</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Work_with_the_Cookies_API">Work with the Cookies API</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Work_with_contextual_identities">Work with contextual identities</a></li> + </ol> + </li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions#Porting">Porting</a> + <ol> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension">Porting a Google Chrome extension</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Porting_a_legacy_Firefox_add-on">Porting a legacy Firefox extension</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Embedded_WebExtensions">Embedded WebExtensions</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK">Comparison with the Add-on SDK</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions">Comparison with XUL/XPCOM extensions</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities">Chrome incompatibilities</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Differences_between_desktop_and_Android">Differences between desktop and Android</a></li> + </ol> + </li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions#Firefox_workflow">Firefox workflow</a> + <ol> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/User_experience_best_practices">User Experience</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">Temporary Installation in Firefox</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Debugging">Debugging</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Testing_persistent_and_restart_features">Testing persistent and restart features</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Developing_WebExtensions_for_Firefox_for_Android">Developing for Firefox for Android</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">Getting started with web-ext</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/web-ext_command_reference">web-ext command reference</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">Extensions and the Add-on ID</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Request_the_right_permissions">Request the right permissions</a></li> + </ol> + </li> + <li data-default-state="closed"><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API">JavaScript APIs</a> + <ol> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">Browser support for JavaScript APIs</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/alarms">alarms</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks">bookmarks</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">browserAction</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings">browserSettings</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browsingData">browsingData</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/clipboard">clipboard</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/commands">commands</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contentScripts">contentScripts</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities">contextualIdentities</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies">cookies</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow">devtools.inspectedWindow</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools.network">devtools.network</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools.panels">devtools.panels</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/dns">dns</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/downloads">downloads</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/events">events</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/extension">extension</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/extensionTypes">extensionTypes</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/find">find</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/history">history</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/i18n">i18n</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/identity">identity</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/idle">idle</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/management">management</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/menus">menus</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/notifications">notifications</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/omnibox">omnibox</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction">pageAction</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/permissions">permissions</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pkcs11">pkcs11</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/privacy">privacy</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy">proxy</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime">runtime</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/search">search</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sessions">sessions</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction">sidebarAction</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage">storage</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs">tabs</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/theme">theme</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/topSites">topSites</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/types">types</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webNavigation">webNavigation</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/windows">windows</a></li> + </ol> + </li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json">Manifest keys</a> + <ol> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/applications">applications</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/author">author</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/background">background</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides">chrome_settings_overrides</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_url_overrides">chrome_url_overrides</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/commands">commands</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_security_policy">content_security_policy</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/default_locale">default_locale</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/description">description</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/developer">developer</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page">devtools_page</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url">homepage_url</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons">icons</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/incognito">incognito</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version">manifest_version</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/name">name</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/omnibox">omnibox</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/protocol_handlers">protocol_handlers</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/short_name">short_name</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/version">version</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/version_name">version_name</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a></li> + </ol> + </li> + <li><a href="/en-US/docs/Mozilla/Add-ons/Themes"><strong>Themes</strong></a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/Themes/Theme_concepts">Browser themes</a> + <ol> + <li><a href="/en-US/docs/Mozilla/Add-ons/Themes/Theme_concepts">Browser theme concepts</a></li> + </ol> + </li> + <li><a href="/en-US/docs/Mozilla/Add-ons/Themes/Lightweight_themes">Lightweight themes</a> + <ol> + <li><a href="/en-US/docs/Mozilla/Add-ons/Themes/Lightweight_themes">Lightweight themes</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/Themes/Lightweight_Themes/FAQ">Lightweight themes FAQ</a></li> + </ol> + </li> + <li><a href="/en-US/docs/Mozilla/Add-ons/Distribution"><strong>Publishing and Distribution</strong></a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/Distribution">Publishing add-ons</a> + <ol> + <li><a href="/en-US/docs/Mozilla/Add-ons/Distribution">Signing and distribution overview</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Package_your_extension_">Package your extension</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/Distribution/Submitting_an_add-on">Submit an add-on</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/Source_Code_Submission">Source code submission</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/Distribution/Resources_for_publishers">Resources for publishers</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/Listing">Creating an appealing listing</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/AMO/Policy/Reviews">Review policies</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/AMO/Policy/Agreement">Developer agreement</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/AMO/Policy/Featured">Featured add-ons</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/Distribution/Retiring_your_extension">Retiring your extension</a></li> + </ol> + </li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Alternative_distribution_options">Distributing add-ons</a> + <ol> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Alternative_distribution_options/Sideloading_add-ons">For sideloading</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Alternative_distribution_options/Add-ons_for_desktop_apps">For desktop apps</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Alternative_distribution_options/Add-ons_in_the_enterprise">For an enterprise</a></li> + </ol> + </li> + <li><a href="https://discourse.mozilla.org/c/add-ons"><strong>Community and Support</strong></a></li> + <li><a href="#">Channels</a> + <ol> + <li><a href="https://blog.mozilla.org/addons">Add-ons blog</a></li> + <li><a href="https://discourse.mozilla.org/c/add-ons">Add-on forums</a></li> + <li><a href="http://stackoverflow.com/questions/tagged/firefox-addon">Stack Overflow</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/#Contact_us">Contact us</a></li> + </ol> + </li> +</ol> +</section> + +<p> </p> + +<p>Using the Add-on SDK, you can create Firefox add-ons. You can use various standard Web technologies: JavaScript, HTML, and CSS, to create the add-ons. The SDK includes JavaScript APIs, which you can use to create add-ons and tools for creating, running, testing, and packaging add-ons.</p> + +<hr> +<h3 id="Tutorials"><a href="/en-US/Add-ons/SDK/Tutorials">Tutorials</a></h3> + +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/en-US/Add-ons/SDK/Tutorials#getting-started">Getting started</a></dt> + <dd>How to <a href="/en-US/Add-ons/SDK/Tutorials/Installation">install the SDK</a> and <a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_(jpm)">use the jpm tool</a> to develop, test, and package add-ons.</dd> + <dt><a href="/en-US/Add-ons/SDK/Tutorials#interact-with-the-browser">Interact with the browser</a></dt> + <dd><a href="/en-US/Add-ons/SDK/Tutorials/Open_a_Web_Page">Open web pages</a>, <a href="/en-US/Add-ons/SDK/Tutorials/Listen_For_Page_Load">listen for pages loading</a> and <a href="/en-US/Add-ons/SDK/Tutorials/List_Open_Tabs">list open pages</a>.</dd> + <dt><a href="/en-US/Add-ons/SDK/Tutorials#development-techniques">Development techniques</a></dt> + <dd>Learn about common development techniques, such as <a href="/en-US/Add-ons/SDK/Tutorials/Unit_testing">unit testing</a>, <a href="/en-US/Add-ons/SDK/Tutorials/Logging">logging</a>, <a href="/en-US/Add-ons/SDK/Tutorials/Creating_Reusable_Modules">creating reusable modules</a>, <a href="/en-US/Add-ons/SDK/Tutorials/l10n">localization</a>, and <a href="/en-US/Add-ons/SDK/Tutorials/Mobile_development">mobile development</a>.</dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/en-US/Add-ons/SDK/Tutorials#create-user-interfaces">Create user interface components</a></dt> + <dd>Create user interface components such as <a href="/en-US/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar">toolbar buttons</a>, <a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item">context menus</a>, <a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">menu items</a>, and <a href="/en-US/Add-ons/SDK/Tutorials/Display_a_Popup">dialogs</a>.</dd> + <dt><a href="/en-US/Add-ons/SDK/Tutorials#modify-web-pages">Modify web pages</a></dt> + <dd>Modify pages <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">matching a URL pattern</a> or dynamically <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">modify a particular tab</a>.</dd> + <dt><a href="/en-US/Add-ons/SDK/Tutorials/Annotator">Putting it together</a></dt> + <dd>Walkthrough of the Annotator example add-on.</dd> +</dl> +</div> +</div> + +<hr> +<h3 id="Guides">Guides</h3> + +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/en-US/Add-ons/SDK/Guides#contributors-guide">Contributor's guide</a></dt> + <dd>Learn <a href="/en-US/Add-ons/SDK/Guides/Getting_Started">how to start contributing</a> to the SDK and about the most important idioms used in the SDK code such as <a href="/en-US/Add-ons/SDK/Guides/Modules">modules</a>, <a href="/en-US/Add-ons/SDK/Guides/Classes_and_Inheritance">classes and inheritance</a>, <a href="/en-US/Add-ons/SDK/Guides/Private_Properties">private properties</a>, and <a href="/en-US/Add-ons/SDK/Guides/Content_Processes">content processes</a>.</dd> + <dt><a href="/en-US/Add-ons/SDK/Guides#sdk-infrastructure">SDK infrastructure</a></dt> + <dd>Aspects of the SDK's underlying technology: <a href="/en-US/Add-ons/SDK/Guides/Module_structure_of_the_SDK">modules</a>, the <a href="/en-US/Add-ons/SDK/Guides/Program_ID">Program ID</a> and the rules defining <a href="/en-US/Add-ons/SDK/Guides/Firefox_Compatibility">Firefox compatibility</a>.</dd> + <dt><a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">Content scripts</a></dt> + <dd>A detailed guide to working with content scripts.</dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/en-US/Add-ons/SDK/Guides#sdk-idioms">SDK idioms</a></dt> + <dd>The SDK's <a href="/en-US/Add-ons/SDK/Guides/Working_with_Events">event framework</a> and the <a href="/en-US/Add-ons/SDK/Guides/Two_Types_of_Scripts">distinction between add-on scripts and content scripts</a>.</dd> + <dt><a href="/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">XUL migration</a></dt> + <dd>A guide to <a href="/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">porting XUL add-ons to the SDK</a>. This guide includes a <a href="/en-US/Add-ons/SDK/Guides/XUL_vs_SDK">comparison of the two toolsets</a> and a <a href="/en-US/Add-ons/SDK/Guides/Porting_the_Library_Detector">working example</a> of porting a XUL add-on.</dd> + <dt><a href="/en-US/Add-ons/SDK/Guides/Multiprocess_Firefox_and_the_SDK">Multiprocess Firefox and the SDK</a></dt> + <dd>How to check whether your add-on is compatible with multiprocess Firefox or not and fix it accordingly.</dd> +</dl> +</div> +</div> + +<hr> +<h3 id="Reference">Reference</h3> + +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/en-US/Add-ons/SDK/High-Level_APIs">High-Level APIs</a></dt> + <dd>Reference documentation for the high-level SDK APIs.</dd> + <dt><a href="/en-US/Add-ons/SDK/Tools">Tools reference</a></dt> + <dd>Reference documentation for the <a href="/en-US/Add-ons/SDK/Tools/jpm">jpm tool</a> used to develop, test and package add-ons, the <a href="/en-US/Add-ons/SDK/Tools/console">console</a> global used for logging, and the <a href="/en-US/Add-ons/SDK/Tools/package_json">package.json</a> file.</dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/en-US/Add-ons/SDK/Low-Level_APIs">Low-Level APIs</a></dt> + <dd>Reference documentation for the low-level SDK APIs.</dd> +</dl> +</div> +</div> + +<p> </p> + +<hr> +<div> +<div class="overheadIndicator communitybox" dir="ltr"> +<div class="column-container"> +<h2 id="Join_the_Add-on_SDK_community">Join the Add-on SDK community</h2> + +<div class="column-half"> +<div class="communitysubhead">Choose your preferred method for joining the discussion:</div> + +<ul class="communitymailinglist"> + <li><a href="https://mail.mozilla.org/listinfo/dev-addons">Mailing list</a></li> + <li><a href="https://twitter.com/mozillajetpack">Twitter</a></li> + <li><a href="http://stackoverflow.com/questions/tagged/firefox-addon-sdk">Stack Overflow</a></li> + <li><a href="http://groups.google.com/group/https://groups.google.com/forum/?fromgroups#!forum/mozilla-labs-jetpack">Newsgroup</a></li> + <li><a href="http://groups.google.com/group/https://groups.google.com/forum/?fromgroups#!forum/mozilla-labs-jetpack/feeds">RSS feed</a></li> +</ul> +</div> + +<div class="column-half"> +<ul class="communitycontact"> + <li><strong>IRC: </strong><a href="irc://irc.mozilla.org/jetpack">#jetpack</a> <span class="smaller">(<a href="https://wiki.mozilla.org/IRC">learn more</a>)</span></li> + <li><strong>Team info: </strong><a href="https://wiki.mozilla.org/Jetpack" title="Designs and plans for the SDK tools">Jetpack Wiki</a></li> +</ul> +</div> +</div> +</div> +</div> diff --git a/files/fr/mozilla/add-ons/sdk/low-level_apis/index.html b/files/fr/mozilla/add-ons/sdk/low-level_apis/index.html new file mode 100644 index 0000000000..0460b4ce3d --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/low-level_apis/index.html @@ -0,0 +1,24 @@ +--- +title: Low-Level APIs +slug: Mozilla/Add-ons/SDK/Low-Level_APIs +tags: + - TopicStub +translation_of: Archive/Add-ons/Add-on_SDK/Low-Level_APIs +--- +<p>Les modules de cette section implémentent des API de bas niveau. Ces modules se divisent à peu près en trois catégories:</p> + +<ul> + <li> + <p>utilitaires fondamentaux tels que la <a href="/en-US/Add-ons/SDK/Low-Level_APIs/util_collection">collection</a>. De nombreux modules complémentaires voudront probablement utiliser des modules de cette catégorie.</p> + </li> + <li> + <p>blocs de construction pour les modules de niveau supérieur, tels que les <a href="/en-US/Add-ons/SDK/Low-Level_APIs/event_core">events</a> et les <a href="/en-US/Add-ons/SDK/Low-Level_APIs/content_worker">worker</a>. Vous êtes plus susceptible de les utiliser si vous créez vos propres modules qui implémentent de nouvelles API, étendant ainsi le SDK lui-même.</p> + </li> + <li> + <p>des modules privilégiés qui exposent de puissantes capacités de bas niveau telles que <a href="/en-US/Add-ons/SDK/Low-Level_APIs/window_utils">window/utils</a> et <a href="/en-US/Add-ons/SDK/Low-Level_APIs/net_xhr">net/xhr</a>. Vous pouvez utiliser ces modules dans votre module complémentaire si vous en avez besoin, mais sachez que le coût d'un accès privilégié est la nécessité de prendre des précautions de sécurité plus élaborées. Dans de nombreux cas, ces modules ont des analogues plus simples et plus restreints parmi les "API de haut niveau" (par exemple, <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows">windows</a> ou <a href="/en-US/Add-ons/SDK/High-Level_APIs/request">request</a>).</p> + </li> +</ul> + +<p>Ces modules sont toujours en développement actif et nous prévoyons d'y apporter des modifications incompatibles dans les prochaines versions.</p> + +<p>{{ LandingPageListSubpages ("/en-US/Add-ons/SDK/Low-Level_APIs", 5) }}</p> diff --git a/files/fr/mozilla/add-ons/sdk/low-level_apis/io_byte-streams/index.html b/files/fr/mozilla/add-ons/sdk/low-level_apis/io_byte-streams/index.html new file mode 100644 index 0000000000..c37870a8cb --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/low-level_apis/io_byte-streams/index.html @@ -0,0 +1,109 @@ +--- +title: io/byte-streams +slug: Mozilla/Add-ons/SDK/Low-Level_APIs/io_byte-streams +translation_of: Archive/Add-ons/Add-on_SDK/Low-Level_APIs/io_byte-streams +--- +<p>{{AddonSidebar}}</p> + +<div class="note"> +<p>Expérimental</p> +</div> + +<p><span class="seoSummary">Fournit des flux d'octets en lecture/écriture.</span></p> + +<pre class="brush: js">function readBinaryDataFromFile (filename) { + var fileIO = require("sdk/io/file"); + var data = null; + if (fileIO.exists(filename)) { + var ByteReader = fileIO.open(filename, "rb"); + if (!ByteReader.closed) { + data = ByteReader.read(); + ByteReader.close(); + } + } + return data; +} +</pre> + +<pre class="brush: js">function writeBinaryDataToFile(data, filename) { + var fileIO = require("sdk/io/file"); + var ByteWriter = fileIO.open(filename, "wb"); + if (!ByteWriter.closed) { + ByteWriter.write(data); + ByteWriter.close(); + } +}</pre> + +<h2 id="Globals">Globals</h2> + +<h3 id="Constructeurs">Constructeurs</h3> + +<h4 class="addon-sdk-api-name" id="ByteReader(inputStream)"><code>ByteReader(inputStream)</code></h4> + +<p>Crée un flux d'entrée binaire qui lit les octets d'un flux de support.</p> + +<p>Vous pouvez également créer un objets <code>ByteReader</code> en utilisant la fonction io/file <a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/io_file#open(path.2C_mode)" title="/fr/Add-ons/SDK/Low-Level_APIs/io_file#open(path.2C_mode)"><code>open()</code></a>.</p> + +<h5 id="Paramètres">Paramètres</h5> + +<p><strong>inputStream: </strong><strong>flux</strong><br> + Le flux de support, un <a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream" title="http://mxr.mozilla.org/mozilla-central/source/xpcom/io/nsIInputStream.idl"><code>nsIInputStream</code> </a></p> + +<h4 class="addon-sdk-api-name" id="ByteWriter(outputStream)"><code>ByteWriter(outputStream)</code></h4> + +<p>Crée un flux de sortie binaire qui écrit les octets dans un flux de support.</p> + +<p>Vous pouvez également créer un objets <code>ByteWriter</code> en utilisant la fonction io/file <a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/io_file#open(path.2C_mode)"><code>open()</code></a>.</p> + +<h5 id="Parameters">Parameters</h5> + +<p><strong>outputStream : flux</strong><br> + Le flux de support, un <a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIOutputStream"><code>nsIOutputStream</code></a>.</p> + +<h2 id="ByteReader">ByteReader</h2> + +<h3 id="Méthodes">Méthodes</h3> + +<h4 class="addon-sdk-api-name" id="close()"><code>close()</code></h4> + +<p>Ferme à la fois le flux et son flux de support. Si le flux est déjà fermé, une exception est levée.</p> + +<h4 class="addon-sdk-api-name" id="read(numBytes)"><code>read(numBytes)</code></h4> + +<p>Lit une chaîne à partir du flux. Si le flux est fermé, une exception est levée.</p> + +<h5 id="Parameters_2">Parameters</h5> + +<p><strong>numBytes: nombre </strong> <être> Le nombre d'octets à lire. Sinon donné, la totalité du flux est lu.</p> + +<h5 id="Retours">Retours</h5> + +<p><strong>string </strong>: Une chaîne contenant les octets lus. Si le flux est finit, retourne une chaîne vide.</p> + +<h3 id="Propriétés">Propriétés</h3> + +<h4 class="addon-sdk-api-name" id="closed"><code>closed</code></h4> + +<p>Vrai si le flux est fermé.</p> + +<h2 id="ByteWriter">ByteWriter</h2> + +<h3 id="Méthodes_2">Méthodes</h3> + +<h4 class="addon-sdk-api-name" id="close()_2"><code>close()</code></h4> + +<p>Ferme à la fois le flux et son flux de support. Si le flux est déjà fermé, une exception est levée.</p> + +<h4 class="addon-sdk-api-name" id="write(str)"><code>write(str)</code></h4> + +<p>Ecrit une chaîne dans le flux. Si le flux est fermé, une exception est levée.</p> + +<h5 id="Paramètres_2">Paramètres</h5> + +<p>str: string La chaîne à écrire .</p> + +<h3 id="Propriétés_2">Propriétés</h3> + +<h4 class="addon-sdk-api-name" id="closed_2"><code>closed</code></h4> + +<p>Vrai si le flux est fermé.</p> diff --git a/files/fr/mozilla/add-ons/sdk/low-level_apis/io_file/index.html b/files/fr/mozilla/add-ons/sdk/low-level_apis/io_file/index.html new file mode 100644 index 0000000000..51900f5799 --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/low-level_apis/io_file/index.html @@ -0,0 +1,196 @@ +--- +title: io/file +slug: Mozilla/Add-ons/SDK/Low-Level_APIs/io_file +translation_of: Archive/Add-ons/Add-on_SDK/Low-Level_APIs/io_file +--- +<p>{{AddonSidebar}}</p> + +<div class="note"> +<p>Expérimental</p> +</div> + +<p><span class="seoSummary">Permet d'accéder au système de fichiers local.</span></p> + +<h2 id="Utilisation">Utilisation</h2> + +<h3 id="Paths">Paths</h3> + +<p>Les specifications Path de cette API sont spécifiques à l'OS. Cela signifie que les chemins Windows sont spécifiés en utilisant le séparateur antislash (<code>\</code>), et sur les systèmes de type Unix comme Linux et OS X les slash sont utilisés (<code>/</code>).</p> + +<p>To ensure your add-on works for everyone, generate paths using the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/io_file#join(...)"><code>join</code></a> function. Unfortunately this API does not currently provide a way to obtain an absolute base path which you could then use with <code>join</code>. For now, you need to <a href="/en-US/Add-ons/SDK/Tutorials/Chrome_Authority"><code>require("chrome")</code></a> and use the XPCOM directory service as described in <a href="/en-US/Add-ons/Code_snippets/File_I_O">this article about File I/O</a>.</p> + +<p>Note that if you do decide to hardcode Windows-style paths, be sure to escape backslashes in strings. For example, to specify the file at <code>C:\Users\Myk</code>, you need to use the string <code>"C:\\Users\\Myk"</code>, not <code>"C:\Users\Myk"</code>. Read more about <a href="/en-US/docs/Web/JavaScript/Guide/Values,_variables,_and_literals#Escaping_characters">escaping characters in strings</a>.</p> + +<h2 id="Globals">Globals</h2> + +<h3 id="Functions">Functions</h3> + +<h4 class="addon-sdk-api-name" id="basename(path)"><code>basename(path)</code></h4> + +<div class="note"> +<p>The <code>path</code> parameter must be an absolute path, relative paths will cause an error.</p> + +<p>Use the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/fs_path">fs/path</a> module for relative path support.</p> +</div> + +<p>Returns the last component of the given path. For example, <code>basename("/foo/bar/baz")</code> returns <code>"baz"</code>. If the path has no components, the empty string is returned.</p> + +<h5 id="Parameters">Parameters</h5> + +<p><strong>path : string</strong><br> + The path of a file.</p> + +<h5 id="Returns">Returns</h5> + +<p><strong>string</strong> : The last component of the given path.</p> + +<h4 class="addon-sdk-api-name" id="dirname(path)"><code>dirname(path)</code></h4> + +<p>Returns the path of the directory containing the given file. If the file is at the top of the volume, the empty string is returned.</p> + +<h5 id="Parameters_2">Parameters</h5> + +<p><strong>path : string</strong><br> + The path of a file.</p> + +<h5 id="Returns_2">Returns</h5> + +<p><strong>string</strong> : The path of the directory containing the file.</p> + +<h4 class="addon-sdk-api-name" id="exists(path)"><code>exists(path)</code></h4> + +<p>Returns true if a file exists at the given path and false otherwise.</p> + +<h5 id="Parameters_3">Parameters</h5> + +<p><strong>path : string</strong><br> + The path of a file.</p> + +<h5 id="Returns_3">Returns</h5> + +<p><strong>boolean</strong> : True if the file exists and false otherwise.</p> + +<h4 class="addon-sdk-api-name" id="join(...)"><code>join(...)</code></h4> + +<p>Takes a variable number of strings, joins them on the file system's path separator, and returns the result.</p> + +<h5 id="Parameters_4">Parameters</h5> + +<p><strong>... : strings</strong><br> + A variable number of strings to join. The first string must be an absolute path.</p> + +<h5 id="Returns_4">Returns</h5> + +<p><strong>string</strong> : A single string formed by joining the strings on the file system's path separator.</p> + +<h4 class="addon-sdk-api-name" id="list(path)"><code>list(path)</code></h4> + +<p>Returns an array of file names in the given directory.</p> + +<h5 id="Parameters_5">Parameters</h5> + +<p><strong>path : string</strong><br> + The path of the directory.</p> + +<h5 id="Returns_5">Returns</h5> + +<p><strong>array</strong> : An array of file names. Each is a basename, not a full path.</p> + +<h4 class="addon-sdk-api-name" id="mkpath(path)"><code>mkpath(path)</code></h4> + +<p>Makes a new directory named by the given path. Any subdirectories that do not exist are also created. <code>mkpath</code> can be called multiple times on the same path.</p> + +<h5 id="Parameters_6">Parameters</h5> + +<p><strong>path : string</strong><br> + The path to create.</p> + +<h4 class="addon-sdk-api-name" id="open(path_mode)"><code>open(path, mode)</code></h4> + +<p>Returns a stream providing access to the contents of a file.</p> + +<h5 id="Parameters_7">Parameters</h5> + +<p><strong>path : string</strong><br> + The path of the file to open.</p> + +<p><strong>mode : string</strong><br> + An optional string, each character of which describes a characteristic of the returned stream.</p> + +<ul> + <li>If the string contains <code>"r"</code>, the file is opened in read-only mode.</li> + <li><code>"w"</code> opens the file in write-only mode.</li> + <li><code>"b"</code> opens the file in binary mode. If <code>"b"</code> is not present, the file is opened in text mode, and its contents are assumed to be UTF-8.</li> +</ul> + +<p>If <em><code>mode</code></em> is not given, <code>"r"</code> is assumed, and the file is opened in read-only text mode.</p> + +<p>Apart from these options, this API always passes the following options: <code>CREATE_FILE</code>, <code>TRUNCATE</code> (see <a href="https://dxr.mozilla.org/mozilla-central/source/nsprpub/pr/include/prio.h#550">https://dxr.mozilla.org/mozilla-central/source/nsprpub/pr/include/prio.h#550</a>). This means that:</p> + +<ul> + <li>if the file does not exist it is created</li> + <li>if the file exists, its length is truncated to zero</li> + <li>it is not possible to open the file in append mode.</li> +</ul> + +<h5 id="Returns_6">Returns</h5> + +<p><strong>stream</strong> : If the file is opened in text read-only <code>mode</code>, a <code>TextReader</code> is returned, and if text write-only mode, a <code>TextWriter</code> is returned. See <a href="/en-US/Add-ons/SDK/Low-Level_APIs/io_text-streams"><code>text-streams</code></a> for information on these text stream objects. If the file is opened in binary read-only <code>mode</code>, a <code>ByteReader</code> is returned, and if binary write-only mode, a <code>ByteWriter</code> is returned. See <a href="/en-US/Add-ons/SDK/Low-Level_APIs/io_byte-streams"><code>byte-streams</code></a> for more information on these byte stream objects. Opened files should always be closed after use by calling <code>close</code> on the returned stream.</p> + +<h4 class="addon-sdk-api-name" id="read(path_mode)"><code>read(path, mode)</code></h4> + +<p>Opens a file and returns a string containing its entire contents.</p> + +<h5 id="Parameters_8">Parameters</h5> + +<p><strong>path : string</strong><br> + The path of the file to read.</p> + +<p><strong>mode : string</strong><br> + An optional string, each character of which describes a characteristic of the returned stream. If the string contains <code>"b"</code>, the contents will be returned in binary mode. If <code>"b"</code> is not present or <code>mode</code> is not given, the file contents will be returned in text mode.</p> + +<h5 id="Returns_7">Returns</h5> + +<p><strong>string</strong> : A string containing the file's entire contents.</p> + +<h4 class="addon-sdk-api-name" id="remove(path)"><code>remove(path)</code></h4> + +<p>Removes a file from the file system. To remove directories, use <code>rmdir</code>.</p> + +<h5 id="Parameters_9">Parameters</h5> + +<p><strong>path : string</strong><br> + The path of the file to remove.</p> + +<h4 class="addon-sdk-api-name" id="rmdir(path)"><code>rmdir(path)</code></h4> + +<p>Removes a directory from the file system. If the directory is not empty, an exception is thrown.</p> + +<h5 id="Parameters_10">Parameters</h5> + +<p><strong>path : string</strong><br> + The path of the directory to remove.</p> + +<h4 class="addon-sdk-api-name" id="isFile(path)"><code>isFile(path)</code></h4> + +<p>Returns true only if this path specifies a file.</p> + +<pre class="brush: js">const fileIO = require("sdk/io/file"); + +let path = "/Users/Work/"; +let list = fileIO.list(path); + +for (i = 0; i < list.length; i++) { + let item = fileIO.join(path, list[i]); + if (fileIO.isFile(item)) { + console.log(item + " is a file"); + } + else { + console.log(item + " is a directory"); + } +}</pre> + +<h5 id="Parameters_11">Parameters</h5> + +<p><strong>path : string</strong><br> + The path of the object.</p> diff --git a/files/fr/mozilla/add-ons/sdk/low-level_apis/system_child_process/index.html b/files/fr/mozilla/add-ons/sdk/low-level_apis/system_child_process/index.html new file mode 100644 index 0000000000..9c315edd9f --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/low-level_apis/system_child_process/index.html @@ -0,0 +1,50 @@ +--- +title: system/child_process +slug: Mozilla/Add-ons/SDK/Low-Level_APIs/system_child_process +translation_of: Archive/Add-ons/Add-on_SDK/Low-Level_APIs/system_child_process +--- +<div class="note"> +<p>Expérimentale</p> +</div> + +<p><span class="seoSummary">Une mise en œuvre de l'API <a href="http://nodejs.org/api/child_process.html" title="http://nodejs.org/api/child_process.html"> node.js <code>child_process</code></a>.</span></p> + +<p>Ce module vous permet d'exécuter un programme sous-jacent dans un nouveau processus. Il émule l'API node.js <code>child_process</code>, qui n'est pas documentées séparément. Cependant, il ya quelques différences :</p> + +<ul> + <li>utiliser le module <code>require("sdk/system/child_process")</code></li> + <li><code>fork()</code> n'est pas supporté</li> + <li><code>gid</code> et <code>uid</code> ne sont pas supportés</li> + <li>dans node.js, <code>spawn()</code> et <code>exec()</code> hériter des variables d'environnement du processus parent, par défaut. Les versions du SDK ne le font pas: alors quand vous spécifiez une commande, vous devez passer le chemin d'accès complet de la commande ou utilisez l'option <code>env</code> pour configurer l'environnement de processus enfant .</li> +</ul> + +<p>Voici un exemple qui adapte l'exemple de la documentation de node.js pour <a href="http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options" title="http://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options"> <code>spawn()</code> </a>:</p> + +<pre class="brush: js">var child_process = require("sdk/system/child_process"); + +var ls = child_process.spawn('/bin/ls', ['-lh', '/usr']); + +ls.stdout.on('data', function (data) { + console.log('stdout: ' + data); +}); + +ls.stderr.on('data', function (data) { + console.log('stderr: ' + data); +}); + +ls.on('close', function (code) { + console.log('child process exited with code ' + code); +});</pre> + +<h3 id="Utilisation_child_process_dans_les_extensions_non-jpm">Utilisation child_process dans les extensions non-jpm</h3> + +<p> </p> + +<pre>// Import SDK Stuff +const COMMONJS_URI = 'resource://gre/modules/commonjs'; +const { require } = Cu.import(COMMONJS_URI + '/toolkit/require.js', {}); +var child_process = require('sdk/system/child_process'); + +// Use it in the same way as in the example above</pre> + +<p> </p> diff --git a/files/fr/mozilla/add-ons/sdk/low-level_apis/ui_button_action/index.html b/files/fr/mozilla/add-ons/sdk/low-level_apis/ui_button_action/index.html new file mode 100644 index 0000000000..f018689432 --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/low-level_apis/ui_button_action/index.html @@ -0,0 +1,659 @@ +--- +title: ui/button/action +slug: Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_action +translation_of: Archive/Add-ons/Add-on_SDK/Low-Level_APIs/ui_button_action +--- +<p>{{AddonSidebar}}</p> + +<div class="note">Experimental</div> + +<p><span class="seoSummary">Ajouter un boutton dans l'interface utilisateur de Firefox. Avec ce module vous pourrez créer des bouttons contenant des icônes et répondant aux clic de la sourie.</span></p> + +<h2 id="Usage">Usage</h2> + +<h3 id="Créer_des_bouttons"><br> + Créer des bouttons</h3> + +<p>Pour créer un boutton, vous devez lui donné un identifiant (id), une icône et un libellé:</p> + +<pre class="brush: js">var { ActionButton } = require("sdk/ui/button/action"); + +var button = ActionButton({ + id: "my-button", + label: "my button", + icon: { + "16": "./firefox-16.png", + "32": "./firefox-32.png" + }, + onClick: function(state) { + console.log("button '" + state.label + "' was clicked"); + } + });</pre> + +<p>By default, the button appears in the Firefox toolbar:</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/6803/action-button-toolbar.png" style="display: block; height: 201px; margin-left: auto; margin-right: auto; width: 381px;">However, users can move it to the Firefox menu panel using the <a href="https://support.mozilla.org/en-US/kb/customize-firefox-controls-buttons-and-toolbars">toolbar customization feature</a>:</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/6809/action-button-menu.png" style="display: block; height: 573px; margin-left: auto; margin-right: auto; width: 381px;"></p> + +<h3 id="Badged_buttons">Badged buttons</h3> + +<div class="geckoVersionNote"> +<p>New in Firefox 36.</p> +</div> + +<p>You can add a "badge" to a button using its <code>badge</code> property. This can be a number or a string, and you can update it at any time. By default the badge's color is red, but you can set your own color using the <code>badgeColor</code> property, specified as a CSS <a href="/en-US/docs/Web/CSS/color_value"><code><color></code></a> value:</p> + +<pre class="brush: js">var { ToggleButton } = require("sdk/ui/button/toggle"); + +var button = ToggleButton({ + id: "my-button1", + label: "my button1", + icon: "./icon-16.png", + onChange: changed, + badge: 0, + badgeColor: "#00AAAA" + }); + +function changed(state) { + button.badge = state.badge + 1; + if (state.checked) { + button.badgeColor = "#AA00AA"; + } + else { + button.badgeColor = "#00AAAA"; + } +}</pre> + +<p><img alt="" src="https://mdn.mozillademos.org/files/9803/badge.png" style="display: block; height: 168px; margin-left: auto; margin-right: auto; width: 384px;"></p> + +<h3 id="Specifying_multiple_icons">Specifying multiple icons</h3> + +<p>You can specify just one icon, or multiple icons in different sizes.</p> + +<p>If you specify multiple icons, Firefox will select the best-fitting icon based on the device screen resolution and the place the icon appears. For example, in the screenshots above, Firefox uses the small icon when the button is in the toolbar and the large icon when the button is in the menu panel. Read more about specifying icons in the reference documentation for the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#ActionButton(options)"><code>ActionButton</code> constructor</a>.</p> + +<h3 id="Responding_to_click_events">Responding to click events</h3> + +<p>You can respond to click events by assigning a listener to the button's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#click"><code>click</code></a> event. You can do this in the button's constructor, by assigning the listener to the <code>onClick</code> option. You can also add, or change, the listener afterwards:</p> + +<pre class="brush: js">var { ActionButton } = require("sdk/ui/button/action"); + +var button = ActionButton({ + id: "my-button", + label: "my button", + icon: { + "16": "./firefox-16.png", + "32": "./firefox-32.png" + }, + onClick: firstClick + }); + +function firstClick(state) { + console.log("You clicked '" + state.label + "'"); + button.removeListener("click", firstClick); + button.on("click", subsequentClicks); +} + +function subsequentClicks(state) { + console.log("You clicked '" + state.label + "' again"); +}</pre> + +<p>The listener is passed a <code>state</code> object that contains all the button's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#Properties">properties</a>.</p> + +<p>You can generate click events programmatically with the button's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#click()"><code>click()</code></a> method.</p> + +<h3 id="Disabling_buttons">Disabling buttons</h3> + +<p>You can disable a button by setting its <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#disabled"><code>disabled</code></a> property to <code>true</code>. A disabled button will not generate click events and its icon will appear disabled:</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/6805/action-button-toolbar-disabled.png" style="display: block; height: 201px; margin-left: auto; margin-right: auto; width: 381px;"></p> + +<h3 id="Updating_state">Updating state</h3> + +<p>You can update all the button's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#Properties">properties</a> except for its <code>id</code>.</p> + +<p>By default, the button has global state: that is, its properties are the same across all open windows and tabs, and updating them updates the button's state across all open windows and tabs.</p> + +<p>You can set state to be specific to a window or tab using the button's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#state()"><code>state()</code></a> method. To set state like this, call <code>state()</code> with 2 parameters:</p> + +<ul> + <li>the first parameter is a <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows"><code>window</code></a> or <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#Tab"><code>tab</code></a> object or as a shorthand, the string "window" for the currently active window, or the string "tab" for the currently active tab</li> + <li>the second parameter is an object containing the state properties you wish to update.</li> +</ul> + +<p>Here's an add-on with a button that disables itself when you click it, but only for the currently active window:</p> + +<pre class="brush: js">var { ActionButton } = require("sdk/ui/button/action"); + +var button = ActionButton({ + id: "my-button", + label: "my button", + icon: { + "16": "./firefox-16.png", + "32": "./firefox-32.png" + }, + onClick: disableForThisWindow + }); + +function disableForThisWindow(state) { + button.state("window", { + disabled: true + }); +}</pre> + +<p>To fetch the state for a specific window or tab, call <code>state()</code>, passing in the window or tab you are interested in, and it will return the state:</p> + +<pre class="brush: js">var labelForActiveTab = button.state("tab").label;</pre> + +<p>To learn more about this, see the API documentation for <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#state()"><code>state()</code></a>.</p> + +<h3 id="Destroying_buttons">Destroying buttons</h3> + +<p>When you've finished with a button, destroy it by calling its <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#destroy()"><code>destroy()</code></a> method. After that, any attempts to access any of its properties or to call any of its methods will throw exceptions.</p> + +<h2 id="Globals">Globals</h2> + +<h3 id="Constructors">Constructors</h3> + +<h4 class="addon-sdk-api-name" id="ActionButton(options)"><code>ActionButton(options)</code></h4> + +<p>Creates an action button.</p> + +<h5 id="Parameters">Parameters</h5> + +<p><strong>options : object</strong><br> + Required options:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col"> </th> + </tr> + </thead> + <tbody> + <tr> + <td>id</td> + <td>string</td> + <td> + <p>The button's ID. This is used internally to keep track of this button. The ID must be unique within your add-on.</p> + </td> + </tr> + <tr> + <td>label</td> + <td>string</td> + <td> + <p>The button's human-readable label. When the button is in the toolbar, this appears in a tooltip, and when the button is in the menu, it appears underneath the button as a legend.</p> + </td> + </tr> + <tr> + <td>icon</td> + <td>url, string, object</td> + <td> + <p>One or more icons for the button. You can specify this in one of three ways: </p> + + <ul> + <li><strong>as a resource:// URL</strong> pointing at an icon file in your add-on's "data" directory, typically constructed using <em><code>self.data.url(iconfile)</code></em></li> + <li><strong>as a relative path</strong>: a string in the form "./iconfile", where "iconfile" is a relative path to the icon file beginning in your add-on's "data" directory</li> + <li><strong>as an object, or dictionary of key-value pairs</strong>. Here you can specify a range of sizes for your button's icon. Each key-value pair specifies an icon: + <ul> + <li>each value specifies an image file as a resource:// URL or relative path.</li> + <li>each key must be a numeric string such as "16", or "32", which represents the size in pixels of the corresponding image.</li> + </ul> + </li> + </ul> + + <pre class="brush: js"> +var { ActionButton } = require('sdk/ui/button/action'); +var self = require("sdk/self"); + +var button1 = ActionButton({ + id: "my-button1", + label: "my button1", + icon: self.data.url("firefox-16.png") + }); + +var button2 = ActionButton({ + id: "my-button2", + label: "my button2", + icon: "./firefox-16.png" + }); + +var button3 = ActionButton({ + id: "my-button3", + label: "my button3", + icon: { + "16" : "./firefox-16.png", + "32" : "./firefox-32.png", + "64" : "./firefox-64.png" + } + });</pre> + + <p>If you use the final form, Firefox will automatically choose the best-fit icon for your button, depending on the device screen resolution and where the button is in the UI. On a device with a "normal" screen resolution, the toolbar has space for 18 x 18 pixels and the menu panel has space for 32 x 32 pixels. On a high resolution screen (such as a <a href="https://en.wikipedia.org/wiki/Retina_Display">HiDPI</a> display), these are doubled to 36 x 36 and 64 x 64 pixels, respectively. So you can supply three icon files:</p> + + <pre class="brush: js"> +icon: { + "16": "./addon16.png", + "32": "./addon32.png", + "64": "./addon64.png" +}</pre> + + <p>This will look fine in both toolbar and menu panel, and for both screen resolutions. However, the icons in the toolbar will not quite fill the space available, so you can instead supply four icons:</p> + + <pre class="brush: js"> +icon: { + "18": "./addon18.png", // toolbar icon non HiDPI + "32": "./addon32.png", // menu panel icon non HiDPI + "36": "./addon36.png", // toolbar icon HiDPI + "64": "./addon64.png" // menu panel icon HiDPI +} +</pre> + </td> + </tr> + </tbody> +</table> + +<p>Optional options:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Name</th> + <th scope="col">Type</th> + <th scope="col"> </th> + </tr> + </thead> + <tbody> + <tr> + <td>disabled</td> + <td>boolean</td> + <td> + <p>Determines whether the button is disabled. Disabled buttons appear disabled in the UI, and do not respond to clicks. Defaults to false.</p> + </td> + </tr> + <tr> + <td>onClick</td> + <td>function</td> + <td> + <p>Click handler for the button.</p> + </td> + </tr> + <tr> + <td>badge</td> + <td>Number or String</td> + <td> + <div class="geckoVersionNote"> + <p>New in Firefox 36.</p> + </div> + + <p><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#Badged_buttons">Badge</a> to attach to the button.</p> + + <p>The badge can contain as many characters (or digits) as you like, but only the first four will be displayed.</p> + </td> + </tr> + <tr> + <td>badgeColor</td> + <td>CSS <a href="/en-US/docs/Web/CSS/color_value"><color></a> value</td> + <td> + <div class="geckoVersionNote"> + <p>New in Firefox 36.</p> + </div> + + <p>Color for the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#Badged_buttons">badge</a>. If <code>badgeColor</code> is omitted and <code>badge</code> is specified, then the badge is red.</p> + </td> + </tr> + </tbody> +</table> + +<h2 id="ActionButton">ActionButton</h2> + +<h3 id="Methods">Methods</h3> + +<h4 class="addon-sdk-api-name" id="click()"><code>click()</code></h4> + +<p>Click the button. This will cause the button to generate the <code>click</code> event:</p> + +<pre class="brush: js">var { ActionButton } = require('sdk/ui/button/action'); + +var button = ActionButton({ + id: "my-button", + label: "my button", + icon: { + "16": "./firefox-16.png", + "32": "./firefox-32.png" + }, + onClick: function(state) { + console.log("You clicked '" + state.label + "'"); + } +}); + +button.click(); +</pre> + +<h4 class="addon-sdk-api-name" id="state()"><code>state()</code></h4> + +<p>Get or set the button's state for a specific window or tab.</p> + +<p>By default, a button's properties are global, meaning that they are the same across all open windows and tabs, and that if you update these properties, then they are updated across all windows and tabs. But sometimes you want a button attached to one window (or tab) to have a different state to a button attached to a different window (or tab). That's what <code>state()</code> is for.</p> + +<p>To set a button's properties for a specific window or tab, call <code>state()</code>, passing it the <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows"><code>window</code></a> or <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs"><code>tab</code></a> you want the property to apply to, and the property value to set. A special shortcut allows you to pass the string "window" or "tab" to select the currently active window or tab.</p> + +<p>For example, if you have a button like this:</p> + +<pre class="brush: js">var { ActionButton } = require('sdk/ui/button/action'); + +var button = ActionButton({ + id: "my-button", + label: "default", + icon: "./firefox-16.png" +});</pre> + +<p>You can change its label for only the currently active window like this:</p> + +<pre class="brush: js">button.state("window", { + "label" : "window-specific label" +});</pre> + +<p>You can change its label for only the currently active tab like this:</p> + +<pre class="brush: js">button.state("tab", { + "label" : "tab-specific label" +}); +</pre> + +<p>To fetch the button state for a specific window or tab, call <code>state()</code>, passing it the window or tab you're interested in, and it will return a state object containing all the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#Properties">properties</a> for the button associated with that window or tab. Again. you can use the strings "window" or "tab" as shortcuts. For example, this add-on:</p> + +<ul> + <li>creates a button with a default label</li> + <li>opens a new tab</li> + <li>sets a new label only for the new tab</li> + <li>logs the result of accessing the global label, the window-specific label, and each of the 2 tab-specific labels</li> +</ul> + +<pre class="brush: js">var { ActionButton } = require('sdk/ui/button/action'); +var tabs = require("sdk/tabs"); + +var button = ActionButton({ + id: "my-button", + label: "default label", + icon: "./firefox-16.png" +}); + +tabs.open({ + url: "https://mozilla.org/", + onOpen: onNewTab +}); + +function onNewTab(tab) { + // Modify the label only for the new tab + button.state(tab, { + "label" : "tab-specific label" + }); + + // access the global label -> "default label" + console.log(button.label); + + // access the window's label -> "default label" + console.log(button.state("window").label); + + // access the first tab's label -> "default label" + console.log(button.state(tabs[0]).label); + + // access the second tab's label -> "tab-specific label" + console.log(button.state(tabs[1]).label); +}</pre> + +<p>Setting a property won't affect a more-specific property setting. For example, if you have a window with two tabs, and you set a tab-specific label, then set the window-specific label, this will not overwrite the tab-specific label:</p> + +<pre class="brush: js">var { ActionButton } = require('sdk/ui/button/action'); +var tabs = require("sdk/tabs"); + +var button = ActionButton({ + id: "my-button", + label: "default label", + icon: "./firefox-16.png" +}); + +tabs.open({ + url: "https://mozilla.org/", + onOpen: onNewTab +}); + +function onNewTab(tab) { + // Modify the label only for the new tab + button.state(tab, { + "label" : "tab-specific label" + }); + + // Modify the label for the window + button.state("window", { + "label" : "window-specific label" + }); + + // access the global label -> "default label" + console.log(button.label); + + // access the window's label -> "window-specific label" + console.log(button.state("window").label); + + // access the first tab's label -> "window-specific label" + console.log(button.state(tabs[0]).label); + + // access the second tab's label -> "tab-specific label" + console.log(button.state(tabs[1]).label); +}</pre> + +<p>The best way to think of this is as a tree: the global state is the root, followed by the state for each window, followed by the state for each tab in a window. If a property value for a node in the tree has not been set explicitly using <code>state()</code>, then it inherits its value from the next level up. So if you have one window containing two tabs, and have set the button's <code>label</code> only for tab A, then tab B will inherit <code>label</code>'s value from the window, and changing the value for the window will implicitly change the value for tab B.</p> + +<p>To delete a tab- or window-specific state, assign <code>null</code> to the property. After that, the property will inherit its value from the less-specific state as before:</p> + +<pre class="brush: js">var { ActionButton } = require('sdk/ui/button/action'); +var tabs = require("sdk/tabs"); + +var button = ActionButton({ + id: "my-button", + label: "default label", + icon: "./firefox-16.png" +}); + +tabs.open({ + url: "https://mozilla.org/", + onOpen: onNewTab +}); + +function onNewTab(tab) { + // Modify the label only for the new tab + button.state(tab, { + "label" : "tab-specific label" + }); + + // Modify the label for the window + button.state("window", { + "label" : "window-specific label" + }); + + // access the global label -> "default label" + console.log(button.label); + + // access the window's label -> "window-specific label" + console.log(button.state("window").label); + + // access the first tab's label -> "window-specific label" + console.log(button.state(tabs[0]).label); + + // access the second tab's label -> "tab-specific label" + console.log(button.state(tabs[1]).label); + + // Reset the tab-specific state + button.state(tab, null); + + // access the second tab's label -> "window-specific label" + console.log(button.state(tabs[1]).label); +}</pre> + +<p>Finally, you can pass the button itself into <code>state()</code>. This is an alternative way to set or get the global state. The reason for using this, rather than setting properties individually, is that you can define an object with the properties to set in one place, then apply it to the global state with a single line:</p> + +<pre class="brush: js">const defaultState = { + "label": "default label", + "icon": "./default.png", +} + +const differentState = { + "label": "different label", + "icon": "./different.png", +} + +var { ActionButton } = require("sdk/ui/button/action"); + +var button = ActionButton({ + id: "default-label", + label: "default label", + icon: "./default.png", + onClick: function(state) { + if (button.label == "default label") { + button.state(button, differentState); + } + else { + button.state(button, defaultState); + } + console.log(button.state(button).label); + console.log(button.state(button).icon); + } + }); +</pre> + +<h5 id="Parameters_2">Parameters</h5> + +<p><strong>target : button, tab, window, string</strong></p> + +<ul> + <li>To set or get the global state, this needs to be the <code>button</code> instance.</li> + <li>To get or set window-specific state, this needs to be the <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows"><code>window</code></a> object for which you wish to set a specific state, or the string "window" to select the currently active window.</li> + <li>To get or set tab-specific state this needs to be the <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs"><code>tab</code></a> object for which you wish to set a specific state, or the string "tab" to select the currently active tab.</li> +</ul> + +<p><strong>state : object, null</strong><br> + Include this parameter only if you are setting state. It is an object containing all the properties you wish to set. For example:</p> + +<pre class="brush: js">button.state("tab", { + "label" : "tab-specific label", + "icon": "./tab-specific-icon.ico" +});</pre> + +<p>To reset state, pass null:</p> + +<pre class="brush: js">button.state("tab", null);</pre> + +<h5 id="Returns">Returns</h5> + +<p><strong>state</strong> : if you have passed the second <code>state</code> argument to make this function a setter, it returns <code>undefined</code>. Otherwise, it functions as a getter and returns the button's state for the specified object. This logs the state for the button associated with the currently active tab:</p> + +<pre class="brush: js">console.log(button.state("tab"));</pre> + +<p>This object represents a snapshot of the state at the time <code>state()</code> is called. It is not kept up to date with changes made to the button:</p> + +<pre class="brush: js">button.label = "foo"; +var state = button.state(button); +button.label = "bar"; +console.log(state.label) // foo</pre> + +<h4 class="addon-sdk-api-name" id="on()"><code>on()</code></h4> + +<p>Add a listener to an event emitted by the button. The button only emits one type of event, <code><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#click">click</a></code>:</p> + +<pre class="brush: js">button.on("click", handleClick) + +function handleClick(state) { + console.log("button '" + state.label + "' was clicked"); +}</pre> + +<h5 id="Parameters_3">Parameters</h5> + +<p><strong>event : string</strong><br> + The event to listen for. Action buttons only emit one type of event, "<a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#click"><code>click</code></a>".</p> + +<p><strong>listener : function</strong><br> + Function that will be called on click.</p> + +<h4 class="addon-sdk-api-name" id="once()"><code>once()</code></h4> + +<p>Assign a listener to the first occurrence only of an event emitted by the button. The button only emits one type of event, <code><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#click">click</a></code>. The listener is automatically removed after the first time the event is emitted.</p> + +<h5 id="Parameters_4">Parameters</h5> + +<p><strong>event : string</strong><br> + The event to listen for. Action buttons only emit one type of event, "<a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#click"><code>click</code></a>".</p> + +<p><strong>listener : function</strong><br> + Function that will be called on click.</p> + +<h4 class="addon-sdk-api-name" id="removeListener()"><code>removeListener()</code></h4> + +<p>Removes an event listener. For example, this code is equivalent to <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#once()"><code>once()</code></a>:</p> + +<pre class="brush: js">button.on("click", handleClick) + +function handleClick(state) { + console.log("button '" + state.label + "' was clicked"); + button.removeListener("click", handleClick); +} </pre> + +<h5 id="Parameters_5">Parameters</h5> + +<p><strong>event : string</strong><br> + The event to listener is listening for. Action buttons only emit one type of event, "<a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#click"><code>click</code></a>".</p> + +<p><strong>listener : function</strong><br> + The listener to remove.</p> + +<h4 class="addon-sdk-api-name" id="destroy()"><code>destroy()</code></h4> + +<p>Destroy the button. After calling this function, the button will no longer appear in the UI, and accessing any of its properties or methods will throw an error.</p> + +<h3 id="Properties">Properties</h3> + +<h4 class="addon-sdk-api-name" id="id"><code>id</code></h4> + +<p>The button's unique ID. This is read-only.</p> + +<h4 class="addon-sdk-api-name" id="label"><code>label</code></h4> + +<p>The button's label.</p> + +<h4 class="addon-sdk-api-name" id="icon"><code>icon</code></h4> + +<p>The button's icon or icons, as a URL, relative path, or object containing a set of key-value pairs.</p> + +<h4 class="addon-sdk-api-name" id="disabled"><code>disabled</code></h4> + +<p>Boolean property indicating whether or not the button is disabled.</p> + +<h4 class="addon-sdk-api-name" id="badge"><code>badge</code></h4> + +<div class="geckoVersionNote"> +<p>New in Firefox 36.</p> +</div> + +<p>Value to attach to the button as a <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#Badged_buttons">badge</a>. May be a number or a string.</p> + +<p>The badge can contain as many characters (or digits) as you like, but only the first four will be displayed.</p> + +<h4 class="addon-sdk-api-name" id="badgeColor"><code>badgeColor</code></h4> + +<div class="geckoVersionNote"> +<p>New in Firefox 36.</p> +</div> + +<p>Color for the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#Badged_buttons">badge</a>, specified as a CSS <a href="/en-US/docs/Web/CSS/color_value"><color></a> value.</p> + +<h3 id="Events">Events</h3> + +<h4 class="addon-sdk-api-name" id="click"><code>click</code></h4> + +<p>This event is emitted when a user clicks the button or your add-on calls the button's <code>click()</code> method.</p> + +<h5 id="Arguments">Arguments</h5> + +<p><strong>state</strong> : The button's state. This contains all the button's <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#Properties">properties</a>.</p> diff --git a/files/fr/mozilla/add-ons/sdk/tools/cfx_to_jpm/index.html b/files/fr/mozilla/add-ons/sdk/tools/cfx_to_jpm/index.html new file mode 100644 index 0000000000..e8b50f5006 --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/tools/cfx_to_jpm/index.html @@ -0,0 +1,192 @@ +--- +title: De cfx à jpm +slug: Mozilla/Add-ons/SDK/Tools/cfx_to_jpm +translation_of: Archive/Add-ons/Add-on_SDK/Tools/cfx_to_jpm +--- +<div class="note"> +<p>L'Add-on SDK inclut un outil de ligne de commande que vous utilisez pour initialiser, exécuter, tester, et empaqueter des add-ons. L'outil actuel est appelé jpm, il est basé sur <a href="http://nodejs.org/" title="http://nodejs.org/"> Node.js </a>. Il remplace l'outil cfx.</p> + +<p>Vous pouvez utiliser jpm à partir de Firefox 38.</p> + +<p>Cet article met en évidence les principales différences entre cfx et jpm.</p> +</div> + +<p><span class="seoSummary">Un guide pour travailler avec jpm si vous êtes déjà familier avec cfx.</span></p> + +<h2 id="Installation">Installation</h2> + +<p>cfx est basée sur Python et est distribué comme un fichier zip. jpm est baser sur Node.js qui est <a href="https://www.npmjs.org/package/jpm" title="https://www.npmjs.org/package/jpm"> distribué par npm </a>. Donc, pour jpm vous n'avez pas besoin de Python, mais vous avez besoin npm.</p> + +<p>Pour obtenir les mises de cfx vous deviez télécharger et extraire un fichier zip, tandis que pour obtenir la nouvelle version de jpm, utilisez <a href="https://docs.npmjs.com/cli/update" title="https://www.npmjs.org/doc/api/npm-update.html"> <code>npm update</code> </a>.</p> + +<p>Pour obtenir des instructions d'installation de jmp, consultez la section de l' <a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/jpm#Installation" title="/fr/Add-ons/SDK/Tools/jpm#Installation">Installation</a> dans la référentiel de jmp.</p> + +<h2 id="Activation">Activation</h2> + +<p>Vous devez appeler <code>cfx activate</code> avant de pouvoir utiliser cfx, et cela ne fonctionne que dans le shell de commande de courant:. Si vous ouvrez un nouveau shell, vous devez appeler <code>activate</code> de nouveau</p> + +<p>Avec jpm, pas d'activation. Une fois qu'il est installé, vous pouvez simplement l'utiliser.</p> + +<h2 id="Incompatibilités">Incompatibilités</h2> + +<p>Dans la plupart cas, les add-ons créés avec cfx fonctionnent bien avec jpm. Cependant, il y a quelques différences que vous devez connaitre.</p> + +<h3 id="Add-on_ID">Add-on ID</h3> + +<p>L'ID de add-on est l'identifiant unique de votre add-on. Dans un xpi, c'est le<a href="https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/Install_Manifests#id" title="https://developer.mozilla.org/en/install.rdf#id"> champ ID dans le fichier Manifest d'instalation de l'add-on</a> (install.rdf).</p> + +<p>L'identifiant est utilisé à des fins variées. Par exemple: <a href="http://addons.mozilla.org" title="http://addons.mozilla.org">addons.mozilla.org</a> l'utilise pour distinguer entre les nouvelles add-ons et les mises à jour d'add-ons existantes, et le module <a href="https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/simple-storage" title="https://developer.mozilla.org/fr/Add-ons/SDK/High-Level_APIs/simple-storage"><code>simple-storage</code></a> l'utilise pour déterminer lesquelles des données stockées appartiennent à tel add-on.</p> + +<h4 id="Manipulation_avec_l'ID_cfx">Manipulation avec l'ID cfx</h4> + +<p>Lorsque vous utilisez cfx, l'ID est tiré du <a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/package_json#id" title="/fr/Add-ons/SDK/Tools/package_json#id">champ <code>id</code> dans le fichier de package.json de l'add-on</a>. Vous pouvez éditer ce fichier pour créer votre propre identité, mais si vous ne le faites pas, cfx va le générer pour vous, ce qui va ressembler à quelque chose comme "<code>jid1-F3BoogbjQJE67A</code>". <a href="https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/Install_Manifests#id" title="https://developer.mozilla.org/fr/Add-ons/Install_Manifests#id">L'ID Add-on doit être l'un des deux types suivant </a>: un GUID ou une chaîne qui comprend un symbole <code>"@"</code>. Le SDK ne prévoit que le dernier format, et si l'ID dans package.json ne contient pas de "@", cfx xpi ajouter "<code>@jetpack</code>" dans le champ de package.json, ce qui transforme l'ID de l'add-on.</p> + +<p>Donc: si vous n'avez jamais manipulé l'ID lors de l'utilisation cfx, alors la valeur dans le package.json de votre add-on sera quelque chose comme "<code>jid1-F3BoogbjQJE67A</code>", et l'ID correspondant dans la install.rdf sera "<code>jid1-F3BoogbjQJE67A@jetpack</code>".</p> + +<h4 id="Manipulation_d'ID_avec_jpm">Manipulation d'ID avec jpm</h4> + +<p>Lorsque vous créez un xpi avec <code>jpm xpi</code>:</p> + +<ul> + <li>si le package.json ne comprend pas un champ <code>id</code>, alor l'ID dans l'install.rdf à la valeur de la <a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/package_json#name" title="/fr/Add-ons/SDK/Tools/package_json#name"> champ <code>name</code></a> Préfixé par "@".</li> + <li>si le package.json inclut un champ <code>id</code>, et il contient «@», alors l'écriture est la même dans install.rdf.</li> + <li>si le package.json inclut un champ <code>id</code>, sans "@", jpm XPI soulève une erreur et le xpi ne sera pas construit.</li> +</ul> + +<h4 id="Ce_que_vous_devez_faire">Ce que vous devez faire</h4> + +<p>Tout cela signifie que: <em> si votre package.json contient un champ id, et sa valeur ne contient pas «@», alors vous devez ajouter "@jetpack» lors du passage à jpm </em>.</p> + +<p>Si vous faites cela, l'ID de l'add-on sera la même que l'id utilisée avec cfx.</p> + +<h3 id="Point_d'entrée">Point d'entrée</h3> + +<p>Le point d'entrée de l'add-on est le fichier qui est exécutée lorsque l'add-on a besoin de s'initialiser: par exemple, au démarrage de Firefox, ou lorsque l'add-on est installé, activé, ou mis à niveau. Avec cfx, la valeur par défaut à "lib/main.js", même si elle peut être réglée sur un autre fichier en utilisant le <code>main</code> champ dans le package.json .</p> + +<p>Dans jpm, le point d'entrée par défaut est "index.js". Donc, lors de la commutation vers jpm:</p> + +<ul> + <li>renommez vos "main.js" en "index.js" et déplacez les de "lib" vers le plus haut niveau</li> + <li>ou ajouter un champ <code>main</code> dans package.json avec pour valeur "lib/main.js".</li> +</ul> + +<h3 id="Chargement_des_modules">Chargement des modules</h3> + +<p>L'outil jpm utilise la même logique que <a href="http://nodejs.org/api/modules.html#modules_all_together" title="http://nodejs.org/api/modules.html#modules_all_together"> Node.js </a> pour déterminer comment résoudre l'argument <code>require()</code>. Dans la plupart des cas, c'est la même <a href="/fr/docs/Mozilla/Add-ons/SDK/Guides/Module_structure_of_the_SDK" title="/fr/Add-ons/SDK/Guides/Module_structure_of_the_SDK">logique que cfx</a>. Cependant, il existe quelques différences, parce certaines compatibilités ont été retirées.</p> + +<h4 id="Requérir_à_des_modules_locaux">Requérir à des modules locaux</h4> + +<p>Supposons que votre add-on est <a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Creating_Reusable_Modules" title="/fr/Add-ons/SDK/Tutorials/Creating_Reusable_Modules"> structuré en modules séparés </a>:</p> + +<ul class="directory-tree"> + <li>my-addon + <ul> + <li>lib + <ul> + <li>main.js</li> + <li>utils.js</li> + </ul> + </li> + </ul> + </li> +</ul> + +<p>Lorsque vous voulez utiliser un module "utils.js" dans "main.js", vous devez utiliser un chemin relatif à "main.js", et le préfixer avec "./" pour indiquer que c'est un chemin relatif:</p> + +<pre class="brush: js">var utils = require("./utils");</pre> + +<p>Cependant, avec cfx vous êtes également autorisé à omettre le "./":</p> + +<pre class="brush: js">var utils = require("utils"); // this will not work with jpm!</pre> + +<p>Cette seconde forme ne fonctionnera pas avec jpm.</p> + +<h4 id="Requérir_des_modules_de_code_de_test">Requérir des modules de code de test</h4> + +<p>Similarly, suppose you've written some tests for your add-on:</p> + +<ul class="directory-tree"> + <li>my-addon + <ul> + <li>lib + <ul> + <li>my-addon.js</li> + </ul> + </li> + <li>test + <ul> + <li>test-my-addon-js</li> + </ul> + </li> + </ul> + </li> +</ul> + +<p>Avec cfx, le code de "test-my-addon.js" peut importer "my-addon.js" en utilisant une déclaration de ce genre:</p> + +<pre class="brush: js">var my_addon = require("my-addon"); // ceci ne fonctionne pas avec jpm!</pre> + +<p>Avec jpm, vous devez spécifier le chemin vers «my-addon" explicitement, en utilisant un chemin relatif:</p> + +<pre class="brush: js">var my_addon = require("../lib/my-addon"); +</pre> + +<h3 id="Modules_tiers">Modules tiers</h3> + +<p>Le SDK a toujours soutenu les modules tiers: les développeurs peuvent écrire leurs propres modules qui étendent les API du SDK ou ajouter de nouvelles API, et d'autres add-on peuvent faire usage de ces modules de la même manière qu'ils utilisent les modules intégré au SDK.</p> + +<p>Dans jpm cette façon <a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox" title="/fr/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox"> d'utiliser des modules tiers </a> ne fonctionne plus. Au lieu de cela, jpm n'accepte que les modules tiers hébergés sur la npm, vous pouvez les utiliser en les installant à partir de la npm dans l'arbre de répertoire de votre add-on. Voir le tutoriel<a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Using_third-party_modules_(jpm)" title="/fr/Add-ons/SDK/Tutorials/Using_third-party_modules_(jpm)"> utilisant des modules tiers avec jpm</a>.</p> + +<h2 id="Les_commandes_et_les_options_de_commande">Les commandes et les options de commande</h2> + +<h3 id="Commandes_définitivement_retiré">Commandes définitivement retiré</h3> + +<p>jpm ne soutient plus les <a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/cfx#Internal_Commands" title="/fr/Add-ons/SDK/Tools/cfx#Internal_Commands">commandes cfx "interne"</a>.</p> + +<h3 id="Options_définitivement_retiré">Options définitivement retiré</h3> + +<p>jpm ne soutient plus :</p> + +<pre>--extra-packages +--use-config +--package-path +--pkgdir +--no-strip-xpi +--harness-option +--manifest-overload +--output-file +--templatedir +--keydir +--profiledir +--overload-modules +--static-args +--app +--no-run +--addons +--e10s +--logfile +--dependencies +--test-runner-pkg</pre> + +<p>Au lieu de <code>--profiledir</code> et de <code>--overload-modules</code>, utilisez <code>--profile</code> et <code>--overload</code></p> + +<h2 id="Champs_Package.json">Champs Package.json</h2> + +<p>Beaucoup de champs package.json <a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/package_json" title="/fr/Add-ons/SDK/Tools/package_json"> </a> sont des commandes implicites de cfx. Dans jpm, nous avons supprimé le soutien de certains de ces domaines, et travaillons toujours sur le soutien des autres.</p> + +<h3 id="Champs_définitivement_retiré">Champs définitivement retiré</h3> + +<ul> + <li><a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/package_json#data">data</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/package_json#fullName">fullName</a> - use <a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/package_json#title">title</a> instead</li> + <li><a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/package_json#lib">lib</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/package_json#packages">packages</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/package_json#tests">tests</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/package_json#icon64">icon64</a></li> +</ul> + +<h2 id="Echappement_dans_Package.json">Echappement dans Package.json</h2> + +<p>Où avec cfx vous auriez dû échapper avec 2 voir 3 barres obliques inverses (\), jpm n'en a besoin que d'une.</p> + +<p> </p> diff --git a/files/fr/mozilla/add-ons/sdk/tools/index.html b/files/fr/mozilla/add-ons/sdk/tools/index.html new file mode 100644 index 0000000000..89f1db963b --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/tools/index.html @@ -0,0 +1,13 @@ +--- +title: Tools +slug: Mozilla/Add-ons/SDK/Tools +tags: + - Add-on SDK + - CFX + - JPM + - TopicStub +translation_of: Archive/Add-ons/Add-on_SDK/Tools +--- +<p>Les articles répertoriés ici fournissent une référence pour les outils du SDK:</p> + +<p>{{ LandingPageListSubpages ("/en-US/Add-ons/SDK/Tools", 7) }}</p> diff --git a/files/fr/mozilla/add-ons/sdk/tools/jpm/index.html b/files/fr/mozilla/add-ons/sdk/tools/jpm/index.html new file mode 100644 index 0000000000..c079f3b0b5 --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/tools/jpm/index.html @@ -0,0 +1,600 @@ +--- +title: jpm +slug: Mozilla/Add-ons/SDK/Tools/jpm +translation_of: Archive/Add-ons/Add-on_SDK/Tools/jpm +--- +<div class="note"> +<p>Vous pouvez utiliser <code>jpm</code> pour Firefox 38 et au-delà.</p> + +<p>Cet article est la référence pour jpm.</p> +</div> + +<p><span class="seoSummary">The Node-based replacement for <a href="/en-US/Add-ons/SDK/Tools/cfx">cfx</a>. Enables you to test, run, and package add-ons.</span></p> + +<p>Voir aussi le <a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Getting_Started_%28jpm%29" title="/fr/Add-ons/SDK/Tutorials/Getting_Started_%28jpm%29">tutoriel jpm</a> pour débuter.</p> + +<p>jpm usage is:</p> + +<pre class="brush: bash">jpm [command] [options] +</pre> + +<p>jpm supports the following global options:</p> + +<pre class="brush: bash">-h, --help - show a help message and exit +-V, --version - print the jpm version number +</pre> + +<h2 id="Installation">Installation</h2> + +<p>jpm is distributed using the node package manager <a class="external external-icon" href="https://www.npmjs.org/package/jpm">npm</a>, so to get jpm you need to have npm installed, if you haven't already. npm is included in Node.js. To install npm, you can either visit <a class="external external-icon" href="http://nodejs.org/">nodejs.org</a> and download the latest binary or if you have a package manager like APT installed on your system, you might want to use this package manager to install npm. For example, if you are using an Ubuntu or Debian operating system, execute <code>sudo apt-get install nodejs </code>followed by <code>sudo apt-get install npm </code>in a terminal window.</p> + +<p>After that you can install jpm just as you would any other npm package:</p> + +<pre><code>npm install jpm --global</code></pre> + +<p>Depending on your setup, you might need to run this as an administrator:</p> + +<pre class="brush: bash"><code>sudo npm install jpm --global</code></pre> + +<p>Or, you can install jpm using git:</p> + +<pre>git clone https://github.com/mozilla-jetpack/jpm.git +cd jpm +npm install +npm link +</pre> + +<p><span style="line-height: 1.5;">À l'invite de commande, tapez:</span></p> + +<pre class="brush: bash"><code>jpm</code></pre> + +<p>You should see a screen summarizing the available jpm commands. Note that unlike cfx, jpm is available in every command prompt you start, as long as you installed it with the <code>--global</code> flag.</p> + +<p>If you get an error message saying <em>/usr/bin/env: node: No such file or directory</em> and you have installed nodejs through a package manager, nodejs may have been installed in the wrong directory. A <a href="http://stackoverflow.com/questions/20886217/browserify-error-usr-bin-env-node-no-such-file-or-directory">corresponding topic at stackoverflow.org</a> might help you to solve this problem. Basically, you can solve it by creating a symlink to the node:</p> + +<pre class="lang-js prettyprint prettyprinted"><code><span class="pln">sudo ln </span><span class="pun">-</span><span class="pln">s </span><span class="str">"$(which nodejs)"</span><span class="pln"> </span><span class="pun">/</span><span class="pln">usr</span><span class="pun">/</span><span class="pln">bin</span><span class="pun">/</span><span class="pln">node</span></code></pre> + +<h3 id="Problems">Problems?</h3> + +<p>If you don't see this, ask for help. SDK users and project team members discuss problems and proposals on the <a class="external external-icon" href="http://groups.google.com/group/mozilla-labs-jetpack/topics">project mailing list</a>. Someone else may have had the same problem you do, so try searching the list. You're welcome to post a question, too. You can also chat with other SDK users in <a class="external external-icon" href="http://mibbit.com/?channel=%23jetpack&server=irc.mozilla.org">#jetpack</a> on <a class="external external-icon" href="http://irc.mozilla.org/">Mozilla's IRC network</a>.</p> + +<h2 id="Command_reference">Command reference</h2> + +<p>There are six jpm commands:</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <td style="width: 20%;"><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_init"><code>jpm init</code></a></td> + <td>Create a skeleton add-on as a starting point for your own add-on.</td> + </tr> + <tr> + <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_run"><code>jpm run</code></a></td> + <td>Launch an instance of Firefox with your add-on installed.</td> + </tr> + <tr> + <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_test"><code>jpm test</code></a></td> + <td>Runs your add-on's unit tests.</td> + </tr> + <tr> + <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_xpi"><code>jpm xpi</code></a></td> + <td>Package your add-on as an <a href="https://developer.mozilla.org/en/XPI">XPI</a> file, which is the install file format for Firefox add-ons.</td> + </tr> + <tr> + <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_post"><code>jpm post</code></a></td> + <td>Package your add-on as an <a href="https://developer.mozilla.org/en/XPI">XPI</a> file, then post it to some url.</td> + </tr> + <tr> + <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_watchpost"><code>jpm watchpost</code></a></td> + <td>Package your add-on as an <a href="https://developer.mozilla.org/en/XPI">XPI</a> file whenever there is a file changed, and post that to some url.</td> + </tr> + <tr> + <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_sign"><code>jpm sign</code></a></td> + <td>Package your add-on as an <a href="https://developer.mozilla.org/en/XPI">XPI</a> file, then retrieve a new XPI signed by Mozilla.</td> + </tr> + </tbody> +</table> + +<h3 id="jpm_init">jpm init</h3> + +<p>This command initializes a new add-on from scratch.</p> + +<p>Create a new directory, change into it, and run <code>jpm init</code>.</p> + +<pre class="brush: bash">mkdir my-addon +cd my-addon +jpm init</pre> + +<p>You'll then be asked to supply some information about your add-on: this will be used to create your add-on's <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json">package.json</a> file.</p> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#title">title</a></li> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#name">name</a>: this defaults to the name of the directory in which you are running <code>jpm init</code>. Unless an <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#id"><code>id</code></a> field is present in package.json, jpm will prepend "@" to <code>name</code> and use the result as the <a href="https://developer.mozilla.org/en-US/Add-ons/Install_Manifests#id"><code>id</code> field in the add-on's install manifest</a>.</li> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#version">version</a></li> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#description">description</a></li> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#main">entry point</a> (which maps to "main" in package.json)</li> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#author">author</a></li> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#engines">engines</a> (supported applications)</li> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#license">license</a></li> +</ul> + +<p>Most of these fields have a default, which is shown in brackets after the question. If you just press Enter, your add-on will get the default value.</p> + +<p>Once you've supplied a value or accepted the default for these properties, you'll be shown the complete contents of "package.json" and asked to accept it.</p> + +<p>Then jpm will create an skeleton add-on, as a starting point for your own add-on development, with the following file structure:</p> + +<ul class="directory-tree"> + <li>my-addon + <ul> + <li>index.js</li> + <li>package.json</li> + <li>test + <ul> + <li>test-index.js</li> + </ul> + </li> + </ul> + </li> +</ul> + +<h3 id="jpm_run">jpm run</h3> + +<p>This command runs a new instance of Firefox with the add-on installed:</p> + +<pre class="brush: bash">jpm run</pre> + +<p><code>jpm run</code> accepts the following options:</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <td style="width: 30%;"><code>-b --binary BINARY</code></td> + <td> + <p>Use the version of Firefox specified in BINARY. BINARY may be specified as a full path or as a path relative to the current directory.</p> + + <pre class="brush: bash"> +jpm run -b /path/to/Firefox/Nightly</pre> + See <a href="/en-US/Add-ons/SDK/Tools/jpm#Selecting_a_browser_version">Selecting a browser version</a>.</td> + </tr> + <tr> + <td><code>--binary-args CMDARGS</code></td> + <td> + <p>Pass <a href="/en-US/docs/Mozilla/Command_Line_Options">extra arguments</a> to Firefox.</p> + + <p>For example, to pass the <code>-jsconsole</code> argument to Firefox, which will launch the <a href="/en-US/docs/Tools/Browser_Console">Browser Console</a>, try the following:</p> + + <pre class="brush: bash"> +jpm run --binary-args -jsconsole</pre> + + <p>To pass multiple arguments, or arguments containing spaces, quote them:</p> + + <pre class="brush: bash"> +jpm run --binary-args '-url mzl.la -jsconsole'</pre> + </td> + </tr> + <tr> + <td><code>--debug</code></td> + <td>Run the <a href="/en-US/Add-ons/Add-on_Debugger">add-on debugger</a> attached to the add-on.</td> + </tr> + <tr> + <td><code>-o --overload PATH</code></td> + <td> + <p>Rather than use the SDK modules built into Firefox, use the modules found at PATH. If <code>-o</code> is specified and PATH is omitted, jpm will look for the JETPACK_ROOT environment variable and use its value as the path.</p> + + <p>See <a href="/en-US/Add-ons/SDK/Tools/jpm#Overloading_the_built-in_modules">Overloading the built-in modules</a> for more information.</p> + </td> + </tr> + <tr> + <td><code>-p --profile=<code> PROFILE</code></code></td> + <td> + <p>By default, jpm uses a clean temporary Firefox <a href="http://support.mozilla.com/en-US/kb/profiles">profile</a> each time you call jpm run. Use the <code>--profile</code> option to instruct jpm to launch Firefox with an existing profile.</p> + + <p>The PROFILE value may be a profile name or the path to the profile.</p> + + <p>See <a href="/en-US/Add-ons/SDK/Tools/jpm#Using_profiles">Using profiles</a> for more information.</p> + </td> + </tr> + <tr> + <td><code>-v --verbose</code></td> + <td>Verbose operation.</td> + </tr> + <tr> + <td><code>--no-copy</code></td> + <td> + <div class="warning">Use with caution because <code>jpm run|test</code> changes many preferences, never use with your main profile.</div> + + <div class="note">This only applies when <code>--profile</code> is used.</div> + Disables the copying of the profile used, which allows one to reuse a profile.</td> + <td> </td> + </tr> + </tbody> +</table> + +<h3 id="jpm_test">jpm test</h3> + +<p>Use this command to run an add-on's unit tests. It will:</p> + +<ul> + <li>look for a directory called "test" under the add-on's root</li> + <li>open every file in there whose name starts with "test-" (note the hyphen after "test" in the filename. <code>jpm test</code> will include a file called "test-myCode.js", but will exclude files called "test_myCode.js" or "testMyCode.js")</li> + <li>call every function exported from that file whose name starts with "test"</li> +</ul> + +<pre class="brush: bash">jpm test +</pre> + +<p>See the <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Unit_testing">tutorial on unit testing</a> and the <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/test_assert">reference documentation for the <code>assert</code> module</a> for more details on this.</p> + +<p><code>jpm test</code> accepts the following options:</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <td><code>-b --binary BINARY</code></td> + <td> + <p>Use the version of Firefox specified in BINARY. BINARY may be specified as a full path or as a path relative to the current directory.</p> + + <pre class="brush: bash"> +jpm test -b /path/to/Firefox/Nightly</pre> + + <p>See <a href="/en-US/Add-ons/SDK/Tools/jpm#Selecting_a_browser_version">Selecting a browser version</a>.</p> + </td> + </tr> + <tr> + <td><code>--binary-args CMDARGS</code></td> + <td> + <p>Pass <a href="http://kb.mozillazine.org/Command_line_arguments">extra arguments</a> to Firefox.</p> + + <p>For example, to pass the <code>-jsconsole</code> argument to Firefox, which will launch the <a href="/en-US/docs/Tools/Browser_Console">Browser Console</a>, try the following:</p> + + <pre class="brush: bash"> +jpm test --binary-args -jsconsole</pre> + + <p>To pass multiple arguments, or arguments containing spaces, quote them:</p> + + <pre class="brush: bash"> +jpm test --binary-args '-url mzl.la -jsconsole'</pre> + </td> + </tr> + <tr> + <td><code>--debug</code></td> + <td>Run the <a href="/en-US/Add-ons/Add-on_Debugger">add-on debugger</a> attached to the add-on.</td> + </tr> + <tr> + <td style="width: 30%;"><code>-f --filter FILE[:TEST]</code></td> + <td> + <p>Only run tests whose filenames match FILE and optionally match TEST, both regexps.</p> + + <pre class="brush: bash"> +jpm test --filter base64:btoa</pre> + + <p>The above command only runs tests in files whose names contain "base64", and in those files only runs tests whose names contain "btoa".</p> + </td> + </tr> + <tr> + <td style="width: 30%;"><code>-o --overload PATH</code></td> + <td> + <p>Rather than use the SDK modules built into Firefox, use the modules found at PATH. If <code>-o</code> is specified and PATH is omitted, jpm will look for the JETPACK_ROOT environment variable and use its value as the path.</p> + + <p>See <a href="/en-US/Add-ons/SDK/Tools/jpm#Overloading_the_built-in_modules">Overloading the built-in modules</a> for more information.</p> + </td> + </tr> + <tr> + <td style="width: 30%;"><code>-p --profile<code> PROFILE</code></code></td> + <td> + <p>By default, jpm uses a clean temporary Firefox <a href="http://support.mozilla.com/en-US/kb/profiles">profile</a> each time you call jpm run. Use the <code>--profile</code> option to instruct jpm to launch Firefox with an existing profile.</p> + + <p>The PROFILE value may be a profile name or the path to the profile.</p> + + <p>See <a href="/en-US/Add-ons/SDK/Tools/jpm#Using_profiles">Using profiles</a> for more information.</p> + </td> + </tr> + <tr> + <td><code>--stop-on-error</code></td> + <td> + <p>By default jpm test keeps running tests even after tests fail. Specify <code>--stop-on-error</code> to stop running tests after the first failure:</p> + + <pre class="brush: bash"> +jpm test --stop-on-error</pre> + </td> + </tr> + <tr> + <td><code>--tbpl</code></td> + <td>Print test output in <a href="https://treeherder.mozilla.org/">Treeherder</a> format</td> + </tr> + <tr> + <td><code>--times NUMBER</code></td> + <td> + <p>Run tests NUMBER of times:</p> + + <pre class="brush: bash"> +jpm test --times 2</pre> + </td> + </tr> + <tr> + <td><code>-v --verbose</code></td> + <td>Verbose operation.</td> + </tr> + <tr> + <td><code>--no-copy</code></td> + <td> + <div class="warning">Use with caution because <code>jpm run|test</code> changes many preferences, never use with your main profile.</div> + + <div class="note">This only applies when <code>--profile</code> is used.</div> + Disables the copying of the profile used, which allows one to reuse a profile.</td> + </tr> + </tbody> +</table> + +<h3 id="jpm_xpi">jpm xpi</h3> + +<p>This command packages the add-on as an <a href="https://developer.mozilla.org/en/XPI">XPI</a> file, which is the install file format for Mozilla add-ons.</p> + +<pre class="brush: bash">jpm xpi</pre> + +<p>It looks for a file called <code>package.json</code> in the current directory and creates the corresponding XPI file. It ignores any ZIPs or XPIs in the add-on's root, and any test files. It includes all other files. If you want to exclude extra files, see <a href="en-US/Add-ons/SDK/Tools/jpmignore">the .jpmignore file</a>.</p> + +<p>Once you have built an XPI file you can distribute your add-on by submitting it to <a href="http://addons.mozilla.org">addons.mozilla.org</a>.</p> + +<p><code>jpm xpi</code> accepts the following option:</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <td><code>-v --verbose</code></td> + <td> + <p>Verbose operation:</p> + + <pre class="brush: bash"> +jpm xpi -v</pre> + </td> + </tr> + </tbody> +</table> + +<h3 id="jpm_post">jpm post</h3> + +<p>This command packages the add-on as an <a href="https://developer.mozilla.org/en/XPI">XPI</a> file then posts it to some url.</p> + +<pre class="brush: bash">jpm post</pre> + +<p>It looks for a file called <code>package.json</code> in the current directory and creates a XPI file with which to post to the <code>--post-url</code>.</p> + +<p><code>jpm post</code> accepts the following options:</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <td><code>--post-url URL</code></td> + <td> + <p>The url to post the extension to after creating a XPI.</p> + + <pre class="brush: bash"> +jpm post --post-url http://localhost:8888/</pre> + + <p>See <a href="https://www.npmjs.com/package/jpm#using-post-and-watchpost">Using Post and Watchpost</a> for more information.</p> + </td> + </tr> + <tr> + <td><code>-v --verbose</code></td> + <td> + <p>Verbose operation:</p> + + <pre class="brush: bash"> +jpm post --post-url http://localhost:8888/ -v</pre> + </td> + </tr> + </tbody> +</table> + +<h3 id="jpm_watchpost">jpm watchpost</h3> + +<p>This command packages the add-on as an <a href="https://developer.mozilla.org/en/XPI">XPI</a> file then posts it to some url whenever a file in the current working directory changes.</p> + +<pre class="brush: bash">jpm watchpost</pre> + +<p>Creates a XPI whenever a file in the current working directory changes and posts that to the <code>--post-url</code>.</p> + +<p><code>jpm watchpost</code> accepts the following options:</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <td><code>--post-url URL</code></td> + <td> + <p>The url to post the extension to after creating a XPI.</p> + + <pre class="brush: bash"> +jpm watchpost --post-url http://localhost:8888/</pre> + + <p>See <a href="https://www.npmjs.com/package/jpm#using-post-and-watchpost">Using Post and Watchpost</a> for more information.</p> + </td> + </tr> + <tr> + <td><code>-v --verbose</code></td> + <td> + <p>Verbose operation:</p> + + <pre class="brush: bash"> +jpm watchpost --post-url http://localhost:8888/ -v</pre> + </td> + </tr> + </tbody> +</table> + +<h3 id="jpm_sign">jpm sign</h3> + +<div class="note"> +<p>This feature is only supported from jpm 1.0.4 onwards.</p> +</div> + +<p>This command retrieves a new <a href="/en-US/docs/XPI">XPI</a> for your add-on signed by Mozilla. This allows you to <a href="/en-US/Add-ons/SDK/Tools/jpm#Supporting_updates_for_self-hosted_add-ons">self-host your add-on</a> so that users can install it without error when <a href="https://wiki.mozilla.org/Add-ons/Extension_Signing">signed add-ons are required</a>.</p> + +<pre class="brush: bash">jpm sign --api-key ${AMO_API_KEY} --api-secret ${AMO_API_SECRET}</pre> + +<p>This creates an <a href="/en-US/docs/XPI">XPI</a>, submits it to the <a href="https://addons.mozilla.org/">addons.mozilla.org</a> <a href="http://olympia.readthedocs.org/en/latest/topics/api/signing.html">signing API</a>, then downloads a new signed <a href="/en-US/docs/XPI">XPI</a> to the working directory if it passes validation. Here are some possible outcomes of running the sign command:</p> + +<ul> + <li>Your add-on passed validation, was signed by Mozilla, and a new signed <a href="/en-US/docs/XPI">XPI</a> was downloaded to your working directory.</li> + <li>Your add-on failed validation, was not signed, and you got a link to a detailed report. After fixing the validation errors, you can run the command again.</li> + <li>Your add-on at this exact version number already exists so it was not signed. You will need to increment the version number in your <a href="/en-US/Add-ons/SDK/Tools/package_json">package.json</a> file and run the command again.</li> +</ul> + +<p>Under the hood, <code>jpm sign</code> creates an unlisted add-on inside <a href="https://addons.mozilla.org/">addons.mozilla.org</a> which means you must distribute the XPI file yourself in order for your users to install it. If you need to create a listed add-on, just <a href="https://addons.mozilla.org/en-US/developers/addon/submit/2">submit it directly to addons.mozilla.org</a> where it will be signed automatically. See the <a href="/en-US/docs/Extension_Versioning%2C_Update_and_Compatibility#Debugging_and_solving_problems">debugging</a> section if you're experiencing difficulty installing a signed add-on.</p> + +<p><code>jpm sign</code> accepts the following options:</p> + +<table class="fullwidth-table standard-table"> + <tbody> + <tr> + <td><code>--api-key API_KEY</code></td> + <td> + <p>API access key (string) generated on the <a href="https://addons.mozilla.org/en-US/developers/addon/api/key/">addons.mozilla.org key management page</a>.</p> + </td> + </tr> + <tr> + <td><code>--api-secret API_SECRET</code></td> + <td> + <p>API access secret (string) generated on the <a href="https://addons.mozilla.org/en-US/developers/addon/api/key/">addons.mozilla.org key management page</a>. This value should be guarded with care and never checked into version control. If your secret is compromised, another developer could upload add-ons to your account. You should revoke and regenerate compromised API credentials immediately.</p> + </td> + </tr> + <tr> + <td><code>--api-url-prefix http://.../api</code></td> + <td> + <p>An optional API URL prefix in case you'd like to use a pre-production signing API. Here is an example of using a dev instance of <a href="https://addons.mozilla.org/">addons.mozilla.org</a> :</p> + + <pre class="brush: bash"> +jpm sign ... --api-url-prefix https://addons-dev.allizom.org/api/v3</pre> + </td> + </tr> + </tbody> +</table> + +<h2 id="Techniques">Techniques</h2> + +<h3 id="Selecting_a_browser_version">Selecting a browser version</h3> + +<p>By default, <code>jpm run</code> and <code>jpm test</code> will run the release version of Firefox. You can instruct jpm to use a different version in one of two ways:</p> + +<ul> + <li> + <p>you can use the <code>-b</code> or <code>--binary</code> option to instruct jpm to run a different version of Firefox. You can supply a path to a specific binary:</p> + + <pre class="brush: bash">jpm run -b /path/to/Firefox/Nightly</pre> + + <p>As a shorthand for this, you can pass "nightly", "aurora", "beta", or "firefox" and jpm will look in the default location for these Firefox versions:</p> + + <pre class="brush: bash">jpm run -b nightly</pre> + </li> + <li> + <p>you can set the <code>JPM_FIREFOX_BINARY</code> environment variable with the path to the version of Firefox you want to run. When you invoke <code>jpm run</code> or <code>jpm test</code> without the <code>-b</code> option, jpm will first check <code>JPM_FIREFOX_BINARY</code>, and use this as the path if it is set.</p> + </li> +</ul> + +<h3 id="Using_.jpmignore_to_ignore_files">Using <code>.jpmignore</code> to ignore files</h3> + +<p>Using <code>.jpmignore</code> is similar to using <code>.gitignore</code> with <code>git</code>, <code>.hgignore</code> with Mercurial, or <code>.npmignore</code> with <code>npm</code>. By using this file you can let <code>jpm</code> know which files you would like it to ignore when building a <code>.xpi</code> file with <code>jpm xpi</code>.</p> + +<p>Here is an example:</p> + +<pre class="brush: bash"># Ignore .DS_Store files created by mac +.DS_Store + +# Ignore any zip or xpi files +*.zip +*.xpi +</pre> + +<p>A <code>.jpmignore</code> file with the above contents would ignore all zip files and <code>.DS_Store</code> files from the xpi generated by <code>jpm xpi</code>.</p> + +<h3 id="Using_profiles_2"><a name="Using_profiles">Using profiles</a></h3> + +<p>By default, <code>jpm run</code> uses a new profile each time it is executed. This means that any profile-specific data entered from one run of <code>jpm</code> will not, by default, be available in the next run.</p> + +<p>This includes, for example, any extra add-ons you installed, or your history, or any data stored using the <a href="/en-US/Add-ons/SDK/High-Level_APIs/simple-storage">simple-storage</a> API.</p> + +<p>To make <code>jpm</code> use a specific profile, pass the <code>--profile</code> option, specifying the name of the profile you wish to use, or the path to the profile.</p> + +<pre class="brush: bash">jpm run --profile boogaloo +</pre> + +<pre class="brush: bash">jpm run --profile path/to/boogaloo</pre> + +<p>If you supply <code>--profile</code> but its argument is not the name of or path to an existing profile, jpm will open the <a href="https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles">profile manager</a>, enabling you to select and existing profile or create a new one:</p> + +<pre class="brush: bash">jpm run --profile i-dont-exist</pre> + +<h3 id="Developing_without_browser_restarts">Developing without browser restarts</h3> + +<p>Because <code>jpm run</code> restarts the browser each time you invoke it, it can be a little cumbersome if you are making very frequent changes to an add-on. An alternative development model is to use the <a href="https://addons.mozilla.org/en-US/firefox/addon/autoinstaller/" rel="noreferrer">Extension Auto-Installer</a> add-on: this listens for new XPI files on a specified port and installs them automatically. That way you can test new changes without needing to restart the browser:</p> + +<ul> + <li>make a change to your add-on</li> + <li>run <code>jpm post --post-url http://localhost:8888/</code>, to make a xpi and post it.</li> +</ul> + +<p>You could even automate this workflow with a simple script. For example:</p> + +<pre class="brush: bash">jpm watchpost --post-url http://localhost:8888/ +</pre> + +<p>Note that the logging level defined for the console is different when you use this method, compared to the logging level used when an add-on is run using <code>jpm run</code>. This means that if you want to see output from <a href="/en-US/Add-ons/SDK/Tutorials/Logging" rel="noreferrer"><code>console.log()</code></a> messages, you'll have to tweak a setting. See the documentation on <a href="/en-US/Add-ons/SDK/Tools/console#Logging_Levels" rel="noreferrer">logging levels</a> for the details on this.</p> + +<h3 id="Overloading_the_built-in_modules">Overloading the built-in modules</h3> + +<p>The SDK modules you use to implement your add-on are built into Firefox. When you run or package an add-on using <code>jpm run</code> or <code>jpm xpi</code>, the add-on will use the versions of the modules in the version of Firefox that hosts it.</p> + +<p>As an add-on developer, this is usually what you want. But if you're developing the SDK modules themselves, of course, it isn't. In this case you need to:</p> + +<ul> + <li>get a local copy of the SDK modules that you want: this usually means checking out the SDK from its <a href="https://github.com/mozilla/addon-sdk" rel="noreferrer">GitHub repo</a></li> + <li>set the <code>JETPACK_ROOT</code> environment variable to your local copy</li> + <li>pass the <code>-o</code> option to <code>jpm run</code> or <code>jpm xpi</code>:</li> +</ul> + +<pre>jpm run -o +</pre> + +<p>This instructs jpm to use the local copies of the SDK modules, not the ones in Firefox. If you don't want to set the <code>JETPACK_ROOT</code> environment variable, you can pass the location of your copy of the SDK modules along with <code>-o</code>:</p> + +<pre>jpm run -o "/path/to/SDK/"</pre> + +<h3 id="Supporting_updates_for_self-hosted_add-ons">Supporting updates for self-hosted add-ons</h3> + +<div class="note"> +<p>This feature is only supported from jpm 1.0.3 onwards.</p> +</div> + +<p>When you make updates to your add-on to add features or fix bugs, you'll want any previously installed versions of the add-on to update themselves to the new version.</p> + +<p>If you list your add-on on <a href="https://addons.mozilla.org/">addons.mozilla.org</a>, then all you have to do here is submit the new version; add-ons default to checking <a href="https://addons.mozilla.org/">addons.mozilla.org</a> for new versions of themselves. You can stop reading this section.</p> + +<p>If you do not list your add-on on <a href="https://addons.mozilla.org/">addons.mozilla.org</a>, you need to generate a Mozilla-signed XPI and tell Firefox where it can find new versions of your add-on. The way this works is:</p> + +<ul> + <li>you run <a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_sign">jpm sign</a> anytime you need to create a new version</li> + <li>you host the signed add-on XPI and update it when you need to</li> + <li>you host an "update manifest", which, among other things, contains a URL pointing to the XPI</li> + <li>your add-on tells Firefox where it can find the update manifest</li> +</ul> + +<p>To do this, include two extra keys in package.json:</p> + +<ul> + <li><code><a href="/en-US/Add-ons/SDK/Tools/package_json#updateURL">updateURL</a></code>: this is a URL which will be included in the built XPI file (technically, it's in the <a href="/en-US/docs/Mozilla/Add-ons/Install_Manifests">install manifest</a> which <code>jpm xpi</code> builds). It points to your update manifest. The <code>updateURL</code> value <em>may</em> be HTTPS. If it isn't, then you'll also need to sign the update manifest, and then include the public key using the <code><a href="/en-US/Add-ons/SDK/Tools/package_json#updateKey">updateKey</a></code> field in package.json. See <a href="/en-US/docs/Extension_Versioning%2C_Update_and_Compatibility#Securing_Updates">Securing updates</a> for more on this.</li> + <li><code><a href="/en-US/Add-ons/SDK/Tools/package_json#updateLink">updateLink</a></code>: this is the URL which will be included in the update manifest file. It points to the XPI, and <em>must</em> be an HTTPS URL.</li> +</ul> + +<p><img alt="" src="https://mdn.mozillademos.org/files/11847/addons-update.svg" style="" title="[https://mdn.mozillademos.org]"></p> + +<p>If you include <code>updateURL</code> and <code>updateLink</code> (and also <code>updateKey</code> in case <code>updateURL</code> is not HTTPS), then <code>jpm xpi</code> will:</p> + +<ul> + <li>embed the value you supplied for <code>updateURL</code> in the XPI it generates</li> + <li>generate an update manifest alongside the XPI, and embed the value you supplied for <code>updateLink</code> in the manifest</li> +</ul> + +<p>You then host the update manifest at <code>updateURL</code>, and host new versions of the XPI at <code>updateLink</code>.</p> + +<p>For some more details on this, see <a href="/en-US/docs/Extension_Versioning,_Update_and_Compatibility#Automatic_Add-on_Update_Checking">Automatic Add-on Update Checking</a>.</p> diff --git a/files/fr/mozilla/add-ons/sdk/tutorials/add_a_context_menu_item/index.html b/files/fr/mozilla/add-ons/sdk/tutorials/add_a_context_menu_item/index.html new file mode 100644 index 0000000000..1ad8700c3d --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/tutorials/add_a_context_menu_item/index.html @@ -0,0 +1,115 @@ +--- +title: Add a Context Menu Item +slug: Mozilla/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item +translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Add_a_Context_Menu_Item +--- +<p>{{AddonSidebar}}</p> + +<div class="note"> +<p><span>Pour suivre ce tuto , vous aurez besoin d'avoir appris des rudiments de<a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Getting_Started_%28jpm%29"> <code>jpm</code></a>. </span></p> +</div> + +<p>Pour ajouter des éléments et des sous-menus dans le menu contextuel de Firefox, utilisez le module <a href="https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/context-menu"><code>context-menu</code></a>.</p> + +<p>Voici un add-on qui ajoute un nouvel élément de menu contextuel. L'élément est affiché à chaque fois qu'une séléction est opérée dans la page. Si l'élément est cliqué, la séléction est envoyé au code principal.</p> + +<pre class="brush: js">var contextMenu = require("sdk/context-menu"); +var menuItem = contextMenu.Item({ + label: "Log Selection", + context: contextMenu.SelectionContext(), + contentScript: 'self.on("click", function () {' + + ' var text = window.getSelection().toString();' + + ' self.postMessage(text);' + + '});', + onMessage: function (selectionText) { + console.log(selectionText); + } +});</pre> + +<p>Executer l'add-on, charger une page web, séléctioner un texte et faites un clic droit, le nouvel élément doit apparaitre:<img src="https://mdn.mozillademos.org/files/6513/context-menu-selection.png" style="display: block; margin-left: auto; margin-right: auto;"></p> + +<p>Click it, and the selection is <a href="/en-US/Add-ons/SDK/Tutorials/Logging">logged to the console</a> (or the shell, if you're running an instance of Firefox from the command line):</p> + +<pre>info: elephantine lizard +</pre> + +<h2 id="Details">Details</h2> + +<p>All this add-on does is to construct a context menu item. You don't need to add it: once you have constructed the item, it is automatically added in the correct context. The constructor in this case takes four options: <code>label</code>, <code>context</code>, <code>contentScript</code>, and <code>onMessage</code>.</p> + +<h3 id="label">label</h3> + +<p>The <code>label</code> is just the string that's displayed.</p> + +<h3 id="context">context</h3> + +<p>The <code>context</code> describes the circumstances in which the item should be shown. The <code>context-menu</code> module provides a number of simple built-in contexts, including this <code>SelectionContext()</code>, which means: display the item when something on the page is selected.</p> + +<p>If these simple contexts aren't enough, you can define more sophisticated contexts using scripts.</p> + +<h3 id="contentScript">contentScript</h3> + +<p>This attaches a script to the item. In this case the script listens for the user to click on the item, then sends a message to the add-on containing the selected text.</p> + +<h3 id="onMessage">onMessage</h3> + +<p>The <code>onMessage</code> property provides a way for the add-on code to respond to messages from the script attached to the context menu item. In this case it just logs the selected text.</p> + +<p>So:</p> + +<ol> + <li>the user clicks the item</li> + <li>the content script's <code>click</code> event fires, and the content script retrieves the selected text and sends a message to the add-on</li> + <li>the add-on's <code>message</code> event fires, and the add-on code's handler function is passed the selected text, which it logs</li> +</ol> + +<h2 id="More_options">More options</h2> + +<h3 id="Adding_an_image">Adding an image</h3> + +<p>You can add an image to a context menu item with the <code>image</code> option. This is a URL pointing to a 16x16 icon that's displayed at the left side of the context menu item. Typically you'd store the image in your add-on's "data" directory, and construct the URL using <code>self.data.url()</code>:</p> + +<pre class="brush: js">var self = require("sdk/self"); + +var contextMenu = require("sdk/context-menu"); +var menuItem = contextMenu.Item({ + label: "Log Selection", + context: contextMenu.SelectionContext(), + contentScript: 'self.on("click", function () {' + + ' var text = window.getSelection().toString();' + + ' self.postMessage(text);' + + '});', + image: self.data.url("icon-16.png"), + onMessage: function (selectionText) { + console.log(selectionText); + } +});</pre> + +<h3 id="Adding_an_access_key">Adding an access key</h3> + +<div class="geckoVersionNote"> +<p>New in Firefox 35.</p> +</div> + +<p>From Firefox 35 you can specify an access key using the <code>accessKey</code> option. This must be a single-character string. Pressing the key selects the option when the context menu is open:</p> + +<pre class="brush: js">var contextMenu = require("sdk/context-menu"); +var menuItem = contextMenu.Item({ + label: "Log Selection", + context: contextMenu.SelectionContext(), + contentScript: 'self.on("click", function () {' + + ' var text = window.getSelection().toString();' + + ' self.postMessage(text);' + + '});', + accessKey: "l", + onMessage: function (selectionText) { + console.log(selectionText); + } +}); +</pre> + +<p> </p> + +<h2 id="Learning_More">Learning More</h2> + +<p>To learn more about the <code>context-menu</code> module, see the <a href="/en-US/Add-ons/SDK/High-Level_APIs/context-menu"><code>context-menu</code> API reference</a>.</p> diff --git a/files/fr/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html b/files/fr/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html new file mode 100644 index 0000000000..09fa1442a9 --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html @@ -0,0 +1,165 @@ +--- +title: Commencer avec jpm +slug: Mozilla/Add-ons/SDK/Tutorials/Getting_Started_(jpm) +translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Getting_Started_(jpm) +--- +<div class="note"> +<p>The Add-on SDK includes a command-line tool that you use to initialize, run, test, and package add-ons. The current tool is called jpm, and is based on <a href="http://nodejs.org/">Node.js</a>. It replaces the old cfx tool.</p> + +<p>You can use jpm from Firefox 38 onwards.</p> + +<p>This article describes how to develop using jpm.</p> +</div> + +<p>Ce tutoriel est un exemple de création d'une add-on en utilisant le SDK.</p> + +<h2 id="Prérequis">Prérequis</h2> + +<p>Pour créer des add-ons pour Firefox en utilisant le SDK, vous aurez besoin:</p> + +<ul> + <li>Firefox Version 38 ou plus. Si vous avez besoin de travailler avec les versions antérieures de Firefox, vous aurez besoin d'utiliser l'outil cfx. Voir les instructions pour <a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Getting_started_(cfx)" title="/fr/Add-ons/SDK/Tutorials/Getting_started_(cfx)">débuter avec cfx </a>.</li> + <li>l'outil de ligne de commande jpm. Voir les instructions pour l'installation <a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/jpm#Installation" title="/fr/Add-ons/SDK/Tools/jpm#Installation"> jpm </a>. Une fois que vous avez fait cela, vous serez à la recherche de l'invite de commande.</li> +</ul> + +<h2 id="Initialisation_d'un_add-on_vide">Initialisation d'un add-on vide</h2> + +<p>Dans l'invite de commande, créez un nouveau répertoire. Accédez à, tapez <code>jpm init</code>, et appuyez sur Entrée:</p> + +<pre>mkdir my-addon +cd my-addon +jpm init +</pre> + +<p>Vous serez alors invité à fournir quelques informations sur votre add-on: elles seront utilisées pour créer votre fichier <a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/package_json" title="/fr/docs/Mozilla/Add-ons/SDK/Tools/package_json">package.json</a>. Pour l'instant, appuyez sur Entrée pour accepter la valeur par défaut pour chaque propriété. Pour plus d'informations sur <code>jpm init</code>, voir le <a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/jpm#Command_reference" title="/fr/Add-ons/SDK/Tools/jpm#Command_reference">commande de référence jpm </a>.</p> + +<p>Une fois que vous avez fourni une valeur ou accepté la valeur par défaut pour ces propriétés, vous verrez le contenu complet de "package.json" que vous validerez.</p> + +<h2 id="Mise_en_œuvre_de_l'add-on">Mise en œuvre de l'add-on</h2> + +<p>Maintenant, vous pouvez écrire le code de l'add-on. Sauf si vous avez changé la valeur du "point d'entrée"("<a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/package_json#main" title="/fr/Add-ons/SDK/Tools/package_json#main">main</a>"dans package.json), allez dans le fichier "index.js" à la racine de votre add-on. Ce fichier a été créé dans l'étape précédente. Ouvrez-le et ajoutez le code suivant:</p> + +<pre class="brush: js">var buttons = require('sdk/ui/button/action'); +var tabs = require("sdk/tabs"); + +var button = buttons.ActionButton({ + id: "mozilla-link", + label: "Visit Mozilla", + icon: { + "16": "./icon-16.png", + "32": "./icon-32.png", + "64": "./icon-64.png" + }, + onClick: handleClick +}); + +function handleClick(state) { + tabs.open("https://www.mozilla.org/"); +} +</pre> + +<div class="note"> +<p>Notez que par défaut le "point d'entrée" dans jpm est "index.js", ce qui signifie que votre fichier principal est "index.js", et il se trouve à la racine de votre add-on.</p> + +<p>Dans cfx, le "point d'entrée" par défaut est "main.js», il se trouve dans le répertoire "lib" sous la racine de l'add-on.</p> +</div> + +<p>Enregistrez le fichier.</p> + +<p>Ensuite, créez un répertoire appelé "data" à la racine de votre add-on, et enregistrer ces trois fichiers d'icônes dans "data" :</p> + +<table class="standard-table"> + <tbody> + <tr> + <td><img alt="" src="https://mdn.mozillademos.org/files/7635/icon-16.png" style="height: 16px; width: 16px;"></td> + <td>icon-16.png</td> + </tr> + <tr> + <td><img alt="" src="https://mdn.mozillademos.org/files/7637/icon-32.png" style="height: 32px; width: 32px;"></td> + <td>icon-32.png</td> + </tr> + <tr> + <td><img alt="" src="https://mdn.mozillademos.org/files/7639/icon-64.png" style="height: 64px; width: 64px;"></td> + <td>icon-64.png</td> + </tr> + </tbody> +</table> + +<p>Retour à l'invite de commande, tapez:</p> + +<pre>jpm run</pre> + +<p>Ceci est la commande de jpm pour lancer une nouvelle instance de Firefox avec votre add-on installée.</p> + +<p>Si Firefox ne peut pas être localisé, vous devrez peut-être fournir le chemin d'accès (par exemple dans Ubuntu):</p> + + +<pre>jpm run -b /usr/bin/firefox</pre> + +<div class="note"> +<p>Vous pouvez egalement modifier le chemin dans le fichier \npm\node_modules\jpm\node_modules\fx-runner\lib\utils.js.</p> + +<p>Par exemple sous windos : <code>var rootKey = '\\Programe Files\\Mozilla Firefox\\';</code></p> +</div> + +<p>Lorsque Firefox est lancé, dans le coin en haut à droite du navigateur, vous verrez une icône avec le logo de Firefox. Cliquez sur l'icône, et un nouvel onglet sera ouvert avec <a href="https://www.mozilla.org/" title="http://www.mozilla.org/"> https://www.mozilla.org/ </a> chargé.</p> + +<p>Voilà ce que fait cette add-on. Elle utilise deux modules: le module SDK <a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_action" title="/fr/Add-ons/SDK/Low-Level_APIs/ui_button_action">button_action</a>, qui vous permet d'ajouter des boutons dans le navigateur, et le module<a href="https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/tabs" title="https://developer.mozilla.org/fr/Add-ons/SDK/High-Level_APIs/tabs"> tabs</a>, qui vous permet d'effectuer des opérations de base avec des onglets. Dans ce cas, nous avons créé un bouton dont l'icône est celle de Firefox, et ajouté un gestionnaire de clic qui charge la page d'accueil de Mozilla dans un nouvel onglet.</p> + +<p>Essayez d'éditer ce fichier. Par exemple, nous pourrions changer la page qui est chargé:</p> + +<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">var</span> buttons <span class="operator token">=</span> <span class="function token">require</span><span class="punctuation token">(</span><span class="string token">'sdk/ui/button/action'</span><span class="punctuation token">)</span><span class="punctuation token">;</span> +<span class="keyword token">var</span> tabs <span class="operator token">=</span> <span class="function token">require</span><span class="punctuation token">(</span><span class="string token">"sdk/tabs"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> + +<span class="keyword token">var</span> button <span class="operator token">=</span> buttons<span class="punctuation token">.</span><span class="function token">ActionButton</span><span class="punctuation token">(</span><span class="punctuation token">{</span> + id<span class="punctuation token">:</span> <span class="string token">"mozilla-link"</span><span class="punctuation token">,</span> + label<span class="punctuation token">:</span> <span class="string token">"Visit Mozilla"</span><span class="punctuation token">,</span> + icon<span class="punctuation token">:</span> <span class="punctuation token">{</span> + <span class="string token">"16"</span><span class="punctuation token">:</span> <span class="string token">"./icon-16.png"</span><span class="punctuation token">,</span> + <span class="string token">"32"</span><span class="punctuation token">:</span> <span class="string token">"./icon-32.png"</span><span class="punctuation token">,</span> + <span class="string token">"64"</span><span class="punctuation token">:</span> <span class="string token">"./icon-64.png"</span> + <span class="punctuation token">}</span><span class="punctuation token">,</span> + onClick<span class="punctuation token">:</span> handleClick +<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">handleClick</span><span class="punctuation token">(</span>state<span class="punctuation token">)</span> <span class="punctuation token">{</span> + tabs<span class="punctuation token">.</span><span class="function token">open</span><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></code></pre> + +<p>À l'invite de commande, exécutez à nouveau <code>jpm run</code>. Vous ouvrirez cette fois en cliquant <a href="https://developer.mozilla.org/">https://developer.mozilla.org/</a>.</p> + +<h2 id="Empaquetté_l'add-on">Empaquetté l'add-on</h2> + +<p>Lorsque vous avez terminé l'add-on et êtes prêt à la distribuer, vous aurez besoin de l'emballer dans un fichier XPI. C'est le format de fichier installable pour Firefox Add-ons. Vous pouvez distribuer xpi en les publiant sur <a href="https://addons.mozilla.org" title="https://addons.mozilla.org"> https://addons.mozilla.org </a> afin que les autres utilisateurs puissent la télécharger et l'installer.</p> + +<p>Pour construire un xpi, exécutez simplement la commande <code>jpm xpi</code> dans le répertoire de l'add-on:</p> + +<pre>jpm xpi +</pre> + +<p>Vous devriez voir un message du type:</p> + +<pre>JPM info Successfully created xpi at /path/to/getting-started/@getting-started.xpi +</pre> + +<p>Pour voir si cela a fonctionné, essayez d'installer le fichier xpi dans votre navigateur Firefox. Vous pouvez le faire en appuyant sur la combinaison de touches Ctrl+O (O+Cmd sur Mac) à partir de Firefox, ou en sélectionnant l'option "Ouvrir" dans le menu "Fichier" de Firefox. Cela fera apparaître une boîte de dialogue de sélection de fichier: naviguer vers le fichier "@getting-started.xpi", ouvrez-le et suivez les instructions pour installer l'add-on.</p> + +<p>Pour distribuer votre add-on, <a href="https://addons.mozilla.org/fr/developers/addon/submit/2" title="https://addons.mozilla.org/fr/developers/addon/submit/2"> soumettre le fichier xpi à addons.mozilla.org </a> ou exécuter <a href="https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/SDK/Tools/jpm#jpm_sign" title="https://developer.mozilla.org/fr/Add-ons/SDK/Tools/jpm#jpm_sign">jpm sign</a> si vous souhaitez distribuer l'add-on sur votre propre serveur.</p> + +<h2 id="Résumé">Résumé</h2> + +<p>Dans ce tutoriel, nous avons construit et emballé une add-on en utilisant trois commandes:</p> + +<ul> + <li><code>jpm init</code> pour initialiser un modèle vide d'add-on</li> + <li><code>jpm run</code> pour exécuter une nouvelle instance de Firefox avec l'add-on installé, afin que nous puissions l'essayer</li> + <li><code>jpm xpi</code> pour emballer l'add-on dans un fichier xpi pour la distribution</li> +</ul> + +<p>Ce sont les trois principales commandes que vous utiliserez lors de l'élaboration d'add-ons SDK. Il y a une <a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/jpm" title="/fr/Add-ons/SDK/Tools/jpm">documentation de référence</a> complète couvrant toutes les commandes que vous pouvez utiliser et toutes les options qu'elles prennent.</p> + +<p>Le code de add-on lui-même utilise deux modules de SDK, <a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_action" title="/fr/Add-ons/SDK/Low-Level_APIs/ui_button_action"> action bouton </a> et <a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/tabs" title="/fr/Add-ons/SDK/High-Level_APIs/tabs">tabs</a>. Il ya une documentation de référence pour toute les APIs <a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs" title="/fr/Add-ons/SDK/High-Level_APIs">high-level </a> et <a href="/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs" title="/fr/Add-ons/SDK/Low-Level_APIs">low-level</a> dans le SDK.</p> + +<h2 id="Et_en_suite">Et en suite?</h2> + +<p>Pour avoir une idée de certaines des choses que vous pouvez faire avec les API du SDK, essayer de travailler avec certains <a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials" title="/fr/Add-ons/SDK/Tutorials">tutoriels</a>.</p> diff --git a/files/fr/mozilla/add-ons/sdk/tutorials/index.html b/files/fr/mozilla/add-ons/sdk/tutorials/index.html new file mode 100644 index 0000000000..d68fcfd2ac --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/tutorials/index.html @@ -0,0 +1,143 @@ +--- +title: Tutoriels +slug: Mozilla/Add-ons/SDK/Tutorials +tags: + - Add-on SDK + - TopicStub +translation_of: Archive/Add-ons/Add-on_SDK/Tutorials +--- +<p>Cette page répertorie les articles sur la façon d'accomplir des tâches spécifiques en utilisant le SDK.</p> + +<hr> +<h3 id="Commencer"><a name="getting-started">Commencer</a></h3> + +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tools/jpm#Installation">Installation</a></dt> + <dd>Comment faire pour installer l'outil de jpm, que vous allez utiliser pour développer des add-ons.</dd> +</dl> + +<dl> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Troubleshooting">Dépannage</a></dt> + <dd>Quelques conseils pour résoudre les problèmes courants et obtenir de l'aide.</dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Getting_Started_(jpm)">Commencer</a></dt> + <dd>Démonstration de la création d'une add-on avec le SDK, en utilisant jpm.</dd> +</dl> +</div> +</div> + +<hr> +<h3 id="Créer_des_interfaces_utilisateur"><a name="create-user-interfaces">Créer des interfaces utilisateur</a></h3> + +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar">Ajouter un bouton de barre d'outils</a></dt> + <dd>Attachez un bouton à la barre d'outils du module complémentaire Firefox.</dd> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">Ajouter un élément de menu à Firefox </a></dt> + <dd>Ajoutez des éléments aux menus principaux de Firefox.</dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Display_a_Popup">Afficher une popup </a></dt> + <dd>Afficher une boîte de dialogue contextuelle (popup) implémentée avec HTML et JavaScript.</dd> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item">Ajouter un élément de menu contextuel </a></dt> + <dd>Ajoutez des éléments au menu contextuel de Firefox.</dd> +</dl> +</div> +</div> + +<hr> +<h3 id="Interagir_avec_le_navigateur"><a name="interact-with-the-browser">Interagir avec le navigateur</a></h3> + +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Open_a_Web_Page">Ouvrir une page Web </a></dt> + <dd>Ouvrez une page Web dans un nouvel onglet ou une nouvelle fenêtre du navigateur à l'aide du module onglets et accédez à son contenu.</dd> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Listen_for_Page_Load">Écouter le chargement de la page </a></dt> + <dd>Utilisez le module onglets pour être averti lorsque de nouvelles pages Web sont chargées et accéder à leur contenu.</dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/List_Open_Tabs">Obtenir la liste des onglets ouverts </a></dt> + <dd>Utilisez le module onglets pour parcourir les onglets actuellement ouverts et accéder à leur contenu.</dd> +</dl> +</div> +</div> + +<hr> +<h3 id="Modifier_les_pages_Web"><a name="modify-web-pages">Modifier les pages Web</a></h3> + +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">Modifier les pages Web en fonction de l'URL </a></dt> + <dd>Créez des filtres pour les pages Web en fonction de leur URL: chaque fois qu'une page Web dont l'URL correspond au filtre est chargée, exécutez un script spécifié.</dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">Modifier la page Web active </a></dt> + <dd>Chargez dynamiquement un script dans la page Web actuellement active.</dd> +</dl> +</div> +</div> + +<hr> +<h3 id="Techniques_de_développement"><a name="development-techniques">Techniques de développement</a></h3> + +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Logging">Enregistrement </a></dt> + <dd>Enregistrez les messages sur la console à des fins de diagnostic.</dd> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Creating_reusable_modules">Création de modules réutilisables </a></dt> + <dd>Structurez votre module complémentaire en modules séparés pour faciliter le développement, le débogage et la maintenance. Créez des paquets réutilisables contenant vos modules, afin que d'autres développeurs de modules complémentaires puissent également les utiliser.</dd> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Unit_testing">Tests unitaires </a></dt> + <dd>Ecrire et exécuter des tests unitaires à l'aide du framework de test du SDK.</dd> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Chrome_authority">Autorité Chrome </a></dt> + <dd>Accédez à l'objet Components, permettant à votre module complémentaire de charger et d'utiliser n'importe quel objet XPCOM.</dd> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Creating_event_targets">Création de cibles d'événements </a></dt> + <dd>Permettez aux objets que vous définissez d'émettre leurs propres événements.</dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Listening_for_load_and_unload">Écouter pour charger et décharger </a></dt> + <dd>Recevez des notifications lorsque votre module complémentaire est chargé ou déchargé par Firefox, et passez des arguments dans votre module complémentaire à partir de la ligne de commande.</dd> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Using_third-party_modules_(jpm)">Utilisation de modules tiers (jpm)</a></dt> + <dd>Installez et utilisez des modules supplémentaires qui ne sont pas fournis avec le SDK lui-même.</dd> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/l10n">Localisation </a></dt> + <dd>Écriture de code localisable.</dd> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Mobile_development">Développement mobile </a></dt> + <dd>Développez des modules complémentaires pour Firefox Mobile sur Android.</dd> + <dt><a href="/fr/docs/Mozilla/Add-ons/Add-on_Debugger">Débogueur de module complémentaire (Add-on)</a></dt> + <dd>Déboguez le JavaScript de votre module complémentaire.</dd> +</dl> +</div> +</div> + +<hr> +<h3 id="Mettre_ensemble"><a name="putting-it-together">Mettre ensemble</a></h3> + +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/Annotator">Module complémentaire Annotator </a></dt> + <dd>Présentation d'un module complémentaire relativement complexe.</dd> +</dl> +</div> +</div> diff --git a/files/fr/mozilla/add-ons/sdk/tutorials/l10n/index.html b/files/fr/mozilla/add-ons/sdk/tutorials/l10n/index.html new file mode 100644 index 0000000000..4b9ca669e7 --- /dev/null +++ b/files/fr/mozilla/add-ons/sdk/tutorials/l10n/index.html @@ -0,0 +1,383 @@ +--- +title: Localisation +slug: Mozilla/Add-ons/SDK/Tutorials/l10n +translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/l10n +--- +<p>Le SDK supporte la localisation des chaînes figurant dans:</p> + +<ul> + <li><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/l10n#Using_Localized_Strings_in_JavaScript">Le code JavaScript dans le main ou l'index de l'add-on</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/l10n#Using_Localized_Strings_in_HTML">Les fichiers HTML emballés avec votre add-on</a></li> + <li><a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/l10n#Using_Localized_Strings_in_Preferences">Les champs <code>title</code> et <code>description</code> de votre add-on</a>.</li> +</ul> + +<p>Il ne le fait pas dans le CSS, les scripts anexe, ou les champs titre et description qui apparaissent dans le gestionnaire de modules complémentaires. Voir <a href="/fr/docs/Mozilla/Add-ons/SDK/Tutorials/l10n#Limitations" title="/fr/Add-ons/SDK/Tutorials/l10n#Limitations">Limitations</a> ci-dessous.</p> + +<h2 id="Chaînes_localisées">Chaînes localisées</h2> + +<p>Les chaînes traduites sont conservées dans un répertoire appelé "locale" sous votre répertoire principale de l'add-on , avec un fichier pour chaque langue. Les dossiers:</p> + +<ul> + <li>utiliser <a href="http://fr.wikipedia.org/wiki/.properties" title="http://en.wikipedia.org/wiki/.properties"> <code>.properties</code> Format</a></li> + <li>sont nommés "xx-YY.properties", où "xx-YY" est le <a href="https://wiki.mozilla.org/L10n:Locale_Codes" title="https://wiki.mozilla.org/L10n:Locale_Codes">nom locale</a> en question (en français, uniquement "fr.properties")</li> + <li>contienent une entrée pour chaque chaîne que vous voulez localiser, constitué d'un identifiant pour la chaîne et sa traduction dans cette langue, dans le format <code>identifier=translation</code></li> + <li>utilisent UTF-8 sans codage BOM</li> + <li>Les lignes commençant par "#" (après espaces optionnels) sont des commentaires</li> +</ul> + +<p>Supposons que votre add-on contient une seule chaîne localisable, représentée en anglais comme "Hello!", Et que vous souhaitez fournir les localisations Français FRANCAIS et anglais ETATS-UNIS.</p> + +<p>Vous souhaitez ajouter deux fichiers au répertoire "locale" :</p> + +<pre>my-addon/ + data + lib + locale/ + en-US.properties + fr.properties +</pre> + +<p>"en-US.properties" contient ceci:</p> + +<pre>hello_id= Hello! +</pre> + +<p>"fr.properties" contient ceci:</p> + +<pre>hello_id= Bonjour! +</pre> + +<p>Maintenant, chaque fois que votre JavaScript ou HTML demande au système de localisation la traduction de l'identifiant <code>hello_id</code>, il obtiendra la traduction correcte pour la localisation en cours.</p> + +<h2 id="Utilisation_de_chaînes_localisées_en_HTML">Utilisation de chaînes localisées en HTML</h2> + +<div class="note"> +<p>Cet exemple utilise l'API <a href="https://developer.mozilla.org/fr/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_action" title="https://developer.mozilla.org/fr/Add-ons/SDK/Low-Level_APIs/ui_button_action">button_action</a>, qui est uniquement disponible à partir de Firefox 29.</p> +</div> + +<p>Pour référencer des chaînes localisées du HTML, ajouter un attribut <code>data-l10n-id</code> à la balise HTML où vous voulez que la chaîne localisée apparaisse, et assignez y l'identifiant :</p> + +<pre class="brush: html"><html> + <body> + <h1 data-l10n-id="hello_id"></h1> + </body> +</html> +</pre> + +<p>Ensuite, vous pouvez utiliser ce fichier HTML pour construire votre interface, par exemple à l'intérieur d'un panel :</p> + +<pre class="brush: js">var button = require("sdk/ui/button/action").ActionButton({ + id: "localized-hello", + label: "Localized hello", + icon: "./icon-16.png", + onClick: function() { + hello.show(); + } +}); + +var hello = require("sdk/panel").Panel({ + height: 75, + width: 150, + contentURL: require("sdk/self").data.url("my-panel.html") +});</pre> + +<p>Compte tenu de fichiers locaux pour "en-US" et "fr" qui fournissent les traductions de <code>hello_id</code>, le panneau affichera désormais "Bonjour!" ou "Hello!", selon la localisation en cours:</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/7663/bonjour.png" style="height: 160px; width: 255px;"><img alt="" src="https://mdn.mozillademos.org/files/7665/hello.png" style="height: 160px; width: 255px;"></p> + +<p>La traduction est inséré dans le nœud qui a l'attribut <code>data-l10n-id</code> défini. Tout contenu existant précédemment est simplement remplacé.</p> + +<p>La chaîne est insérée sous forme de texte, de sorte que vous ne pouvez pas insérer du code HTML en utilisant une déclaration comme:</p> + +<pre class="brush: bash"># Ne fonctionne pas. Les balises HTML sont insérés sous forme de texte. +hello_id= <blink>Hello!</blink> +</pre> + +<h3 id="Attributs_d'Elément_Localisation">Attributs d'Elément Localisation</h3> + +<div class="geckoVersionNote">Cette fonction est nouvelle dans Firefox 39</div> + +<p>Vous pouvez localiser certains attributs d'éléments avec un l10n-id en définissant sa valeur avec l10n-id.attributeName dans le fichier de propriétés comme:</p> + +<pre>hello_id.accesskey= H</pre> + +<p>Les attributs suivants sont supportés:</p> + +<ul> + <li><strong>accesskey</strong></li> + <li><strong>alt</strong></li> + <li><strong>label</strong></li> + <li><strong>title</strong></li> + <li><strong>placeholder</strong></li> +</ul> + +<p>En outre, la localisation avec les attributs <a href="/fr/docs/Web/Accessibility/ARIA" title="/fr/docs/Web/Accessibility/ARIA">ARIA</a> <strong> aria-label </strong>, <strong>aria-valuetex</strong> et <strong> aria-moz-hint </strong> sont pris en charge avec les mêmes alias que sur Firefox OS :</p> + +<ul> + <li><strong>ariaLabel</strong></li> + <li><strong>ariaValueText</strong></li> + <li><strong>ariaMozHint</strong></li> +</ul> + +<h2 id="Utilisation_de_chaînes_localisées_en_JavaScript">Utilisation de chaînes localisées en JavaScript</h2> + +<p>Pour référencer les chaînes localisées à partir de votre code d'add-on principale, faites ceci:</p> + +<pre class="brush: js">var _ = require("sdk/l10n").get; +console.log(_("hello_id!"));</pre> + +<p><span>L'affectation de "<code>_</code>" n'est pas nécessaire, mais pour travailler avec les outils <a href="https://www.gnu.org/software/gettext/gettext.html" title="https://www.gnu.org/software/gettext/gettext. html">gettext</a> qui attendent "<code>_</code>" pour indiquer les chaînes localisables, cela est préférable.</span></p> + +<ol> + <li>Importez le module <code>l10n</code>, et assigner sa fonction <code>get</code> à "<code>_</code>"(underscore).</li> + <li>Enveloppez toutes les références aux chaînes localisables avec la fonction <code>_()</code>.</li> +</ol> + +<p>Si vous l'exécutez, vous verrez le résultat attendu pour la localisation en cours:</p> + +<pre>info: Hello! +</pre> + +<pre>info: Bonjour! +</pre> + +<p>Notez que parce que vous ne pouvez pas appeler des modules avec <code>require()</code> dans les content_scripts, vous ne pouvez pas encore référencer les chaînes localisées à partir des content_scripts.</p> + +<h3 id="Pluriels">Pluriels</h3> + +<p>Le module <code>l10n</code> prend en charge les formes plurielles. Plusieurs langues ont des règles différentes pour la formation des pluriels. Par exemple, l'anglais a deux formes: une forme singulière pour "un", et une forme plurielle pour "tout le reste, y compris zéro":</p> + +<pre>one tomato +no tomatoes +two tomatoes +</pre> + +<p>Mais le Russe a des formes différentes pour les numéros se terminant par 1 (sauf 11), numéros se terminant par 2-4 (sauf 12-14) et les autres numéros:</p> + +<pre>один помидор // one tomato +два помидора // two tomatoes +пять помидоров // five tomatoes +</pre> + +<p>Le SDK utilise les données de <a href="http://cldr.unicode.org/index" title="http://cldr.unicode.org/index">Unicode CLDR</a> pour décrire les différentes formes plurielles utilisés dans les différentes langues.</p> + +<h4 id="Formes_plurielles_de_Unicode_CLDR">Formes plurielles de Unicode CLDR</h4> + +<p>Le projet Unicode CLDR définit un schéma pour décrire les règles de pluriel d'une langue particulière. Dans ce schéma, une langue peut se distinguer par un maximum de six formes, identifié par les catégories suivantes : <em>zero</em>, <em>one</em>, <em>two</em>, <em>few</em>, <em>many</em> et <em>other</em>.</p> + +<p>L'englais a deux formes, qui peuvent être décrits par les categories "1" à "<em>one</em>" et "everything else" à "<em>other</em>":</p> + +<pre>one → n is 1; +other → everything else +</pre> + +<p>Le russe utilise quatre formes, qui peuvent être décrits comme suit:</p> + +<pre>one → n mod 10 is 1 and n mod 100 is not 11; +few → n mod 10 in 2..4 and n mod 100 not in 12..14; +many → n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14; +other → everything else +</pre> + +<p>Les règles de pluriel pour toutes les langues peuvent être trouvés dans le CLDR <a href="http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html" title="http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html"> Langue règles pluriel</a> (ce tableau est mis à jour par rapport à la <a href="http://unicode.org/repos/cldr/trunk/common/supplemental/plurals.xml">source XML CLDR</a>).</p> + +<h4 id="Formes_plurielles_dans_le_SDK">Formes plurielles dans le SDK</h4> + +<p>Dans le code, vous pouvez fournir un paramètre supplémentaire à côté de l'identifiant, en décrivant combien d'articles il y a :</p> + +<pre class="brush: js">var _ = require("sdk/l10n").get; +console.log(_("tomato_id")); +console.log(_("tomato_id", 1)); +console.log(_("tomato_id", 2)); +console.log(_("tomato_id", 5)); +console.log(_("tomato_id", .5));</pre> + +<p>Dans le fichier <code>.properties</code> pour chaque langue, vous pouvez définir une localisation différente pour chaque forme plurielle possible dans cette langue, en utilisant les mots-clés de CLDR. Donc, en anglais, nous pourrions avoir deux localisations pluriel (à noter que la catégorie «<em>other</em>» ne prendre <strong>pas</strong> le mot-clé CLDR):</p> + +<pre># en-US translations +tomato_id[one]= %d tomato +tomato_id= %d tomatoes +</pre> + +<p>En Russe, nous pourrions avoir quatre localisations pluriel:</p> + +<pre># ru-RU translations +tomato_id[one]= %d помидор +tomato_id[few]= %d помидора +tomato_id[many]= %d помидоров +tomato_id= %d помидоры +</pre> + +<p>Le module de localisation comprend les définitions de CLDR pour chaque langue, ce qui lui permet de faire la différence entre, par exemple, "2" dans le code et "few" dans <code>ru-RU.properties</code>. Ensuite, il récupère et renvoie la localisation pour le compte que vous avez fourni.</p> + +<h3 id="Espaces_réservés">Espaces réservés</h3> + +<p>Le module <code>l10n</code> prend en charge des espaces réservés, vous permettant d'insérer une chaîne qui ne devrait pas être localisé. Dans le code qui suit les fichiers "en-US" et "fr" ".properties" incluent des espaces réservés :</p> + +<pre class="brush: bash"># en-US translations +hello_id= Hello %s! +</pre> + +<pre class="brush: bash"># fr translations +hello_id= Bonjour %s ! +</pre> + +<p>Pour utiliser les espaces réservés, fournir la chaîne de réservation après l'identifiant:</p> + +<pre class="brush: js">var _ = require("sdk/l10n").get; +console.log(_("hello_id", "Bob")); +console.log(_("hello_id", "Alice"));</pre> + +<p>Dans la localisation "en-US", cela nous donne:</p> + +<pre>info: Hello Bob! +info: Hello Alice! +</pre> + +<p>Dans "fr" nous obtenons:</p> + +<pre>info: Bonjour Bob ! +info: Bonjour Alice ! +</pre> + +<h3 id="Commande_espaces_réservés">Commande espaces réservés</h3> + +<p>Quand une chaîne localisable peut prendre deux ou plusieurs espaces réservés, les traducteurs peuvent définir l'ordre dans lequel les espaces réservés sont insérés, sans affecter le code.</p> + +<p>Principalement, ce qui est important c'est que les différentes langues ont des règles différentes pour l'ordre des mots. Même au sein de la même langue, cependant, les traducteurs doivent avoir la liberté de définir l'ordre des mots.</p> + +<p>Par exemple, supposons que nous voulons inclure une chaîne localisée nommer ville natale d'une personne. Il y a deux espaces réservés: le nom de la personne et le nom de la ville natale :</p> + +<pre class="brush: js">var _ = require("sdk/l10n").get; +console.log(_("home_town_id", "Bob", "London"));</pre> + +<p>Un traducteur anglais pourrait vouloir choisir entre les ordres suivantes:</p> + +<pre>"<town_name> is <person_name>'s home town." +</pre> + +<pre>"<person_name>'s home town is <town_name>" +</pre> + +<p>Pour choisir la première option, le fichier <code>.properties</code> peut commander les espaces réservés comme suit:</p> + +<pre>home_town_id= %2s is %1s's home town. +</pre> + +<p>Cela nous donne le résultat suivant:</p> + +<pre>info: London is Bob's home town. +</pre> + +<h2 id="Utilisation_de_chaînes_localisées_dans_les_Préférences">Utilisation de chaînes localisées dans les Préférences</h2> + +<p>En incluant une <a href="/fr/docs/Mozilla/Add-ons/SDK/High-Level_APIs/simple-prefs" title="/fr/Add-ons/SDK/High-Level_APIs/simple-prefs">structure <code>"preferences"</code> dans votre fichier "package.json"</a>, vous pouvez définir des préférences pour votre add-on que l'utilisateur peut voir et modifier à l'aide de Firefox <a href="https://support.mozilla.org/fr/kb/Using%20extensions%20with%20Firefox#w_how-to-change-extension-settings" title="https://support.mozilla.org/fr/kb/Using%20extensions%20with%20Firefox#w_how-to-change-extension-settings">Add-ons Manager</a>.</p> + +<p>Les préférences ont obligatoirement des champs <code>title</code> et <code>description</code>. Ce sont des chaînes qui apparaissent aux côtés de la préférence dans le Gestionnaire Add-ons, pour expliquer à l'utilisateur ce que signifie la préférence.</p> + +<ul> + <li> + <p>Pour fournir la forme localisée du titre de la préférence, inclure une entrée dans votre fichier "propriétés" dont l'identifiant est le nom de la préférence suivie par <code>_title</code>, et dont la valeur est le titre localisé.</p> + </li> + <li> + <p>Pour fournir la forme localisée de la description de la préférence, inclure une entrée dans votre fichier "propriétés" dont l'identifiant est le nom de la préférence suivie par <code>_description</code>, et dont la valeur est la description localisée.</p> + </li> +</ul> + +<p>Par exemple, supposons que votre "package.json" définit une seule préférence:</p> + +<pre>{ + "preferences": [ + { + "type": "string", + "name": "monster_name", + "value": "Gerald", + "title": "Name" + } + ], + "name": "monster-builder", + "license": "MPL 2.0", + "author": "me", + "version": "0.1", + "fullName": "Monster Builder", + "id": "monster-builder@me.org", + "description": "Build your own monster" +} +</pre> + +<p>Dans votre fichier "en-US.properties", inclure ces deux éléments :</p> + +<pre>monster_name_title= Name +monster_name_description= What is the monster's name? +</pre> + +<p>Dans votre fichier "fr.properties", inclure la traduction française:</p> + +<pre>monster_name_title= Nom +monster_name_description= Quel est le nom du monstre ? +</pre> + +<p>Quand la configuration locale du navigateur est "en-US", les utilisateurs voient dans le gestionnaire de modules complémentaires:</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/6525/preference-us.png" style="height: 77px; width: 571px;"></p> + +<p>Lorsque la configuration locale du navigateur est "fr", ils voient ceci:</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/6523/preference-french.png"></p> + +<p>Les types <code>menulist</code> et <code>radio</code> de préférences ont des options. L'attribut <code>label</code> de chaque option est affichée à l'utilisateur. Si le fichier de paramètres régionaux a une entrée avec la valeur de l'élément <code>label</code> préfixé «{name}_options." comme clé (où {name} est le nom de la préférence), sa valeur est utilisée comme étiquette localisée.</p> + +<h2 id="Utilisation_de_l'identificateurs">Utilisation de l'identificateurs</h2> + +<p>Si le système de localisation ne peut pas trouver une entrée pour un identifiant particulier en utilisant la localisation en cours, elle retourne juste l'identifiant lui-même.</p> + +<p>C'est intéressante car vous pouvez écrire du code "localisable", entièrement fonctionnel sans avoir à écrire des fichiers locaux. Vous pouvez simplement utiliser les chaînes de langue par défaut et fournir ultérieurement les fichiers <code>.properties</code> pour toutes les langues supplémentaires que vous souhaitez soutenir.</p> + +<p>Par exemple, dans le cas ci-dessus, vous pouvez utiliser "Bonjour!" comme identificateur, et juste avoir un <code>.properties</code> pour la locale "fr":</p> + +<pre>Hello!= Bonjour! +</pre> + +<p>Puis, quand la locale "en-US", le système ne parviennent pas à trouver un <code>.properties</code>, et revoit "Bonjour!".</p> + +<div class="warning"> +<p>Cependant, cette approche rend difficile le maintien d'une add-on qui a de nombreuses localisations, parce que vous utilisez les chaînes de langue par défaut en tant que chaînes de l'interface utilisateur et que les clés recherchent vos traductions. Cela signifie que si vous voulez changer le libellé d'une chaîne dans la langue par défaut, ou corriger une faute de frappe, alors vous cassez tous vos fichiers de paramètres régionaux.</p> +</div> + +<h2 id="Locale_Updater">Locale Updater</h2> + +<p>L'add-on <a href="https://github.com/downloads/ochameau/locale-updater/locale-updater.xpi" title="https://github.com/downloads/ochameau/locale-updater/locale-updater.xpi">locale updater (paramètres régionaux de mise à jour)</a> rend plus facile la mise à jour des fichiers locaux. Une fois que vous l'avez installé, ouvrez le Gestionnaire de modules complémentaires, et vous verrez un nouveau bouton "Update l10n" à côté de chaque add-on que vous avez installé :</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/6515/locale-updater.png"></p> + +<p>Cliquez sur le bouton et vous serez invité à entrer un nouveau fichier <code>.properties</code> pour cette add-on. Si vous fournissez un nouveau fichier, les données locales de l'add-on seront mis à jour avec le nouveau fichier.</p> + +<h2 id="Limites">Limites</h2> + +<p>Le support de la localisation actuelle est un premier pas vers la prise en charge complète, et contient un certain nombre de limitations.</p> + +<ul> + <li> + <p>Il n'y a pas de soutien pour les scripts de contenu ou des fichiers CSS: pour le moment, vous ne pouvez localiser les chaînes apparaissant dans les fichiers JavaScript qui sont appelés avec <code>require()</code>.</p> + </li> + <li> + <p>Il n'y a pas de soutien pour localiser <a href="/fr/docs/Mozilla/Add-ons/Install_Manifests#name" title="/fr/Add-ons/Install_Manifests#name">name</a> ou <a href="/fr/docs/Mozilla/Add-ons/Install_Manifests#description" title="/fr/Add-ons/Install_Manifests#description">description</a> de l'add-on : votre seule option étant de modifier le fichier install.rdf après la construction du XPI. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1218719" title="https://bugzilla.mozilla.org/show_bug.cgi?id=1218719">bug 1218719</a>.</p> + </li> + <li> + <p>L'ensemble des fichiers locaux sont globaux à travers une add-on. Cela signifie qu'un module n'est pas en mesure de remplacer une traduction plus générale: si un module <code>informal.js</code> ne peut pas spécifier que "hello_id" survenant dans son code doit être traduit par "Salut!".</p> + </li> + <li> + <p>Les outils SDK compilent les fichiers de localisation dans un format JSON lors de la production d'un XPI. Cela signifie que les traducteurs ne peuvent pas travailler directement sur le XPI, mais doivent avoir accès à la source de l'add-on.</p> + </li> + <li> + <p>Le développeur de l'add-on doit assembler manuellement l'ensemble des chaînes localisables qui composent les fichiers locaux.</p> + </li> +</ul> + +<h2 id="Voir_aussi_-_pour_les_développeurs_qui_cherchent_à_localiser_les_add-ons_non-SDK">Voir aussi - pour les développeurs qui cherchent à localiser les add-ons non-SDK</h2> + +<ul> + <li>Comment localiser les pages HTML, les fichiers XUL, et les fichiers js/jsm des add-ons bootstrapped : <a href="/fr/docs/Mozilla/Add-ons/Bootstrapped_extensions#Localization_%28L10n%29" title="/fr/Add-ons/Bootstrapped_extensions#Localization_%28L10n%29">Bootstrapped Extensions::Localization(l10n)</a></li> + <li>Tutoriel Localisation XUL School : <a href="/fr/docs/Mozilla/Tech/XUL/Tutorial/Localization" title="/fr/docs/Mozilla/Tech/XUL/Tutorial/Localization">XUL : Localisation</a> et <a href="/fr/docs/Mozilla/Tech/XUL/Tutorial/Property_Files" title="/fr/docs/Mozilla/Tech/XUL/Tutorial/Property_Files">Les fichiers de propriétés</a></li> + <li><a href="/fr/docs/Mozilla/Localization/Localizing_an_extension">Localisation d'une extension</a></li> +</ul> diff --git a/files/fr/mozilla/add-ons/thunderbird/index.html b/files/fr/mozilla/add-ons/thunderbird/index.html new file mode 100644 index 0000000000..b15b535a59 --- /dev/null +++ b/files/fr/mozilla/add-ons/thunderbird/index.html @@ -0,0 +1,135 @@ +--- +title: Thunderbird extensions +slug: Mozilla/Add-ons/Thunderbird +tags: + - Add-ons + - Extensions + - NeedsTranslation + - TopicStub + - thunderbird +translation_of: Mozilla/Thunderbird/Thunderbird_extensions +--- +<div class="callout-box"><strong><a href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension" title="en/Building_a_Thunderbird_extension">Building a Thunderbird extension</a></strong><br> +Step-by-step explanation on how to build an extension for Thunderbird.</div> + +<div> +<p>{{AddonSidebar}}</p> +The following documentation provides help for creating extensions for Mozilla's <a class="internal" href="/en/Thunderbird" title="En/Thunderbird">Thunderbird</a> email client. Although there are many similarities with <a href="/en/Extensions" title="en/Extensions">Firefox extensions</a> there are also some differences that may confound the starting developer.</div> + +<div><br> +<strong>Please help!</strong> You can <a class="internal" href="/en/Extensions/Thunderbird/HowTos" title="en/Extensions/Thunderbird/HowTos">add a how-to</a> (a question or an answer or a code snippet), <a class="internal" href="/en/Extensions/Thunderbird/Useful_newsgroups_discussions" title="En/Extensions/Thunderbird/Useful newsgroups discussions">summarize and link to a relevant newsgroup discussion</a>, or create a tutorial. Need help? Contact <a class="internal" href="/User:jenzed" title="User:jenzed">jenzed</a>.</div> + +<table class="topicpage-table"> + <tbody> + <tr> + <td> + <h2 id="Documentation" name="Documentation"><a href="/Special:Tags?tag=Extensions&language=en" title="Special:Tags?tag=Extensions&language=en">Documentation</a></h2> + + <h3 id="Getting_started_with_Thunderbird">Getting started with Thunderbird</h3> + + <p>A brave, young developer wants to develop an add-on for Thunderbird. Here's a few links to help them through this journey.</p> + + <ul> + <li>Start by reading the tutorial and learn how to<a class="internal" href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension" title="En/Building a Thunderbird extension"> build a Thunderbird extension</a> (Outdated, still talks about overlays and the add-on builder is no longer available but the tutorial has not been updated.)</li> + <li>Read about the <a href="/en/Thunderbird/Main_Windows" title="Main Windows">main windows</a> so that you know what one means when they say « thread pane », « preview pane », and « folder pane ».</li> + + <li>Want to do some real stuff? See <a class="external" href="http://blog.xulforum.org/index.php?post/2011/03/14/Basic-MimeMessage-demo" title="http://blog.xulforum.org/index.php?post/2011/03/14/Basic-MimeMessage-demo">how to inspect a message</a> (demo add-on included!)</li> + <li>Play with our other <a href="/en/Extensions/Thunderbird/Demo_Addon" title="Demo Addon">demo add-on</a> that exercises some more advanced Thunderbird-specific features</li> + <li>Want to do even more stuff? Don't reinvent the wheel: steal functions from the <a class="link-https" href="https://github.com/protz/thunderbird-stdlib" title="https://github.com/protz/thunderbird-stdlib">thunderbird-stdlib</a> project (doc <a class="external" href="http://protz.github.com/thunderbird-stdlib/doc/symbols/_global_.html" title="http://protz.github.com/thunderbird-stdlib/doc/symbols/_global_.html">here</a>). Functions for dealing with messages (delete them, archive them, change their tags, etc.) are included.</li> + <li>Haven't found what you're looking for? Read the <a class="internal" href="/en/Extensions/Thunderbird/HowTos" rel="internal" title="en/Extensions/Thunderbird/HowTos">Thunderbird how-tos</a>; they contain a lot of recipes for things extensions want to do.</li> + <li>Still haven't managed to do what you wanted? See the list of all <a class="external" href="http://wiki.mozilla.org/Thunderbird/CommunicationChannels" title="http://wiki.mozilla.org/Thunderbird/CommunicationChannels">Thunderbird communication channels </a>so that you know where to ask when you get stuck :-).</li> + <li>Feeling really brave? Read the source using a <a class="external" href="http://doxygen.db48x.net/comm-central/html/" title="http://doxygen.db48x.net/comm-central/html/">fancy interface</a>; you can often find tests that demonstrate how to do what you're trying to achieve.</li> + </ul> + + <h3 id="The_Gloda_database">The Gloda database</h3> + + <p>Thunderbird has a subsystem called Gloda. Gloda stands for « Global Database », and creates Thunderbird-wide relations between objects. Gloda provides concepts such as Conversations, Messages, Identities, Contacts. All these concepts are related together: a Conversation contains Messages which are linked to Identities (<strong>from</strong> field, <strong>to</strong> field) which are themselves part of a Contact: indeed, a contact has multiple identities.</p> + + <p>Typical use cases for Gloda: find all messages whose subject matches [search term], find all messages from [person], find all messages in the same thread as [a given message], find all messages involving [person], etc. etc.</p> + + <p>Gloda is extremely powerful and is used heavily by add-ons such as <a class="link-https" href="https://addons.mozilla.org/en-US/thunderbird/addon/gmail-conversation-view/" title="https://addons.mozilla.org/en-US/thunderbird/addon/gmail-conversation-view/">Thunderbird Conversations</a>. Learn more about Gloda:</p> + + <ul> + <li>an overview of <a href="/en/Thunderbird/gloda" title="Gloda">Gloda</a></li> + <li>learn how to create <a href="/en/Thunderbird/Creating_a_Gloda_message_query" title="Creating a gloda message query">your first message query</a> and read the <a href="/en/Thunderbird/Gloda_examples" title="Gloda examples">gloda examples</a></li> + <li>learn about the Gloda internals: <a href="/en/Thunderbird/Gloda_debugging" title="Gloda debugging">Gloda debugging</a>, <a href="/en/Thunderbird/Gloda_indexing" title="Gloda indexing">Gloda indexing</a></li> + </ul> + + <h3 id="More_Thunderbird-specific_links">More Thunderbird-specific links</h3> + + <p>Some of these links may be wildly out of date, but they still provide valuable information on the codebase.</p> + + <ul> + <li><a class="internal" href="/en/Extensions/Thunderbird/An_overview_of_the_Thunderbird_interface" title="En/Extensions/Thunderbird/An overview of the Thunderbird interface">An overview of Thunderbird components</a></li> + <li><a class="internal" href="/en/Extensions/Thunderbird/Thunderbird_developer_reference_docs" title="en/Extensions/Thunderbird/Thunderbird developer reference docs">Developer reference docs</a>: + <ul> + <li><a class="internal" href="/en/Folders" title="En/Folders">Folder classes</a></li> + <li><a class="internal" href="/en/DB_Views_(message_lists)" title="En/DB Views (message lists)">DB views (message list)</a></li> + <li><a class="internal" href="/en/Message_Summary_Database" title="En/Message Summary Database">Message summary database</a></li> + <li><a class="internal" href="/en/MailNews_Protocols" title="En/MailNews Protocols">MailNews protocols</a></li> + <li><a class="internal" href="/En/MailNews_Filters" rel="internal" title="En/MailNews Filters">MailNews filters</a></li> + <li><a class="internal" href="/en/Extensions/Thunderbird/Error_reporting_tools" title="en/Extension Library/Extensions/Thunderbird/Error reporting tools">Error reporting tools</a></li> + <li><a href="/en/Toolkit_API/STEEL" title="en/Toolkit API/STEEL">STEEL library</a> (obsolete as of Thunderbird 52, use <a class="link-https" href="https://github.com/protz/thunderbird-stdlib" title="https://github.com/protz/thunderbird-stdlib">https://github.com/protz/thunderbird-stdlib</a>)</li> + <li><a class="external" href="http://quetzalcoatal.blogspot.com/2010/01/developing-new-account-types-part-0.html" title="http://quetzalcoatal.blogspot.com/2010/01/developing-new-account-types-part-0.html">Developing new account types</a> <strong>NEW!</strong></li> + </ul> + </li> + <li><a class="internal" href="/en/Extensions/Thunderbird/Useful_newsgroups_discussions" title="En/Extensions/Thunderbird/Useful newsgroups discussions">Useful newsgroup discussions</a> (watch out, anything that's too old should be regarded suspiciously; there's been significant API rewrite over the past years, and most of these techniques are considerably easier now) </li> + <li><a href="/en/Thunderbird/Thunderbird_API_documentation" title="en/Thunderbird/Thunderbird API documentation">Thunderbird API docs</a> (mostly a collection of out-of-date pages, relevance is rather dubious) </li> + <li><a href="/en/Mozilla/Thunderbird/Releases" title="Thunderbird developer release notes">Thunderbird developer release notes</a> - changes in the recent Thunderbird updates affecting add-on developers. <a href="/Thunderbird_5_for_developers" title="Thunderbird 5 for developers">Thunderbird 5 for developers</a> has important information on MsgHdrToMimeMessage which is a central piece of code.</li> + </ul> + + <h3 id="General_links">General links</h3> + + <ul> + <li><a href="/en/Extensions/Thunderbird/Finding_the_code_for_a_feature" title="en/Extensions/Thunderbird/Finding the code for a feature">Finding the code for a feature</a></li> + <li><a class="external" href="http://kb.mozillazine.org/Category:Thunderbird" title="http://kb.mozillazine.org/Category:Thunderbird">Mozillazine articles on Thunderbird</a></li> + <li><a href="/Special:Tags?tag=Thunderbird" title="https://developer.mozilla.org/Special:Tags?tag=Thunderbird">All pages tagged with Thunderbird</a></li> + <li><a href="/Special:Tags?tag=MailNews" title="https://developer.mozilla.org/Special:Tags?tag=MailNews">All pages tagged with MailNews</a></li> + </ul> + </td> + <td> + <h2 id="Community" name="Community">Community</h2> + + <ul> + <li>See the list of all <a class="external" href="http://wiki.mozilla.org/Thunderbird/CommunicationChannels" title="http://wiki.mozilla.org/Thunderbird/CommunicationChannels">Thunderbird communication channels </a>first</li> + <li>Among these are:</li> + </ul> + + <p>{{ DiscussionList("dev-extensions", "mozilla.dev.extensions") }}</p> + + <ul> + <li><a class="link-irc" href="irc://moznet/#extdev">#extdev IRC channel</a> / <a class="link-irc" href="irc://moznet/#maildev">#maildev IRC channel</a></li> + <li><a class="external" href="http://forums.mozillazine.org/viewforum.php?f=19">MozillaZine forum</a></li> + <li><a class="external" href="http://mozdev.org/mailman/listinfo/project_owners">mozdev project owners</a></li> + <li><a href="/en/Extensions/Community" title="en/Extensions/Community">Other community links...</a></li> + </ul> + + <h2 id="Tools" name="Tools">Tools</h2> + + <ul> + <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/6622" rel="external nofollow" title="https://addons.mozilla.org/en-US/firefox/addon/6622">DOM Inspector</a> edit the live DOM (Firefox and Thunderbird)</li> + <li><a class="link-https" href="https://addons.mozilla.org/thunderbird/addon/workspace-for-thunderbird/" title="https://addons.mozilla.org/thunderbird/addon/workspace-for-thunderbird/">Workspace for Thunderbird</a>, allows running code snippets in Thunderbird and inspecting variable structure and content</li> + <li><a class="external" href="http://www.hacksrus.com/~ginda/venkman/" rel="external nofollow" title="http://www.hacksrus.com/~ginda/venkman/">Venkman</a>, a JavaScript debugger (<a class="external" href="http://addons.mozilla.org/en-US/firefox/addon/216" rel="external nofollow" title="http://addons.mozilla.org/en-US/firefox/addon/216">Firefox</a>, <a class="external" href="http://addons.mozilla.org/en-US/thunderbird/addon/216" rel="external nofollow" title="http://addons.mozilla.org/en-US/thunderbird/addon/216">Thunderbird</a>)</li> + <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/7434/" rel="external nofollow" title="https://addons.mozilla.org/en-US/firefox/addon/7434/">Extension Developer's Extension</a> a suite of development tools</li> + <li><a class="external" href="http://www.gijsk.com/" rel="external nofollow" title="http://www.gijsk.com/">Chrome List</a> view files in chrome:// (<a class="external" href="http://addons.mozilla.org/en-US/firefox/addon/4453" rel="external nofollow" title="http://addons.mozilla.org/en-US/firefox/addon/4453">Firefox</a>, <a class="external" href="http://addons.mozilla.org/en-US/thunderbird/addon/4453" rel="external nofollow" title="http://addons.mozilla.org/en-US/thunderbird/addon/4453">Thunderbird</a>)</li> + <li><a href="/en/Mozmill" title="en/Mozmill">Mozmill</a> test tool and framework</li> + <li><a class="external" href="http://xpcomviewer.mozdev.org/" rel="external nofollow" title="http://xpcomviewer.mozdev.org">XPCOMViewer</a> an XPCOM inspector (Firefox and Thunderbird)</li> + </ul> + + <p>... <a class="internal" href="/en/Setting_up_extension_development_environment#Development_extensions" title="en/Setting up extension development environment#Development extensions">more tools</a> ...</p> + + <p><span class="alllinks"><a href="/Special:Tags?tag=Extensions:Tools&language=en" title="Special:Tags?tag=Extensions:Tools&language=en">View All...</a></span></p> + + <h2 id="Related_Topics" name="Related_Topics">Related Topics</h2> + + <dl> + <dd><a href="/en/XUL" title="en/XUL">XUL</a>, <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a>, <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a>, <a href="/en/Themes" title="en/Themes">Themes</a>, <a href="/En/Developer_Guide" title="en/Developing_Mozilla">Developing Mozilla</a></dd> + </dl> + </td> + </tr> + </tbody> +</table> + +<p><span class="comment">Categories</span></p> + +<p>{{ languages( { "ja": "ja/Extensions/Thunderbird" } ) }}</p> diff --git a/files/fr/mozilla/add-ons/thèmes/fond/index.html b/files/fr/mozilla/add-ons/thèmes/fond/index.html new file mode 100644 index 0000000000..2af0b0031c --- /dev/null +++ b/files/fr/mozilla/add-ons/thèmes/fond/index.html @@ -0,0 +1,79 @@ +--- +title: Thème de fond +slug: Mozilla/Add-ons/Thèmes/Fond +translation_of: Mozilla/Add-ons/Themes/Lightweight_themes +--- +<p>{{AddonSidebar}}</p> + +<h2 id="Comment_créer_votre_propre_thème">Comment créer votre propre thème</h2> + +<div class="primary auto" id="getting-started"> +<p>Les thèmes sont fait d'une image "header" qui va remplacer le fond de base de Firefox.</p> + +<p>Vous avez fini votre thème ? <a href="https://addons.mozilla.org/developers/theme/submit">Mettez-le en ligne maintenant !</a></p> + +<h3 id="Création_de_l'image_header_du_thème">Création de l'image "header" du thème</h3> + +<p>L'image header est affichée en fond en haut de la fenêtre du navigateur, on la voit aussi derrière les barres d'outils, la barre d'adresse, la barre "Rehercher" et la ligne d'onglets. Elle sera <strong>ancrée au coin supérieur-droit</strong> de la fenêtre.</p> + +<p class="screenshot"><img alt="" src="https://mdn.mozillademos.org/files/9929/header-step.jpg" style="height: 215px; width: 1059px;"></p> + +<ul> + <li><a href="https://addons.cdn.mozilla.net/static/img/docs/themes/header.jpg">Voir un exemple d'image Header ici.</a></li> +</ul> + +<h4 id="Image_Requise">Image Requise</h4> + +<ul> + <li>Les dimensions doivent être <strong>3000px de large × 200px de hauteur</strong></li> + <li>En format PNG ou JPG</li> + <li>L'image ne doit pas faire plus de 300KB de mémoire</li> +</ul> + +<h4 id="Petites_aides">Petites aides</h4> + +<ul> + <li>Une image discrète, peu contrastée et assez uniforme est recommandée; une image très détaillée ressortira trop par rapport à l'interface du navigateur</li> + <li>Firefox peut afficher plus loin que la partie basse de l'image si une autre barre d'outils ou d'autres éléments d'interface sont ajoutés en haut de la fenêtre.</li> + <li>Le coin en haut à droite de l'image devrait avoir les informations les plus importantes -quand l'utilisateur agrandit la fenêtre du navigateur, celui-ci montre plus du côté gauche de l'image.</li> +</ul> + +<h4 id="Ressources_édition_d'images_en_ligne">Ressources : édition d'images en ligne</h4> + +<ul> + <li><a href="http://www.pixlr.com">Pixlr</a> — Pixlr offre un outil professionnel et simple d'utilisation pour créer et modifier des images dans votre navigateur.</li> + <li><a href="http://www.photoshop.com/tools?wf=editor">Photoshop</a> — Retouchez, tournez et modifiez des photos avec Photoshop® Express, un éditeur de photo en ligne gratuit.</li> +</ul> + +<h3 id="Envoyer_votre_thème_personnalisé">Envoyer votre thème personnalisé</h3> + +<p>Pour commencer à envoyer vos images, allez sur la page <a href="https://addons.mozilla.org/developers/theme/submit">Soumettre un thème.</a></p> + +<ol class="itemized"> + <li><strong>Nommez votre thème</strong> — choisissez un nom unique pour votre thème. 2 thèmes avec le même nom ne sont pas autorisés, alors vus devriez peut-être essayer plusieurs fois pour trouver un nom unique.</li> + <li><strong>Choisissez une catégorie et des tags</strong> — sélectionnez une catégorie et entrez des tags (mots clés) qui décrivent le mieux votre thème. Rappelez-vous qu'un utilisateur pourrait rejeter votre thème si sa catégorie et ses tags ne sont pas fidèles à votre thème.</li> + <li><strong>Décrivez votre thème</strong> — écrivez une courte description de votre thème. Rappelez-vous qu'un utilisateur pourrait rejeter votre thème si sa description n'est pas fidèle à votre thème.</li> + <li><strong>Sélectionnez</strong> une license pour votre thème — décidez une license de droits d'auteurs pour votre travail. <a href="http://creativecommons.org/licenses/">Lire plus à propos des types de licences Creative Common.</a> + <ul> + <li><strong>Important:</strong> Soyez sur d'avoir les droits d'utiliser cette image dans votre thème !</li> + </ul> + </li> + <li><strong>Envoyez votre image</strong> — soyez sur qu'elle fait moins de 300 KB et qu'elle soit au formant JPG ou PNG !</li> + <li><strong>Sélectionnez la couleur des textes et des onglets</strong> — vous pouvez choisir la couleur de "fond" des onglets et celle des textes qui colle le mieux avec votre image header.</li> + <li><strong>Prévisualisez votre thème</strong> — vous êtes prêts à prévisualiser votre thème ! Passez simplement votre souris sur le bouton "Soumettre le thème", et vous verrez à quoi il ressemble.</li> + <li><strong>Soumettre votre thème</strong> — si tout à l'air bon, cliquez sur le bouton "Soumettre le thème" et vous avez fini ! Vous pouvez voir tous les thèmes que vous avez créé sur votre page de profil. + <ul> + <li><strong>Info:</strong> pour vous assurer que votre thème est approuvé pour la galerie, soyez sur qu'il n'enfreint aucune règles des Conditions d'Utilisation !</li> + </ul> + </li> +</ol> + +<p class="call-to-submit"><a class="button prominent" href="https://addons.mozilla.org/en-US/developers/theme/submit">soumettre votre thème ici</a></p> + +<h2 class="call-to-submit" id="Plus_de_tutoriels">Plus de tutoriels</h2> + +<p><a href="http://vanillaorchidstutorials.blogspot.com/2015/11/mozilla-themes-focal-point-sizing.html">Mozilla Themes Focal Point on Sizing</a> - A tutorial on theming with a focus on sizing, by VanillaOrchids.<br> + <br> + <br> + <sup>Traduit par Tocram2 ;)</sup></p> +</div> diff --git a/files/fr/mozilla/add-ons/thèmes/index.html b/files/fr/mozilla/add-ons/thèmes/index.html new file mode 100644 index 0000000000..b0b2cd163a --- /dev/null +++ b/files/fr/mozilla/add-ons/thèmes/index.html @@ -0,0 +1,45 @@ +--- +title: Thèmes +slug: Mozilla/Add-ons/Thèmes +tags: + - Apparences + - Extensions + - Theme +translation_of: Mozilla/Add-ons/Themes +--- +<p>{{AddonSidebar}}</p> + +<p><span id="result_box" lang="fr"><span>Les thèmes vous permettent de modifier l'apparence de l'interface utilisateur et de la personnaliser selon vos goûts.</span> <span>Apprenez comment créer et partager des thèmes !</span></span></p> + +<div class="column-container"> +<div class="column-half"> +<h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2> + +<dl> + <dt><a href="https://developer.mozilla.org/fr/Add-ons/Themes/Theme_concepts" title="Building a Theme">Créer un thème de navigateur</a></dt> + <dd>Introduction pour la création de thèmes pour les dernières versions de Firefox.</dd> + <dt> + <h2 id="Thèmes_légers">Thèmes légers</h2> + </dt> + <dt><a href="https://developer.mozilla.org/fr/Add-ons/Themes/Lightweight_themes" title="Themes/Lightweight themes">Thèmes légers</a></dt> + <dd>La création de thèmes utilisant peu d'espaces pour Firefox.</dd> + <dt><a href="https://developer.mozilla.org/fr/Add-ons/Themes/Lightweight_Themes/FAQ" title="Themes/Common_Firefox_Theme_Issues_and_Solutions">FAQ des thèmes légers</a></dt> + <dd>Donne les réponses aux questions les plus courantes.</dd> +</dl> +</div> + +<div class="column-half"> +<h2 class="Tools" id="Tools" name="Tools">Outils et ressources</h2> + +<ul> + <li><a href="https://developer.mozilla.org/fr/Add-ons/WebExtensions/manifest.json/theme">Thème de navigateur les clés du manifest.json</a></li> + <li><a href="https://developer.mozilla.org/fr/Add-ons/WebExtensions/API/theme">API extensions pour les thèmes de navigateur</a></li> + <li><a href="http://vanillaorchidstutorials.blogspot.com/2015/11/mozilla-themes-focal-point-sizing.html">Tutoriel pour les thèmes légers (en)</a></li> + <li><a href="https://discourse.mozilla.org/c/add-ons/themes">Discussions du forum (en)</a></li> + <li><a href="https://blog.mozilla.org/addons/category/personas/">Thèmes abordés dans les fils du blog (en)</a></li> + <li> <a href="https://developer.mozilla.org/en-US/Mozilla/Add-ons/Themes/Obsolete">Ressources archivées</a></li> +</ul> +</div> +</div> + +<p> </p> diff --git a/files/fr/mozilla/add-ons/thèmes/theme_concepts/index.html b/files/fr/mozilla/add-ons/thèmes/theme_concepts/index.html new file mode 100644 index 0000000000..8856f4e38f --- /dev/null +++ b/files/fr/mozilla/add-ons/thèmes/theme_concepts/index.html @@ -0,0 +1,231 @@ +--- +title: Theme concepts +slug: Mozilla/Add-ons/Thèmes/Theme_concepts +translation_of: Mozilla/Add-ons/Themes/Theme_concepts +--- +<div>{{AddonSidebar()}}</div> + +<p>Dans Firefox, les thèmes développés par la bibliothèque <a href="/en-US/Add-ons/WebExtensions">WebExtensions API</a> vous permet de modifier le rendu du navigateur. Le cas se présente en ajoutant des images à la région de l'en-tête du navigateur Firefox : il s'agit de la partie, en arrière-plan, des barres de menu, d'outils, d'hyperliens, de recherche et de l'ensemble des onglets d'une même fenêtre.</p> + +<p>These theme options can be implemented as static themes (although the theme images themselves may be animated) or as dynamic themes created in a browser extension.</p> + +<div class="note"> +<p>If you have a <a href="/en-US/docs/Mozilla/Add-ons/Themes/Lightweight_themes">lightweight theme</a> it will be converted to this new theme format automatically before lightweight themes are deprecated. You do not need to port your theme. However, please feel free to update your themes to use any of the new features described here.</p> +</div> + +<h2 id="Static_themes">Static themes</h2> + +<div class="note"> +<p id="Image_formats">Note that you can't yet submit static WebExtension-based themes to addons.mozilla.org. The work to support this is tracked in <a href="https://github.com/mozilla/addons/issues/501">https://github.com/mozilla/addons/issues/501</a>. If you want to share a theme with other users, you'll need to make it either a <a href="/en-US/docs/Mozilla/Add-ons/Themes/Lightweight_themes">lightweight theme</a> or a <a href="/en-US/Add-ons/WebExtensions/API/theme">dynamic theme</a>.</p> +</div> + +<p>Static themes are specified using the same resources as a browser extension: a <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> file to define the theme components with those components stored in the same folder as the manifest.json file or a sub folder. These resources are then packed in a zip for publication on <a href="https://addons.mozilla.org">addons.mozilla.org</a> (AMO).</p> + +<div class="note"> +<p>A theme and browser extension functionality cannot be defined in one package, such as including a theme to complement an extension. You can, however, programmatically include a theme in an extension using the Theme API. See <a href="#Dynamic_themes">Dynamic themes</a>.</p> +</div> + +<h3 id="Defining_a_theme">Defining a theme</h3> + +<p>To create a theme (in this example a simple, single image theme):</p> + +<ul> + <li>Create a folder in a suitable location on your computer.</li> + <li>Add the theme image file to the folder: + <pre><mytheme> + <your_header_image>.<type></pre> + </li> + <li>Create a file called manifest.json in the folder and edit its content as follows: + <pre class="brush: json">{ + "manifest_version": 2, + "version": "1.0", + "name": "<your_theme_name>", + "theme": { + "images": { + "headerURL": "<your_header_image>.<type>" + }, + "colors": { + "accentcolor": "#FFFFFF", + "textcolor": "#000" + } + } +} +</pre> + Where: + + <ul> + <li><code>"accentcolor":</code> is the heading area background color for your theme.</li> + <li><code>"</code><code>textcolor</code><code>":</code> the color of the text in the heading area.</li> + </ul> + </li> + <li>Package your theme and submit it to AMO, <a href="/en-US/Add-ons/WebExtensions/Publishing_your_WebExtension">following these instructions</a>.</li> +</ul> + +<h3 id="Static_theme_approaches">Static theme approaches</h3> + +<p>There are two approaches you can take to theming the header area of Firefox: using a single image or using multiple images. You could combine the two, but it’s easier to treat them separately.</p> + +<h4 id="Single_image_themes">Single image themes</h4> + +<p>This is the basic or minimal theming option, where you define:</p> + +<ul> + <li>a single image, which is anchored to the top right of the header area.</li> + <li>A color for the text in the header.</li> +</ul> + +<p>The area your header image needs to fill is a maximum of 200 pixels high. The maximum image width is determined by the resolution of the monitor Firefox is displaying on and how much of the monitor Firefox is using. Practically, this means you would need to allow for a width of up to 5120 pixels wide (for the next generation of 5k monitors). However, rather than creating a very wide image, a better approach is to use a narrower image with a transparent left edge so that it fades to the background color. For example, we could use this image<br> + <img alt="An image of a weta (the common name for a group of about 70 insect species in the families Anostostomatidae and Rhaphidophoridae, endemic to New Zealand) with the left edge fading to total transparency." src="https://mdn.mozillademos.org/files/15215/weta.png" style="height: 200px; width: 406px;"><br> + combined with a complementary background color, to create this effect in the header<br> + <img alt="A single image theme using the weta.png image" src="https://mdn.mozillademos.org/files/15217/basic_theme.png" style="height: 113px; width: 679px;"></p> + +<p>See details about this theme in the <a href="https://github.com/mdn/webextensions-examples/tree/master/themes">themes</a> example <a href="https://github.com/mdn/webextensions-examples/tree/master/themes/weta_fade">weta_fade</a>.</p> + +<p>Obviously, you can still provide a single wide image if you prefer.</p> + +<h4 id="Multiple_image_themes">Multiple image themes</h4> + +<p>As an alternative to creating a single image theme, you have the option to use multiple images. These images can be individually anchored to locations within the header, with the option to apply tiling to each image.</p> + +<p>Depending on the effect you want to create you may need to suppress the mandatory <code>"</code><code>headerURL</code><code>":</code> image with an empty or transparent image. You would use an empty or transparent image if, for example, you wanted to tile a centrally justified image, such as<br> + <img alt="An image of a weta (the common name for a group of about 70 insect species in the families Anostostomatidae and Rhaphidophoridae, endemic to New Zealand) with the left and right edges fading to total transparency." src="https://mdn.mozillademos.org/files/15219/weta_for_tiling.png" style="height: 200px; width: 270px;"><br> + to create this effect<br> + <img alt="A single image theme using the additional images option to align an image to the center of the heading and tile it. " src="https://mdn.mozillademos.org/files/15221/tiled_theme.png" style="height: 113px; width: 679px;"><br> + Here you specify the weta image like this:</p> + +<pre class="brush: json" dir="ltr">"images": { + "headerURL": "empty.png", + "additional_backgrounds": [ "weta_for_tiling.png"] +},</pre> + +<p dir="ltr">and the images tiling with:</p> + +<pre class="brush: json" dir="ltr">"properties": { + "additional_backgrounds_alignment": [ "top" ], + "additional_backgrounds_tiling": [ "repeat" ] +},</pre> + +<p>Full details of how to setup this theme can be found in the <a href="https://github.com/mdn/webextensions-examples/tree/master/themes">themes</a> example <a href="https://github.com/mdn/webextensions-examples/tree/master/themes/weta_tiled">weta_tiled</a>. Full detais of the alignment and tiling options can be found in the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">"theme" key description</a>.</p> + +<p>Alternatively, you can use multiple images, say combining the original weta image with this one anchored to the left of the header<br> + <img alt="An image of a weta (the common name for a group of about 70 insect species in the families Anostostomatidae and Rhaphidophoridae, endemic to New Zealand) with the right edge fading to total transparency." src="https://mdn.mozillademos.org/files/15223/weta-left.png" style="height: 200px; width: 406px;"><br> + to create this effect<br> + <img alt="A theme using the additional images option to place two mirrored image to the left and right of the browser header." src="https://mdn.mozillademos.org/files/15225/multi_image_theme.png" style="height: 113px; width: 679px;"></p> + +<p>Where the images are specified with:</p> + +<pre class="brush: json" dir="ltr">"images": { + "headerURL": "empty.png", + "additional_backgrounds": [ "weta.png", "weta-left.png"] +},</pre> + +<p dir="ltr">and their alignment by:</p> + +<pre class="brush: json" dir="ltr">"properties": { + "additional_backgrounds_alignment": [ "right top" , "left top" ] +},</pre> + +<p>Full details of how to setup this theme can be found in the <a href="https://github.com/mdn/webextensions-examples/tree/master/themes">themes</a> example <a href="https://github.com/mdn/webextensions-examples/tree/master/themes/weta_mirror">weta_mirror</a>. Full detais of the alignment options can be found in the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">"theme" key description</a>.</p> + +<h3 id="Static_animated_themes">Static animated themes</h3> + +<p>It is possible to create an animated theme using an APNG format image, as in the <a href="https://github.com/mdn/webextensions-examples/tree/master/themes">themes</a> example <a href="https://github.com/mdn/webextensions-examples/tree/master/themes/animated">animated</a>. However, remember that rapid animations, such as the one in the example might be too distracting for a practical theme.</p> + +<p dir="ltr">You can also animate themes programmatically, which we discuss in <a href="#Dynamic_themes">Dynamic themes</a>.</p> + +<h2 id="Dynamic_themes">Dynamic themes</h2> + +<p>As an alternative to defining a static theme, you can use the {{WebExtAPIRef("theme")}} API to control the theme used in Firefox from within a browser extension. There are a couple of use cases for this option:</p> + +<ul> + <li>To bundle a theme with a browser extension, as an added extra.</li> + <li>Create a dynamic theme that changes under programmatic control.</li> +</ul> + +<p>And, obviously, you can combine the two and bundle a programmatically controlled theme with your extension.</p> + +<p>Using the {{WebExtAPIRef("theme")}} API is straightforward. First, request "theme"<a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions"> permission</a> in the extension's<a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json"> manifest.json</a> file. Next, you build a JSON object containing the same information you would use in a static theme’s manifest.json, Finally, pass the JSON object in a {{WebExtAPIRef("theme.update()")}} call.</p> + +<p>For example, the following code, from the <a href="https://github.com/mdn/webextensions-examples/tree/master/dynamic-theme">dynamic theme example</a> defines the content for the day and night elements of the dynamic theme:</p> + +<pre class="brush: js" dir="ltr">const themes = { + 'day': { + images: { + headerURL: 'sun.jpg', + }, + colors: { + accentcolor: '#CF723F', + textcolor: '#111', + } + }, + 'night': { + images: { + headerURL: 'moon.jpg', + }, + colors: { + accentcolor: '#000', + textcolor: '#fff', + } + } +};</pre> + +<p>The theme.Theme object is then passed to {{WebExtAPIRef("theme.update()")}} to change the header theme, as in this code snippet from the same example:</p> + +<pre class="brush: js" dir="ltr">function setTheme(theme) { + if (currentTheme === theme) { + // No point in changing the theme if it has already been set. + return; + } + currentTheme = theme; + browser.theme.update(themes[theme]); +}</pre> + +<p dir="ltr">Learn more about dynamic themes and see an additional example in the following video:</p> + +<p dir="ltr">{{EmbedYouTube("ycckyrUN0AY")}}</p> + +<p dir="ltr"> </p> + +<p dir="ltr">If you have not built a browser extension before, check out <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension">Your first extension</a> for a step-by-step guide.</p> + +<h2 id="Cross_browser_compatibility">Cross browser compatibility</h2> + +<p>There is currently limited compatibility between themes in the major browsers. Opera takes an entirely different approach, and Microsoft Edge themes are not yet open to developers.</p> + +<p>There is some compatibility between Firefox static themes and Chrome themes, providing the ability to port a single header image theme from Firefox to Chrome. This would be done by amending the manifest.json keys as follows:</p> + +<ul> + <li><code>"headerURL":</code> to <code>"theme_frame":</code></li> + <li><code>"accentcolor":</code> to <code>"frame":</code></li> + <li><code>"textcolor":</code> to <code>"tab_text":</code></li> +</ul> + +<p>Noting that "frame": and "tab_text": support RGB color definition only.</p> + +<p>So, in the single image theme example (weta_fade) could be supported in Chrome using the following manifest.json file:</p> + +<pre class="brush: json" dir="ltr">{ + "manifest_version": 2, + "version": "1.0", + "name": "<your_theme_name>", + "theme": { + "images": { + "theme_frame": "weta.png" + }, + "colors": { + "frame": [ 173 , 176 , 159 ], + "tab_text": [ 0 , 0 , 0 ] + } + } +}</pre> + +<p>However, there will be a couple of differences:</p> + +<ul> + <li>Chrome tiles the <code>“theme_frame”:</code> image from the left of the header area.</li> + <li><code>"tab_text":</code> only affects the text on the highlighted/active tab.</li> +</ul> + +<p dir="ltr"><img alt="The basic theme example using the Chrome compatible manifest.json keys, showing the differences in how those keys are implemented." src="https://mdn.mozillademos.org/files/15227/basic_in_chrome.png" style="height: 113px; width: 679px;"></p> + +<p>For more information, see the notes on <a href="/en-US/Add-ons/WebExtensions/manifest.json/theme#Chrome_compatibility">Chrome compatibility</a>.</p> 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> diff --git a/files/fr/mozilla/add-ons_bonnes_pratiques_performances_extensions/index.html b/files/fr/mozilla/add-ons_bonnes_pratiques_performances_extensions/index.html new file mode 100644 index 0000000000..e1d91724fb --- /dev/null +++ b/files/fr/mozilla/add-ons_bonnes_pratiques_performances_extensions/index.html @@ -0,0 +1,94 @@ +--- +title: Add-ons bonnes pratiques performances extensions +slug: Mozilla/Add-ons_bonnes_pratiques_performances_extensions +--- +<p>Un des grands avantages de Firefox est son extrême extensibilité. Les extensions peuvent presque tout faire. Cela présente un inconvénient: les extensions mal écrites ont un impact majeur sur l'expérience de navigation, incluant les performances de Firefox lui-même. Cet article vous offre quelques bonnes pratiques et suggestions qui pourront non seulement augmenter les performances et la vitesse de votre extension, mais aussi celles de Firefox.</p> + +<h2 id="Améliorer_les_performances_au_chargement"><strong>Améliorer les performances au chargement</strong></h2> + +<p>Les extensions sont chargées et démarrés à chaque fois qu'une nouvelle fenêtre du navigateur est ouverte. Cela signifie qu'à chaque fois qu'une fenêtre s'ouvre, votre extension peut avoir un impact sur le temps que mettra l'utilisateur à voir le contenu qu'il essaye de visualiser. Il y a plusieurs choses que vous pouvez faire pour réduire la durée que votre extension ajoutera à l'apparition du contenu désiré par l'utilisateur.</p> + +<h3 id="Chargez_uniquement_ce_dont_vous_avez_besoin_quand_vous_en_avez_besoin"><strong>Chargez uniquement ce dont vous avez besoin, quand vous en avez besoin</strong></h3> + +<p>Ne chargez pas des choses au démarrage qui ne seront nécessaire que si l'utilisateur clique sur un bouton, ou si une préférence donnée est activé quand elle ne l'est pas. Si votre extension présente des fonctionnalités accessibles uniquement si l'utilisateur est identifié auprès d'un service, ne chargez pas de ressources pour ces fonctionnalités tant que l'utilisateur n'est pas identifié.</p> + +<h3 id="Utilisez_les_modules_de_code_JavaScript">Utilisez les modules de code JavaScript</h3> + +<p>Vous pouvez créer vos propres <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Using" title="/en-US/docs/Mozilla/JavaScript_code_modules/Using">JavaScript code modules</a> incorporants les fonctionnalités qui ne sont requises que dans des circonstances particulières. Cela permet de charger à la volé des morceaux de votre extension, au lieu de tout charger d'un coup.</p> + +<p>While JavaScript modules can be extremely useful, and provide significant performance benefits, they should be used wisely. Loading modules incurs a small cost, so breaking code up to an unnecessary degree can be counter-productive. Code should be modularized to the extend that doing so increases clarity, and loading of large or expensive chunks of code fragments can be significantly deferred.</p> + +<h3 id="Defer_everything_that_you_can">Defer everything that you can</h3> + +<p>Most extensions have a load event listener in the main overlay that runs their startup functions. Do as little as possible here. The browser window is blocked while your add-on's load handler runs, so the more it does, the slower Firefox will appear to the user.</p> + +<p>If there is <em>anything</em> that can be done even a fraction of a second later, you can use an {{ interface("nsITimer") }} or the {{ domxref("window.setTimeout()") }} method to schedule that work for later. Even a short delay can have a big impact.</p> + +<h2 id="Astuces_de_performances_générales">Astuces de performances générales</h2> + +<h3 id="Evitez_de_créer_des_fuites_de_mémoires">Evitez de créer des fuites de mémoires</h3> + +<p>Memory leaks require the garbage collector and the cycle collector to work harder, which can significantly degrade performance.</p> + +<p>Zombie compartments are a particular kind of memory leak that you can detect with minimal effort. See the<a href="/en/Zombie_compartments" title="en/Zombie_compartments"> </a><a href="/en/Zombie_compartments" title="en/Zombie_compartments">Zombie compartments page</a>, especially the <a href="/en/Zombie_compartments#Proactive_checking_of_add-ons" title="en/Zombie_compartments#Proactive_checking_of_add-ons">Proactive checking of add-ons</a> section.</p> + +<p>See <a href="/en/Extensions/Common_causes_of_memory_leaks_in_extensions" title="en/Extensions/Common_causes_of_zombie_compartments_in_extensions">Common causes of memory leaks in extensions</a> for ways to avoid zombie compartments and other kinds of leaks.</p> + +<p>As well as looking for these specific kinds of leaks, it's worth exercising your extension's functionality and checking the contents of about:memory for any excessive memory usage. For example, <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=719601" title="https://bugzilla.mozilla.org/show_bug.cgi?id=719601">bug 719601</a> featured a "System Principal" JavaScript compartment containing 100s of MBs of memory, which is <em>much</em> larger than usual.</p> + +<h3 id="Evitez_d'écrire_des_CSS_lents">Evitez d'écrire des CSS lents</h3> + +<ul> + <li>Lire le guide <a href="/en/CSS/Writing_Efficient_CSS" title="en/CSS/Writing_Efficient_CSS">"writing efficient CSS"</a>.</li> + <li>Remember that any selector in your rule which might match many different nodes is a source of inefficiency during either selector matching or dynamic update processing. This is especially bad for the latter if the selector can dynamically start or stop matching. Avoid unqualified ":hover" like the plague.</li> +</ul> + +<h3 id="Avoid_DOM_mutation_event_listeners">Avoid DOM mutation event listeners</h3> + +<p>DOM mutation event listeners are extremely expensive and, once added to a document even briefly, significantly harm its performance. As mutation events are officially deprecated, and <a href="/en-US/Add-ons/Overlay_Extensions/XUL_School/Appendix_F:_Monitoring_DOM_changes">there are many alternatives</a>, they should be avoided at all costs.</p> + +<h3 id="Lazily_load_services">Lazily load services</h3> + +<p>The <a href="/en/JavaScript_code_modules/XPCOMUtils.jsm#Methods" title="en/JavaScript_code_modules/XPCOMUtils.jsm#Methods">XPCOMUtils JavaScript module</a> provides two methods for lazily loading things:</p> + +<ul> + <li><code>defineLazyGetter()</code> défini une fonction sur un objet spécifié qui agit comme un getter la première fois qu'il sera utilisé. <a class="external" href="http://mxr.mozilla.org/mozilla-central/search?string=defineLazyGetter">See examples</a>.</li> + <li><code>defineLazyServiceGetter()</code> défini une fonction sur un objet spécifié qui agit comme un getter pour un service. The service isn't obtained until the first time it's used. {{ LXRSearch("ident", "string", "defineLazyServiceGetter", "Look through the source") }} for examples.</li> +</ul> + +<p>Beaucoup de services commun sont dàja en cache dans <a href="/en-US/JavaScript_code_modules/Services.jsm">Services.jsm</a>.</p> + +<h3 id="Utilisez_les_ES_asynchrones">Utilisez les E/S asynchrones</h3> + +<p>Ne jamais faire E/S synchrone dans le thread principal.</p> + +<p>N'importe quelle sorte d'E/S dans le thread principal, qu'elle soit sur un disque ou sur le réseau, peuvent provoquez de sérieux problème de ralentissement de l'interface utilisateur.</p> + +<ul> + <li>Ne jamais utiliser de XMLHttpRequests synchrone.</li> + <li><a href="/en-US/JavaScript_code_modules/NetUtil.jsm">NetUtils.jsm</a> fournis des helpers pour la lecture et la copies de fichier asynchrone.</li> + <li>Ne jamais accèder à une base de donnée SQLite de manière synchrone. Utilisez l'<a href="/en-US/Storage#Asynchronously">asynchronous API</a> à la place.</li> + <li>Effectuer des opérations séquentielles, asynchrone peuvent être grandement simplifier en utilisant<a href="/en-US/Add-ons/Techniques/Promises"> Promises</a>.</li> +</ul> + +<h3 id="Evitez_les_évenements_de_mouvement_de_la_souris">Evitez les évenements de mouvement de la souris</h3> + +<p>Evitez d'utiliser les évenements de mouvement de la souris, tel que mouseover, mouseout, mouseenter, mouseexit, et plus spécialement mousemove. Ces évenements se déclenchent à haute fréquence, par conséquent leurs écouteurs d'évenements peuvent facilement provoquer une surcharge CPU.</p> + +<p>Quand ces évenements ne peuvent être évités, computation during the listeners should be kept to a minimum and real work throttled. Ces évenements doivent être ajoutés sur des éléments les plus spécifiques possible, et supprimé immédiatement lorsqu'il ne sont plus nécessaires.</p> + +<h3 id="Evitez_les_images_animées">Evitez les images animées</h3> + +<p>Animated images are much more expensive than generally expected, especially when used in XUL {{ XULElem("tree") }} elements..</p> + +<h3 id="Considérez_l'utilisation_des_Chrome_Workers">Considérez l'utilisation des Chrome Workers</h3> + +<p>Vous pouvez utiliser {{ domxref("ChromeWorker") }} pour executer de longues tâches ou du traitement de données.</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="/en/Performance/Measuring_add-on_startup_performance" title="en/Measuring Add-on Startup Performance">Measuring Add-on Startup Performance</a></li> + <li><a class="external" href="http://blog.mozilla.com/addons/2010/06/14/improve-extension-startup-performance/" title="http://blog.mozilla.com/addons/2010/06/14/improve-extension-startup-performance/">How to Improve Extension Startup Performance</a></li> + <li><a href="/en-US/docs/Performance">General information about measuring and improving performance in Mozilla code</a></li> +</ul> diff --git a/files/fr/mozilla/bugzilla/index.html b/files/fr/mozilla/bugzilla/index.html new file mode 100644 index 0000000000..d899f74c9e --- /dev/null +++ b/files/fr/mozilla/bugzilla/index.html @@ -0,0 +1,59 @@ +--- +title: Bugzilla +slug: Mozilla/Bugzilla +translation_of: Mozilla/Bugzilla +--- +<p><a class="link-https" href="https://bugzilla.mozilla.org/">bugzilla.mozilla.org</a> (souvent abrégé b.m.o) est un système <span id="result_box" lang="fr"><span class="hps">de suivi des bugs</span> <span class="hps">de</span> <span class="hps">Mozilla.org</span><span>,</span></span> une base de données <span>pour enregistrer les bugs et les demandes d'améliration</span> pour Firefox, Thunderbird, SeaMonkey, Camino, et d'autres projets de mozilla.org.</p> + +<div class="row topicpage-table"> +<div class="section"> +<h2 class="Documentation" id="Documentation" name="Documentation">Documentation à propos B.m.o.</h2> + +<dl> + <dt><a href="/en-US/docs/What_to_do_and_what_not_to_do_in_Bugzilla" title="en/What_to_do_and_what_not_to_do_in_Bugzilla">What to do and what not to do in Bugzilla</a></dt> + <dd><span id="result_box" lang="fr"><span class="hps">Des conseils</span> <span class="atn hps">sur la façon d'</span><span>utiliser</span> <span class="hps">Bugzilla,</span> <span class="hps">ainsi que</span> <span class="hps">des choses que vous</span> <span class="hps">devriez éviter.</span></span></dd> + <dt><a class="link-https" href="https://bugzilla.mozilla.org/page.cgi?id=etiquette.html">Bugzilla etiquette</a></dt> + <dd>A guide to etiquette; this guide will help you understand how best to conduct yourself on b.m.o. and how using proper manners and civility will help ensure your problem gets solved sooner rather than later.</dd> + <dt><a href="http://www.mozilla.org/quality/help/beginning-duplicate-finding.html" title="http://www.mozilla.org/quality/help/beginning-duplicate-finding.html">Comment savoir si un bug a déjà été signalé</a></dt> + <dd>Il vous est utile (mais pas obligatoire) de vérifier si le problème que vous signalez est déjà suivi.Ce guide vous aidera donc à le faire.</dd> + <dt><a href="/en-US/docs/Mozilla/QA" title="/en-US/docs/Mozilla/QA">Assurance qualité</a></dt> + <dd><span id="result_box" lang="fr"><span class="hps">Documentation</span> <span class="hps">sur</span> <span class="hps">l'assurance qualité</span> <span class="hps">chez Mozilla</span><span>.</span></span></dd> + <dt><a href="/en-US/docs/Mozilla/QA/Bug_writing_guidelines" title="/en-US/docs/Mozilla/QA/Bug_writing_guidelines">Recommandations pour l'écriture de bug</a></dt> + <dd>A guide to writing a good, understandable, bug that will be easily followed by the development team.</dd> + <dt><a href="/en-US/docs/Developer_Guide/How_to_Submit_a_Patch" title="/en-US/docs/Developer_Guide/How_to_Submit_a_Patch">Comment soumettre un patch</a></dt> + <dd>If you've fixed a bug, or have implemented a new feature, you'll need to get your patch into the tree so it can become part of the product. This guide will teach you how!</dd> +</dl> + +<p><span class="alllinks"><a href="/en-US/docs/tag/Bugzilla" title="/en-US/docs/tag/CSS">View All...</a></span></p> +</div> + +<div class="section"> +<h2 class="Community" id="Community" name="Community"><span class="short_text" id="result_box" lang="fr"><span class="hps">Obtenir de l'aide</span> <span class="hps">de la communauté</span></span></h2> + +<p>You need help on a CSS-related problem and can't find the solution in the documentation?</p> + +<ul> + <li><span class="short_text" id="result_box" lang="fr"><span class="hps">Visitez</span> <span class="hps">le </span></span><a href="https://wiki.mozilla.org/BMO/Support" title="https://wiki.mozilla.org/BMO/Support">site du support b.m.o</a>.</li> + <li>Posez votre question sur le canal IRC de Mozilla: <a class="link-irc" href="irc://irc.mozilla.org/qa">#qa</a></li> +</ul> + +<p><span class="alllinks"><a class="external" href="http://www.gnurou.org/writing/smartquestionsfr" title="http://www.gnurou.org/writing/smartquestionsfr">N'oubliez pas la <em>netiquette</em></a> pour poser vos questions…</span></p> + +<h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Autres matériaux</h2> + +<ul> + <li><a class="external" href="http://www.bugzilla.org/about/">An Introduction to Bugzilla</a></li> + <li><a class="external" href="http://blog.johnath.com/2010/02/04/bugzilla-for-humans">Bugzilla for humans</a></li> + <li><a class="external" href="http://www.squarefree.com/bugzilla/quicksearch-help.html">Bugzilla QuickSearch help page</a>. QuickSearch is a quick, easy, and very effective way of quickly querying bugzilla.</li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Bugzilla/Testopia" title="https://developer.mozilla.org/en-US/docs/Mozilla/Bugzilla/Testopia">Testopia</a> - test case management extension</li> + <li><a class="external" href="http://www.bugzilla.org">bugzilla.org</a> - the project site</li> + <li>{{ interwiki('wikipedia', 'Bugzilla', 'wikipedia:Bugzilla') }} - general description of Bugzilla (not specific to Mozilla projects)</li> +</ul> + +<h2 class="Tools" id="Tools" name="Tools">Outils</h2> + +<ul> + <li><a href="http://harthur.github.io/bugzilla-todos/" title="http://harthur.github.io/bugzilla-todos/">Bugzilla Todos</a> lists review and flag requests, patches to check in, unfulfilled requests you made of other people, and assigned bugs.</li> +</ul> +</div> +</div> diff --git a/files/fr/mozilla/command_line_options/index.html b/files/fr/mozilla/command_line_options/index.html new file mode 100644 index 0000000000..377bbee16b --- /dev/null +++ b/files/fr/mozilla/command_line_options/index.html @@ -0,0 +1,472 @@ +--- +title: Options de ligne de commande +slug: Mozilla/Command_Line_Options +tags: + - Administration + - Documentation + - FAQ + - Greffons + - XULRunner + - ligne de commande +translation_of: Mozilla/Command_Line_Options +--- +<p>{{FirefoxSidebar}}</p> + +<p>Les options de ligne de commande servent à spécifier des options de démarrage des applications Mozilla. Par exemple, vous pouvez utiliser une option pour outrepasser le gestionnaire de profils et ouvrir un profil spécifique (si vous en avez plusieurs). Vous pouvez aussi contrôler la façon dont les applications Mozilla s'ouvrent, quels composants sont lancés au démarrage et ce qu'ils font à leur ouverture. Cette page décrit les options les plus courantes et comment les utiliser. Vous pouvez ouvrir l'interface de ligne de commande en appuyant sur <kbd>Maj + F2</kbd></p> + +<h2 id="Règles_de_syntaxe">Règles de syntaxe</h2> + +<p>Commençons par décrire les règles syntaxiques applicables à toutes les options.</p> + +<ul> + <li>les paramètres d'option contenant des espaces doivent être encadrés par des guillemets anglais droits, par exemple : "Utilisateur Lambda" ;</li> + <li>les options ne sont pas sensibles à la casse ;</li> + <li>les paramètres d'option, exceptés les noms de profil, ne sont pas sensibles à la casse ;</li> + <li>les options et leurs paramètres sont séparés par des espaces ;</li> + <li>le paramètre de l'option <code>compos</code> est constitué d'<em>options de message</em>, qui suivent la syntaxe <code><var>champ=valeur</var></code>, par exemple : + <ul> + <li><code>to=</code><code>foo@nowhere.net</code></li> + <li><code>subject=cool page</code></li> + <li><code>attachment=www.mozilla.org</code></li> + <li><code>attachment='file:///c:/test.txt'</code></li> + <li><code>body=check this page</code></li> + </ul> + </li> + <li>les options de message sont séparées par des virgules (,), par exemple : <code>"to=foo@nowhere.net,subject=cool page"</code>. Les virgules de séparation ne doivent pas être suivies ni précédées d'espaces. Pour assigner plusieurs valeurs à un champ, encadrez les valeurs par des apostrophes droites ('), par exemple : <code>"to='foo@nowhere.net,foo@foo.de',subject=cool page"</code> .</li> +</ul> + +<h2 id="Utilisation_des_options_de_ligne_de_commande">Utilisation des options de ligne de commande</h2> + +<p>Les options sont saisies après la commande servant à lancer l'application. Si les options contiennent des arguments, saisir le paramètre après l'option. Certaines options peuvent être abrégées. Par exemple, l'option « -editor » peut être abrégée en « -edit ». Quand une abréviation est disponible, elle est décrite ci-dessous avec l'option. De même pour le cas des paramètres qui dans certains cas doivent être encadrés par des guillemets droits anglais ("). Plusieurs options de ligne de commande peuvent être spécifiées. En général, la syntaxe est comme suit :</p> + +<pre>application -option -option "paramètre" -option paramètre</pre> + +<h3 id="Exemples">Exemples</h3> + +<p>Les exemples qui suivent montrent l'usage de l'option « -ProfileManager », qui ouvre le gestionnaire de profils avant de démarrer Firefox ou Thunderbird :</p> + +<h4 id="Windows">Windows</h4> + +<p>Sélectionner « Exécuter » depuis le « Menu démarrer ». Puis taper :</p> + +<pre class="eval">firefox -ProfileManager +</pre> + +<h4 id="Mac_OS_X">Mac OS X</h4> + +<p>Aller à « Applications > Utilitaires > Ouvrir un terminal » et taper :</p> + +<pre class="eval">cd /Applications/Firefox.app/Contents/MacOS +./firefox -ProfileManager +</pre> + +<h4 id="Linux">Linux</h4> + +<p>Ouvrir un terminal (invite de commandes) et taper :</p> + +<pre class="eval">cd <em>Thunderbird</em><var> installation directory</var> +./thunderbird -ProfileManager +</pre> + +<p>L'exemple ci-dessus appelle l'option « -ProfileManager » pour Mozilla Thunderbird.</p> + +<h2 id="Profil_utilisateur">Profil utilisateur</h2> + +<h3 id="-allow-downgrade"><code>-allow-downgrade</code></h3> + +<p>La protection contre la rétrogradation de Firefox 67 empêche de démarrer accidentellement Firefox avec un profil ayant été exécuté dans une version plus récente de Firefox. Selon les changements entre les deux versions, certains fichiers figurant dans un profil peuvent ne pas être rétrocompatibles. Ajouter cette option outrepasse la protection contre la rétrogradation .</p> + +<h3 id="-CreateProfile_nom_du_profil"><code>-CreateProfile <var>nom_du_profil</var></code></h3> + +<p>Crée un nouveau profil dans le dossier par défaut sans démarrer l'application. Le profil s'appellera <code><var>nom_du_profil</var></code> dans le gestionnaire de profils. <code><var>nom_du_profil</var></code> ne doit pas contenir d'espaces ( ). Pour utiliser cette option correctement, aucune instance de l'application ne doit être en cours d'exécution ou alors l'option <code>-no-remote</code> doit être utilisée.</p> + +<pre class="eval">firefox -CreateProfile UtilisateurJoel +</pre> + +<h3 id="-CreateProfile_nom_du_profil_nom_du_dossier"><code>-CreateProfile "<var>nom_du_profil</var> <var>nom_du_dossier</var>"</code></h3> + +<p>Crée un nouveau profil dans le dossier <code><var>nom_du_dossier</var></code> sans démarrer l'application. Le profil s'appellera <code><var>nom_du_profil</var></code> dans le gestionnaire de profils. Attention : <code><var>nom_du_profil</var></code> et <code><var>nom_du_dossier</var></code> sont encadrés ensemble par des guillemets droits anglais et sont séparés par une seule espace (comme précédemment, <code><var>nom_du_profil</var></code> ne doit pas contenir d'espaces). Pour utiliser cette option correctement, l'application ne doit pas être en cours d'exécution ou alors l'option <code>-no-remote</code> doit être utilisée.</p> + +<div class="note"> +<p>Note : <code><var>nom_du_dossier</var></code> doit exister et il ne doit pas déjà exister de profil appelé <code><var>nom_du_profil</var></code>.</p> +</div> + +<pre class="eval">firefox -CreateProfile " UtilisateurJoel c:\internet\utilisateurjoel-moz-profil" +</pre> + +<h3 id="-migration"><code>-migration</code></h3> + +<p>Démarre avec l'assistant d'importation.</p> + +<h3 id="-new-instance"><code>-new-instance</code></h3> + +<p>Ouvre une nouvelle instance et pas une nouvelle fenêtre dans l'instance en cours d'exécution, ce qui permet que plusieurs copies de l'application soient ouvertes en même temps.</p> + +<pre class="brush: bash; line-numbers language-bash"><code class="language-bash">firefox -no-remote -P "un autre profil"</code></pre> + +<div class="blockIndicator note"> +<p><strong>Note: </strong>non disponible pour Windows, voir {{bug(855899)}}.</p> +</div> + +<h3 id="-no-remote"><code>-no-remote</code></h3> + +<p>N'accepte pas ni n'envoie de commandes distantes. Implique <code>-new-instance</code>.</p> + +<pre class="brush: bash; line-numbers language-bash"><code class="language-bash">firefox -no-remote -P "</code><code class="language-bash">un autre profil</code><code class="language-bash">"</code></pre> + +<div class="blockIndicator note"> +<p><strong>Note : </strong>depuis Firefox 9, cela signifie réellement ce que son nom implique pour toutes les plateformes, c.-à-d. que les instances créées avec cette option n'acceptent pas et n'envoient pas de commandes distantes, voir {{ bug(650078) }}. Cela signifie que de telles instances ne sont pas réutilisables. Utiliser cette option crée systématiquement de nouvelles instances.</p> +</div> + +<h3 id="-override_cheminversoverride.ini"><code>-override <em>/chemin/vers/</em>override.ini</code></h3> + +<p>Charge le fichier <code>override.ini</code> spécifié pour outrepasser <code>application.ini</code> ({{Source("browser/app/application.ini")}}). Cette option peut être utilisée pour faire disparaître le gestionnaire de migration au démarrage en chargeant l’<code>override.ini</code> qui suit. Uniquement pour <strong>Firefox</strong>.</p> + +<pre class="brush: ini; line-numbers"><code>[XRE] +EnableProfileMigrator=0</code></pre> + +<h3 id="-ProfileManager"><code>-ProfileManager</code></h3> + +<p>Lance le gestionnaire de profils. Abréviation : <strong>-P</strong> sans nom de profil.</p> + +<h3 id="-P_nom_du_profil"><code>-P "<var>nom_du_profil</var>"</code></h3> + +<p>Outrepasse le gestionnaire de profils et lance l'application avec le compte <code><var>nom_du_profil</var></code>. Ceci est utile pour gérer plusieurs profils. Attention ! La chaîne <code><var>nom_du_profil</var></code> est sensible à la casse. Si vous ne précisez pas de nom de profil, le gestionnaire de profils sera lancé. Vous devez utiliser un P majuscule sous Linux avec les versions antérieures à la 7.x, vu que l'option p (minuscule) sert à lancer le mode Purify (test des fuites et de la mémoire). Les autres plateformes acceptent aussi bien la minuscule que la majuscule.</p> + +<pre class="eval">firefox -P "Utilisateur Joel" +</pre> + +<h3 id="-profile_chemin_du_profil"><code>-profile "<var>chemin_du_profil</var>"</code></h3> + +<p>Démarre avec le profil fourni depuis le chemin spécifié. Seulement pour<strong> Firefox</strong>, <strong>Thunderbird</strong> et <strong>SeaMonkey 2.x</strong>.</p> + +<p><code>"<var>chemin_du_profil</var>"</code> peut aussi bien être un chemin absolu (<code>"<var>/chemin/du/profil</var>"</code>) que relatif <code>("</code><code><var>/chemin/du/profil</var></code><code>"</code>).</p> + +<div class="note"><strong>Note</strong> : sur Mac OS X, utiliser un chemin relatif n'est plus pris en charge depuis Firefox 4.0 à cause d'une régression, voir {{ bug(673955) }}.</div> + +<h2 id="Navigateur">Navigateur</h2> + +<h3 id="-browser"><code>-browser</code></h3> + +<p>Démarre le navigateur. Seulement pour <strong>Firefox</strong> et <strong>SeaMonkey</strong>.</p> + +<h3 id="-url_URL"><code>-url <var>URL</var></code></h3> + +<p>Ouvre l'<var>URL</var> dans un nouvel onglet ou une nouvelle fenêtre, dépendant de l'absence ou de la présence de l'option <code>browser</code>. <code>-url</code> peut être omis. Vous pouvez charger plusieurs URL, separées par des espaces. Pour <strong>Firefox</strong> et <strong>SeaMonkey</strong> seulement.</p> + +<div class="note"><strong>Note : </strong>quand vous ouvrez plusieurs URL, Firefox les ouvre dans des onglets d'une seule nouvelle fenêtre.</div> + +<pre class="eval">firefox www.mozilla.com +firefox www.mozilla.com developer.mozilla.org +</pre> + +<h3 id="-private"><code>-private</code></h3> + +<p>Ouvre Firefox en « fenêtre privée » de manière permanente. Pour <strong>Firefox 3.6 </strong>et ultérieur.</p> + +<p>Pourrait ne pas fonctionner pour <strong>Firefox 20</strong> et précédents sous Ubuntu. Fonctionnement correct confirmé sous Ubuntu 14.04.</p> + +<h3 id="-private-window"><code>-private-window</code></h3> + +<p>Ouvre Firefox en « fenêtre privée » dans une instance déja en cours. Pour <strong>Firefox 20 </strong>et ultérieur.</p> + +<h3 id="-private-window_URL"><code>-private-window URL</code></h3> + +<p>Ouvre l'URL dans une nouvelle « fenêtre privée ». Si une fenêtre privée est déja ouverte, ouvre un nouvel onglet.<strong> Firefox 29 </strong>et ultérieur seulement. Non fonctionnel pour <strong>Firefox 31</strong> sous Linux Mint 17 (qui ouvre l'URL dans une fenêtre normale).</p> + +<h3 id="-new-tab_URL"><code>-new-tab <var>URL</var></code></h3> + +<p>Ouvre l'<var>URL</var> dans un nouvel onglet. <strong>Firefox </strong>et <strong>SeaMonkey2.x</strong> seulement.</p> + +<h3 id="-new-window_URL"><code>-new-window <var>URL</var></code></h3> + +<p>Ouvre <var>l'URL</var> dans une nouvelle fenêtre. <strong>Firefox</strong> et <strong>SeaMonkey2.x</strong> seulement.</p> + +<h3 id="-search_Mot"><code>-search <var><em>Mot</em></var></code></h3> + +<p>Recherche <em><var>Mot</var></em> avec le moteur de recherche par défaut. <strong>Firefox</strong> et <strong>SeaMonkey 2.1</strong> et ultérieur.</p> + +<h3 id="-preferences"><code>-preferences</code></h3> + +<p>Ouvre la fenêtre des Préférences/Options. <strong>Firefox</strong> et <strong>SeaMonkey2.x</strong> seulement.</p> + +<h3 id="-setDefaultBrowser"><code>-setDefaultBrowser</code></h3> + +<p>Définit l'application comme navigateur par défaut. <strong>Firefox</strong> seulement.</p> + +<h3 id="-foreground"><code>-foreground</code></h3> + +<p>Fait de l'instance l'application active.</p> + +<h2 id="CourrielNouvelles">Courriel/Nouvelles</h2> + +<h3 id="-mail"><code>-mail</code></h3> + +<p>Démarre le client courriel. <strong>Thunderbird</strong> et <strong>SeaMonkey</strong> seulement.</p> + +<h3 id="-news_news_URL"><code>-news</code> <var>news_URL</var></h3> + +<p>Démarre le client de nouvelles. Si <var>news_URL</var> (optionnel) est spécifié, ouvre le groupe de nouvelles spécifié. <strong>Thunderbird</strong> et <strong>SeaMonkey</strong> seulement.</p> + +<pre class="eval">thunderbird -news news://server/group +</pre> + +<h3 id="-compose_options_du_message"><code>-compose <var>options_du_message</var></code></h3> + +<p>Démarre l'outil de création de courriel. Voyez les <a href="/fr/docs/">régles de syntaxe</a>. <strong>Thunderbird</strong> et <strong>SeaMonkey</strong> seulement.</p> + +<pre class="eval">thunderbird -compose "to=foo@nowhere.net" +</pre> + +<h3 id="-addressbook"><code>-addressbook</code></h3> + +<p>Démarre le carnet d'adresses. <strong>Thunderbird</strong> et <strong>SeaMonkey</strong> seulement.</p> + +<h3 id="-options"><code>-options</code></h3> + +<p>Ouvre la fenêtre des Préférences. <strong>Thunderbird</strong> seulement.</p> + +<h3 id="-offline"><code>-offline</code></h3> + +<p>Démarre le logiciel en mode déconnecté. <strong>Thunderbird</strong> et <strong>SeaMonkey</strong> seulement.</p> + +<h3 id="-setDefaultMail"><code>-setDefaultMail</code></h3> + +<p>Définit l'application comme client courriel par défaut. <strong>Thunderbird</strong> seulement.</p> + +<h2 id="Calendrier">Calendrier</h2> + +<h3 id="-calendar"><code>-calendar</code></h3> + +<p>Démarre le client d'agenda. <strong>Sunbird</strong> seulement.</p> + +<h3 id="-subscribe_URL_or_-url_URL"><code>-subscribe <var>URL</var></code> or <code>-url <var>URL</var></code></h3> + +<p>S'abonne à l'<var>URL</var>. <strong>Sunbird</strong> seulement.</p> + +<h3 id="-showdate_date"><code>-showdate <var>date</var></code></h3> + +<p>Affiche la <var>date </var>dans l'agenda. <strong>Sunbird</strong> seulement.</p> + +<pre class="eval">sunbird -showdate 08/04/2008 +</pre> + +<h2 id="Autres_composants">Autres composants</h2> + +<h3 id="-editor_URL_or_-edit_URL"><code>-editor <var>URL</var></code> or <code>-edit <var>URL</var></code></h3> + +<p>Démarre avec l'éditeur (compositeur) pour l'<var>URL</var> spécifiée (<var>URL</var> est optionnel). <strong>SeaMonkey</strong> seulement.</p> + +<pre class="eval">seamonkey -edit www.mozilla.org +</pre> + +<h3 id="-jsdebugger"><code>-jsdebugger</code></h3> + +<p>Démarre l'application avec <a href="/en-US/docs/Tools/Browser_Toolbox">Browser Toolbox</a> (auparavant Browser Debugger). Ce débogueur est différent du Venkman (voyez l'option <code>-venkman</code>).</p> + +<h3 id="-jsconsole"><code>-jsconsole</code></h3> + +<p>Démarre l'application avec la <a href="/en-US/docs/Error_Console" title="Error_Console">console d'erreur</a>, ou, dans le cas de Firefox, la <a href="/en-US/docs/Tools/Browser_Console">console du navigateur</a>.</p> + +<h3 id="-start-debugger-server_port"><code>-start-debugger-server port</code></h3> + +<p>Firefox seulement. Démarre le serveur du débogueur avec le <code>port</code>. Ceci permet à une autre instance de Firefox de connecter ses outils de développement à l'instance visée. Voyez l'article sur le <a href="/en-US/docs/Tools/Remote_Debugging/Debugging_Firefox_Desktop">débogage à distance du bureau Firefox</a>.</p> + +<p>Le paramètre <code>port</code> est optionnel ; par défaut, le port 6000 est utilisé.</p> + +<h3 id="-inspector_URL"><code>-inspector <var>URL</var></code></h3> + +<p>Démarre l'<a href="/en-US/docs/DOM_Inspector" title="DOM_Inspector">inspecteur de DOM</a> (s'il est installé) et inspecte l'<var>URL</var> spécifiée (<var>URL</var> est optionnel).</p> + +<h3 id="-venkman"><code>-venkman</code></h3> + +<p>Démarre le débogueur JavaScript, <a href="/en-US/docs/Venkman" title="Venkman">Venkman</a>, s'il est installé.</p> + +<h3 id="-purgecaches"><code>-purgecaches</code></h3> + +<p>Vide le cache JavaScript de Gecko (le moteur de mise en page). Normalement le cache survit au redémarrage.</p> + +<h3 id="-chat"><code>-chat</code></h3> + +<p>Démarre le client de clavardage IRC, <a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/16">ChatZilla</a>, s'il est installé.</p> + +<h2 id="XULRunner">XULRunner</h2> + +<h3 id="-app_cheminversapplication.ini"><code>-app <em>/chemin/vers/</em>application.ini</code></h3> + +<p>Démarre un nouveau processus <a href="/en-US/docs/XULRunner" title="XULRunner">XULRunner</a> pour l'application se trouvant à <em>chemin/vers</em>. Fonctionne aussi pour Firefox version 3 et ultérieur.</p> + +<h3 id="--register-global"><code>--register-global</code></h3> + +<p>Inscrit XULRunner avec le système pour tous les usagers. Exige les privilèges admin / root.</p> + +<h3 id="--register-user"><code>--register-user</code></h3> + +<p>Inscrit XULRunner pour l'utilisateur en cours.</p> + +<h3 id="--unregister-user"><code>--unregister-user</code></h3> + +<p>Désinscrit XULRunner pour tous les utilisateurs.</p> + +<h3 id="--unregister-user_2"><code>--unregister-user</code></h3> + +<p>Désinscrit XULRunner pour l'utilisateur en cours.</p> + +<h3 id="--install-app_cheminversmyapplication.xpixulapp"><code>--install-app chemin/vers/myapplication.(xpi|xulapp)</code></h3> + +<p>Installe l'application XULRunner se trouvant à <em>chemin/vers</em> sur le système. Les applications sont installées à l'emplacement par défaut du système (<code>program files|Applications|usr/lib</code>) sous <code>nom_du_vendeur/nom_de_l_application</code>. Les applications peuvent être désinstallées par les méthodes habituelles du système.</p> + +<pre class="eval" style="margin-top: 0px; margin-bottom: 1.286em; font-size: 14px;">"C:\Program Files\Mozilla XULRunner\1.8.0.4\xulrunner\xulrunner.exe" --install-app "C:\Users\Billdo\Desktop\myapplication.xpi"</pre> + +<pre>/opt/xulrunner/1.8.0.4/xulrunner/xulrunner --install-app ~/Desktop/myapplication.xulapp</pre> + +<pre>/Library/Frameworks/XUL.framework/xulrunner-bin --install-app ~/Desktop/myapplication.xpi</pre> + +<h2 id="Chrome">Chrome</h2> + +<h3 id="-chrome_chrome_URL"><code>-chrome <var>chrome_URL</var></code></h3> + +<p>Charge le chrome spécifié.</p> + +<pre class="eval">firefox -chrome <a class="external" rel="freelink">chrome://inspector/content</a> +</pre> + +<h3 id="-register_chrome_URL"><code>-register <var>chrome_URL</var></code></h3> + +<p>Inscrit le chrome spécifié, sans démarrer l'application.</p> + +<h2 id="Modules_complémentaires">Modules complémentaires</h2> + +<p>{{ gecko_minversion_note("1.9.2", "-install-global-extension et -install-global-theme ont été retirés de Gecko 1.9.2 et ultérieur.") }}</p> + +<h3 id="-install-global-extension_cheminversextension"><code>-install-global-extension <var>/chemin/vers/extension</var></code></h3> + +<p>Installe l'extension spécifiée dans le dossier de l'application. Le paramètre donne le chemin menant au module. Vous devez disposer des privilèges administrateur.</p> + +<h3 id="-install-global-theme_cheminverstheme"><code>-install-global-theme <var>/</var></code><code><var>chemin</var></code><code><var>/vers/theme</var></code></h3> + +<p>Installe le thème spécifié. Vous devez disposer des privilèges administratifs.</p> + +<div class="note"> +<p><strong>Note : </strong>depuis Firefox 2.0.0.7, les options <code>-install-global-extension</code> et <code>-install-global-theme</code> ne peuvent installer que depuis le stockage local (incluant le stockage réseau monté localement). L'installation directe depuis un stockage réseau échouera.</p> +</div> + +<h3 id="-safe-mode"><code>-safe-mode</code></h3> + +<p>Démarre l'application avec toutes les extensions désactivées, cette fois-ci seulement (les extensions ne sont pas chargées, mais ne sont pas non plus désactivées de façon permanente par le gestionnaire de modules complémentaires).</p> + +<h2 id="Locale">Locale</h2> + +<h3 id="-UILocale_locale"><code>-UILocale <var>locale</var></code></h3> + +<p>Démarre avec l'interface régionalisée en <var>locale</var>.</p> + +<pre class="eval">firefox -UILocale en-US +</pre> + +<h2 id="Contrôle_à_distance">Contrôle à distance</h2> + +<h3 id="-remote_remote_command_deprecated_inline"><code>-remote <var>remote_command {{deprecated_inline}}</var></code></h3> + +<div class="note"> +<p><var><strong>Note :</strong> cette option a été retirée de Firefox 36.0, puis restaurée avec 36.0.1 pour être retirée définitivement avec 39.0. Voyez</var> {{ bug(1080319) }}.</p> +</div> + +<p>Exécute la <code><var>remote_command</var></code> spécifiée dans un processus déja actif (voyez <a class="external" href="http://www.mozilla.org/unix/remote.html">contrôle à distance</a>).</p> + +<pre class="eval">firefox -remote "openURL(www.mozilla.org, new-tab)" +</pre> + +<div class="note"> +<p><strong>Note :</strong> cette option n'est disponible que pour les plateformes X-windows Unix.</p> +</div> + +<h2 id="Divers">Divers</h2> + +<h3 id="-tray"><code><strong>-tray</strong></code></h3> + +<p>Démarre l'application minimisée dans la zone de notification du système. Utile avec le démarrage automatique.</p> + +<h3 id="-silent"><code>-silent</code></h3> + +<p>N'ouvre pas les fenêtres par défaut. Utile pour les options qui ouvrent leurs propres fenêtres sans empêcher les fenêtres par défaut de s'ouvrir. <strong>Firefox</strong>, <strong>Thunderbird3.x</strong> et <strong>SeaMonkey2.x</strong> seulement.</p> + +<h3 id="-console"><code>-console</code></h3> + +<p>Démarre l'application avec la console de débogage. Note : Windows seulement.</p> + +<h3 id="-attach-console"><code>-attach-console</code></h3> + +<p>Détourne les messages destinés à la console de débogage vers la fenêtre qui a lancé l'application. Note : Windows seulement.</p> + +<h3 id="-h_or_-help_or_-"><code>-h</code> or <code>-help</code> or <code>-?</code></h3> + +<p>Affiche la liste des options et paramètres disponibles. Sous Windows, cette option ne fonctionne qu'avec une redirection <code>|more</code> ({{ Bug(355889) }}). Cette option n'est disponible qu'en ligne de commande.</p> + +<h3 id="-v_or_-version"><code>-v</code> or <code>-version</code></h3> + +<p>Affiche la version de l'application. Sous Windows, cette option ne fonctionne qu'avec une redirection <code>|more</code> ({{ Bug(355889) }}). Cette option n'est disponible qu'en ligne de commande.</p> + +<h3 id="-osint"><code>-osint</code></h3> + +<p>Indique à l'application qu'elle est lancée par l'invite de commande du système. Cette option ne doit être spécifiée que si l'application invocatrice prend en charge toutes les fonctionnalités de l'invite de commande du système ({{ Bug(384384) }}).</p> + +<h3 id="-requestPending"><code>-requestPending</code></h3> + +<p>Indique à l'application qu'il y aura une requête DDE (<em>Dynamic Data Exchange</em>, Windows seulement) pour l'ouverture du même URL que celui spécifié par la ligne de commande. Cette option ne doit être spécifiée que si l'application invocatrice prend en charge toutes les fonctionnalités de l'invite de commande du système ({{ Bug(354005) }}).</p> + +<h3 id="options_X11">options X11</h3> + +<p>Ces options ne sont disponibles que pour une application roulant sous le système graphique X11 / X.org (Linux et autres systèmes Unix).</p> + +<h4 id="--displayDISPLAY">--display=DISPLAY</h4> + +<p>Définit l'affichage X à utiliser.</p> + +<h4 id="--classWM_CLASS">--class=WM_CLASS</h4> + +<p>Définit WM_CLASS comme étant la classe de ressource X11 des fenêtres créées par l'application.</p> + +<h4 id="--sync">--sync</h4> + +<p>Rend les appels X synchrones.</p> + +<h4 id="--g-fatal-warnings">--g-fatal-warnings</h4> + +<p>Rend tous les avertissements fatals.</p> + +<h2 id="Autre_options_restant_à_documenter">Autre options restant à documenter</h2> + +<ul> + <li><code>-print-xpcom-dir</code></li> + <li><code>-print-xpcom-dirlist</code></li> + <li><code>-kill</code></li> + <li><code>-killAll</code></li> + <li><code>-f</code></li> + <li><code>-ftimeout</code></li> + <li><code>-fwait</code></li> + <li><code>-unsetDefaultMail</code></li> + <li>options GTK</li> +</ul> + +<h2 id="Références">Références</h2> + +<ul> + <li><a href="/en-US/docs/Chrome/Command_Line" title="Chrome/Command_Line">Chrome: Ligne de commande</a></li> + <li><a class="external" href="http://www-archive.mozilla.org/quality/browser/front-end/testcases/cmd-line/">Documentation des tests de ligne de commande</a> (mozilla.org)</li> + <li>{{ Source("toolkit/xre/nsAppRunner.cpp") }}</li> + <li>{{ Source("browser/components/nsBrowserContentHetler.js") }}</li> + <li>{{ Source("suite/browser/nsBrowserContentHetler.js") }}</li> + <li>{{ Source("mail/components/nsMailDefaultHetler.js") }}</li> + <li><a class="link-https" href="https://wiki.mozilla.org/Installer:Command_Line_Arguments">Options de ligne de commande de l'installateur</a></li> +</ul> + +<div class="originaldocinfo"> +<h2 id="Information_sur_le_document_dorigine">Information sur le document d'origine</h2> + +<ul> + <li>Auteurs : Ben Goodger, Steffen Wilberg, Seth Spitzer, Daniel Wang</li> + <li>Information sur le droit d'auteur : des parties de ce contenu sont © 1998–2007 par des contributeurs individuels de mozilla.org ; contenu disponible sous licence Creative Commons | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">Détails</a>.</li> + <li>Traduction : Gautier Castelain, Daniel U. Thibault</li> +</ul> +</div> diff --git a/files/fr/mozilla/css/index.html b/files/fr/mozilla/css/index.html new file mode 100644 index 0000000000..a3f0d4cec1 --- /dev/null +++ b/files/fr/mozilla/css/index.html @@ -0,0 +1,10 @@ +--- +title: Mozilla internal-only CSS +slug: Mozilla/CSS +tags: + - TopicStub +translation_of: Mozilla/Gecko/Chrome/CSS +--- +<p>Cet ensemble de pages détaille les fonctionnalités CSS qui ne sont disponibles qu'en interne dans le navigateur Firefox, c'est-à-dire uniquement dans la feuille de style américaine.</p> + +<p>{{SubpagesWithSummaries}}</p> diff --git a/files/fr/mozilla/developer_guide/how_to_submit_a_patch/index.html b/files/fr/mozilla/developer_guide/how_to_submit_a_patch/index.html new file mode 100644 index 0000000000..9586c69a11 --- /dev/null +++ b/files/fr/mozilla/developer_guide/how_to_submit_a_patch/index.html @@ -0,0 +1,108 @@ +--- +title: Comment soumettre un paquet correctif +slug: Mozilla/Developer_guide/How_to_Submit_a_Patch +translation_of: Mozilla/Developer_guide/How_to_Submit_a_Patch +--- +<div class="summary"> +<p><span class="seoSummary">Soumettre un paquet (patch) correctif, le faire vérifier et accepter par l'équipe de Mozilla nécessitent quelques étapes ; cet article vous explique comment faire.</span></p> +</div> + +<p>Le processus de soumission est représenté par le diagramme ci-dessous, le tout vous étant expliqué en details à la suite.</p> + +<p style="text-align: center;"><img alt="Workflow of submitting a patch: Preparation | Module Ownership | Creating a patch +| Testing | Getting Reviews | Addressing Review Comments | Committing the Patch" class="default internal" src="/@api/deki/files/3599/=submitting-patch-workflow.png" style="height: 348px; width: 267px;"></p> + +<h2 id="Préparation">Préparation</h2> + +<p>Tout changement dans le code provient d'un bogue déclaré sur <a class="link-https" href="https://bugzilla.mozilla.org/" title="https://bugzilla.mozilla.org/">bugzilla.mozilla.org</a> ; sans bogue, le code ne sera pas examiné et sans évaluation, le code ne sera pas accepté. Afin d'éviter tout doublon, <a class="link-https" href="https://bugzilla.mozilla.org/query.cgi?format=specific">choisissez un bogue existant</a> (en) à traiter et s'il n'y en a aucun, <a href="https://bugzilla.mozilla.org/enter_bug.cgi">soumettez en un (en)</a>. La plupart des discussions à propos des futurs changements du code sont issues des bogues, alors assurez-vous que le rapport du bogue décrive exactement le problème à resoudre.</p> + +<p>Vérifiez aussi que le rapport de bogue soit classé dans la bonne section (produit et composant). Pour plus d'information, vous pouvez poser des questions aux groupes de discussions ou sur le <a href="irc://irc.mozilla.org/developers">canal IRC des développeurs (en).</a></p> + +<p>La personne travaillant sur un bogue se verra "assignée" à ce bogue sur bugzilla. Si quelqu'un d'autre y est déja désigné, envoyez un email a cette personne afin de vous coordonner ; sinon, laissez un message sur le bogue signalant que vous y travaillez et demandez que quelqu'un ayant les droits vous l'assigne.</p> + +<p>Certaines équipes attendent que les nouveaux contributeurs effectuent leur premier patch avant de les assigner à un bogue, ce qui signifie qu'un bogue reste disponible pour les autres contributeurs, pour le cas où aucun patch ne soit jamais créé. En exprimant votre interet dans le commentaire d'un bogue, quelqu'un de l'equipe devrait vous guider sur le processus qu'elle utilise.</p> + +<h2 id="Le_gestionnaire_du_module_(en_ownership)">Le gestionnaire du module (en : ownership)</h2> + +<p>Tout le code est supervisé par un <a class="internal" href="https://www.mozilla.org/en-US/about/governance/policies/module-ownership/" title="/en-US/docs/Mozilla Modules and Module Ownership">gestionnaire de module</a> (en). Cette personne est responsable de l'évaluation et de l'approbation des changements. Avant d'écrire le code, determinez qui gére le module et verifiez avec lui que les changements proposés sont acceptables. L'équipe est peut être à la recherche d'une nouvelle interface utilisateur (évaluation de l'interface), de nouvelles fonctions (évaluation de l'API), ou des tests peuvent être en cours portant sur le changement proposé.</p> + +<p>Si le gestionnaire du module ne vous semble pas clair, demandez aux groupes de discussion ou sur le canal IRC. Le journal de révision du fichier concerné peut aussi être utile. Par exemple, allez voir le journal de révision pour{{ Source("browser/base/content/browser.js") }}, en cliquant sur le lien "Hg Log" au dessus de <a href="http://dxr.mozilla.org/mozilla/source/">DXR</a> ou en tapant <code>hg log browser/base/content/browser.js</code>. Le message de vérification correspondant contiendra quelque chose comme "r=nickname", identifiant les éventuels évaluateurs pour le code en question.</p> + +<h2 id="Création_d'un_paquet_(en_patch)">Création d'un paquet (en : patch)</h2> + +<p>Les changements du code source de Mozilla sont presentés sous forme de paquets. C'est essentiellement un engagement au contrôle de version.</p> + +<p>Chaque paquet doit representer une seule correction complète, vous devez donc séparer les changements distincts en plusieurs paquets. Si votre changement se traduit par un grand paquet complexe, voyez s'il peut être décomposé en plusieurs <a href="https://secure.phabricator.com/book/phabflavor/article/writing_reviewable_code/#many-small-commits">petits correctifs plus faciles a comprendre</a> (en). Cela faciliterait et fiabiliserait l'évaluation de vos changements, <a class="external" href="http://groups.google.com/group/mozilla.dev.planning/msg/2f99460f57f776ef?hl=en" title="http://groups.google.com/group/mozilla.dev.planning/msg/2f99460f57f776ef?hl=en">apprendre les évaluations rapides (en)</a> .</p> + +<div class="note"> +<p>Voir <a href="/en-US/docs/Mercurial_FAQ#How_can_I_generate_a_patch_for_somebody_else_to_check-in_for_me.3F" title="/en-US/docs/Mercurial_FAQ#How_can_I_generate_a_patch_for_somebody_else_to_check-in_for_me.3F">Comment générer un paquet (en) </a>pour plus d'informations sur la création de paquets optimisés pour l'évaluation. Voir aussi notre <a href="/en-US/docs/Developer_Guide/Reviewer_Checklist">liste de contrôle des évaluateurs</a> (en) pour une liste des meilleures pratiques de présentation du correctif que les évaluateurs vérifient ou exigent.</p> +</div> + +<h2 id="Les_tests">Les tests</h2> + +<p>Tous les changements doivent être testés. Dans la plupart des cas, un <a class="internal" href="/en-US/docs/Mozilla_automated_testing" title="/en-US/docs/Mozilla automated testing">test automatique</a> (en) est requis pour tout changement dans le code.</p> + +<p>En attendant d'avoir un test automatisé pour tout le code, nous avons un logiciel d'analyse statique sur notre JavaScript, pour contrôler les meilleures pratques et les erreurs communes. Voir <a href="/en-US/docs/ESLint">ESLint (en)</a> pour plus d'informations.</p> + +<p>Assurez-vous que le changement ne cause pas de régressions en exécutant la suite de tests atomatique, en local, ou en utilisant le <a class="link-https" href="https://wiki.mozilla.org/Build:TryServer" title="https://wiki.mozilla.org/Build:TryServer">serveur de tests de Mozilla</a>. Un gestionnaire de module ou un developpeur sur IRC peut être disponible pour soumettre ces travaux à la place des personnes n'ayant pas accès au serveur de tests.</p> + +<h2 id="Soumission_du_paquet">Soumission du paquet</h2> + +<div class="note"> +<p>Assurez vous de la compatibilité de votre paquet avec les dernières versions de manière à éviter tout conflit.</p> +</div> + +<pre>En tant que contributeur, vous devez utiliser Phabricator pour soumettre vos paquets. Voir le <a href="https://moz-conduit.readthedocs.io/en/latest/phabricator-user.html">Guide d'utilisation de Phabricator</a> (en) pour plus d'informations.</pre> + +<p>N'hésitez pas à poster des paquets partiels montrant les approches potentielles et demandez des retours sur ces derniers. Il est plus facile pour les autres de commenter et d'apporter des suggestions quand une question est illustrée par du code.</p> + +<h2 id="Getting_the_patch_reviewed" name="Getting_the_patch_reviewed">Obtention de l'évaluation</h2> + +<p>L'examen approfondi du code est un moyen mis en place par Mozilla dans le but d'obtenir un code de qualité. Tous les paquets doivent être vérifiés par le gestionnaire du module concerné ou l'un de ses pairs. Les paquets entrant dans plusieurs modules, changeant des API, ou comportant des modifications liées à la securité, feront l'objet d'une <a class="external" href="http://www.mozilla.org/hacking/reviewers.html">super-évaluaion</a>(en) supplémentaire.</p> + +<p>Pour plus d'informations à propos du processus d'évaluation, voyez la <a class="internal" href="/en-US/docs/Code_Review_FAQ" title="/en-US/docs/Code Review FAQ">FAQ dédiée à l'évaluation du code</a> (en). Si vos changements concernent l'interface graphique, allez voir "<a href="/en-US/docs/Developer_Guide/Requesting_feedback_and_ui-review_for_desktop_Firefox_front-end_changes" title="Requesting feedback and ui-review for desktop Firefox front-end changes">Les demandes de commentaires et les évaluations concernant l'interface graphique utilisateur de Firefox</a>" (en).</p> + +<p>Pour demander une évaluation, vous devrez fournir un ou pusieurs noms d'utilisateur: soit lors de la soumission du paquet, soit dans l'interface graphique.</p> + +<p>Voir la documentation <a href="https://moz-conduit.readthedocs.io/en/latest/phabricator-user.html">Mozilla Phabricator</a> (en) pour plus de détails.</p> + +<p><em>Attention !:</em> si l'évaluateur n'a pas repondu au bout d'une semaine environ :</p> + +<ul> + <li>Allez sur le canal <a class="link-irc" href="irc://irc.mozilla.org/developers">#developers</a> de l'IRC de Mozilla et demandez si quelqu'un a des informations sur les évaluations (en insérant le lien du bug en question sur le canal).</li> + <li>Dans un deuxième temps, envoyez un courriel directement à l'évaluateur, demandez-lui si/quand il aura le temps d'évaluer le correctif ou qui d'autre pourrait le faire.</li> + <li>En dernier ressort, demandez dans le groupe de discussion approprié sur <code>news.mozilla.org</code>.</li> +</ul> + +<h2 id="Réponse_aux_commentaires_de_l'évaluation">Réponse aux commentaires de l'évaluation</h2> + +<p>Il est inhabituel qu'un correctif soit parfait dès la première fois. L'évaluateur marque "review-" et liste les problèmes rencontrés à corriger avant que le paquet puisse être accepté . Souvenez-vous que l'évaluation ne vise pas à vous décourager mais plutôt à encourager la meilleure résolution possible du bogue. Travaillez soigneusement les changements recommandés par l'évaluateur, joignez un nouveau correctif et demandez un nouvel examen.</p> + +<p>Parfois, un évaluateur accordera une approbation conditionnelle en marquant "review +" mais en indiquant des modifications mineures qui doivent être apportées, telles que les corrections d'orthographe ou d'indentation. Toutes les recommandation doivent être suivies, mais une nouvelle évaluation ne sera pas nécessaire. Effectuez les changements, liez la version corrigée, et cochez la case correspondante pour rendre le patch original obsolète. S'il y a une confusion à ce stade, une nouvelle évaluation devra être effectuée.</p> + +<p>Parfois après une évaluationi positive du correctif, mais avant sa publication, quelqu'un d'autre peut publier un changement qui entre en conflit avec le vôtre. Si la fusion est simple et non-invasive, publiez une version compatible, mais pour tout changement plus important, une évaluation supplémentaire sera nécessaire.</p> + +<p>Si, à un moment donné, le processus d'évaluation s'arrête pendant plus de deux semaines, consultez la section «Attention» ci-dessus.</p> + +<p>Dans de nombreux projets open-source, les développeurs acceptent les correctifs inachevés, les finissent et les appliquent. Dans la philosophie de Mozilla, <strong>le vérificateur va seulement évaluer et commenter le paquet du contributeur</strong>. Si ce dernier refuse d'améliorer son correctif, le paquet restera tel quel jusqu'à ce que quelqu'un décide de s'en occuper.</p> + +<h2 id="Getting_the_patch_checked_into_the_tree" name="Getting_the_patch_checked_into_the_tree">Envoi du correctif</h2> + +<p>Un paquet peut être envoyé après avoir été proprement corrigé.</p> + +<div class="note"> +<p>Compilez l'application avec le correctif, assurez-vous qu'elle s'exécute et passez la aux tests automatiques (et mentionnez que vous l'avez fait dans le bogue), et/ou envoyez au <a class="link-https" href="https://wiki.mozilla.org/Build:TryServerAsBranch" title="https://wiki.mozilla.org/Build:TryServerAsBranch">serveur de tests</a> (en) (indiquez le aussi dans le bug). L'insertion d'un correctif non testé fait perdre du temps à la personne qui doit le faire et peut mettre le feu à l'arborescense. Faites gagner du temps et des efforts à tout le monde en réalisant toutes les vérifications nécessaires.</p> + +<p>Assurez-vous que le patch est <a href="/en-US/docs/Mercurial/Using_Mercurial#How_can_I_generate_a_patch_for_somebody_else_to_check-in_for_me.3F" title="/en-US/docs/Creating_a_patch_that_can_be_checked_in">correctement formaté</a> (en) afin de rendre son contrôle aussi facile que possible.</p> +</div> + +<p>Ajoutez le mot-clé <a class="link-https" href="https://bugzilla.mozilla.org/describekeywords.cgi#checkin-needed"><code>checkin-needed</code></a> au bug (ou si Bugzilla ne vous autorise pas à ajouter ce mot-clé, demandez à quelqu'un de l'ajouter). Les membres de la communauté ayant les droits recherchent regulièrement des bugs avec le mot-clé <a class="link-https" href="https://bugzilla.mozilla.org/describekeywords.cgi#checkin-needed"><code>checkin-needed</code></a> et les intègrent dans un délai d'environ un jour. Si le correctif n'est pas vérifié dans un délai raisonnable, rendez-vous sur le canal <a class="external" href="http://irc.mozilla.org/developers">#developers</a> de <a class="external" href="http://irc.mozilla.org/">irc.mozilla.org</a> (en) et demandez à quelqu'un de le vérifier en votre nom. La plupart du temps, un lien vers une exécution test passée sera requis dans le but de vérifier que le patch ne causera pas de problèmes après son envoi.</p> + +<p>Si vous publiez vous même, suivez les <a href="/en-US/docs/Developer_Guide/Committing_Rules_and_Responsibilities" title="/en-US/docs/Developer Guide/Committing Rules and Responsibilities">Règles de publication et de responsabilité</a>.<br> + Nous recommendons l'utilisation de <a href="https://moz-conduit.readthedocs.io/en/latest/lando-user.html">Lando</a> (en) pour que le code soit automatiquement envoyé.</p> + +<h2 id="Getting_the_patch_checked_into_the_tree" name="Getting_the_patch_checked_into_the_tree">Régressions</h2> + +<p>Il se pourrait que votre code provoque des régressions fonctionnelles ou une baisse de performance. il y a une <a class="external" href="http://www.mozilla.org/hacking/regression-policy.html" title="http://www.mozilla.org/hacking/regression-policy.html">politique</a> rigoureuse vis-à-vis des baisses de performances en particulier, ce qui signifie que votre code peut être retiré et que vous allez devoir le retravailler pour le soumettre à nouveau. La régression signifie que les tests (que vous avez effectués avant l'envoi du correctif, n'est ce pas ?) n'étaient pas exhaustifs, alors vous allez devoir re-soumettre votre paquet ou faire un nouveau paquet pour corriger la régression, et réaliser les tests appropriés.</p> + +<p>Après la création de quelques correctifs, envisagez d'<a href="http://www.mozilla.org/hacking/committer/" title="http://www.mozilla.org/hacking/committer/">avoir accès au code source de Mozilla</a> (en).</p> diff --git a/files/fr/mozilla/developer_guide/index.html b/files/fr/mozilla/developer_guide/index.html new file mode 100644 index 0000000000..f771479c31 --- /dev/null +++ b/files/fr/mozilla/developer_guide/index.html @@ -0,0 +1,91 @@ +--- +title: Guide du développeur +slug: Mozilla/Developer_guide +tags: + - Développement_de_Mozilla + - Landing + - Mozilla +translation_of: Mozilla/Developer_guide +--- +<p><span class="seoSummary">Il y a de nombreuses façons de contribuer au projet Mozilla: coder, tester, améliorer les processus et les outils de développement, ou encore participer à la documentation . Ce guide fournit les informations pour vous aider à contribuer à Mozilla.</span></p> + +<div class="row topicpage-table"> +<div class="section"> +<h2 class="Documentation" id="Documentation">Documentation</h2> + +<dl> + <dt><a href="/en-US/docs/Introduction" title="Introduction">Prise en main</a></dt> + <dd>Un guide de démarrage pour les nouveaux contributeurs à Mozilla.</dd> +</dl> + +<dl> + <dt><a href="https://developer.mozilla.org/fr/docs/Developer_Guide/Source_Code">Travailler avec le code source de Mozilla</a></dt> + <dd>Un aperçu du code, comment l'obtenir, et le guide du style de codage.</dd> + <dt><a class="internal" href="/en-US/docs/Developer_Guide/Build_Instructions" title="en-US/docs/Developer_Guide/Build_Instructions">Instructions</a></dt> + <dd>Comment développer Firefox, Thunderbird, SeaMonkey, ou les autres applications Mozilla.</dd> + <dt><a href="/en-US/docs/Developer_Guide/Development_process_overview" title="en-US/docs/Developer Guide/Development process overview">Processus de développement</a></dt> + <dd>Un aperçu de l'ensemble du processus de développement de Mozilla.</dd> + <dt><a href="/en-US/docs/Mozilla/Multiple_Firefox_Profiles" title="en-US/docs/Mozilla/Multiple_Firefox_Profiles">Gérer plusieurs profils</a></dt> + <dd>En travaillant sur des versions prélimaires de Firefox, il est souvent utile d'avoir plusieurs profils, un pour chaque canal ou pour différentes sortes de tests.</dd> + <dt><a class="internal" href="/en-US/docs/Mozilla_automated_testing" title="en-US/docs/Mozilla automated testing">Tests automatisés</a></dt> + <dd>Comment lancer des tests automatisés de Mozilla et en écrire de nouveaux.</dd> + <dt><a class="internal" href="/en-US/docs/Developer_Guide/How_to_Submit_a_Patch" title="en-US/docs/Getting your patch in the tree">Soumettre un patch</a></dt> + <dd>Après avoir écrit votre patch, il doit être vérifié. Cet article vous explique le processus d'examen et la procédure d'approbation du patch.</dd> + <dt><a href="/en-US/docs/Developer_Guide/Getting_documentation_updated" title="en-US/docs/Developer_Guide/Getting documentation updated">Mise à jour de documentation</a></dt> + <dd>Comment s'assurer que la documentation que vous développez est à jour.</dd> + <dt><a class="internal" href="/en-US/docs/Mozilla_Modules_and_Module_Ownership" title="en-US/docs/Mozilla Modules and Module Ownership">Modules</a></dt> + <dd>Cet article fournit des informations sur les modules Mozilla, quel est le rôle du propriétaires d'un module et comment les propriétaires sont sélectionnés.</dd> + <dt><a class="internal" href="/en-US/docs/Code_snippets" title="en-US/docs/Code_snippets">Extraits de code</a></dt> + <dd>Exemples de codes dont vous pourriez avoir besoin pour comprendre le fonctionnement de tout un tas de choses.</dd> + <dt><a class="internal" href="/en-US/docs/Mozilla_Development_Strategies" title="en-US/docs/Mozilla Development Strategies">Stratégies de développement Mozilla</a></dt> + <dd>Conseils pour travailler sur le projet Mozilla.</dd> + <dt><a class="internal" href="/en-US/docs/Debugging" title="en-US/docs/Debugging">Débogage</a></dt> + <dd>Conseils et guides pour déboguer le code Mozilla.</dd> + <dt><a href="/en-US/docs/Performance" title="en-US/docs/Performance">Performance</a></dt> + <dd>Guides de performances et utilitaires pour vous aider à mieux coder.</dd> + <dt><a class="internal" href="/en-US/docs/The_Mozilla_platform" title="en-US/docs/The Mozilla platform">Platforme Mozilla</a></dt> + <dd>Informations sur les travaux de la platforme Mozilla.</dd> + <dt><a href="/en-US/docs/Developer_Guide/Adding_APIs_to_the_navigator_object" title="en-US/docs/Developer_Guide/Adding_APIs_to_the_navigator_object">Ajouter des APIs à l'objet navigateur</a> {{ gecko_minversion_inline("9.0") }}</dt> + <dd>Comment étendre l'objet {{ domxref("window.navigator") }} avec des APIs supplémentaires.</dd> + <dt><a href="/en-US/docs/Developer_Guide/Interface_Compatibility" title="en-US/docs/Developer Guide/Interface Compatibility">Compatibilité d'interface</a></dt> + <dd>Guides pour la modification des scripts et APIs binaires dans Mozilla.</dd> + <dt><a href="/en-US/docs/Developer_Guide/Customizing_Firefox" title="en-US/docs/Developer Guide/Customizing Firefox">Customiser Firefox</a></dt> + <dd>Informations sur la création de versions customisées de Firefox.</dd> + <dt><a href="/en-US/docs/Developer_Guide/Virtual_ARM_Linux_environment" title="Virtual ARM Linux environment">Virtual ARM Linux environment</a></dt> + <dd>Comment installer un émulateur ARM faisant tourner linux pour des tests spécifiques ARM , mais pas nécessairement pour une platforme précise. Utile pour les développeurs mobiles.</dd> + <dt><a href="/en-US/docs/Introduction/Obsolete_Build_Caveats_and_Tips" title="Obsolete Build Caveats and Tips">Conseils et mises en garde pour les versions obsolètes</a></dt> + <dd>L'endroit où l'on trouvera des conseils utiles pour développer d'anciennes versions du code (mais pas la dernière version).</dd> +</dl> +</div> + +<div class="section"> +<h2 class="Tools" id="Outils">Outils</h2> + +<dl> + <dt><a class="link-https" href="https://bugzilla.mozilla.org/" title="https://bugzilla.mozilla.org/">Bugzilla</a></dt> + <dd>Base de données <a class="internal" href="/en-US/docs/Bugzilla" title="en-US/docs/Bugzilla">Bugzilla</a> utilisée pour le suivi de problèmes sur les projets Mozilla.</dd> + <dt><a class="external" href="http://mxr.mozilla.org/" title="http://mxr.mozilla.org/">MXR</a></dt> + <dd>Parcourir et rechercher le code source référentiel de Mozilla sur le web.</dd> + <dt><a href="http://dxr.mozilla.org/">DXR</a></dt> + <dd>Prochaine génération de recherche du code source de Mozilla. En développement actif.</dd> + <dt><a class="external" href="http://bonsai.mozilla.org/cvsqueryform.cgi" title="http://bonsai.mozilla.org/cvsqueryform.cgi">Bonsai</a></dt> + <dd>L'outils <a class="internal" href="/en-US/docs/Bonsai" title="en-US/docs/Bonsai">Bonsai</a> permet de savoir qui a changé un fichier dans le référentiel et quand.</dd> + <dt><a class="internal" href="/en-US/docs/Mercurial" title="en-US/docs/Mercurial">Mercurial</a></dt> + <dd>Le système de contrôle de version utilisé pour gérer le code source de Mozilla.</dd> + <dt><a class="external" href="https://tbpl.mozilla.org/" title="http://tinderbox.mozilla.org/showbuilds.cgi">TBPL (Tinderbox Push Log)</a></dt> + <dd><span class="internal">Tinderbox Push Log</span> montre le statut d'une branche de code (qu'elle compile ou pas). A vérifier avant de récupérer du code ou en publier pour être certain que vous travaillez sur une branche active.</dd> + <dt><a class="internal" href="/en-US/docs/Crash_reporting" title="en-US/docs/Crash reporting">Crash tracking</a></dt> + <dd>Informations sur <a class="link-https" href="https://crash-reports.mozilla.com/reports" title="https://crash-reports.mozilla.com/reports">Socorro</a>, le système de rapport d'incidents.</dd> + <dt><span class="external">Performance tracking: <a href="https://datazilla.mozilla.org/">Datazilla</a> and <a href="http://graphs.mozilla.org/">Graphs</a></span></dt> + <dd>Voir les informations de performance du projet Mozilla.</dd> + <dt><a href="/en-US/docs/Developer_Guide/Callgraph" title="en-US/docs/Developing Mozilla/Callgraph">Callgraph</a></dt> + <dd>Un outil qui aide à réaliser l'analyse statique d'un code Mozilla en générant automatiquement un graphique Callgraph.</dd> + <dt><a class="external" href="http://www.mozilla.org/community/developer-forums.html" title="http://www.mozilla.org/community/developer-forums.html">Forums développeurs</a></dt> + <dd>Des listes de discussion classées par sujets où les développeurs peuvent échanger sur les problèmes relatifs au développement de Mozilla.</dd> + <dt><a class="external" href="http://www.codefirefox.com/cheatsheet/" title="http://www.brianbondy.com/mozilla/cheatsheet/">Antisèches sur le développement de la plate-forme Mozilla</a></dt> + <dd>Listes d'informations de Brian Bondy pour les développeurs de la plate-forme.</dd> + <dt><a class="external" href="http://www.codefirefox.com/videos/" title="http://www.brianbondy.com/mozilla/cheatsheet/">Tutoriels vidéo sur le développement Firefox </a></dt> + <dd>Tutoriels vidéo de Brian Bondy sur le développement de Firefox.</dd> +</dl> +</div> +</div> diff --git a/files/fr/mozilla/developer_guide/mozilla-central/index.html b/files/fr/mozilla/developer_guide/mozilla-central/index.html new file mode 100644 index 0000000000..ea566ea8e1 --- /dev/null +++ b/files/fr/mozilla/developer_guide/mozilla-central/index.html @@ -0,0 +1,65 @@ +--- +title: mozilla-central +slug: Mozilla/Developer_guide/mozilla-central +tags: + - Développement_de_Mozilla + - Mercurial +translation_of: Mozilla/Developer_guide/mozilla-central +--- +<p><strong><code>mozilla-central</code></strong> est un dépôt <a href="/fr/Mercurial" title="fr/Mercurial">Mercurial</a> du code de Mozilla : <a class="external" href="http://hg.mozilla.org/mozilla-central" rel="freelink">http://hg.mozilla.org/mozilla-central</a> . Il s'agit d'un point d'intégration stable pour les changements qui seront incorporés dans la base de code de Mozilla 2.</p> + +<p>La page de <a href="/fr/Tinderbox" title="fr/Tinderbox">Tinderbox</a> pour mozilla-central se trouve à <a class="external" href="http://tinderbox.mozilla.org/showbuilds.cgi?tree=Mozilla2" rel="freelink">http://tinderbox.mozilla.org/showbui...?tree=Mozilla2</a> .</p> + +<p>{{ Note("contrairement au dépôt CVS de Mozilla, seules les sources de Firefox et XULRunner font partie de mozilla-central. Des dépôts séparés sont utilisés pour d\'autres applications et projets.") }}</p> + +<h3 id="R.C3.A8gles_pour_l.27arbre_mozilla-central" name="R.C3.A8gles_pour_l.27arbre_mozilla-central">Règles pour l'arbre mozilla-central</h3> + +<p>La base de code mozilla-central doit être stable sur les <a href="/fr/Configurations_de_compilation_gérées" title="fr/Configurations_de_compilation_gérées">plateformes principales</a> à tout moment :</p> + +<ul> + <li>Les tests unitaires automatisés doivent être passés</li> + <li>Les tests automatisés de performances et les tests de fuites ne doivent pas régresser</li> + <li>Toute régression fera l'objet d'un retrait immédiat du patch incriminé</li> + <li>Les développeurs ne doivent <em>pas</em> essayer de publier leurs changements dans mozilla-central pour vérifier si un patch fait régresser des tests de performances ou des tests unitaires. C'est le {{ interwiki('wikimo', 'Build:TryServer', 'serveur de test') }} qui doit être utilisé pour cela.</li> +</ul> + +<h4 id="Changements_dans_les_API" name="Changements_dans_les_API">Changements dans les API</h4> + +<p>En préparation de Mozilla 1.9.1, les règles suivantes sont à respecter pour les changements dans les API :</p> + +<ul> + <li>les changements des API <strong>gelées</strong> (<em>frozen</em>) ne sont pas permis.</li> + <li>les changements des API <strong>non gelées</strong> doivent être mûrement réfléchis. + <ul> + <li>Tout impact sur les extensions JS doit être évité ou minimisé et soigneusement <a href="/Fr/Firefox_3.5_pour_les_développeurs" title="fr/Firefox_3.1_pour_les_développeurs">documenté</a>.</li> + <li>Les vérificateurs (<em>reviewers</em>) doivent explicitement approuver les changements d'API le cas échéant.</li> + <li>En cas de doute, posez la question sur les groupes de discussion mozilla.dev.platform ou mozilla.dev.apps.firefox.</li> + </ul> + </li> +</ul> + +<p>Ces règles changeront après le branchement de la version 1.9.1.</p> + +<h3 id="Soumission_de_modifications_sur_mozilla-central" name="Soumission_de_modifications_sur_mozilla-central">Soumission de modifications sur mozilla-central</h3> + +<p>Tous les développeurs qui ont un accès en écriture sur le CVS doivent avoir reçu un e-mail avec les détails d'identification LDAP nécessaires pour effectuer un <em>push</em> sur hg.mozilla.org. Si vous pensez quie vous devriez y avoir accès mais ne connaissez pas vos détails d'identification, <a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=mozilla.org&component=Server+Operations:+Account+Requests">ouvrez un bug</a>. Vous pouvez utiliser la commande <code>hg push</code> pour soumettre des changements (<em>changesets</em>) au serveur.</p> + +<ul> + <li>Les modifications ne doivent pas faire apparaître plusieurs répertoires de base (<em>heads</em>) dans mozilla-central</li> + <li>Essayez de minimiser l'historique. Une soumission unique ou quelques changesets indépendants sont préférables à de nombreux changesets « travaux en cours » qui encombreront l'historique. Pensez à utiliser des <a href="/fr/Files_Mercurial" title="fr/Files_Mercurial">files Mercurial</a> pour gérer vos patchs avant la soumission.</li> + <li>Au moins pour la soumission du dernier changeset, le numéro de bug et le vérificateur (<em>reviewer</em>) pour la modification doivent être mentionnés.</li> + <li>Les modifications doivent être soumises à <code><a class="external" href="ssh://hg.mozilla.org/mozilla-central/" rel="freelink">ssh://hg.mozilla.org/mozilla-central/</a></code>, consultez <a href="http://mozilla-version-control-tools.readthedocs.org/en/latest/hgmozilla/index.html" title="Mercurial for Mozillians">Le guide Mercurial for Mozillians (en anglais)</a> pour plus de détails sur la mise en place de votre configuration.</li> +</ul> + +<p> </p> + +<p>Les copies de <a class="internal" href="/fr/Extraits_CVS_externes_dans_mozilla-central" title="fr/Extraits CVS externes dans mozilla-central">NSPR et NSS dans mozilla-central</a> sont soumises à certaines règles particulières.</p> + +<h3 id="Voir_.C3.A9galement" name="Voir_.C3.A9galement">Voir également</h3> + +<ul> + <li>Le billet <a class="external" href="http://developer.mozilla.org/devnews/index.php/2008/06/02/mozilla-central-open-for-business/">mozilla-central: open for business</a> de devnews.</li> + <li>Sur Bugzilla, <a class="link-https" href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=433384&hide_resolved=1">le relevé des problèmes rendant le développement difficile sur mozilla-central</a></li> +</ul> + +<p>{{ languages( { "en": "en/Mozilla-central", "es": "es/Mozilla-central", "ja": "ja/Mozilla-central" } ) }}</p> diff --git a/files/fr/mozilla/developer_guide/reviewer_checklist/index.html b/files/fr/mozilla/developer_guide/reviewer_checklist/index.html new file mode 100644 index 0000000000..7b5675a62f --- /dev/null +++ b/files/fr/mozilla/developer_guide/reviewer_checklist/index.html @@ -0,0 +1,134 @@ +--- +title: Liste de contrôle de l'évaluateur +slug: Mozilla/Developer_guide/Reviewer_Checklist +tags: + - Correction + - Evaluation + - Guide +translation_of: Mozilla/Developer_guide/Reviewer_Checklist +--- +<div class="summary"> +<p>Soumettre des correctifs pour le code source de Mozilla n’a pas besoin d’être complexe. Cet article fournit une liste des meilleures pratiques, à suivre pour votre mise-à-jour, que les évaluateurs vérifient ou exigent. Suivre ces recommandations mène à un processus d'évaluation et d’acception plus doux et plus rapide.<span class="seoSummary">.</span></p> +</div> + +<h2 id="Bonne_citoyenneté_sur_le_web">Bonne citoyenneté sur le web</h2> + +<ul> + <li>Assurez-vous que les nouvelles API développées pour le Web ont un sens et que les normes sont suivies ou pré-testées par défaut.</li> + <li>En C++, utilisez le wrapper-cache si besoin. Si votre projet peut être récupéré ailleurs, sans création dans le processus, il doit être mis en cache (wrapper-cache).</li> +</ul> + +<h2 id="Correction">Correction</h2> + +<ul> + <li>Le bogue qui est en train d’être corrigé est un bogue valide et a besoin d’être corrigé.</li> + <li>Le correctif (patch) apporté règle le problème.</li> + <li>Le correctif n’est pas inutilement compliqué.</li> + <li>Le correctif n'ajoute pas de duplications du code existant (les doublons pourraient signifier qu'il est nécessaire de refactoriser). Généralement, cela dépend d'une "partie 0" d'un bug, qui est "une chose ordonnée pour rendre le correctif plus facile à écrire et à réviser".</li> + <li>Si la qualité du correctif doit être vérifiée, vous devrez fournir les étapes pour le reproduire (STR – Steps To Reproduce).</li> +</ul> + +<h2 id="Qualité">Qualité</h2> + +<ul> + <li>Si vous pouvez le tester par unité, vous devriez le faire.</li> + <li>Si c’est du JavaScript, essayez de concevoir et de construire de telle sorte que xpcshell puisse exercer la plupart des fonctionnalités. C’est plus rapide.</li> + <li>Assurez-vous que le correctif ne crée pas de code inutilisé (par exemple : supprimez les chaînes quand une fonctionnalité est supprimée)</li> + <li>Toutes les exceptions capturées doivent être enregistrées au bon niveau, avec les informations appropriées et identifiables. Aussi considérez le coût du traitement et de l’enregistrement des "logs" <em>(journaux)</em>. [Astuce : Vérifier les niveaux de log est couteux sauf si vous utilisez Logger.]</li> +</ul> + +<h2 id="Style">Style</h2> + +<ul> + <li>Suivez <a href="/fr/docs/Developer_Guide/Coding_Style">le guide de style</a> pour le langage et le module concerné.</li> + <li>Suivez le style local pour le code environnant, même si le style local n’est pas documenté de façon formelle.</li> + <li>Les nouveaux fichiers ont des déclarations de licence et des modèles.</li> + <li>Les nouveaux fichiers JavaScript doivent utiliser un mode strict.</li> + <li>Espace blanc en queue (git diff et splinter view surlignent ces espaces, il en est de même pour hg avec l’extension de couleur activé). Les espaces blancs peuvent être facilement corrigés en Mercurial en utilisant <a href="http://mercurial.selenic.com/wiki/CheckFilesExtension">l’extension CheckFiles</a>. Dans git, vous pouvez utiliser git rebase --whitespace=fix.</li> +</ul> + +<h2 id="Problèmes_de_sécurité">Problèmes de sécurité</h2> + +<ul> + <li>Il ne devrait pas y avoir d’écriture dans des fichiers arbitraires en dehors du dossier de profil.</li> + <li>Soyez prudent quand vous lisez des entrées clavier d’utilisateur, des données réseaux ou fichiers provenant du disque. Partez du postulat que les entrées sont trop volumineuses, trop courtes, vides, malformées ou malicieuses.</li> + <li>Une marque (tag) comme contrôle de sécurité n’est pas sûr.</li> + <li>Si vous écrivez du code qui utilise JSAPI, il y a de grandes chances que vous soyez sur la mauvaise voie. Essayez d’éviter ça.</li> +</ul> + +<h2 id="Problèmes_de_confidentialité">Problèmes de confidentialité</h2> + +<ul> + <li><span id="result_box" lang="fr"><span>Il ne devrait pas y avoir de journalisation d'URL ou de contenu dont les URL peuvent être déduites.</span></span></li> + <li>[Fennec : Android Services <span id="result_box" lang="fr"><span>a "Logger.pii ()" à cette fin (par exemple, journal de profil)].</span></span></li> + <li>Marquage pour l'évaluation de la confidentialité si nécessaire.</li> +</ul> + +<h2 id="Fuite_de_ressources">Fuite de ressources</h2> + +<ul> + <li>En Java, les fuites de mémoire sont en grande partie dues aux exploitations singulières des caches et des collections, ou aux observateurs collés autour, ou aux exécutables assis sur une file d'attente.</li> + <li>En C++, utiliser cycle-collect selon les besoins. Si JavaScript peut voir votre objet, il a probablement besoin d'une collecte cyclique.</li> + <li>[Fennec : <span id="result_box" lang="fr"><span>Si votre vue personnalisée fait des animations, il est préférable de nettoyer les exécutables dans</span></span> onDetachFromWindow().]</li> + <li><span id="result_box" lang="fr"><span>Assurez-vous que toutes les poignées de fichiers et autres ressources disponibles sont fermées de manière appropriée.</span></span></li> + <li>[Fennec : <span id="result_box" lang="fr"><span>Lorsque vous écrivez des tests qui utilisent PaintedSurface, assurez-vous que PaintedSurface est fermé lorsque vous avez terminé.</span></span> ]</li> +</ul> + +<h2 id="Impact_sur_les_performances">Impact sur les performances</h2> + +<ul> + <li>Contrôlez votre fil principal IO <em>(entrée-sortie)</em> [Fennec : Android <span class="short_text" id="result_box" lang="fr"><span>peut avertir à propos de cela avec "strictmode"</span></span> ].</li> + <li><span id="result_box" lang="fr"><span>Supprimez le journal de débogage qui n'est pas nécessaire dans la production.</span></span></li> +</ul> + +<h2 id="Problèmes_de_fil">Problèmes de fil</h2> + +<ul> + <li><span id="result_box" lang="fr"><span>Enorme : utilisation correcte du verrouillage et de la volatilité;</span> "<span>livelock" <em>(ouverture)</em> et "deadlock" <em>(blocage)</em>;</span> "ownership" <em>(possession</em>)<span>.</span></span></li> + <li>[Fennec: <span id="result_box" lang="fr"><span>Toutes les méthodes de visualisation ne doivent être touchées que par un fil de l'interface utilisateur</span></span> .]</li> + <li>[Fennec: <span id="result_box" lang="fr"><span>Sensibilisation au cycle de vie de l'activité (fonctionne avec "ne jamais garder les activités").</span> <span>Testez également avec oom-fennec</span></span> (<a href="https://hg.mozilla.org/users/blassey_mozilla.com/oom-fennec/%29">https://hg.mozilla.org/users/blassey_mozilla.com/oom-fennec/)</a>].</li> +</ul> + +<h2 id="Compatibilité">Compatibilité</h2> + +<ul> + <li>Fichiers de version, bases de données, messages.</li> + <li><span id="result_box" lang="fr"><span>Étiqueter les messages avec des identifiants pour des appelants sans ambiguité.</span></span></li> + <li>IDL UUIDs <span id="result_box" lang="fr"><span>sont mis à jour en même temps que l'interface</span></span> .</li> + <li>Les permissions Android <span id="result_box" lang="fr"><span>devraient être "gouped" <em>(regroupées)</em> dans une version commune pour éviter de casser les mises à jour automatiques</span></span> .</li> + <li>Les API Android ajoutées à partir de Froyo devraient être surveillées par un contrôle de version.</li> +</ul> + +<h2 id="Préférences">Préférences</h2> + +<ul> + <li><span id="result_box" lang="fr"><span>Si la fonctionnalité utilisée est couverte par les préférences, assurez-vous du branchement.</span></span></li> + <li><span id="result_box" lang="fr"><span>Si vous travaillez sur une nouvelle fonctionnalité, envisagez d'ajouter des préférences pour contrôler le comportement</span></span> .</li> + <li><span id="result_box" lang="fr"><span>Envisagez d'ajouter des preférences pour désactiver complètement la fonctionnalité dans le cas où des bogues se retrouvent plus tard dans le cycle de libération.</span></span></li> + <li>[Fennec: <span id="result_box" lang="fr"><span>"Prefs" peuvent être les préférences Gecko prefs, les valeurs de "SharedPreferences" ou "build-time flags".</span> <span>Celui que vous devez choisir dépend de la façon dont la fonctionnalité est implémentée : un service Java pur ne peut pas facilement vérifier Gecko prefs, par exemple.</span></span>]</li> +</ul> + +<h2 id="Chaînes_de_caractères">Chaînes de caractères</h2> + +<ul> + <li><span id="result_box" lang="fr"><span>Il ne devrait pas y avoir de changements de chaîne dans les correctifs (y compris les extractions de chaînes)</span></span>.</li> + <li><span id="result_box" lang="fr"><span>Nom des entités Rev pour les changements de chaîne.</span></span></li> + <li><span id="result_box" lang="fr"><span>Lorsque vous modifiez l'interface utilisateur, soyez conscient du fait que les chaînes auront différentes longueurs dans différentes régions.</span></span></li> +</ul> + +<h2 id="Documentation">Documentation</h2> + +<ul> + <li><span id="result_box" lang="fr"><span>Le message de présentation doit décrire ce que le patch change (ne pas être une copie du résumé des bogues).</span> <span>La première ligne devrait être une description courte (puisque seule la première ligne est affichée dans le journal), et une description supplémentaire, si nécessaire, devrait être présente, correctement développée, dans des lignes ultérieures.</span></span></li> + <li><span id="result_box" lang="fr"><span>Des morceaux potentiellement confus de code sont suffisamment documentés.</span></span></li> + <li><span id="result_box" lang="fr"><span>Signaler un bug avec "dev-doc-needed" si des ajouts (addon) ou des API Web sont affectés.</span></span></li> + <li><span id="result_box" lang="fr"><span>Utilisez Javadocs de manière exhaustive, en particulier sur toutes les nouvelles méthodes non privées.</span></span></li> + <li><span id="result_box" lang="fr"><span>Lorsque vous déplacez des fichiers, assurez-vous que la responsabilité / l'annotation est préservée.</span></span></li> +</ul> + +<h2 id="Accessibilité">Accessibilité</h2> + +<ul> + <li><span id="result_box" lang="fr"><span>Pour les pages HTML, les images devraient avoir l'attribut "alt" défini le cas échéant.</span> <span>De même, un bouton qui n'est pas un bouton HTML natif devrait avoir un rôle = "button" <em>(bouton)</em> et l'ensemble d'attributs d'étiquette aria.</span></span></li> + <li>[Fennec: <span id="result_box" lang="fr"><span>Assurez-vous que la </span></span> contentDescription <em>(description du contenu)</em><span lang="fr"><span> est définie pour les parties de l'interface utilisateur qui devraient être accessibles</span></span>].</li> +</ul> diff --git a/files/fr/mozilla/developer_guide/utilisation_de_la_machine_virtuelle_vm/index.html b/files/fr/mozilla/developer_guide/utilisation_de_la_machine_virtuelle_vm/index.html new file mode 100644 index 0000000000..879be80ff2 --- /dev/null +++ b/files/fr/mozilla/developer_guide/utilisation_de_la_machine_virtuelle_vm/index.html @@ -0,0 +1,103 @@ +--- +title: Utilisation de Mozilla build VM +slug: Mozilla/Developer_guide/Utilisation_de_la_Machine_Virtuelle_VM +tags: + - Compilation firefox + - Firefox + - Guide + - Guide du Developpeur + - Machine Virtuelle Mozilla + - Mozilla + - VirtualBox +translation_of: Archive/Mozilla/Using_the_VM +--- +<p>Si vous vous êtes jamais demandés à quoi ressemble une contribution à Firefox mais vous n'aviez jamais le temps pour lire et poursuivre jusqu'au bout nos<a href="https://developer.mozilla.org/fr/docs/Compilation_simple_de_Firefox"> instructions pour configurer un environnement de devéloppement</a> ou avez voulu éviter de faire des changements à vos outils standard et configuration, alors ceci pourrait être pour vous. Mozilla fournit une machine virtuelle (VM) qui est compatible avec le logiciel de virtualisation gratuit <a href="https://www.virtualbox.org/wiki/Downloads">VirtualBox</a> (aussi bien que d'autres, y compris VMWare/VMWare Fusion).</p> + +<p>Cet article fournit des instructions simples pour le téléchargement, l'installation et la configuration de cet environnement de developpement; une fois que vous avez fini les étapes ci-dessous, vous aurez un VM prêt pour modifier et adapter Firefox.</p> + +<p>Esperant que ce VM aidera particulièrement des développeurs ou les développeurs potentiels qui n'ont pas un environnement de développement C++ complet disponible pour eux</p> + +<h2 id="Installation_de_VirtualBox">Installation de VirtualBox</h2> + +<p><span id="result_box" lang="fr"><span class="hps">Visitez <a href="https://www.virtualbox.org/wiki/Downloads">la page de téléchargements de VirtualBox</a></span><span class="hps"> et</span> <span class="hps">télécharger la dernière version</span> <span class="hps">du logiciel</span> <span class="hps">pour votre</span> <span class="hps">système d'exploitation</span><span>.</span></span></p> + +<div class="note"> +<p><strong>Note:</strong> <span id="result_box" lang="fr"><span class="hps">Si vous</span> <span class="hps">avez déjà un produit</span> <span class="hps">de virtualisation</span> <span class="hps">installé, comme</span> <span class="hps">VirtualBox</span><span>,</span> <span class="hps">VMWare</span><span>,</span> <span class="hps">ou VMWare</span> <span class="hps">Fusion</span><span>,</span> <span class="hps">vous pouvez l'utiliser</span> <span class="hps">au lieu de télécharger</span> <span class="hps">une nouvelle copie de</span> <span class="hps">VirtualBox</span><span>.</span> <span class="hps">Assurez-vous</span> <span class="hps">que vous avez</span> <span class="hps">la dernière version</span> <span class="hps">du logiciel.</span> <span class="hps">Notez que</span> <span class="hps">Parallels</span> <span class="hps">Desktop ne prend pas</span> <span class="hps">en charge le format</span> <span class="hps">OVF</span><span>.</span></span></p> +</div> + +<h2 id="Telechargement_de_la_VM">Telechargement de la VM</h2> + +<p><span id="result_box" lang="fr"><span class="hps">Ensuite, téléchargez</span> <span class="hps">l'environnement de développement</span> <span class="hps">de Firefox</span> <span class="hps">VM</span><span>.</span></span></p> + +<p><a class="download-button external ignore-external" href="http://vmimages.mozilla.net/ovf/FirefoxBuildEnv.ova" rel="noopener">TELECHARGER LA VM</a></p> + +<p>SHA-256: 1c84eaf97ea2a9a3c990051306a038da9541a450fd600878e7c1f984fa930f35</p> + +<div class="note"> +<p><strong>Note:</strong> <span id="result_box" lang="fr"><span class="hps">Ce fichier</span> <span class="hps">fait environ 4.4</span> <span class="hps">Go</span><span>,</span> <span class="hps">il peut prendre</span> <span class="hps">un certain temps</span> <span class="hps">à télécharger.</span></span></p> +</div> + +<h2 id="Configuration_de_la_VM">Configuration de la VM</h2> + +<p><span id="result_box" lang="fr"><span class="hps">Après avoir téléchargé</span></span><span lang="fr"> <span class="hps">le fichier</span><strong> <span class="hps">.ova</span></strong> <span class="hps">des</span> <span class="hps">machines virtuelles</span><span>, double-cliquez</span> <span class="hps">sur le fichier</span><span>;</span> <span class="hps">cela démarrera</span> <span class="hps">le processus d'importation</span> <span class="hps">de la machine virtuelle</span> <span class="hps">dans</span> <span class="hps">VirtualBox</span><span>.</span> <span class="hps">Il est fortement recommandé de </span><span class="hps">donner </span></span><span id="result_box" lang="fr"><span class="hps">à</span></span><span lang="fr"><span class="hps"> la</span> <span class="hps">VM</span> <span class="hps">une mémoire vive minimum de</span> 4096<span class="hps"> Mo </span><span class="atn hps">(8192</span> <span class="hps">Mo ou plus</span> <span class="hps">si vous le pouvez</span><span>)</span><span>,</span> <span class="hps">aussi configurer la afin d'</span><span class="hps">avoir le même</span> <span class="hps">nombre de processeurs</span> <span class="hps">que</span> <span class="hps">votre ordinateur hôte</span><span>.</span> Le dev<span class="hps">é</span>loppement de <span class="hps">Firefox</span> <span class="hps">utilise beaucoup de</span> <span class="hps">ressources système</span><span>,</span> <span class="hps">et que vous voulez</span> <span class="hps">construire</span> <span class="hps">le plus rapidement possible</span><span>.</span></span></p> + +<p><img alt="Screen shot of the Import Virtual Appliance window" src="https://mdn.mozillademos.org/files/8665/firefoxdev3.png" style="height: 447px; width: 600px;"></p> + +<p><span id="result_box" lang="fr"><span class="hps">Une fois que vous</span> <span class="hps">avez</span> <span class="hps">terminé d'importer</span> <span class="hps">la machine virtuelle</span><span>, vous pouvez effectuer</span> <span class="hps">des personnalisations supplémentaires</span> <span class="hps">si vous le souhaitez</span><span>, ou tout simplement</span> <span class="hps">démarrer</span> <span class="hps">la machine virtuelle</span> <span class="hps">et</span> <span class="hps">attendre que le bureau</span> <span class="hps">Ubuntu</span> <span class="hps">apparaisse</span><span>.</span> <span class="hps">Une fenêtre du</span> <span class="hps">Terminal (l'equivalent de la l'invite de commande sur Windows)</span> s'<span class="hps">affichera automatiquement</span> <span class="hps">et effectuera</span> <span class="hps">certaines activités de</span> <span class="hps">configuration finale</span><span>.</span> <span class="hps">Une fois</span> <span class="hps">celles-ci </span><span class="hps">terminée</span><span>,</span> <span class="hps">Sublime Text</span><span class="hps"> démarrera</span><span>,</span> <span class="hps">et vous pourriez</span> <span class="hps">commencer à travailler </span><span>!</span></span></p> + +<p><img alt="Screen shot of the Sublime Text editor running in the VM" src="https://mdn.mozillademos.org/files/8667/firefoxdev1.png" style="height: 317px; width: 600px;"></p> + +<div class="note"> +<p><strong>Note:</strong> <span id="result_box" lang="fr"><span class="hps">Si</span> <span class="hps">jamais vous avez besoin</span> d'<span class="hps">informations d'identification </span><span class="hps">root</span></span><span lang="fr"><span>, utilisez</span> <span class="atn hps">"</span><span class="atn">firefox-</span><span>dev</span><span>"</span> <span class="hps">comme mot de passe</span><span>.</span> <span class="hps">Si vous</span> <span class="hps">souhaitez modifier</span> <span class="hps">vos paramètres de</span> <span class="hps">langue et de clavier</span><span>,</span> <span class="hps">suivez les instructions</span> <a href="http://www.howtogeek.com/howto/17528/change-the-user-interface-language-in-ubuntu/">Comment changer la langue de l'interface utilisateur dans Ubuntu</a><span>.<sup>(page en Anglais)</sup></span></span></p> +</div> + +<h2 id="Compilation_de_Firefox">Compilation de Firefox</h2> + +<p><span id="result_box" lang="fr"><span class="hps">Pour Compiler </span><span class="hps">Firefox</span> <span class="hps">dans la machine virtuelle (VM)</span><span>, ouvrez</span> <span class="hps">le menu "Outils"</span> <span class="hps">et choisissez l'option "Compiler"</span> <span>.</span> <span class="hps">Le processus de Compilation </span><span class="hps">commencer</span><span>a,</span> <span class="hps">et</span> <span class="hps">vous avez du temps</span> <span class="hps">pour boire un verre</span><span>,</span> <span class="hps">un bon repas</span><span>,</span> <span class="hps">ou peut-être</span> <span class="hps">une petite pause</span><span>,</span> <span class="hps">tout depend de la puissance de</span> <span class="hps">votre ordinateur</span><span>.</span> <span class="hps">Vous</span> <span class="hps">devez être patient</span><span>.</span><br> + <br> + <span class="hps">Une fois que la</span> Compilation<span class="hps"> terminée</span> <span class="atn hps">(</span><span>avec succès</span><span>)</span><span>, choisissez</span> <span class="hps">l'option Exécuter</span> <span class="hps">dans le</span> <span class="hps">menu "Outils"</span> <span class="hps">pour démarrer votre</span> <span class="hps">version personnalisée</span> <span class="hps">de</span> <span class="hps">Firefox</span><span>.</span> <span class="hps">Assurez-vous que</span> <span class="hps">tout ce que</span> <span class="hps">le pire</span> <span class="hps">comme prévu.</span><br> + <br> + <span class="hps">Par défaut</span><span>,</span> <span class="hps">la machine virtuelle</span> <span class="hps">est configuré pour</span> compiler <span class="hps">une</span> compilation <span class="hps">optimisée de</span> <span class="hps">Firefox</span><span>.</span> <span class="hps">Vous pouvez facilement passer</span> <span class="hps">de la compilation au</span><span class="hps"> débogage</span><span>.</span> <span class="hps">Il suffit d'ouvrir</span> <span class="hps">le menu "Outils"</span><span>,</span> <span class="hps">puis</span> <span class="hps">le sous-menu</span> "<span class="hps">Build System</span>"<span class="hps">.</span> <span class="hps">Dans la dernière sous-menu de</span> "<span class="hps">Build System</span>"</span><span lang="fr">, <span class="atn hps">choisissez «</span><span>Firefox</span> <span class="atn hps">(</span><span>Debug</span><span>)</span><span>"</span><span>.</span> <span class="hps">C'est tout !</span> <span class="hps">Votre prochaine</span> Compilation <span class="hps">sera</span> <span class="hps">une accumulation</span> <span class="hps">de</span> <span class="hps">débogueur</span><span>.</span></span></p> + +<p><img alt="Screen shot showing how to switch between debug; and optimized builds" src="https://mdn.mozillademos.org/files/8669/firefoxdev2.png" style="height: 317px; width: 600px;"></p> + +<h2 id="Travailler_dans_la_VM"><span class="short_text" id="result_box" lang="fr"><span class="hps">Travailler</span> <span class="hps">dans la</span> <span class="hps">VM</span></span></h2> + +<p><span id="result_box" lang="fr"><span class="hps">De là</span><span>, vous</span> <span class="hps">travaillez</span> <span class="hps">dans la machine virtuelle</span> <span class="hps">tout comme</span> <span class="hps">vous le feriez</span> <span class="hps">ailleurs.</span> <span class="hps">Pour</span> <span class="hps">recupé</span></span><span lang="fr"><span class="hps">rer le</span> <span class="hps">dernier code</span> <span class="hps">de</span><a href="https://developer.mozilla.org/fr/docs/mozilla-central"> mozilla-central</a><span>,</span> <span class="hps">il suffit d'utiliser</span> <span class="hps">Mercurial</span> <span class="hps">comme d'habitude </span><span>:</span></span></p> + +<pre>hg pull</pre> + +<p><span id="result_box" lang="fr"><span class="hps">Et</span> <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/How_to_Submit_a_Patch">soumettez vos patchs</a><sup>(page en Anglais)</sup> <span class="hps">de la même manière</span> <span class="hps">que vous</span> <span class="hps">le feriez normalement</span><span>.</span></span></p> + +<h2 id="Et_Maintenant"><span class="short_text" id="result_box" lang="fr"><span class="hps">Et Maintenant</span> <span class="hps">?</span></span></h2> + +<p><span id="result_box" lang="fr"><span title="Now that you've successfully built Firefox in your brand-new VM, you might be wondering what to do next.">Maintenant que vous avez construit avec succès Firefox dans votre VM flambant neuf, vous demandez peut-être ce qu'il faut faire ensuite. </span><span title="A great way to start is to pick a small, easy-to-fix bug and contribute code that patches it.">Une excellente façon de commencer est de choisir un petit bug facile à fixer et code qui applique ces patches. </span><span title="Imagine how awesome it is to have code you wrote shipped to half a billion users all over the world! + +">Imaginez comment il est génial d'avoir le code que vous avez écrit expédié à un demi-milliard d'utilisateurs partout dans le monde !</span></span></p> + +<p><span id="result_box" lang="fr"><span title="Here are some links to help you find something you can do to make Firefox better: + + ">Voici quelques liens pour vous aider à trouver quelque chose que vous pouvez faire pour am</span><span class="hps">é</span></span><span lang="fr"><span title="Here are some links to help you find something you can do to make Firefox better: + + ">liorer Firefox:</span></span></p> + +<ul> + <li><span title="Code Firefox Lessons provides a number of video tutorials for new Firefox contributors. + "><a href="http://codefirefox.com/">Les Leçons CodeFirefox</a> fournit un certain nombre de tutoriels vidéo pour les nouveaux contributeurs de Firefox.</span></li> + <li><span lang="fr"><a href="http://www.joshmatthews.net/bugsahoy/">Bugs Ahoy</a><span title="Bugs Ahoy!"> ! </span><span title="(a tool to help you find bugs that might interest you). + ">(Un outil pour vous aider à trouver des bugs qui pourrait vous intéresser).</span></span></li> + <li><span lang="fr"><span title="Developer guide (documentation about developing on and for Mozilla projects). + "><a href="https://developer.mozilla.org/fr/docs/Developer_Guide">Guide du développeur</a> (la documentation sur le développement sur et pour les projets de Mozilla).</span></span></li> + <li><a class="external external-icon" href="http://www.joshmatthews.net/bugsahoy/" title="http://www.joshmatthews.net/bugsahoy/">Mentored bugs</a> <span lang="fr"><span title="Mentored bugs have a mentor who commits to helping you every step of the way."> ont un mentor qui s'engage à vous aider à chaque étape dans votre parcour. </span><span title="Generally, there should be enough information in the bug to get started.">En règle générale, il devrait y avoir suffisamment d'informations dans le bug pour commencer. </span><span title="Whenever you need help, contact the mentor over IRC, in the bug itself, or by email.">Chaque fois que vous avez besoin d'aide, contactez le mentor sur Matrix, dans le bug lui-même, ou par courriel. </span><span title="When you've completed the bug, they will help you get your code into the tree. + ">Lorsque vous avez terminé le bug, ils vous aideront à obtenir votre code dans l'arbre.</span></span></li> + <li><span lang="fr"><span title="When you've completed the bug, they will help you get your code into the tree. + "> </span></span><a class="link-https" href="https://bugzil.la/sw:%22[good%20first%20bug]%22" title='https://bugzil.la/sw:"[good first bug]"'>"Good" first bugs</a><sup> (page en Anglais)</sup> <span lang="fr"><span title='"Good" first bugs may be a little stale, but at some point in their lives we considered that they would be a good first step for newcomers to Mozilla.'> peuvent être un peu fade, mais à un certain moment de leur vie, nous considéré qu'ils seraient une bonne première étape pour les nouveaux arrivants à Mozilla. </span><span title='We are in the process of migrating these bugs to mentored bugs, but more recent "good first bugs" may be good starting points if there are no appropriate mentored bugs. + '>Nous sommes dans le processus de migration de ces bugs à </span></span>"mentored bugs<span lang="fr"><span title='We are in the process of migrating these bugs to mentored bugs, but more recent "good first bugs" may be good starting points if there are no appropriate mentored bugs. + '>", mais les plus récents "</span></span>good first bugs"<span lang="fr"><span title='We are in the process of migrating these bugs to mentored bugs, but more recent "good first bugs" may be good starting points if there are no appropriate mentored bugs. + '> peuvent être de bons points de départ si il n'y a pas de </span></span>"mentored bugs<span lang="fr"><span title='We are in the process of migrating these bugs to mentored bugs, but more recent "good first bugs" may be good starting points if there are no appropriate mentored bugs. + '>" appropriées.</span></span></li> + <li><span lang="fr"><span title='We are in the process of migrating these bugs to mentored bugs, but more recent "good first bugs" may be good starting points if there are no appropriate mentored bugs. + '> </span><span title="How to submit a patch (information about how to create a patch file and get it submitted into the source code)."><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/How_to_Submit_a_Patch">Comment soumettre un patch</a> (informations sur la façon de créer un fichier de patch et le faire valoir dans le code source).</span></span></li> +</ul> + +<p><span id="result_box" lang="fr"><span class="hps">Vous pouvez également</span> <span class="hps">poser vos questions</span> <span class="hps">sur "ou</span> <span class="hps">commencer "</span></span> {{IRCLink("introduction")}}, <span lang="fr"><span class="hps">et</span> <span class="hps">des questions</span> <span class="hps">de développement</span> <span class="hps">de Firefox ici </span></span>{{IRCLink("developers")}}<span lang="fr"><span>.</span></span></p> diff --git a/files/fr/mozilla/developer_guide/vous_venez_juste_de_compiler_firefox/index.html b/files/fr/mozilla/developer_guide/vous_venez_juste_de_compiler_firefox/index.html new file mode 100644 index 0000000000..31e260de0a --- /dev/null +++ b/files/fr/mozilla/developer_guide/vous_venez_juste_de_compiler_firefox/index.html @@ -0,0 +1,10 @@ +--- +title: Vous venez juste de compiler Firefox +slug: Mozilla/Developer_guide/Vous_venez_juste_de_compiler_Firefox +translation_of: Mozilla/Developer_guide/So_you_just_built_Firefox +--- +<p>Un lien vers cette page sera affiché après que vous ayez compilé Firefox, avec succès. Elle contient des informations sur les étapes à suivre, avec des liens pour lancer les tests, packager votre executable, etc. Pour le contenu, essayez d'être bref, et d'afficher des liens vers les pages que vous pensez utiles. Votre audience est composée de personnes qui viennent de compiler Firefox, pour la première fois.</p> +<p>Voici quelques liens qui pourraient vous servir :</p> +<p><a href="/en/Running_automated_tests" title="Running automated tests">Lancer les tests</a></p> +<p><a href="/En/Debugging" title="Debugging">Debugger</a></p> +<p><a href="/en/Bug_writing_guidelines" title="Bug writing guidelines">Rapporter un bug</a></p> diff --git a/files/fr/mozilla/enregistrement_chrome/index.html b/files/fr/mozilla/enregistrement_chrome/index.html new file mode 100644 index 0000000000..fdbe05fa9b --- /dev/null +++ b/files/fr/mozilla/enregistrement_chrome/index.html @@ -0,0 +1,168 @@ +--- +title: Enregistrement chrome +slug: Mozilla/Enregistrement_chrome +tags: + - API_du_toolkit +translation_of: Mozilla/Chrome_Registration +--- +<p> </p> + +<h3 id="D.C3.A9finition_du_chrome" name="D.C3.A9finition_du_chrome">Définition du chrome</h3> + +<p>Le <a href="/fr/Chrome" title="fr/Chrome">chrome</a> est l'ensemble des éléments de l'interface utilisateur d'une application qui sont situés en dehors de la zone de contenu d'une fenêtre. Les barres d'outils, les barres de menus, les barres de progression, et les titres de fenêtres sont tous des exemples d'éléments qui font habituellement partie du chrome.</p> + +<h3 id="Fournisseurs_de_chrome" name="Fournisseurs_de_chrome">Fournisseurs de chrome</h3> + +<p>Ce qui fournit le chrome pour un type de fenêtre donnée (par exemple pour la fenêtre du navigateur) est appelé un fournisseur de chrome (Chrome Provider). Les fournisseurs collaborent pour fournir un jeu complet de chrome pour une fenêtre particulière, depuis les images des boutons de la barre d'outils jusqu'aux fichiers décrivant le texte, le contenu et l'apparence de la fenêtre elle-même.</p> + +<p>Il y trois types basiques de fournisseurs de chrome :</p> + +<h4 id="content" name="content">content</h4> + +<p>Le fichier principal pour la description d'une fenêtre provient du fournisseur « <code>content</code> », et il peut s'agir de n'importe quel type de fichier que Mozilla peut afficher. Il s'agit généralement de fichiers XUL, puisque XUL est conçu pour décrire le contenu de fenêtres et de boîtes de dialogue. Les fichiers JavaScript définissant l'interface utilisateur font également partie des paquetages content, ainsi que la plupart des fichiers de liaisons XBL.</p> + +<h4 id="locale" name="locale">locale</h4> + +<p>Les applications localisables (disponibles en plusieurs langues) ont leurs informations de localisation dans des fournisseurs « <code>locale</code> ». Cela permet aux traducteurs de fournir un paquetage différent pour traduire toute une application sans toucher au reste du code source. Les deux principaux types de fichiers de localisation sont les fichiers <em>DTD</em> et les fichiers <em>properties</em> de style Java.</p> + +<h4 id="skin" name="skin">skin</h4> + +<p>Un fournisseur « <code>skin</code> » est responsable de la fourniture complète des fichiers décrivant l'apparence visuelle du chrome. Typiquement, un thème graphique fournit des fichiers CSS et des images.</p> + +<h3 id="Le_registre_chrome" name="Le_registre_chrome">Le registre chrome</h3> + +<p>L'environnement d'exécution Gecko s'occupe d'un service appelé le registre chrome fournissant une cartographie complète permettant de lier les noms de paquetages chrome et leurs emplacements physiques sur le disque.</p> + +<p>Le registre chrome est configurable et persistant, un utilisateur peut donc installer des fournisseurs de chrome différents et sélectionner un thème ou une langue préférée. Tout ceci est accompli au travers d'xpinstall et du gestionnaire d'extensions.</p> + +<p>Afin d'informer le registre chrome de la présence d'un nouveau chrome, un texte de présentation appelé <code>manifest</code> est utilisé : il s'agit du fichier <code>chrome.manifest</code> à la racine d'une extension ou d'un thème, ou d'une application XULRunner.</p> + +<p>Ces fichiers sont de simples fichiers textes présentés ligne par ligne. Chaque ligne est interprétée individuellement. Si la ligne peut être interprétée, le registre chrome réalise l'action identifiée par cette ligne, autrement, le registre chrome ignorera cette ligne (et affichera un message d'alerte dans la console d'erreurs d'exécution).</p> + +<pre class="eval">locale nomdupaquetage nomlocale chemin/vers/fichiers +skin nomdupaquetage nomskin chemin/vers/fichiers +</pre> + +<h3 id="Instructions_du_fichier_manifest" name="Instructions_du_fichier_manifest">Instructions du fichier manifest</h3> + +<h4 id="Commentaires" name="Commentaires">Commentaires</h4> + +<p>Une ligne est un commentaire si elle commence par le caractère « <code>#</code>» ; tous les autres caractères sur la ligne seront ignorés.</p> + +<pre class="eval"># cette ligne est un commentaire - vous pouvez mettre ce que vous voulez ici +</pre> + +<h4 id="content_2" name="content_2">content</h4> + +<p>Un paquetage de type content est enregistré par la ligne :</p> + +<pre class="eval">content <em>nomdupaquetage</em> <em>uri/vers/fichiers/</em> <em>[drapeaux]</em> +</pre> + +<p>Ceci va enregistrer un emplacement à utiliser lors de la résolution de l'URI <code>chrome://<em>nomdupaquetage</em>/content/...</code>. L'URI peut être absolue ou relative à l'emplacement du fichier manifeste. Notez qu'elle doit se terminer par une barre oblique « <code>/</code> ».</p> + +<h4 id="locale_2" name="locale_2">locale</h4> + +<p>Un paquetage de type locale est enregistré par la ligne :</p> + +<pre class="eval">locale <em>nomdupaquetage</em> <em>nomlocale</em> <em>uri/vers/fichiers/</em> <em>[drapeaux]</em> +</pre> + +<p>Ceci va enregistrer un paquetage locale lors de la résolution de l'URI <code>chrome://<em>nomdupaquetage</em>/locale/...</code> . La chaîne <em>nomlocale</em> est habituellement un identifiant de langue comme « en » ou de langue spécifique à un pays comme « en-US ». Si plus d'une localisation est enregistrée pour un paquetage, le registre chrome sélectionnera la plus appropriée en fonction des préférences de l'utilisateur.</p> + +<h4 id="skin_2" name="skin_2">skin</h4> + +<p>Un paquetage de thème est enregistré par la ligne :</p> + +<pre class="eval">skin <em>nomdupaquetage</em> <em>nomskin</em> <em>uri/vers/fichiers/</em> <em>[drapeaux]</em> +</pre> + +<p>Ceci va enregistrer un paquetage de thème lors de la résolution de l'URI <code><a class="external" rel="freelink">chrome://nomdupaquetage/skin/</a>...</code> . La chaîne <em>nomskin</em> est une chaîne opaque identifiant le thème installé. Si plus d'un thème est enregistré pour un paquetage, le registre chrome sélectionnera le plus approprié en fonction des préférences de l'utilisateur.</p> + +<h4 id="style" name="style">style</h4> + +<p>Les overlays de style (CSS personnalisée qui sera appliquée à une page chrome) sont enregistrés avec la syntaxe suivante :</p> + +<pre class="eval">style chrome://<em>URI-vers-style</em> chrome://<em>stylesheet-URI</em> <em>[drapeaux]</em> +</pre> + +<h4 id="override" name="override">override</h4> + +<p>Dans certains cas, une extension ou une application embarquant le moteur peut avoir envie de remplacer un fichier chrome fourni par l'application ou par XULRunner. Pour autoriser ce remplacement, le manifeste d'enregistrement chrome doit contenir des instructions « override » :</p> + +<pre class="eval">override chrome://<em>paquetage</em>/<em>type</em>/<em>uri-originelle.qqc</em> <em>nouvelle-URI-résolue</em> <em>[drapeaux]</em> +</pre> + +<p>Note : les overrides ne sont pas récursifs (donc remplacer <a class="external" rel="freelink">chrome://foo/content/bar/</a> par <a class="external" rel="freelink">file:///home/john/blah/</a> ne fera généralement pas ce que vous désirez ou vous attendez à voir).</p> + +<div class="note"> +<p>Un bogue est actuellement présent dans les versions de Gecko antérieures à 1.8.0.13 et 1.8.1.5, ainsi que dans des compilations plus anciennes, où l'utilisation d'une URL relative pour le paramètre <em>nouvelle-URI-résolue</em> ne fonctionnera pas. Il est nécessaire de fournir une URL complètement qualifiée (c'est-à-dire qui peut être résolue n'importe où, pas uniquement dans le répertoire dans lequel le manifeste chrome se trouve). Étant donné que le développeur d'extension ou d'application est incapable de prédire ce que sera le chemin vers un tel fichier, il est actuellement uniquement possible d'utiliser cette directive avec une autre URL chrome:// comme paramètre <em>nouvelle-URI-résolue</em>. Voir le {{ Bug(323455) }}.</p> +</div> + +<h3 id="Drapeaux_de_fichiers_manifest" name="Drapeaux_de_fichiers_manifest">Drapeaux de fichiers manifest</h3> + +<p>Dans les fichiers manifest, plusieurs drapeaux séparés par des virgules peuvent être ajoutés à la fin des lignes d'enregistrement. Ces drapeaux indiquent des attributs spéciaux du chrome dans ce paquetage ou limite les conditions d'utilisation de la ligne.</p> + +<h4 id="application" name="application">application</h4> + +<p>Des extensions peuvent s'installer dans plusieurs applications différentes. Certaines lignes d'enregistrement chrome peuvent toutefois être réservées à une application particulière. Le drapeau</p> + +<pre class="eval">application=<em>app-ID</em> +</pre> + +<p>indique que l'instruction ne doit être appliquée que si l'extension est installée dans une application ayant pour identifiant <em>app-ID</em>. Plusieurs drapeaux <em>application</em> peuvent être fournis sur une même ligne, auquel cas elle sera appliquée si n'importe lequel d'entre-eux correspond.</p> + +<h4 id="appversion" name="appversion">appversion</h4> + +<p>Des extensions peuvent s'installer dans plusieurs versions différentes d'une application. Il peut y avoir des lignes d'enregistrements chrome qui ne s'appliquent qu'à une version particulière de l'application. Le drapeau</p> + +<pre class="eval">appversion=<em>version</em> +appversion<<em>version</em> +appversion<=<em>version</em> +appversion><em>version</em> +appversion>=<em>version</em> +</pre> + +<p>indique que l'instruction ne doit s'appliquer que si l'extension est installée dans la version de l'application indiquée. Plusieurs drapeaux <code>appversion</code> peuvent figurer sur la même ligne, auquel cas la ligne sera appliquée si n'importe lequel d'entre-eux correspond. La chaîne de version doit se conformer au <a href="/fr/Format_de_version_du_toolkit" title="fr/Format_de_version_du_toolkit">Format de version du toolkit</a>.</p> + +<h4 id="platform_.28paquetages_propres_.C3.A0_la_plateforme.29" name="platform_.28paquetages_propres_.C3.A0_la_plateforme.29">platform (paquetages propres à la plateforme)</h4> + +<p>Certains paquetages sont marqués à l'aide d'un drapeau particulier indiquant qu'ils sont propres à une plateforme. Certaines parties de content, skin ou locale peuvent être différents selon la plateforme sur laquelle l'application est exécutée. Ces paquetages contiennent trois jeux de fichiers différents, pour Windows/OS2, Macintosh et les plateformes de type Unix. Par exemple, l'ordre des boutons « OK » et « Annuler » dans un dialogue n'est pas le même d'une plateforme à l'autre, de même que le nom de certains éléments.</p> + +<p>L'indicateur « platform » n'est pris en compte que dans le cas d'un enregistrement content, il n'est pas reconnu dans le cas d'un enregistrement locale ou string. Cependant, il s'applique aux parties content, locale et skin lorsque spécifié.</p> + +<p>Pour indiquer qu'un paquetage est propre à une plateforme, ajoutez l'indicateur « platform » après le chemin sur la ligne <code>content</code>, par exemple :</p> + +<pre class="eval">content global-platform jar:toolkit.jar!/toolkit/content/global-platform/ platform +</pre> + +<p>Une fois ceci spécifié dans votre fichier manifest, assurez-vous ensuite que, sous le répertoire global-platform, les sous-répertoires <code>win</code> (Windows/OS2), <code>mac</code> (OS9/OSX), ou <code>unix</code> (tous les autres cas) sont présents. Tout ce qui se trouve en dehors de ces sous-répertoires sera ignoré.</p> + +<h4 id="xpcnativewrappers" name="xpcnativewrappers">xpcnativewrappers</h4> + +<p>Les paquetages chrome peuvent décider s'ils utilisent ou non le mécanisme de sécurité XPCNativeWrapper pour protéger leur code contre du contenu malveillant auquel ils pourraient eccéder. Consultez <a href="/fr/Accès_sécurisé_au_contenu_DOM_depuis_le_chrome" title="fr/Accès_sécurisé_au_contenu_DOM_depuis_le_chrome">Accès sécurisé au contenu DOM depuis le chrome</a> pour plus de détails.</p> + +<p>Dans les versions alpha de Firefox 1.5 alpha (les alphas Deer Park), ce drapeau est *désactivé* par défaut, et doit être activé explicitement en spécifiant <code>xpcnativewrappers=yes</code>.</p> + +<p>À partir de la première version beta de Firefox 1.5, ce drapeau est activé par défaut, et les extensions qui ont besoin d'accès non sécurisés aux objets du contenu devront spécifier explicitement <code>xpcnativewrappers=no</code>.</p> + +<p>Le drapeau xpcnativewrappers ne s'applique qu'au paquetages de type content : il n'est pas reconnu par les enregistrements locale ou skin.</p> + +<h3 id="Exemple_de_fichier_manifest_chrome" name="Exemple_de_fichier_manifest_chrome">Exemple de fichier manifest chrome</h3> + +<pre class="eval">content necko jar:comm.jar!/content/necko/ xpcnativewrappers=yes +locale necko fr jar:fr.jar!/locale/fr/necko/ +content xbl-marquee jar:comm.jar!/content/xbl-marquee/ +content pipnss jar:pipnss.jar!/content/pipnss/ +locale pipnss fr jar:fr.jar!/locale/fr/pipnss/ +content pippki jar:pippki.jar!/content/pippki/ xpcnativewrappers=yes +locale pippki fr jar:fr.jar!/locale/fr/pippki/ +content global-platform jar:toolkit.jar!/content/global-platform/ platform +skin global classic/1.0 jar:classic.jar!/skin/classic/global/ +override <a class="external" rel="freelink">chrome://global/content/netError.xhtml</a> jar:embedder.jar!/global/content/netError.xhtml +content inspector jar:inspector.jar!/content/inspector/ xpcnativewrappers=no +</pre> + +<h3 id="Anciens_fichiers_manifest_de_type_contents.rdf" name="Anciens_fichiers_manifest_de_type_contents.rdf">Anciens fichiers manifest de type contents.rdf</h3> + +<p>Avant que les fichiers texte de type manifest soient mis en place (avec Firefox 1.5 et la version 1.8 du toolkit), des fichiers RDF appelés « contents.rdf » étaient utilisés pour les enregistrements chrome. Ce format n'est plus recommandé, cependant la suite Mozilla (SeaMonkey) ne permet pas encore d'utiliser les fichiers texte au format manifest, et des fichiers contents.rdf sont toujours nécessaires pour les extensions qui désirent maintenir une rétrocompatibilité avec Firefox 1.0 ou la suite.</p> diff --git a/files/fr/mozilla/firefox/compiler_firefox_avec_rust/index.html b/files/fr/mozilla/firefox/compiler_firefox_avec_rust/index.html new file mode 100644 index 0000000000..b44152a57f --- /dev/null +++ b/files/fr/mozilla/firefox/compiler_firefox_avec_rust/index.html @@ -0,0 +1,38 @@ +--- +title: Compiler Firefox avec Rust +slug: Mozilla/Firefox/Compiler_Firefox_avec_Rust +tags: + - Compilation + - Gecko + - rust +translation_of: Archive/Mozilla/Firefox/Building_Firefox_with_Rust_code +--- +<div>{{FirefoxSidebar}}</div><p>En mai 2015 le <a href="http://www.rust-lang.org/">langage de programmation Rust</a> a atteint sa version stable 1.0 et diverses expérimentations comme la rédaction de parties de Gecko en Rust ont commencé. Cette page est un guide sommaire destiné aux personnes travaillant sur ce projet.</p> + +<h2 id="Ajouter_le_code_Rust">Ajouter le code Rust</h2> + +<p>Le support de base pour la compilation avec le code Rust est disponible sur la page du <a class="bz_bug_link + bz_status_RESOLVED bz_closed" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1161339" title="RESOLVED FIXED - Support rust files in moz.build SOURCES">bogue 1161339</a>. Si vous disposez de rustc dans votre variable path vous pouvez ajouter les fichiers .rs à la variable SOURCES dans moz.build, puis ajouter :</p> + +<pre>ac_add_options --enable-rust</pre> + +<p>à votre <a href="/en-US/docs/Configuring_Build_Options">mozconfig</a> et ça devrait fonctionner.</p> + +<p>La bibliothèque standard de rust utilise un thread local de stockage qui n'est pas supporté sur MacOS X 10.6. Ainsi, si vous compilez le projet depuis un Mac vous devez aussi ajouter :</p> + +<pre>ac_add_options --enable-macos-target=10.7</pre> + +<p>Vous pouvez aussi compiler une toolchain personnalisée de Rust sans la partie relative à std::thread. Pour plus de détails, regardez le <a class="bz_bug_link + bz_status_NEW " href="https://bugzilla.mozilla.org/show_bug.cgi?id=1164109" title="NEW - rust code fails to link on macosx because of thread-local storage">bogue 1164109</a>.</p> + +<p>Because of limitations of cargo and the Firefox build system, currently we build a stand-alone static lib from each rust file listed in SOURCES. You must therefore list just the top-level rust file. Everything must be a single crate, like a manual unified build. The rust compiler will search for interior modules by source file name, but <code>extern crate</code> references won't be resolved.</p> + +<p>Allez voir le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1135640">bogue 1135640</a> ('oxidation') pour un suivi global.</p> + +<h2 id="Tester_le_code_Rust">Tester le code Rust</h2> + +<p>Il existe un test unitaire simple de disponible dans le répertoire du projet. Vous pouvez l'utiliser pour savoir si Rust est activé et fonctionne avec votre configuration.</p> + +<pre>./mach gtest rust.*</pre> + +<p>Regardez si le test <strong>rust.CallFromCpp</strong> réussi ainsi que tous les autres.</p> diff --git a/files/fr/mozilla/firefox/deploiement_entreprise/index.html b/files/fr/mozilla/firefox/deploiement_entreprise/index.html new file mode 100644 index 0000000000..13913c8e06 --- /dev/null +++ b/files/fr/mozilla/firefox/deploiement_entreprise/index.html @@ -0,0 +1,145 @@ +--- +title: Déploiement de Firefox dans un environnement d'entreprise +slug: Mozilla/Firefox/deploiement_Entreprise +tags: + - Déploiement + - Entreprise + - Firefox +translation_of: Mozilla/Firefox/Enterprise_deployment_before_60 +--- +<div>{{FirefoxSidebar}}</div> + +<p>Cette page documente de pied en cap le processus de gestion de Mozilla Firefox sur des ordinateurs fonctionnant sur Windows ou macOS dans le cadre d'une entreprise. Vous pouvez envoyer vos questions par courrier électronique à la liste de diffusion du groupe de travail pour les entreprises (<em>Enterprise Working Group</em>) via <a href="https://mail.mozilla.org/listinfo/enterprise">enterprise@mozilla.org</a> (en anglais). Mieux encore, vous pouvez rejoindre les discussions en cours en vous <a href="https://mail.mozilla.org/listinfo/enterprise">inscrivant à la liste en anglais</a> ou <a href="https://mail.mozilla.org/listinfo/enterprise-fr" lang="fr">en français</a>.</p> + +<div class="note"> +<p><strong>Note :</strong> cet article couvre des versions de Firefox antérieures à Firefox 60 ESR. Pour un déploiement dans des environements d’enterprises dans Firefox 60 ou plus récent, consultez l’article <a href="https://developer.mozilla.org/docs/Mozilla/Firefox/Enterprise_deployment">Deploying Firefox in an enterprise environment</a>.</p> +</div> + +<h2 id="Choisissez_une_variante_de_Firefox">Choisissez une variante de Firefox</h2> + +<h3 id="RR_(Version_Rapide)">RR (Version Rapide)</h3> + +<p>Mozilla publie une nouvelle version majeure avec de nouvelles fonctionnalités et des corrections de bugs toutes les six semaines (et, si besoin, des mises à jour de sécurité durant cette période). Le jour où une version majeure est lancée, dans la plupart des cas (voir plus bas pour les exceptions), Mozilla arrête de fournir des correctifs de bugs pour les versions précédentes.</p> + +<p>Pour vous renseigner sur les dates de sortie des prochaines versions, vous pouvez regarder ce <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates">tableau</a> sur le wiki Mozilla.</p> + +<h3 id="ESR_(version_de_support_étendu)">ESR (version de support étendu)</h3> + +<p>Chaque septième version majeure de Firefox est déclarée version de support étendu. C<span id="result_box" lang="fr"><span class="hps">es</span> <span class="hps">versions</span> <span class="hps">reçoivent</span> <span class="hps">les </span></span> <span id="result_box" lang="fr"><span class="hps">corrections des gros bugs</span> </span><span lang="fr"><span class="hps">issus des versions mineures pendant 54</span> <span class="atn hps">semaines (</span><span>neuf</span> <span class="hps">cycles</span> <span class="hps">de six semaines</span><span>)</span><span>.</span> De plus, <span class="hps">un chevauchement</span> <span class="hps">de 12</span> <span class="atn hps">semaines (</span><span>deux</span> <span class="hps">cycles de</span> six semaines<span>)</span> <span class="hps">entre</span> <span class="hps">deux</span> <span class="hps">versions successives</span> <span class="hps">de type ESR</span><span> est effectué,</span> <span class="hps">au cours de laquelle</span> <span class="hps">les deux</span> <span class="hps">versions</span> <span class="hps">ESR</span> <span class="hps">obtiennent</span> <span class="hps">des corrections de bugs</span><span>.</span></span></p> + +<p>Les versions ESR sont les versions 10, 17, 24, 31 et 38.</p> + +<p>De nombreuses entreprises et organisations avec des environnements informatiques généralisés préfèrent utiliser des versions ESR que des versions RR car elles peuvent tester leur comptabilité sur une période de 42 semaines au lieu de la période de 6 semaines (entre chaque RR). De plus si elles ont un problème, elles disposent de 12 semaines de plus (chevauchement entre 2 versions ESR) pour trouver une solution (en plus des 6 semaines obtenues en testant la version beta).</p> + +<p>Notez que des effets indésirables peuvent se faire ressentir si vous passez d'une version RR à une version ESR antérieure. En effet, les versions RR voient parfois de nouvelles fonctionnalités non finies intégrées à leur code pour pouvoir les tester, mais désactivées par les préférences. Lors d'un retour à une version précédente, les utilisateurs gardent leurs derniers paramètres dans leur répertoire de profil. Une option peut alors être activée sans qu'elle ne soit totalement fonctionnelle sur la version ESR. Si vous souhaitez passer d'une version RR à une version ESR, vous devriez le faire lorsqu'une nouvelle version ESR voit le jour.</p> + +<h2 id="Installation">Installation</h2> + +<ol> + <li>Téléchargez la dernière version de Firefox depuis <a href="https://www.mozilla.org/en-US/firefox/all/">https://www.mozilla.org/en-US/firefox/all/</a> (RR) ou <a href="https://www.mozilla.org/en-US/firefox/organizations/all/">https://www.mozilla.org/en-US/firefox/organizations/all/</a> (ESR).</li> + <li>Installez la version sur le système d'exploitation de votre choix (L'option pour une installation silencieuse est -ms).</li> + <li>Vous pouvez aussi créer un fichier d'initialisation. Pour plus d'informations, vous pouvez visiter <a href="https://wiki.mozilla.org/Installer:Command_Line_Arguments">cette page</a> (en).</li> +</ol> + +<h2 id="Configuration">Configuration</h2> + +<ol> + <li>Trouvez le répertoire où l'exécutable est présent. Par exemple, sur Windows 7 (64 bits), le répertoire est souvent <code>C:\Program Files (x86)\Mozilla Firefox</code>; dans Mac OSX 10.8 il s'agit de <code>/Applications/Firefox.app/Contents/MacOS</code>. Les sous-répertoires mentionnés par la suite sont relatifs à ce dossier.</li> + <li>Créez un fichier javascript dans<code> defaults/pref</code> (généralement, <code>autoconfig.js</code> - d'autres noms fonctionnent, mais pour de meilleurs résultats, il faut que le nom commence par un 'a'). Le contenu de ce fichier indique à Firefox où trouver le fichier de configuration. (Pour plus d'informations : <a href="http://mike.kaply.com/2012/03/15/customizing-firefox-default-preference-files/">Customizing Firefox default preference files</a> (en)).Les trois lignes dont vous avez besoin sont : + <pre class="brush: js">// Vous devez démarrer ce fichier avec un commentaire ! +pref("general.config.filename", "mozilla.cfg"); +pref("general.config.obscure_value", 0);</pre> + </li> + <li>Créez un fichier .cfg (généralement <code>mozilla.cfg</code> — le nom peut être différent, mais il faut que ça corresponde au nom entré dans les 2 lignes précédentes) dans le répertoire du programme. <span id="result_box" lang="fr"><strong><span class="hps">Passez</span> <span class="hps">ou</span> <span class="hps">commentez la</span> </strong><span class="hps"><strong>première ligne</strong>, puis</span> <span class="hps">commencer à mettre</span> <span class="hps">vos préférences</span><span>.</span></span> Pour savoir quelles préférences mettre, rendez-vous sur la page about:config sur une copie de Firefox correctement configurée et regardez les préférences ayant pour statut "<strong>user set"</strong>, ou regardez les exemples suivants. Toute préférence peut être réglée via une des fonctions suivantes : + <dl> + <dt><strong>pref </strong></dt> + <dd>Un utilisateur peut changer une valeur, mais elle sera effacée au prochain redémarrage. Si vous mettez une préférence de cette manière, elle sera montrée comme "<strong>user set"</strong> dans about:config</dd> + <dt><strong>defaultPref</strong></dt> + <dd>pour modifier la valeur par défaut. Si un utilisateur change cette valeur, il pourra la garder entre plusieurs sessions. Les préférences peuvent être réinitialisées via la GUI ou autre méthode. Elle sera montrée avec un statut "<strong>default"</strong> dans about:config</dd> + <dt><strong>lockPref</strong></dt> + <dd>pour bloquer les préférences. Elles ne pourront pas être changées par la GUI ou via about:config. Dans la majeure partie des cas, la GUI va enlever l'option ou la griser.<span id="result_box" lang="fr"><span class="hps"> Certains éléments</span> <span class="hps">de la configuration</span> <span class="hps">nécessitent</span> un réglage via <strong><span class="hps">lockPref</span></strong><span class="hps">,</span> <span class="hps">tels que</span> <strong><span class="hps">app.update.enabled</span></strong><span> (<strong>pref</strong> ne fonctionnera pas).</span></span></dd> + <dt><span class="author-g-fer323ku83ypu55t">clearPref</span></dt> + <dd>pour rendre vierge certaines préférences. Peut s'avérer utile pour désactiver des fonctions se basant sur un numéro de version.</dd> + </dl> + </li> +</ol> + +<p>Vous pouvez visiter <a href="http://mike.kaply.com/2012/03/16/customizing-firefox-autoconfig-files/">Customizing Firefox autoconfig files</a> (en) ou <a href="http://mike.kaply.com/2012/03/20/customizing-firefox-autoconfig-files-continued/">Customizing Firefox autoconfig files continued</a> (en) pour plus d'informations. Pour désactiver des éléments de l'interface utilisateur, vous pouvez utiliser l'extension <a href="http://mike.kaply.com/cck2/">CCK2</a>.</p> + +<h3 id="Exemple_de_fichier_de_configuration">Exemple de fichier de configuration</h3> + +<p>Dans l'exemple qui suit, vous pouvez voir des exemples de références nécessitant l'utilisation de <strong>lockPref</strong>.</p> + +<pre class="brush: js"><span class="brush: js">// Désactive la mise à jour automatique +lockPref("app.update.enabled", false); +// pour être sûr que la mise à jour automatique soit désactivée +lockPref("app.update.auto", false); +lockPref("app.update.mode", 0); +lockPref("app.update.service.enabled", false); + +// Désactive la vérification de la comptabilité des extensions +clearPref("extensions.lastAppVersion"); + +// Désactive l'affichage de 'Connaître vos droits' au premier lancement +pref("browser.rights.3.shown", true); + +// Ne montre pas les nouvelles fonctionnalités à chaque mise à jour +pref("browser.startup.homepage_override.mstone","ignore"); + +// Modifie la page d'accueil +defaultPref("browser.startup.homepage", "http://home.example.com"); + +// Désactive le lecteur de pdf interne +pref("pdfjs.disabled", true); + +// Désactive le convertisseur flash vers javascript +pref("shumway.disabled", true); + +// Ne demande pas d'installer le plugin flash +pref("plugins.notifyMissingFlash", false); + +// Désactive la vérification des plugins +lockPref("plugins.hide_infobar_for_outdated_plugin", true); +clearPref("plugins.update.url"); + +// Désactive le rapport de santé +lockPref("datareporting.healthreport.service.enabled", false); + +</span>// Disable all data upload (Telemetry and FHR) +lockPref("datareporting.policy.dataSubmissionEnabled", false); +<span class="brush: js"> +// Désactive le rapport de crashs +lockPref("toolkit.crashreporter.enabled", false); +Components.classes["@mozilla.org/toolkit/crash-reporter;1"].getService(Components.interfaces.nsICrashReporter).submitReports = false;</span><em> </em> +</pre> + +<h2 id="Packaging_d'extensions">Packaging d'extensions</h2> + +<ol> + <li>Installez l'extension sur une machine de test. Regardez la page about:support sous Extensions pour trouver le GUID</li> + <li>Regardez dans le répertoire des <a href="https://support.mozilla.org/fr/kb/profils-ou-firefox-conserve-donnees-utilisateur">profils</a> (ex: <code>%APPDATA%\Mozilla\Firefox\Profiles</code> pour Win7; pour le trouver, regardez Profile Directory sur la page about:support), puis sous "Extensions" pour l'extension souhaitée. Il s'agit soit d'un fichier .xpi (correspondant à un .zip) ou un dossier avec de multiples fichiers.</li> + <li>Décidez de la façon dont vous voulez la déployer. La méthode la plus simple est de copier le .xpi ou le dossier dans le dossier <code>/distribution/extensions mais cette méthode ne fonctionne que pour les profils créés après l'ajout de l'extension.</code> De plus, si vous réinstallez firefox, le dossier sera supprimé, assurez-vous de réinstaller les extensions par la suite. Vous pouvez vous rendre sur cette page <a href="http://mike.kaply.com/2012/02/09/integrating-add-ons-into-firefox/">Integrating add-ons into Firefox</a> (en) pour trouver d'autres méthodes.</li> +</ol> + +<h2 id="Changements_au_fil_du_temps">Changements au fil du temps</h2> + +<h3 id="Changement_dans_la_structure_des_répertoires">Changement dans la structure des répertoires</h3> + +<p>La structure des répertoires intégrée au programme a changé 2 fois. Si vous lisez des descriptions sorties avant la version 21, il faut probablement prendre en compte les points suivants :</p> + +<ul> + <li>Dans la version 14, certains paramètres ont arrêté de fonctionner lorsqu'ils étaient dans un fichier du répertoire <code>defaults/pref</code>. La solution pour régler le problème était de créer un répertoire directory <code>defaults/preferences</code> et de les mettrent ici.</li> + <li>Dans la version 21, le nouveau dossier appelé <code>browser</code> fut créé. Le fichier <code>override.ini</code> et les dossiers <code>defaults/preferences</code>, <code>defaults/profile</code>, <code>extensions</code>, <code>plugins</code>, and <code>searchplugins</code> furent déplacés ici. Les plugins du répertoire <code>plugins</code> peuvent être réactivés en modifiant la préférence <code>plugins.load_appdir_plugins</code> à <strong>true</strong>.</li> +</ul> + +<p>La configuration des préférences <code>general.config.filename</code> et <code>general.config.obscure_value</code> pour AutoConfiguration peut être réalisée dans le dossier <code>defaults/pref</code>, mais le fichier de configuration doit commencer par la lettre 'a', comme par exemple <code>autoconfig.js</code>.</p> + +<p>Si l'opération venait à échouer depuis <code>defaults/pref</code> dans une des versions suivantes de Firefox, essayez avec <code>browser/defaults/preferences</code>.</p> + +<h3 id="Changement_de_répertoire_sur_Mac">Changement de répertoire sur Mac</h3> + +<p>En raison de l'approche d'Apple plus stricte en matière de signature de logiciel, depuis environ la version 35 les fichiers de configuration doivent être placés sous <code>/Applications/Firefox.app/Contents/Resources </code>(c'est là que doit aller <code>mozilla.cfg</code> et <code>autoconfig.js </code>sous <code>/Applications/Firefox.app/Contents/Resources/defaults/pref</code>).</p> + +<h3 id="Changements_dans_ESR_24.x_avec_les_fichiers_PDF_Adobe">Changements dans ESR 24.x avec les fichiers PDF Adobe</h3> + +<p>Firefox RR 19.x modifie l'outil de visionnage d'Adobe pour les fichiers .pdf afin d'utiliser l'outil interne. Ce changement est présent dans la version ESR 24.x et la préférence se modifie automatiquement lors de la mise à jour depuis ESR 17.x même si un outil de visionnage externe a été configuré. Le nom du type de fichier a aussi été modifié passant de <strong>Adobe Acrobat Document</strong> à <strong>Portable Document Format (PDF)</strong>, le rendant difficile à localier via les outils ou options. Pour désactiver cette fonctionnalité, modifiez <code>pdfjs.disabled</code> à true, comme dans le fichier d'exemple plus haut.</p> diff --git a/files/fr/mozilla/firefox/developer_edition/index.html b/files/fr/mozilla/firefox/developer_edition/index.html new file mode 100644 index 0000000000..23cf232d3b --- /dev/null +++ b/files/fr/mozilla/firefox/developer_edition/index.html @@ -0,0 +1,57 @@ +--- +title: Édition pour les développeurs +slug: Mozilla/Firefox/Developer_Edition +tags: + - Developer Edition +translation_of: Mozilla/Firefox/Developer_Edition +--- +<div>{{FirefoxSidebar}}</div><p><img alt="" src="https://mdn.mozillademos.org/files/9069/firefox-dev-ed_logo-only_1024.png" style="display: block; height: 256px; margin-left: auto; margin-right: auto; width: 256px;"></p> + +<p style="text-align: center;">Une version de Firefox adaptée sur mesure pour les développpeurs web.</p> + +<p><a href="https://www.mozilla.org/fr/firefox/developer/" style="width: 375px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Télécharger Firefox Developer Edition</a></p> + +<hr> +<div class="column-container"> +<div class="column-half"> +<h3 id="Les_dernières_fonctionnalités_de_Firefox"><strong>Les dernières fonctionnalités de Firefox</strong></h3> + +<p>L'édition de Firefox pour les développeurs remplace le canal de distribution Aurora dans le <a href="https://wiki.mozilla.org/Release_Management/Release_Process">système de release de Firefox</a>. De la même manière que pour Aurora, les nouvelles fonctionnalités seront intégrées à cette édition toutes les six semaines, une fois qu'elles auront été suffisamment stabilisées avec les versions Nightly.</p> + +<p>En utilisant l'édition développeur, vous pourrez avoir accès aux outils et aux fonctionnalités 12 semaines avant que ceux-ci ne soient disponibles sur le canal de release.</p> + +<p><a href="/en-US/Firefox/Releases/35">Découvrez les nouveautés de l'édition de Firefox pour les développeurs</a>.</p> +</div> + +<div class="column-half"> +<h3 id="Des_outils_de_développement_expérimentaux"><strong>Des outils de développement expérimentaux</strong></h3> + +<p>Certains outils expérimentaux seront intégrés pour maturer avant d'atteindre le canal de distribution release.</p> + +<p>Ainsi, l'édition développeur intègre <a href="/fr/docs/Outils/Firefox_Tools_Adapter">l'extension Valence</a>, qui permet de connecter les <a href="/fr/docs/Outils">outils de développement Firefox</a> à d'autres navigateurs tels que Chrome pour Android ou Safari pour iOS.</p> +</div> +</div> + +<div class="column-container"> +<div class="column-half"> +<h3 id="Un_profil_à_part_entière"><strong>Un profil à part entière</strong></h3> + +<p>L'édition de Firefox pour les développeurs utilise un profil séparé de celui des autres versions de Firefox installées sur le même ordinateur. Cela signifie que vous pouvez facilement utiliser une version développeur en même temps qu'une version beta.</p> +</div> + +<div class="column-half"> +<h3 id="Une_version_paramétrée_pour_les_développeurs_web"><strong>Une version paramétrée pour les développeurs web</strong></h3> + +<p>Les préférences utiles au développement web sont activées et paramétrées. Le débogage du chrome et le débogage à distance sont par exemple activés par défaut.</p> +</div> +</div> + +<div class="column-container"> +<div class="column-half"> +<h3 id="Un_thème_distinct"><strong>Un thème distinct</strong></h3> + +<p>Ce thème permet d'accéder plus rapidement aux outils de développement.</p> +</div> +</div> + +<p> </p> diff --git a/files/fr/mozilla/firefox/developer_edition/reverting/index.html b/files/fr/mozilla/firefox/developer_edition/reverting/index.html new file mode 100644 index 0000000000..231da0448a --- /dev/null +++ b/files/fr/mozilla/firefox/developer_edition/reverting/index.html @@ -0,0 +1,23 @@ +--- +title: Supprimer les fonctionnalités spéciales +slug: Mozilla/Firefox/Developer_Edition/Reverting +translation_of: Mozilla/Firefox/Developer_Edition/Reverting +--- +<div>{{FirefoxSidebar}}</div><h2 id="Changer_le_thème_de_la_Developer_Edition">Changer le thème de la <em>Developer Edition</em></h2> + +<p>Si vous souhaitez utiliser la Developer Edition, mais que vous préférez utiliser le thème <em>Australis</em> utilisé dans Firefox et Firefox Beta, vous pouvez utiliser le thème normal de Firefox. Ouvrez le panneau « Personnaliser » et cliquez sur le bouton « Utiliser le thème Firefox Developer Edition ».</p> + +<p>{{EmbedYouTube("oiHt8T1Liyk")}}</p> + +<p>Vous pouvez également tapper “about:addons” dans la barre d'URL, sélectionner « Apparence » et changer le thème depuis cet endroit.</p> + +<h2 id="Revenir_à_Firefox_Aurora">Revenir à Firefox Aurora</h2> + +<p>Si vous souhaitez toutes les fonctionnalités pre-Beta dans Firefox Developer Edition, mais que vous ne souhaitez aucun autre changement, vous pouvez revenir à l'ancien Firefox Aurora. Cette opération restaurera votre profil et vos données de session d'avant la mise à jour. C'est un processus en deux étapes, qu'il faut suivre dans cet ordre :</p> + +<ol> + <li>Ouvrez la page Préférences de la Developer Edition, et décochez la case "Autoriser Firefox Developer Edition et Firefox à s'exécuter en parallèle". Il vous sera demandé de redémarrer le navigateur.</li> + <li>Après avoir redémarré, vous pouvez restaurer le thème de la <em>Developer Edition</em> en suivant les instructions de la section « Changer le thème de la <em>Developper Edition</em> » ci-dessus.</li> +</ol> + +<p>{{EmbedYouTube("8rEJn_hATE8")}}</p> diff --git a/files/fr/mozilla/firefox/experimental_features/index.html b/files/fr/mozilla/firefox/experimental_features/index.html new file mode 100644 index 0000000000..42a40b7906 --- /dev/null +++ b/files/fr/mozilla/firefox/experimental_features/index.html @@ -0,0 +1,695 @@ +--- +title: Fonctionnalités expérimentales dans Firefox +slug: Mozilla/Firefox/Experimental_features +tags: + - Experimental + - Firefox + - Preferences + - fonctionnalités +translation_of: Mozilla/Firefox/Experimental_features +--- +<div>{{FirefoxSidebar}}</div> + +<p class="summary">Afin de tester les nouvelles fonctionnalités, Mozilla publie chaque jour une version test du navigateur Firefox , <a href="https://nightly.mozilla.org/">Firefox Nightly</a>. Les fonctionnalités expérimentales, par exemple l'implantation de standards de plateforme Web, sont disponibles. Cette page liste les procédures qui sont données par les versions Nightly de Firefox avec les informations pour les activer si nécessaire. Vous pouvez tester vos sites Web et les applications avant que ces procédures soient mises en mise à jour en ligne et vous assurer ainsi que tout fonctionnera avec le potentiel de la dernière technologie Web.</p> + +<p>Pour tester les nouveautés, téléchargez <a href="https://nightly.mozilla.org/">Firefox Nightly</a> ou <a href="https://www.mozilla.org/en-US/firefox/developer/">Firefox Developer Edition</a>.</p> + +<h2 id="HTML">HTML</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Fonctionnalités</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Nom de la préférence</th> + </tr> + <tr> + <td><strong>{{HTMLElement("dialog")}}</strong><br> + Elément de dialogue incluant les DOM APIs pour intéragir avec. L'implementation de modules de dialogues et l'accessibilité restent manquants.</td> + <td>Activé<br> + <sub>(disponible depuis 53)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 53)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 53)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 53)</sub></td> + <td> + <p><code>dom.dialog_element.enabled</code></p> + </td> + </tr> + <tr> + <td> + <p><strong>Attribut global : inputmode</strong></p> + + <p>Notre implémentation de cet attribut a été mis à jour conformément à la spécification WHATWG ({{bug(1509527)}}), cependant il nous reste des modifications à faire pour le rendre disponible à l'édition (contenteditable). Plus de détail : {{bug(1205133)}}</p> + </td> + <td> + <p>Activé<br> + <sub>(disponible depuis 75)</sub></p> + </td> + <td> + <p>Désactivé<br> + <sub>(disponible depuis 75)</sub></p> + </td> + <td> + <p>Désactivé<br> + <sub>(disponible depuis 75)</sub></p> + </td> + <td> + <p>Désactivé<br> + <sub>(disponible depuis 75)</sub></p> + </td> + <td><code>dom.forms.inputmode</code></td> + </tr> + <tr> + <td> + <p><strong><link rel="preload"></strong></p> + + <p>L'attribut {{htmlattrxref ("rel", "link")}} de l'élément {{HTMLElement ("link")}} est destiné à améliorer les performances en vous permettant de télécharger des ressources plus tôt dans le cycle de vie de la page, en vous assurant qu'elles sont disponibles plus tôt et sont moins susceptibles de bloquer le rendu de la page. Lisez le contenu de <a href="https://wiki.developer.mozilla.org/en-US/docs/Web/HTML/Preloading_content">préchargement avec rel = "preload"</a> pour plus de détails. Plus de détails sur l'état de cette fonctionnalité : {{bug (1639607)}}.</p> + </td> + <td> + <p>Activé<br> + <sub>(disponible depuis 78)</sub></p> + </td> + <td> + <p>Activé<br> + <sub>(disponible depuis 78)</sub></p> + </td> + <td> + <p>Activé<br> + <sub>(disponible depuis 78)</sub></p> + </td> + <td> + <p>Désactivé<br> + <sub>(disponible depuis 78)</sub></p> + </td> + <td><code>network.preload</code></td> + </tr> + </thead> +</table> + +<h2 id="CSS">CSS</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Fonctionnalité</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Préférence</th> + </tr> + </thead> + <tbody> + <tr> + <td><strong>Sous-réseaux</strong></td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td><code>layout.css.grid-template-subgrid-value.enabled</code></td> + </tr> + <tr> + <td><strong>Afficher les caractères de contrôle errants en CSS sous forme de cases hexadécimales.</strong><br> + Cette fonction apporte les caractères de contrôle (Unicode category Cc) à part <em>tab</em> (<code>U+0009</code>), <em>line feed</em> (<code>U+000A</code>), <em>form feed</em> (<code>U+000C</code>), et <em>carriage return</em> (<code>U+000D</code>) comme une case hexadécimale lorsqu'ils ne sont pas attendus.</td> + <td>43</td> + <td>43</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1329613">Désactivé</a></td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1329613">Désactivé</a></td> + <td><code>layout.css.control-characters.enabled</code> or <code>layout.css.control-characters.visible</code></td> + </tr> + <tr> + <td><strong>Masques CSS positionnés</strong><br> + A subset of CSS Masks that includes <a href="/en-US/docs/Web/CSS/CSS_Masks">longhand properties of CSS Masks</a>, as well as a change in the shorthand property</td> + <td>51</td> + <td>51</td> + <td>53</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1251161">Désactivé</a></td> + <td>Controllé par un flag de (MOZ_ENABLE_MASK_AS_SHORTHAND).</td> + </tr> + <tr> + <td> + <p><strong>La propriété de</strong> <strong><code>paramètres de variation de poilce</code></strong><br> + The {{cssxref("font-variation-settings")}} provides low-level control over OpenType or TrueType font typographic features, by specifying the four letter axis names of the features you want to vary, along with their variation values.</p> + </td> + <td>Désactivé<br> + <sub>(disponible depuis 53)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 53)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 53)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 53)</sub></td> + <td> + <p><code>layout.css.font-variations.enabled</code><br> + Functions only in Mac OS Sierra (and later).<br> + <br> + For the downloadable fonts on axis-praxis, you also need <code>gfx.downloadable_fonts.keep_variation_tables</code> (in Firefox 54 and later)</p> + </td> + </tr> + <tr> + <td><strong>La propriété CSS de <code>touch-action</code></strong><br> + La propriété CSS {{cssxref("touch-action")}} fait partie de la spécification {{SpecName("Pointer Events")}} et vous permet de spécifier de quelle façon un utilisateur peut manipuler un objet de façon tactile.</td> + <td>50</td> + <td>—</td> + <td>—</td> + <td>—</td> + <td><code>layout.css.touch_action.enabled</code></td> + </tr> + <tr id="shape-outside"> + <td> + <p><strong>The <code>shape-outside</code> CSS property</strong><br> + The {{cssxref("shape-outside")}} CSS property is part of the {{SpecName("CSS Shapes")}} specification and allows you to specify a float area causing inline contents to wrap around a shape.</p> + + <p>Firefox currently implements the <code><shape-box></code> values ({{bug(1309467)}}) as well as the <code>circle()</code> ({{bug(1311244)}}), <code>ellipse()</code> ({{bug(1326406)}}), and <code>polygon()</code> ({{bug(1326409)}}) functions. {{cssxref("shape-outside")}} is animatable since Firefox 57 ({{bug(1289049)}}).</p> + </td> + <td>Désactivé<br> + <sub>(disponible depuis 53)</sub></td> + <td>—</td> + <td>—</td> + <td>—</td> + <td><code>layout.css.shape-outside.enabled</code></td> + </tr> + <tr> + <td><strong>The <code>contain</code> CSS property</strong><br> + The {{cssxref("contain")}} CSS property is part of the {{SpecName("CSS Containment")}} specification and allows you to indicate that an element and its contents are independent of the rest of the document tree, allowing {{Glossary("User agent", "user agents")}} to optimize the rendering of a page.</td> + <td>Désactivé<br> + <sub>(disponible depuis 45)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 45)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 45)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 45)</sub></td> + <td><code>layout.css.contain.enabled</code></td> + </tr> + <tr id="column-span"> + <td> + <p><strong>The <code>column-span</code> CSS property</strong><br> + The {{cssxref("column-span")}} CSS property is part of the {{SpecName("CSS3 Multicol")}} specification and allows you to specify how many columns an element spans across.</p> + + <p>Firefox currently only parses the property ({{bug(1339298)}}), it's not actually implemented yet ({{bug(616436)}}).</p> + </td> + <td>Désactivé<br> + <sub>(reconnu depuis 55, mais pas encore implémenté)</sub></td> + <td>—</td> + <td>—</td> + <td>—</td> + <td><code>layout.css.column-span.enabled</code></td> + </tr> + <tr> + <td><strong>The <code>frames()</code> timing function</strong><br> + See <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/single-transition-timing-function#The_frames()_class_of_timing-functions">The frames() class of timing-functions</a> for more details.</td> + <td>Activé</td> + <td><sub>N/A</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 55)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis55)</sub></td> + <td>Non</td> + </tr> + </tbody> +</table> + +<h2 id="JavaScript">JavaScript</h2> + +<p id="ECMAScript_2016">Voir aussi <a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_Next_support_in_Mozilla">ECMAScript Next support</a> pour l'implémentation de fonctionnalités du ECMA Script 2016 et postérieur, qui ne sont pas expérimentales et ainsi disponibles sans préférences dans Firefox Release.</p> + +<p>Désactivé</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Focntionnalité</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Préférence</th> + </tr> + </thead> + <tbody> + <tr> + <td><strong>Ajouts à l'objet <code>ArrayBuffer</code> </strong><br> + Ajoute {{jsxref("ArrayBuffer.transfer()")}} qui renvoie un nouvel <code>ArrayBuffer</code> dont les données ont été récupérées de <code>oldBuffer</code>(<a href="https://gist.github.com/lukewagner/2735af7eea411e18cf20">spec</a>).</td> + <td>36</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Non</td> + </tr> + <tr> + <td><strong>Objets TypedObject</strong> (<a href="https://github.com/dslomov-chromium/typed-objects-es7">spec</a>)</td> + <td>Activé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Non</td> + </tr> + <tr> + <td><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/SIMD">SIMD</a> (<a href="https://github.com/johnmccutchan/ecmascript_simd">specification and polyfill</a>)</td> + <td>Activé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Non</td> + </tr> + <tr> + <td><strong>Modules ECMAScript</strong><br> + Allows you to use native ECMAScript modules, for example defining modules with <code><script type="module"></code>, defining fallback scripts with <code><script nomodule></code>, and <a href="/en-US/docs/Web/JavaScript/Reference/Statements/import">importing</a> code features that have been <a href="/en-US/docs/Web/JavaScript/Reference/Statements/export">exported</a> from modules.</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td><code>dom.moduleScripts.enabled</code></td> + </tr> + </tbody> +</table> + +<h2 id="APIs">APIs</h2> + +<h3 id="Canvas_WebGL">Canvas & WebGL</h3> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Fonctionnalité</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Préfrence</th> + </tr> + </thead> + <tbody> + <tr> + <td><strong><code>WEBGL_debug_renderer_info</code> extension</strong><br> + The {{domxref("WEBGL_debug_renderer_info")}} extension allows you to transmit information useful to help debugging problems to the server.</td> + <td>42</td> + <td>42</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=742798">Désactivé</a></td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=742798">Désactivé</a></td> + <td><code>webgl.enable-debug-renderer-info</code></td> + </tr> + <tr> + <td><strong>OffscreenCanvas</strong><br> + The {{domxref("OffscreenCanvas")}} interface provides a canvas that can be rendered off screen. It is available in both the window and <a href="/en-US/docs/Web/API/Web_Workers_API">worker</a> contexts.</td> + <td>Désactivé<br> + <sub>(disponible depuis 44)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 44)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 44)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 44)</sub></td> + <td><code>gfx.offscreencanvas.enabled</code></td> + </tr> + <tr> + <td><strong><a href="/en-US/docs/Web/API/Canvas_API/Tutorial/Hit_regions_and_accessibility">Hit regions</a></strong><br> + Whether the mouse coordinates are within a particular area on the canvas is a common problem to solve. The hit region API allows you define an area of your canvas and provides another possibility to expose interactive content on a canvas to accessibility tools.</td> + <td>Désactivé<br> + <sub>(disponible depuis 30)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 30)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 30)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 30)</sub></td> + <td><code>canvas.hitregions.enabled</code></td> + </tr> + <tr> + <td><strong><a href="/en-US/docs/Web/API/Streams_API">Streams API</a></strong><br> + Allows JavaScript to programmatically access streams of data received over the network and process them as desired by the developer.</td> + <td>Désactivé<br> + <sub>(disponible depuis 57)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 57)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 57)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 57)</sub></td> + <td><code>dom.streams.enabled</code> and <code>javascript.options.streams</code></td> + </tr> + </tbody> +</table> + +<h3 id="DOM">DOM</h3> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Fonctionnalité</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Préférence</th> + </tr> + </thead> + <tbody> + <tr> + <td><strong>WebVR API 1.1 on Mac</strong><br> + The <a href="/en-US/docs/Web/API/WebVR_API">WebVR API</a> allows you to control and use virtual reality devices.</td> + <td>Activé</td> + <td>Activé</td> + <td>Activé</td> + <td>Désactivé</td> + <td><code>dom.vr.enabled</code></td> + </tr> + <tr> + <td><strong>Gamepad extensions</strong><br> + <a href="/en-US/docs/Web/API/Gamepad_API#Experimental_Gamepad_extensions">The Gamepad Extensions</a> provide access to additional functionality such as pose information in the case of WebVR controllers, and haptic actuator control (e.g. controller vibration hardware).</td> + <td>Activé</td> + <td>Activé</td> + <td>Activé</td> + <td>Désactivé</td> + <td><code>dom.gamepad-extensions.enabled</code></td> + </tr> + <tr> + <td><strong>FlyWeb</strong><br> + <a href="https://flyweb.github.io/">FlyWeb</a> is a project at Mozilla focused on bringing a new set of APIs to the browser for advertising and discovering local-area web servers.</td> + <td>51</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td><code>dom.flyweb.enabled</code></td> + </tr> + <tr> + <td><code><strong>HTMLMediaElement.seekToNextFrame()</strong></code><br> + Part of an experimentation process around support non-real-time access to media for tasks including filtering, editing, and so forth, the {{domxref("HTMLMediaElement.seekToNextFrame()")}} advances the the current play position to the next frame in the media.</td> + <td>49<br> + <sub>(Mise à jour fondamentale dans la version 50)</sub></td> + <td>49<br> + <sub>(Mise à jour fondamentale dans la version 50)</sub></td> + <td>Désactivé</td> + <td>Désactivé</td> + <td><code>media.seekToNextFrame.enabled</code></td> + </tr> + <tr> + <td><strong><code>GeometryUtils.getBoxQuads()</code></strong> ({{bug(917755)}})</td> + <td>31</td> + <td>31</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">Désactivé</a></td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">Désactivé</a></td> + <td><code>layout.css.getBoxQuads.enabled</code></td> + </tr> + <tr> + <td><strong><code>GeometryUtils.convertPointFromNode()</code></strong>,<br> + <strong><code>GeometryUtils.RectFromNode()</code></strong>, and<br> + <code><strong>GeometryUtils.convertQuadFromNode()</strong></code><br> + ({{bug(918189)}})</td> + <td>31</td> + <td>31</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">Désactivé</a></td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">Désactivé</a></td> + <td><code>layout.css.convertFromNode.enabled</code></td> + </tr> + <tr> + <td><strong><code>Node.rootNode</code></strong><br> + The {{domxref("Node.rootNode")}} property returns a {{domxref("Node")}} object representing the topmost node in the tree, or the current node if it's the topmost node in the tree.<br> + <em>This feature is kept experimental as its naming poses Web compatibility problems. It will be renamed in the future.</em></td> + <td>48</td> + <td>48</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">Désactivé</a></td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">Désactivé</a></td> + <td><code>dom.node.rootNode.enabled</code></td> + </tr> + <tr> + <td><strong>WebVTT Regions API</strong><br> + <a href="/en-US/docs/Web/API/Web_Video_Text_Tracks_Format">WebVTT</a> regions are parts of the video viewport that provide a rendering area for WebVTT cues. The {{domxref("VTTRegion")}} is the interface exposing the WebVTT cues.<br> + <em>This interface is considered to be in flux and isn't therefore activated in any version by default.</em></td> + <td>Désactivé<br> + <sub>(Implementation expériemnatle depuis la version 30)</sub></td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td><code>media.webvtt.regions.enabled</code></td> + </tr> + <tr> + <td><strong>Support for audio and video tracks</strong><br> + Implements {{domxref("HTMLMediaElement.audioTracks")}} and {{domxref("HTMLMediaElement.videoTracks")}}.<br> + <em>Firefox doesn't support multiple audio or video tracks, preventing the most common use cases for these properties to work properly. That's why these properties are not activated by default in any version.</em></td> + <td>Désactivé<br> + <sub>(Implementation expériemnatle depuis la version 33)</sub></td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td><code>media.track.enabled</code></td> + </tr> + <tr> + <td><strong>Better value for <code>Event.timestamp</code></strong><br> + The property {{domxref("Event.timestamp")}} is returning a {{domxref("DOMHighResTimeStamp")}}, which is now relative to the Unix epoch.</td> + <td>32 (Windows)<br> + 43 (Linux)</td> + <td>32 (Windows)<br> + 43 (Linux)</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">Désactivé</a></td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">Désactivé</a></td> + <td><code>media.track.enabled</code></td> + </tr> + <tr id="pointer-events"> + <td><strong>Pointer Events</strong></td> + <td>50</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td><code>dom.w3c_pointer_events.enabled</code></td> + </tr> + <tr> + <td><strong>Pointer Events {{domxref("PointerEvent.tangentialPressure")}} and {{domxref("PointerEvent.twist")}}</strong></td> + <td>54</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td><code>dom.w3c_pointer_events.enabled</code></td> + </tr> + <tr> + <td><strong>Intersection Observer API</strong><br> + The {{domxref("Intersection Observer API")}} allows you to configure a callback that is called whenever one item, called a target, intersects either the device viewport or a specified element called.</td> + <td>Désactivé<br> + <sub>(disponible depuis 53)</sub></td> + <td>—</td> + <td>—</td> + <td>—</td> + <td><code>dom.IntersectionObserver.enabled</code></td> + </tr> + <tr> + <td><strong><a href="/en-US/docs/Web/API/Web_Animations_API">Web Animations API: KeyframeEffect and KeyframeEffectReadOnly</a></strong><br> + The {{domxref("KeyframEffectReadOnly()", "KeyframeEffectReadOnly.KeyframeEffectReadOnly()")}} and {{domxref("KeyframeEffect()", "KeyframeEffect.KeyframeEffect()")}} constructors can be used to clone existing {{domxref("KeyframeEffectReadOnly")}} object instances by being given the object to clone as their only parameter (see {{bug(1273784)}}.)</td> + <td>52</td> + <td>52</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Non</td> + </tr> + <tr> + <td><strong>{{domxref("PromiseRejectionEvent")}} and related features</strong><br> + Providing a way to monitor and more finely control the rejection of Promises.<br> + </td> + <td>Désactivé<br> + <sub>(disponible depuis 55)</sub></td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td><code>dom.promise_rejection_events.enabled</code></td> + </tr> + <tr> + <td><strong><a href="/en-US/docs/Web/API/Payment_Request_API">Payment Request API</a></strong><br> + Provides a web API for handling web-based payments.</td> + <td>Désactivé<br> + <sub>(disponible depuis 55)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 55)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 55)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 55)</sub></td> + <td><code>dom.payments.request.enabled</code></td> + </tr> + <tr> + <td><strong>Basic Card Payment API</strong><br> + Provides dictionaries that define data structures describing card payment types and payment responses for use in the Payment Request API. See {{domxref("BasicCardRequest")}} and {{domxref("BasicCardResponse")}}.</td> + <td>Désactivé<br> + <sub>(disponible depuis 56)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 56)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 56)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 56)</sub></td> + <td><code>dom.payments.request.enabled</code></td> + </tr> + <tr> + <td>The proprietary {{domxref("Window.content")}} property is now only available to chrome (privileged) code, and not available to the web anymore ({{bug(864845)}}).</td> + <td>Activé<br> + <sub>(depuis 57)</sub></td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td></td> + </tr> + </tbody> +</table> + +<h3 id="WebRTC">WebRTC</h3> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Fonctionnalité</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Préférence</th> + </tr> + </thead> + <tbody> + <tr> + <td><strong>TCP ICE candidates</strong><br> + ICE candidates that use TCP rather than UDP are considered during ICE negotiation.</td> + <td> + <p>Désactivé<br> + 41</p> + + <p>Désactivé<br> + 54</p> + </td> + <td>Désactivé<br> + 41</td> + <td>Désactivé<br> + 41</td> + <td>Désactivé<br> + 41</td> + <td><code>media.peerconnection.ice.tcp</code></td> + </tr> + </tbody> +</table> + +<h2 id="Outils_de_développeurs">Outils de développeurs</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Fonctionnalité</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Préférence</th> + </tr> + </thead> + <tbody> + <tr id="new-debugger-frontend"> + <td><strong>Debugger rewrite in HTML</strong></td> + <td>52</td> + <td>52</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td><code>devtools.debugger.new-debugger-frontend</code></td> + </tr> + <tr id="new-console-frontend"> + <td><strong>Console rewrite in HTML</strong></td> + <td>52</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td><code>devtools.webconsole.new-frontend-enabled</code></td> + </tr> + <tr id="performance-tool-options"> + <td><strong>Experimental Performance tool options</strong><br> + Enables options in the UI for JIT optimizations, memory, etc.</td> + <td>41</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td><code>devtools.performance.ui.experimental</code></td> + </tr> + <tr id="layout-side-panel"> + <td><strong>Layout side panel</strong><br> + The Layout side panel allows to inspect and manage different CSS layout types like <a href="/en-US/docs/Web/CSS/CSS_Grid_Layout">CSS Grid Layout</a>.</td> + <td>Désactivé<br> + <sub>(disponible depuis 52)</sub></td> + <td>Désactivé<br> + <sub>(disponbile depuis 52)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 52)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 52)</sub></td> + <td><code>devtools.layoutview.enabled</code></td> + </tr> + </tbody> +</table> + +<h2 id="Sécurité">Sécurité</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Fonctionnalité</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Préférence</th> + </tr> + <tr> + <td><strong>TLS 1.3</strong></td> + <td>Activé</td> + <td>Activé</td> + <td>Désactivé</td> + <td>Désactivé</td> + <td><code>security.tls.version.max</code> to <code>4</code></td> + </tr> + <tr> + <td><strong>Blocking data URL navigations on the top-level window</strong><br> + We are experimenting with blocking <code>data:</code> URLs on the top-level window. See <a href="https://www.fxsitecompat.com/en-CA/docs/2017/data-url-navigations-on-top-level-window-will-be-blocked/">Data URL navigations on top level window will be blocked</a> for a detailed explanation.</td> + <td>Activé</td> + <td>n/a</td> + <td>Activé</td> + <td>Désactivé</td> + <td><code>security.data_uri.block_toplevel<br> + _data_uri_navigations</code></td> + </tr> + </thead> +</table> + +<h2 id="Autre">Autre</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Fonctionnalité</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Préférence</th> + </tr> + <tr> + <td><a href="https://support.mozilla.org/t5/Other/How-to-add-a-shortcut-to-a-website-on-Android/ta-p/21992"><strong>Ajouter à l'écran d'accueil</strong></a><br> + The <code>icons</code>, <code>name</code>, <code>short_name</code>, and <code>theme_color</code> fields of the <a href="/en-US/docs/Web/Manifest">Web App Manifest</a> (if present) can now be as the source of the homescreen/apps window icons, apps window title, homescreen icon title, and apps window color (respectively) for "Add to home screen" (Firefox Mobile only).</td> + <td>Désactivé<br> + <sub>(disponible depuis 53)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 53)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 53)</sub></td> + <td>Désactivé<br> + <sub>(disponible depuis 52)</sub></td> + <td><code>manifest.install.enabled</code></td> + </tr> + </thead> +</table> + +<h2 id="Voir_Aussi">Voir Aussi</h2> + +<ul> + <li><a href="/en-US/docs/Mozilla/Firefox/Releases">Firefox developer release notes</a></li> + <li><a href="https://nightly.mozilla.org/">Firefox Nightly</a></li> + <li><a href="https://www.mozilla.org/en-US/firefox/developer/">Firefox Developer Edition</a></li> +</ul> diff --git a/files/fr/mozilla/firefox/firefox_esr/index.html b/files/fr/mozilla/firefox/firefox_esr/index.html new file mode 100644 index 0000000000..594d9bbaa4 --- /dev/null +++ b/files/fr/mozilla/firefox/firefox_esr/index.html @@ -0,0 +1,15 @@ +--- +title: Firefox ESR +slug: Mozilla/Firefox/Firefox_ESR +tags: + - ESR + - Firefox pour Bureau + - LTS + - Stratégie de Groupe + - Version au Support Allongé + - gpo +translation_of: Mozilla/Firefox/Firefox_ESR +--- +<div>{{FirefoxSidebar}}</div><p>Firefox Extended Support Release (ESR) est basé sur une version officielle de Firefox pour ordinateur, le public visé étant les entreprises qui ont besoin d'un support étendu dans le cadre de déploiements d'envergure. Contrairement aux autres canaux de distribution, les versions ESR ne sont pas mises à jour toutes les six semaines avec de nouvelles fonctionnalités ; par contre, elles sont supportées pendant environ un an et reçoivent des correctifs en cas de problème de stabilité ou de risque de sécurité majeur. La version ESR actuelle se base sur Firefox 60 paru le 9 mai 2018.</p> + +<p>Nous encourageons fortement les utilisateurs de Firefox ESR à s'inscrire sur la <a href="https://www.mozilla.org/en-US/firefox/organizations/">liste de diffusion Enterprise Working Group (EWG)</a>.</p> diff --git a/files/fr/mozilla/firefox/headless_mode/index.html b/files/fr/mozilla/firefox/headless_mode/index.html new file mode 100644 index 0000000000..e852a2c775 --- /dev/null +++ b/files/fr/mozilla/firefox/headless_mode/index.html @@ -0,0 +1,124 @@ +--- +title: Le mode headless +slug: Mozilla/Firefox/Headless_mode +tags: + - Automatisation + - Firefox + - Mode Headless + - QA + - node.js + - test +translation_of: Mozilla/Firefox/Headless_mode +--- +<div>{{FirefoxSidebar}}</div><p class="summary">Le mode « <em>headless</em> » permet d'utiliser Firefox mais sans afficher les éléments d'interface. Ça ne présente pas d'intérêt pour surfer sur le Web, mais cela permet de réaliser des tests automatisés. Cet article fournit les informations pertinentes pour pouvoir utiliser le mode <em>headless</em> de Firefox.</p> + +<h2 id="Utiliser_le_mode_headless">Utiliser le mode <em>headless</em></h2> + +<p>Vous pouvez démarrer Firefox dans son mode <em>headless</em> grâce à une ligne de commande incluant le drapeau (<em>flaTg</em>) <code>-headless</code>. Par exemple :</p> + +<pre class="brush: bash">/chemin/vers/firefox -headless</pre> + +<p>Pour le moment, nous n'avons pas inclus davantage d'options, mais plus seront ajoutées plus tard.</p> + +<p>Par exemple, nous travaillons à implémenter une option <code>--screenshot</code>, qui permettra de faire des captures d'écran depuis le mode <em>headless</em> de Firefox. Voir {{bug(1378010)}} pour suivre l'avancée.</p> + +<h3 id="Prise_en_charge">Prise en charge</h3> + +<p>Le mode <em>headless</em> de Firefox fonctionne à partir de la version 55 sur Linux et à partir de la version 56+ sur Windows et Mac.</p> + +<h2 id="Tests_industrialisés_à_l'aide_du_mode_headless">Tests industrialisés à l'aide du mode <em>headless</em></h2> + +<p>La façon la plus utile d'utiliser ce mode <em>headless</em> est de faire tourner des tests industrialisés dans Firefox. Cela signifie que vous pouvez rendre votre processus de test bien plus efficace grâce à ce mode.</p> + +<h3 id="Selenium">Selenium</h3> + +<p>Pour fournir un exemple d'utilisation du mode headless pour test industrialisés, nous allons créer un test recourant à <a href="http://www.seleniumhq.org/">Selenium</a> via <a href="https://nodejs.org/">Node.js</a> et <a>selenium-webdriver</a>. Pour cela, nous supposons que vous êtes déjà à l'aise avec les bases de Selenium, Webdriver et Node, puis que vous avez préparé un environnement de test. Si vous ne l'avez pas fait, rendez-vous sur le guide développant la <a href="https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment#Setting_up_Selenium_in_Node">mise en place d'un environnement de test</a>, puis revenez lire cette documentation.</p> + +<p>Tout d'abord, soyez sûr d'avoir installé Node ainsi que <code>selenium-webdriver</code> sur votre machine. Ensuite, créez un nouveau fichier nommé <code>selenium-test.js</code>.</p> + +<div class="note"> +<p><strong>Note :</strong> Vous pouvez également cloner ce dépôt : <a href="https://github.com/mdn/headless-examples">headless-examples</a> qui contient un fichier de <em>package</em>. Il suffit donc de lancer <code>npm install</code> afin d'installer les dépendances nécessaires.</p> +</div> + +<ol> + <li> + <p>Ajouter quelques lignes de code. À l'intérieur de ce fichier, commencez en important le module principal selenium-webdriver, ainsi que le sous-module firefox :</p> + + <pre class="brush: js">var webdriver = require('selenium-webdriver'), + By = webdriver.By, + until = webdriver.until; + +var firefox = require('selenium-webdriver/firefox');</pre> + </li> + <li> + <p>Puis, créez un objet <code>binary</code> qui représente Firefox Nightly et ajouter l'argument <code>-headless</code> afin qu'il puisse être lancé avec ce mode :</p> + + <pre class="brush: js">var binary = new firefox.Binary(firefox.Channel.NIGHTLY); +binary.addArguments("-headless");</pre> + </li> + <li> + <p>Maintenant, créez une nouvelle instance de driver utilisant Firefox et utilisez <code>setFirefoxOptions()</code> afin d'inclure une option qui spécifiera que le test devra tourner sur le Nightly channel de Firefox (cette étape n'est pas nécessaire sur Linux, mais reste utile pour utiliser les fonctions avancées de la version Nightly de Firefox sur Windows/Mac tant que celle-ci n'est pas disponible en <em>release</em>) :</p> + + <pre class="brush: js">var driver = new webdriver.Builder() + .forBrowser('firefox') + .setFirefoxOptions(new firefox.Options().setBinary(binary)) + .build();</pre> + </li> + <li> + <p>Il faut maintenant ajouter la ligne de code qui initiera la navigation sur la page de recherche Google :</p> + + <pre class="brush: js">driver.get('https://www.google.com'); +driver.findElement(By.name('q')).sendKeys('webdriver'); + +driver.sleep(1000).then(function() { + driver.findElement(By.name('q')).sendKeys(webdriver.Key.TAB); +}); + +driver.findElement(By.name('btnK')).click(); + +driver.sleep(2000).then(function() { + driver.getTitle().then(function(title) { + if(title === 'webdriver - Google Search') { + console.log('Test passed'); + } else { + console.log('Test failed'); + } + }); +}); + +driver.quit();</pre> + </li> + <li> + <p>Enfin, démarrez le test en utilisant la commande suivante :</p> + + <pre class="brush: bash">node selenium-test</pre> + </li> +</ol> + +<p>Et c'est tout ! Après quelques secondes, vous devriez voir apparaître le message "Test passed" sur la console</p> + +<p>L'article <em><a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">Headless Firefox in Node.js with selenium-webdriver</a></em> de Myk Melez continent d'autres conseils utiles pour créer un test industrialisé via Node.js et Selenium dans le mode <em>headless</em>.</p> + +<h3 id="D'autres_solutions_de_test">D'autres solutions de test</h3> + +<p>Slimerjs supporte Firefox sur Linux et bientôt sur Mac et Windows. Voir l'article <em><a href="https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/">Headless SlimerJS with Firefox</a></em> de Brendan Dahl pour plus détails.</p> + +<p>De plus, vous pourrez utiliser le mode headless de Firefox pour faire tourner des tests industrialisés développés dans la plupart des autres applications de tests, pour autant qu'elles permettent de définir une variable d'environnement.</p> + +<h2 id="Dépannage_et_aide_supplémentaire">Dépannage et aide supplémentaire</h2> + +<p>Si vous avez le moindre problème en utilisant le mode <em>headless</em>, ne vous inquiétez pas, nous sommes ici pour vous aider. Cette section a pour but de référencer toutes vos questions et les réponses que nous leur apportons.</p> + +<ul> + <li>Sur Linux, certaines bibliothèques sont nécessaires pour faire tourner le mode <em>headless</em> de Firefox, même si ce dernier ne les utilise pas directement. Voir le {{bug(1372998)}} pour suivre la résolution du problème.</li> +</ul> + +<p>Si vous souhaitez poser une question à nos ingénieurs, le meilleur moyen est de se rendre sur le <a href="https://wiki.mozilla.org/IRC">canal IRC</a> <code>#headless</code> de Mozilla. Si vous êtes certain d'avoir trouvé un bug, documentez le sur la plateforme <a href="https://bugzilla.mozilla.org/">Mozilla Bugzilla</a>.</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://intoli.com/blog/running-selenium-with-headless-firefox/"><em>Using Selenium with Headless Firefox (on Windows)</em> (en anglais)</a> par Andre Perunicic (utilise Python)</li> + <li><em><a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">Headless Firefox in Node.js with selenium-webdriver </a></em><a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">(en anglais)</a> par Myk Melez</li> + <li><a href="https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/"><em>Headless SlimerJS with Firefox</em> (en anglais)</a> par Brendan Dahl</li> +</ul> diff --git a/files/fr/mozilla/firefox/index.html b/files/fr/mozilla/firefox/index.html new file mode 100644 index 0000000000..e657713a88 --- /dev/null +++ b/files/fr/mozilla/firefox/index.html @@ -0,0 +1,73 @@ +--- +title: Firefox +slug: Mozilla/Firefox +tags: + - Firefox + - Landing + - Mozilla +translation_of: Mozilla/Firefox +--- +<div>{{FirefoxSidebar}}</div> + +<p><a class="external external-icon" href="https://www.mozilla.org/fr/firefox/new/">Firefox</a> est le navigateur populaire de Mozilla, disponible sur de nombreuses plates-formes dont Windows, Mac OS et Linux pour les ordinateurs de bureau, ainsi que Android et iOS pour les appareils mobiles. Grâce à une large compatibilité, les dernières nouveautés en technologie web et des outils puissants pour développer, Firefox est idéal pour les développeurs web et les utilisateurs.</p> + +<p>Firefox est un projet libre et ouvert. Une grande partie du code source provient des contributions de notre très grande communauté de volontaires. Découvrez ici comment contribuer au projet Firefox et vous trouverez également des liens vers de la documentation sur la création de modules complémentaires pour Firefox, l'utilisation d'outils de développement dans Firefox et bien plus encore.</p> + +<div class="summary"> +<p>Découvrez comment créer des modules complémentaires pour <a class="external external-icon" href="https://www.mozilla.org/fr/firefox/new/">Firefox</a>, comment développer et créer Firefox même, ainsi que son fonctionnement interne et celui de ses sous-projets.</p> +</div> + +<ul class="card-grid"> + <li><span>Notes de versions</span> + + <p><a href="/fr/docs/Firefox/Versions">Les notes de versions pour les développeurs</a> vous permettent de garder un œil sur les nouvelles fonctionnalités pour les sites web et les modules complémentaires qu'apporte chaque nouvelle version de Firefox.</p> + </li> + <li><span>Documentation du projet</span> + <p>Obtenez des informations détaillées concernant le <a href="/fr/docs/Mozilla">fonctionnement interne</a> et le développement de Firefox. Vous pourrez ainsi vous repérer plus facilement lorsque vous développez.</p> + </li> + <li><span>Guide du développeur</span> + <p>Notre <a href="/fr/docs/Developer_Guide">guide du développeur</a> fournit les détails nécessaires pour récupérer et compiler le code source de Firefox. Il vous permet également de vous y retrouver facilement et de découvrir comment contribuer au projet.</p> + </li> +</ul> + +<h2 id="Éditions_de_Firefox">Éditions de Firefox</h2> + +<p>Firefox est disponible sous cinq <strong>éditions</strong> différentes, l'une d’entre-elles est forcément adaptée pour vous !</p> + +<h3 id="Firefox_Nightly">Firefox Nightly</h3> + +<p>Chaque nuit, nous compilons Firefox à partir des dernières sources de <a href="/fr/docs/mozilla-central">mozilla-central</a>. Ces compilations sont pour les développeurs Firefox ou tous ceux qui veulent essayer les dernières fonctionnalités pendant qu'elles sont encore en développement.</p> + +<p><a class="external external-icon" href="https://nightly.mozilla.org/" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Télécharger Firefox Nightly</a></p> + +<h3 id="Firefox_Developer_Edition">Firefox Developer Edition</h3> + +<p>Une version de Firefox créée spécialement pour les développeurs. Elle est mise à jour toutes les six semaines avec les fonctionnalités suffisamment stables de la version Firefox Nightly. Nous ajoutons également des fonctionnalités spéciales pour les développeurs, seulement disponibles dans cette version de Firefox.</p> + +<p><a href="/fr/docs.Firefox/Developer_Edition">En savoir plus sur Firefox Developer Edition</a>.</p> + +<p><a class="external external-icon" href="https://www.mozilla.org/fr/firefox/developer/" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Firefox Developer Edition</a></p> + +<h3 id="Firefox_Beta">Firefox Beta</h3> + +<p>Après six semaines passées dans la version Firefox Developer Edition, les fonctionnalités suffisamment stables rejoignent la nouvelle version de Firefox Beta. Les versions de Firefox Beta sont pour les passionnés souhaitant tester ce qui est destiné à devenir la prochaine version de Firefox.</p> + +<p><a class="external external-icon" href="https://www.mozilla.org/firefox/channel/#beta" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Télécharger Firefox Beta</a></p> + +<h3 id="Firefox">Firefox</h3> + +<p>Essayé, testé et adopté par des millions de personnes à travers le monde. Après six semaines de stabilisation dans la version Beta, la version finale est fin prête à être distribuée à tous.</p> + +<p><a class="external external-icon" href="https://www.mozilla.org/firefox/channel/#firefox" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Télécharger Firefox</a></p> + +<h3 id="Firefox_Extended_Support_Release_ESR">Firefox Extended Support Release (ESR)</h3> + +<p>Firefox ESR est une édition avec un support à long terme. Très utile pour des organisations telles que des écoles, des universités, des entreprises ou autres qui ont besoin d'un support étendu pour des déploiements importants.</p> + +<p><a href="/fr/docs/Firefox/Firefox_ESR">En savoir plus sur Firefox Extended Support Release</a>.</p> + +<p><a class="external external-icon" href="https://www.mozilla.org/firefox/organizations/all/" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Télécharger Firefox ESR</a></p> + +<h2 id="Profils_Firefox">Profils Firefox</h2> + +<p>Si vous utilisez régulièrement plusieurs éditions de Firefox — ou simplement plusieurs configurations — vous devriez vous renseigner sur <a href="/fr/docs/Mozilla/Firefox/Multiple_profiles">l'utilisation de plusieurs profils Firefox</a> en activant le gestionnaire de profils de Firefox et les autres outils de gestion de profils.</p> diff --git a/files/fr/mozilla/firefox/le_protocole_about/index.html b/files/fr/mozilla/firefox/le_protocole_about/index.html new file mode 100644 index 0000000000..0e6912b8a7 --- /dev/null +++ b/files/fr/mozilla/firefox/le_protocole_about/index.html @@ -0,0 +1,174 @@ +--- +title: Firefox et le protocole "about" +slug: Mozilla/Firefox/Le_protocole_about +tags: + - Firefox + - Guide + - Mozilla + - Protocoles +translation_of: Mozilla/Firefox/The_about_protocol +--- +<div>{{FirefoxSidebar}}</div> + +<p>Il existe un grand nombre d'informations utiles à propos de Firefox cachées derrière le protocole d'URL <code>about:</code>. La plus utile est l'URL <code>about:config</code> qui affiche les préférences et les paramètres qui peuvent être consultés et modifiés. Voici la liste complète des URL du pseudo-protocole <code>about:</code> :</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Page <code>about:</code></th> + <th scope="col">Description</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>about:about</code></td> + <td>Fournit un aperçu de toutes les pages about:</td> + </tr> + <tr> + <td><code>about:addons</code></td> + <td>Gestionnaire de modules complémentaires</td> + </tr> + <tr> + <td><code>about:buildconfig</code></td> + <td>Affiche la plate-forme et la configuration utilisées pour construire Firefox</td> + </tr> + <tr> + <td><code>about:cache</code></td> + <td>Affiche les informations sur les caches mémoire, disque et appcache</td> + </tr> + <tr> + <td><code>about:checkerboard</code></td> + <td>Permet de diagnostiquer les apparitions de damiers à l'affichage</td> + </tr> + <tr> + <td><code>about:config</code></td> + <td>Fournit un moyen d'inspecter et modifier les préférences et paramètres de Firefox</td> + </tr> + <tr> + <td><code>about:crashes</code></td> + <td>Liste tous les plantages qui se sont produits pendant le fonctionnement de Firefox (dans le cas où l'utilisateur a activé les rapports de plantage)</td> + </tr> + <tr> + <td><code>about:credits</code></td> + <td>Liste tous les contributeurs du projet Firefox</td> + </tr> + <tr> + <td><code>about:debugging</code></td> + <td>Affiche la page de déboguage des modules complémentaires</td> + </tr> + <tr> + <td><code>about:devtools</code></td> + <td>Introduction aux outils de développement</td> + </tr> + <tr> + <td><code>about:downloads</code></td> + <td>Affiche tous les téléchargements faits dans Firefox</td> + </tr> + <tr> + <td><code>about:home</code></td> + <td>Page de démarrage de Firefox lors de l'ouverture d'une nouvelle fenêtre</td> + </tr> + <tr> + <td><code>about:license</code></td> + <td>Affiche les informations de licence</td> + </tr> + <tr> + <td><code>about:logo</code></td> + <td>Logo de Firefox</td> + </tr> + <tr> + <td><a href="/fr/docs/Performance/about%3Amemory">about:memory</a></td> + <td>Fournit un moyen d'afficher l'utilisation de la mémoire, de l'enregistrer dans un rapport et de lancer les GC et CC</td> + </tr> + <tr> + <td><code>about:mozilla</code></td> + <td>Page spéciale affichant un message extrait de l'ouvrage "Le Livre de Mozilla"</td> + </tr> + <tr> + <td><code>about:networking</code></td> + <td>Affiche des informations sur le réseau</td> + </tr> + <tr> + <td><code>about:newtab</code></td> + <td>Page de démarrage à l'ouverture d'un nouvel onglet</td> + </tr> + <tr> + <td><code>about:performance</code></td> + <td>Affiche une indication de l'utilisation du processeur et de la mémoire des onglets/modules/processus</td> + </tr> + <tr> + <td><code>about:plugins</code></td> + <td>Affiche les informations sur les plugins installés</td> + </tr> + <tr> + <td><code>about:policies</code></td> + <td>Liste les <a href="https://support.mozilla.org/fr/products/firefox-enterprise/policies-enterprise">stratégies d'entreprise</a></td> + </tr> + <tr> + <td><code>about:preferences</code></td> + <td>Paramètres de Firefox (également accessibles à partir du menu Firefox > <em>Préférences</em>)</td> + </tr> + <tr> + <td><code>about:privatebrowsing</code></td> + <td>Page de démarrage lors de l'ouverture d'une fenêtre de navigation privée</td> + </tr> + <tr> + <td><code>about:profiles</code></td> + <td>Affichages et gestion des profils</td> + </tr> + <tr> + <td><code>about:restartrequired</code></td> + <td>Page informant l'utilisateur de la nécessité d'un redémarage après une mise à jour</td> + </tr> + <tr> + <td><code>about:reader</code></td> + <td>Indique qu'une page utilise le mode lecture</td> + </tr> + <tr> + <td><code>about:rights</code></td> + <td>Affiche des informations sur les droits</td> + </tr> + <tr> + <td><code>about:robots</code></td> + <td>Page spéciale affichant des remarques concernant les robots</td> + </tr> + <tr> + <td><code>about:serviceworkers</code></td> + <td>Affiche les ServiceWorkers inscrits</td> + </tr> + <tr> + <td><code>about:sessionrestore</code></td> + <td>Restauration de session (affichée après un plantage de Firefox)</td> + </tr> + <tr> + <td><code>about:support</code></td> + <td>Informations de dépannage (également accessible à partir du menu Firefox > <em>? (point d'interrogation)</em> > <em>Informations de dépannage</em>)</td> + </tr> + <tr> + <td><code>about:sync-log</code></td> + <td>Affiche un protocole de synchronisation relatif à la fonctionnalité <a href="https://www.mozilla.org/fr/firefox/sync/">Sync</a></td> + </tr> + <tr> + <td><code>about:telemetry</code></td> + <td>Affiche les données de télémétrie collectées et envoyées à Mozilla lorsque Firefox est en cours d'exécution (dans le cas où l'utilisateur a activé la télémétrie)</td> + </tr> + <tr> + <td><code>about:url-classifier</code></td> + <td>Affiche le statut de la classification d'URL (utilisée pour <a href="https://support.mozilla.org/fr/kb/comment-fonctionne-protection-contre-hame%C3%A7onnage-et-logiciels-malveillants">les protections contre l'hameçonnage et les logiciels malveillants</a>)</td> + </tr> + <tr> + <td><code>about:webrtc</code></td> + <td>Informations sur l'utilisation de WebRTC</td> + </tr> + <tr> + <td><code>about:welcome</code></td> + <td>Page affiché après l'installation de Firefox</td> + </tr> + <tr> + <td><code>about:welcomeback</code></td> + <td>Page d'information affichée après la réinitialisation de Firefox</td> + </tr> + </tbody> +</table> + +<p>Ces URL sont définies dans {{source("docshell/base/nsAboutRedirector.cpp")}}, à l'intérieur du tableau <code>kRedirMap</code>. Celui-ci couvre la plupart des URL, de <code>config</code> jusqu'aux URL du pseudo-protocole <code>chrome:</code>, comme <code>chrome://global/content/config.xul</code>. Les informations sur les emplacements about sont dupliquées dans {{source("docshell/build/nsDocShellModule.cpp")}}.</p> diff --git a/files/fr/mozilla/firefox/multiprocessus_firefox/index.html b/files/fr/mozilla/firefox/multiprocessus_firefox/index.html new file mode 100644 index 0000000000..9a09652da6 --- /dev/null +++ b/files/fr/mozilla/firefox/multiprocessus_firefox/index.html @@ -0,0 +1,77 @@ +--- +title: Firefox multiprocessus +slug: Mozilla/Firefox/Multiprocessus_Firefox +tags: + - multiprocessus +translation_of: Mozilla/Firefox/Multiprocess_Firefox +--- +<div>{{FirefoxSidebar}}</div><p>Dans les anciennes versions de Firefox pour bureau, le navigateur ne s'exécutait que dans un seul processus du système d'exploitation. En particulier, le JavaScript qui exécutait l'interface du navigateur (également connu sous le nom « code chrome ») s'exécutait habituellement dans le même processus que celui présent dans les pages web (<span class="spellmodupdated" title="">appelé</span> aussi « contenu » ou « contenu web »).</p> + +<p>Les dernières versions de Firefox e<span class="spellmod" title="">xécutent</span> l'interface du navigateur dans un processus différent de celui des pages w<span class="spellmod" title="">eb.</span> Dans la première itération de cette architecture, tous les onglets tournent dans le même processus et l'interface du navigateur dans un processus différent. Dans les itérations suivantes, nous espérons avoir plus d'un processus pour le contenu. Le projet qui consiste à apporter le <span class="spellmod" title="">multi</span>processus dans Firefox est <span class="spellmod" title="">appelé</span> <em>Electrolysis</em>, qui correspond à l'abréviation e10s.</p> + +<p>Les pages web classiques ne sont pas affectées par l'apparition du multiprocessus dans Firefox. Les développeurs travaillant sur Firefox lui-même ou les extensions du navigateur seront affectés si leur code <span id="result_box" lang="fr"><span class="hps">repose sur la possibilité</span> <span class="hps">d'accéder directement à</span> du contenu web.</span></p> + +<p><span lang="fr"><span class="hps">Au lieu d'accéder au contenu directement, le JavaScript présent dans le code chrome devra utiliser </span></span>le <a href="/Firefox/Multiprocess_Firefox/Message_manager">gestionnaire de messages</a> pour accéder au contenu. Pour faciliter la transition, nous avons mis en place des objets (les <a href="/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">Cross Process Object Wrappers</a>) et vous pouvez vous référer à cette <a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts#Compatibility_shims">page</a> pour découvrir les limitations des scripts chrome. Si vous développez des extensions, vous pouvez lire le <a href="https://developer.mozilla.org/Mozilla/Add-ons/Working_with_multiprocess_Firefox">guide pour travailler avec Firefox multiprocessus</a>.</p> + +<hr> +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/Firefox/Multiprocess_Firefox/Technical_overview">Présentation technique</a></dt> + <dd>Une vision très haut niveau de comment le multiprocessus pour Firefox est mis en œuvre.</dd> + <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Web_content_compatibility">Guide de compatibilité du contenu web</a></dt> + <dd>Conseils et détails sur de potentiels problèmes de compatibilité des sites web qui peuvent arriver à cause de la transition. Remarque : il n'y en a pas beaucoup !</dd> + <dt><a href="/Firefox/Multiprocess_Firefox/Glossary">Glossaire</a></dt> + <dd>La définition du jargon utilisé dans le projet <em>Electrolysis</em>.</dd> + <dt><a href="/Firefox/Multiprocess_Firefox/Message_Manager">Gestionnaire de messages</a></dt> + <dd><span id="result_box" lang="fr"><span class="hps">Guide complet sur</span> <span class="hps">les</span> <span class="hps">objets utilisés</span> <span class="hps">pour communiquer entre</span> <span class="hps">le code chrome</span> <span class="hps">et le contenu.</span></span></dd> + <dt><a href="/Add-ons/SDK/Guides/Multiprocess_Firefox_and_the_SDK">Extensions basées sur le SDK</a></dt> + <dd>Comment migrer vos extensions en utilisant le SDK d'extensions.</dd> + <dt><a href="/Firefox/Multiprocess_Firefox/Which_URIs_load_where">Quelle URI se charge où</a></dt> + <dd>Un guide rapide sur quelles URI - chrome:, about:, file:, resource: - sont chargés dans chaque processus.</dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/Firefox/Multiprocess_Firefox/Motivation">Motivation</a></dt> + <dd>Pourquoi nous implémentons le multiprocessus dans Firefox : performance, sécurité et stabilité.</dd> + <dt><a href="/Add-ons/Working_with_multiprocess_Firefox">Guide de migration des extensions</a></dt> + <dd>Si vous êtes un développeur d'extension, apprenez si votre extension est affectée et comment mettre à jour votre code.</dd> + <dt><a href="/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">Objets CPOW</a></dt> + <dd>Les objets appelés <em>Cross Process Object Wrappers</em> sont une aide à la migration, permettant au code chrome d'accéder de manière synchrone au contenu.</dd> + <dt><a href="/Firefox/Multiprocess_Firefox/Debugging_frame_scripts">Deboggage des processus du contenu</a></dt> + <dd>Comment déboguer du code fonctionnant dans le processus contenu.</dd> + <dt><a href="/docs/Mozilla/Firefox/Multiprocess_Firefox/Tab_selection_in_multiprocess_Firefox">Sélection d'onglet dans Firefox multiprocessus</a></dt> + <dd>Comment le passage entre les onglets marche dans Firefox multiprocessus.</dd> +</dl> +</div> +</div> + +<hr> +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts">Limitations des scripts chrome</a></dt> + <dd>Les pratiques ne fonctionnant plus dans le code chrome et comment y remédier.</dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/Firefox/Multiprocess_Firefox/Limitations_of_frame_scripts">Limitations des scripts avec privilèges</a></dt> + <dd>Les pratiques ne fonctionnant plus dans le code des scripts de cadre et comment y remédier.</dd> +</dl> +</div> +</div> + +<hr> +<h2 id="Contactez-nous">Contactez-nous</h2> + +<p>Pour plus d'informations sur le projet, vous impliquer ou poser des questions :</p> + +<ul> + <li><strong>Page du projet Electrolysis</strong>: <a href="https://wiki.mozilla.org/Electrolysis">https://wiki.mozilla.org/Electrolysis</a></li> + <li><strong>IRC</strong>: #e10s sur <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a></li> + <li><strong>Mailing list</strong>: <a href="https://groups.google.com/forum/#!forum/mozilla.dev.tech.electrolysis">dev.tech.electrolysis</a></li> +</ul> diff --git a/files/fr/mozilla/firefox/multiprocessus_firefox/motivation/index.html b/files/fr/mozilla/firefox/multiprocessus_firefox/motivation/index.html new file mode 100644 index 0000000000..ed2b4828b4 --- /dev/null +++ b/files/fr/mozilla/firefox/multiprocessus_firefox/motivation/index.html @@ -0,0 +1,44 @@ +--- +title: Motivation +slug: Mozilla/Firefox/Multiprocessus_Firefox/Motivation +translation_of: Mozilla/Firefox/Multiprocess_Firefox/Motivation +--- +<div>{{FirefoxSidebar}}</div><p>Il y a trois raisons qui nous poussent à faire tourner le contenu de Firefox dans un processus séparé : performance, sécurité, stabilité.</p> + +<h2 id="Performance">Performance</h2> + +<p>La plupart des travaux de Mozilla ces deux dernières années ont mis l'accent sur la réactivité du navigateur. Le but est de réduire les lenteurs de l'interface (<a href="/en-US/docs/Glossary/Jank">jank</a>) - c'est-à-dire quand le navigateur a l'air de se figer lors du chargement d'une grosse page, au remplissage d'un formulaire ou lors du défilement de la page. La réactivité devient plus importante que le débit sur le web aujourd'hui. Un gros du travail a été réalisé comme une partie du projet <a href="https://wiki.mozilla.org/Performance/Snappy">Snappy</a>. En voici les principaux axes :</p> + +<ul> + <li>Mettre les actions longues à réaliser dans un thread séparé pour que le thread principal puisse continuer à répondre.</li> + <li>Rendre les Entrées/Sorties asynchrones ou dans des threads séparés pour que le thread principal ne soit pas bloqué par le disque dur.</li> + <li>Réduire les gros codes en plusieurs petits morceaux et en exécutant la boucle d'évènement entre ces morceaux.</li> +</ul> + +<p>Une grande partie de ces travaux a déjà été réalisée. Les points restants sont difficiles à résoudre. Par exemple, l'exécution de JavaScript se déroule dans le thread principal ce qui bloque la boucle d'évènements. Exécuter ces composants dans un thread séparé est difficile parce qu'ils accèdent à des données comme le DOM qui ne sont pas sécurisées dans le cas d'accès par différents threads. Comme alternative, nous avons envisagé de pouvoir exécuter la boucle d'évènements au milieu de l'exécution de JavaScript, mais cela briserait beaucoup d'hypothèses de différentes parties de Firefox (comme les extensions).</p> + +<p>Exécuter le contenu web dans un processus séparé est une alternative viable. Comme l'approche avec différents threads, Firefox est capable d'exécuter la boucle d'évènements pendant que le JavaScript et l'agencement s'exécutent dans un processus contenu. Mais, le code d'Interface Utilisateur n'a pas accès au contenu du DOM ou d'autres structures de données du contenu, il y a donc un besoin de verrouillage et de protection d'accès sur cette partie. L'inconvénient est que tout code présent dans le processus interface utilisateur de Firefox qui a besoin d'accéder au contenu doit le faire explicitement via un passage de messages.</p> + +<p>Nous pensons que ce compromis est logique pour plusieurs raisons :</p> + +<ul> + <li>L'accès au DOM par le code de Firefox n'est pas commun.</li> + <li>Le code partagé avec Firefox OS utilise déjà le passage de messages.</li> + <li>Dans le modèle multi-processus, <span id="result_box" lang="fr"><span>le code</span> <span class="hps">de Firefox qui</span> <span class="hps">ne parvient pas à</span> <span class="hps">utiliser</span> <span class="hps">le passage de messages</span> afin d'accéder <span class="hps">au contenu</span> <span class="hps">va échouer</span> <span class="hps">de</span> <span class="hps">manière </span><span class="hps">évidente. Dans un modèle</span> multi-threads, le <span class="hps">code qui accède à</span> <span class="hps">du contenu sans</span> <span class="hps">blocage</span> <span class="hps">correct</span> <span class="hps">échouera</span> <span class="hps">de façon subtile</span>, et sera bien plus difficile <span class="hps">à déboguer.</span></span></li> +</ul> + +<h2 id="Sécurité">Sécurité</h2> + +<p>Aujourd'hui, si quelqu'un découvre un bug exploitable dans Firefox, il est capable de prendre le contrôle des ordinateurs des utilisateurs. Il existe des solutions pour parer ce problème, la plus connue est la technique du <a href="http://fr.wikipedia.org/wiki/Sandbox_%28s%C3%A9curit%C3%A9_informatique%29">bac à sable</a>. Cette méthode ne nécessite pas une architecture multi-processus. Cependant, un bac à sable fonctionnant avec Firefox en processus unique ne serait pas très efficace. Les bacs à sable permettent seulement d'empêcher à un processus d'effectuer des actions qu'il ne devrait pas réaliser. Malheureusement, Firefox nécessite l'accès à bien plus de choses que le réseau et le système de fichiers (surtout lorsque des extensions sont installées). Ainsi, un bac à sable pour Firefox en processus unique ne pourrait pas bloquer grand-chose.</p> + +<p>Avec Firefox multi-processus, les processus contenus seront mis dans un bac à sable. Ainsi, un processus ne pourra pas accéder directement au système de fichiers, mais devra demander au processus principal. À ce moment, le processus principal pourra vérifier que la requête est sécurisée et logique. Par conséquent, le bac à sable peut être très restrictif. On espère que cette méthode rende plus difficile l'exploitation de trous de sécurité dans Firefox.</p> + +<h2 id="Stabilité">Stabilité</h2> + +<p>Actuellement, un plantage dans un code s'exécutant dans une page va faire tomber le navigateur en entier. Avec Firefox multi-processus, seul le processus du contenu qui s'est planté sera détruit.</p> + +<div class="note"> +<p>Cette page contient pas mal de contenu provenant de l'article de blog de Bill McCloskey's sur Firefox multi-processus : <a href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/</a> (en)</p> +</div> + +<p> </p> diff --git a/files/fr/mozilla/firefox/multiprocessus_firefox/technical_overview/index.html b/files/fr/mozilla/firefox/multiprocessus_firefox/technical_overview/index.html new file mode 100644 index 0000000000..92839d64e2 --- /dev/null +++ b/files/fr/mozilla/firefox/multiprocessus_firefox/technical_overview/index.html @@ -0,0 +1,164 @@ +--- +title: Vue d'ensemble technique +slug: Mozilla/Firefox/Multiprocessus_Firefox/Technical_overview +translation_of: Mozilla/Firefox/Multiprocess_Firefox/Technical_overview +--- +<div>{{FirefoxSidebar}}</div><div class="note"> +<p>Cette page est une traduction d'un extrait de l'article du blog Bill McCloskey sur Firefox et le multiprocessus: <a class="external external-icon" href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/</a></p> +</div> + +<p>À un haut niveau, le Firefox en multiprocessus fonctionne comme il suit. Le processus qui est démarré quand Firefox est lancé est appelé le processus parent. Initialement, ce processus fonctionne de la même manière que Firefox lorsqu'il fonctionne avec un seul processus: une fenêtre est ouverte affichant <a href="http://mxr.mozilla.org/mozilla-central/source/browser/base/content/browser.xul"><code>browser.xul</code></a>, qui contient les éléments principaux de l'UI pour Firefox. Firefox a un toolkit pour les GUI appelé XUL qui permet aux éléments de l'interface d'être déclaré et posés de façon déclarative, de la même manière que pour du contenu web. Tout comme le contenu web, il y a un objet <code>window</code>, qui a une propriété <code>document</code>, et celui-ci contient tout les éléments XML déclarés dans <code>browser.xul</code>. Tous les menus, barres d'outils, sidebars, et onglets dans Firefox sont des éléments XML dans ce document. Chaque onglet contient un élément <code><browser></code> pour afficher le contenu web.</p> + +<p>Le premier endroit où Firefox multiprocessus diverge de sa version en monoprocessus est que chaque élément <code><browser></code> a un attribut <code>remote="true"</code>. Quand un tel élément est ajouté au document, un nouveau processus, appelé <em>child process</em>, pour le contenu est lancé. Un canal IPC est créé qui relie processus parent et enfant. Initialement l'enfant affiche <code>about:blank</code>, mais le parent peut envoyer des commandes à l'enfant pour naviguer autre part.</p> + +<h2 id="Rendu"><strong id="drawing">Rendu</strong></h2> + +<p>D'une certaine manière, le contenu Web affiché doit passer du processus enfant au parent, puis à l'écran. Le multiprocessus de Firefox dépend d'une nouvelle fonctionnalité appelée <a href="http://benoitgirard.wordpress.com/2012/05/15/off-main-thread-compositing-omtc-and-why-it-matters/"><em>off main thread compositing</em></a> (OMTC). En bref chaque fenêtre de Firefox est divisée en séries de couches, en quelque sorte similaire au calque de Photoshop. Chaque fois que Firefox effectue un rendue de la page Web, ces couches sont soumises à un thread de composition qui traduit les couches et les associent en semble pour former la page qui est ensuite dessinée.</p> + +<p>Les calques sont structurés comme un arbre. La couche racine de l'arbre est responsable de l'ensemble de la fenêtre de Firefox. Cette couche contient d'autres couches, dont certaines sont responsables de l'élaboration des menus et des onglets. Une sous-couche affiche tout le contenu Web. Le contenu Web lui-même peut être divisé en plusieurs couches, mais ils sont tous enracinés dans une seule couche "content".</p> + +<p>Dans le multiprocessus de Firefox, la sous-couche de la couche de contenu est en fait une cale. La plupart du temps, il contient un noeud de substitution qui conserve simplement une référence à la liaison IPC avec le processus enfant. Le processus de contenu conserve l'arborescence de couches réelle pour le contenu Web. Il construit et dessine dans cet arbre de couche. Lorsqu'il a terminé, il envoie la structure de son arbre de couche au processus parent via IPC. Les tampons de sauvegarde sont partagés avec le parent soit par la mémoire partagée, soit par la mémoire GPU. Les références à cette mémoire sont envoyées dans une parti de l'arborescence de l'arbre. Lorsque le parent reçoit l'arborescence de la couche, il supprime son nœud de substitution et le remplace par l'arbre réel du contenu. Ensuite, il compose et dessine comme d'habitude. Lorsqu'il a terminé, il remet sont nœud de substitution.</p> + +<p>L'architecture de base de la façon dont OMTC fonctionne avec plusieurs processus existe depuis un certain temps, car il est nécessaire pour Firefox OS. Cependant, Matt Woodrow et David Anderson travail beaucoup pour que tout fonctionne correctement sur Windows, Mac et Linux. L'un des grands défis pour le multiprocessus de Firefox serait d'utiliser OMTC sur toutes les plates-formes. À l'heure actuelle, seuls la plate-forme Mac l'utilisent par défaut.</p> + +<h2 id="User_input"><strong id="input">User input</strong></h2> + +<p>Events in Firefox work the same way as they do on the web. Namely, there is a DOM tree for the entire window, and events are threaded through this tree in capture and bubbling phases. Imagine that the user clicks on a button on a web page. In single-process Firefox, the root DOM node of the Firefox window gets the first chance to process the event. Then, nodes lower down in the DOM tree get a chance. The event handling proceeds down through to the XUL <code><browser></code> element. At this point, nodes in the web page’s DOM tree are given a chance to handle the event, all the way down to the button. The bubble phase follows, running in the opposite order, all the way back up to the root node of the Firefox window.</p> + +<p>With multiple processes, event handling works the same way until the <code><browser></code> element is hit. At that point, if the event hasn’t been handled yet, it gets sent to the child process by IPC, where handling starts at the root of the content DOM tree. The parent process then waits to run its bubbling phase until the content process has finished handling the event.</p> + +<h2 id="Inter-process_communication"><strong id="ipc">Inter-process communication</strong></h2> + +<p>All IPC happens using the Chromium IPC libraries. Each child process has its own separate IPC link with the parent. Children cannot communicate directly with each other. To prevent deadlocks and to ensure responsiveness, the parent process is not allowed to sit around waiting for messages from the child. However, the child is allowed to block on messages from the parent.</p> + +<p>Rather than directly sending packets of data over IPC as one might expect, we use code generation to make the process much nicer. The IPC protocol is defined in <a href="https://wiki.mozilla.org/IPDL">IPDL</a>, which sort of stands for “inter-* protocol definition language”. A typical IPDL file is <code><a href="http://mxr.mozilla.org/mozilla-central/source/netwerk/ipc/PNecko.ipdl">PNecko.ipdl</a></code>. It defines a set messages and their parameters. Parameters are serialized and included in the message. To send a message <code>M</code>, C++ code just needs to call the method <code>SendM</code>. To receive the message, it implements the method <code>RecvM</code>.</p> + +<p>IPDL is used in all the low-level C++ parts of Gecko where IPC is required. In many cases, IPC is just used to forward actions from the child to the parent. This is a common pattern in Gecko:</p> + +<pre class="brush: cpp">void AddHistoryEntry(param) { + if (XRE_GetProcessType() == GeckoProcessType_Content) { + // If we're in the child, ask the parent to do this for us. + SendAddHistoryEntry(param); + return; + } + + // Actually add the history entry... +} + +bool RecvAddHistoryEntry(param) { + // Got a message from the child. Do the work for it. + AddHistoryEntry(param); + return true; +} +</pre> + +<p>When <code>AddHistoryEntry</code> is called in the child, we detect that we’re inside the child process and send an IPC message to the parent. When the parent receives that message, it calls <code>AddHistoryEntry</code> on its side.</p> + +<p>For a more realistic illustration, consider the Places database, which stores visited URLs for populating the awesome bar. Whenever the user visits a URL in the content process, we call <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/components/places/History.cpp?rev=8b9687f6c602#2326">this code</a>. Notice the content process check followed by the <code>SendVisitURI</code> call and an immediate return. The message is received <a href="http://mxr.mozilla.org/mozilla-central/source/dom/ipc/ContentParent.cpp?rev=fecda5f4a0df#2666">here</a>; this code just calls <code>VisitURI</code> in the parent.</p> + +<p>The code for IndexedDB, the places database, and HTTP connections all runs in the parent process, and they all use roughly the same proxying mechanism in the child.</p> + +<h2 id="Frame_scripts"><strong id="contentscripts">Frame scripts</strong></h2> + +<p>IPDL takes care of passing messages in C++, but much of Firefox is actually written in JavaScript. Instead of using IPDL directly, JavaScript code relies on <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">the message manager</a> to communicate between processes. To use the message manager in JS, you need to get hold of a message manager object. There is a global message manager, message managers for each Firefox window, and message managers for each <code><browser></code> element. A message manager can be used to load JS code into the child process and to exchange messages with it.</p> + +<p>As a simple example, imagine that we want to be informed every time a <code>load</code> event triggers in web content. We’re not interested in any particular browser or window, so we use the global message manager. The basic process is as follows:</p> + +<pre class="brush: js">// Get the global message manager. +let mm = Cc["@<span class="skimlinks-unlinked">mozilla.org/globalmessagemanager;1</span>"]. + getService(Ci.nsIMessageListenerManager); + +// Wait for load event. +mm.addMessageListener("GotLoadEvent", function (msg) { + dump("Received load event: " + <span class="skimlinks-unlinked">msg.data.url</span> + "\n"); +}); + +// Load code into the child process to listen for the event. +mm.loadFrameScript("chrome://content/<span class="skimlinks-unlinked">content-script.js</span>", true); +</pre> + +<p>For this to work, we also need to have a file <code>content-script.js</code>:</p> + +<pre class="brush: js">// Listen for the load event. +addEventListener("load", function (e) { + // Inform the parent process. + let docURL = content.document.documentURI; + sendAsyncMessage("GotLoadEvent", {url: docURL}); +}, false); +</pre> + +<p>This file is called a <em>frame script</em>. When the <code>loadFrameScript</code> function call runs, the code for the script is run once for each <code><browser></code> element. This includes both remote browsers and regular ones. If we had used a per-window message manager, the code would only be run for the browser elements in that window. Any time a new browser element is added, the script is run automatically (this is the purpose of the <code>true</code> parameter to <code>loadFrameScript</code>). Since the script is run once per browser, it can access the browser’s window object and docshell via the <code>content</code> and <code>docShell</code> globals.</p> + +<p>The great thing about frame scripts is that they work in both single-process and multiprocess Firefox. To learn more about the message manager, see the <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">message manager guide</a>.</p> + +<h2 id="Cross-process_APIs"><strong id="shims">Cross-process APIs</strong></h2> + +<p>There are a lot of APIs in Firefox that cross between the parent and child processes. An example is the <code>webNavigation</code> property of XUL <code><browser></code> elements. The <code>webNavigation</code> property is an object that provides methods like <code>loadURI</code>, <code>goBack</code>, and <code>goForward</code>. These methods are called in the parent process, but the actions need to happen in the child. First I’ll cover how these methods work in single-process Firefox, and then I’ll describe how we adapted them for multiple processes.</p> + +<p>The <code>webNavigation</code> property is defined using the XML Binding Language (XBL). XBL is a declarative language for customizing how XML elements work. Its syntax is a combination of XML and JavaScript. Firefox uses XBL extensively to customize XUL elements like <code><browser></code> and <code><tabbrowser></code>. The <code><browser></code> customizations reside in <code><a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/browser.xml?rev=754cf7fc84cd">browser.xml</a></code>. <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/browser.xml?rev=754cf7fc84cd#262">Here</a> is how <code>browser.webNavigation</code> is defined:</p> + +<pre class="brush: xml"><field name="_webNavigation">null</field> + +<property name="webNavigation" readonly="true"> + <getter> + <![CDATA[ + if (!this._webNavigation) + this._webNavigation = this.docShell.QueryInterface(Components.interfaces.nsIWebNavigation); + return this._webNavigation; + ]]> + </getter> +</property> +</pre> + +<p>This code is invoked whenever JavaScript code in Firefox accesses <code>browser.webNavigation</code>, where <code>browser</code> is some <code><browser></code> element. It checks if the result has already been cached in the <code>browser._webNavigation</code> field. If it hasn’t been cached, then it fetches the navigation object based off the browser’s <em>docshell</em>. The docshell is a Firefox-specific object that encapsulates a lot of functionality for loading new pages, navigating back and forth, and saving page history. In multiprocess Firefox, the docshell lives in the child process. Since the <code>webNavigation</code> accessor runs in the parent process, <code>this.docShell</code> above will just return null. As a consequence, this code will fail completely.</p> + +<p>One way to fix this problem would be to create a fake docshell in C++ that could be returned. It would operate by sending IPDL messages to the real docshell in the child to get work done. We may eventually take this route in the future. We decided to do the message passing in JavaScript instead, since it’s easier and faster to prototype things there. Rather than change every docshell-using accessor to test if we’re using multiprocess browsing, we decided to create a new XBL binding that applies only to remote <code><browser></code> elements. It is called <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/remote-browser.xml?rev=9583bd3099ae"><code>remote-browser.xml</code></a>, and it extends the existing <code>browser.xml</code> binding.</p> + +<p>The <code>remote-browser.xml</code> binding returns a JavaScript <em>shim object</em> whenever anyone uses <code>browser.webNavigation</code> or other similar objects. The shim object is implemented <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/modules/RemoteWebNavigation.jsm">in its own JavaScript module</a>. It uses the message manager to send messages like <code>"WebNavigation:LoadURI"</code> to <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/browser-child.js?rev=9583bd3099ae#107">a content script loaded by <code>remote-browser.xml</code></a>. The content script performs the actual action.</p> + +<p>The shims we provide emulate their real counterparts imperfectly. They offer enough functionality to make Firefox work, but add-ons that use them may find them insufficient. I’ll discuss strategies for making add-ons work in more detail later.</p> + +<h2 id="Cross-process_object_wrappers"><strong id="cpows">Cross-process object wrappers</strong></h2> + +<p>The message manager API does not allow the parent process to call <code>sendSyncMessage</code>; that is, the parent is not allowed to wait for a response from the child. It’s detrimental for the parent to wait on the child, since we don’t want the browser UI to be unresponsive because of slow content. However, converting Firefox code to be asynchronous (i.e., to use <code>sendAsyncMessage</code> instead) can sometimes be onerous. As an expedient, we’ve introduced a new primitive that allows code in the parent process to access objects in the child process synchronously.</p> + +<p>These objects are called cross-process object wrappers, frequently abbreviated to CPOWs. They’re created using the message manager. Consider this example content script:</p> + +<pre class="brush: js">addEventListener("load", function (e) { + let doc = content.document; + sendAsyncMessage("GotLoadEvent", <strong>{}, {document: doc}</strong>); +}, false); +</pre> + +<p>In this code, we want to be able to send a reference to the document to the parent process. We can’t use the second parameter to <code>sendAsyncMessage</code> to do this: that argument is converted to JSON before it is sent up. The optional third parameter allows us to send object references. Each property of this argument becomes accessible in the parent process as a CPOW. Here’s what the parent code might look like:</p> + +<pre class="brush: js">let mm = Cc["@<span class="skimlinks-unlinked">mozilla.org/globalmessagemanager;1</span>"]. + getService(Ci.nsIMessageListenerManager); + +mm.addMessageListener("GotLoadEvent", function (msg) { + let uri = <strong>msg.objects.document.documentURI</strong>; + dump("Received load event: " + uri + "\n"); +}); +mm.loadFrameScript("chrome://content/<span class="skimlinks-unlinked">content-script.js</span>", true); +</pre> + +<p>It’s important to realize that we’re send object <em>references</em>. The <code>msg.objects.document</code> object is only a wrapper. The access to its <code>documentURI</code> property sends a synchronous message down to the child asking for the value. The dump statement only happens after a reply has come back from the child.</p> + +<p>Because every property access sends a message, CPOWs can be slow to use. There is no caching, so 1,000 accesses to the same property will send 1,000 messages.</p> + +<p>Another problem with CPOWs is that they violate some assumptions people might have about message ordering. Consider this code:</p> + +<pre class="brush: js">mm.addMessageListener("GotLoadEvent", function (msg) { + mm.sendAsyncMessage("ChangeDocumentURI", {newURI: "<span class="skimlinks-unlinked">hello.com</span>"}); + let uri = <strong>msg.objects.document.documentURI</strong>; + dump("Received load event: " + uri + "\n"); +}); +</pre> + +<p>This code sends a message asking the child to change the current document URI. Then it accesses the current document URI via a CPOW. You might expect the value of <code>uri</code> to come back as <code>"hello.com"</code>. But it might not. In order to avoid deadlocks, CPOW messages can bypass normal messages and be processed first. It’s possible that the request for the <code>documentURI</code> property will be processed before the <code>"ChangeDocumentURI"</code> message, in which case <code>uri</code> will have some other value.</p> + +<p>For this reason, it’s best not to mix CPOWs with normal message manager messages. It’s also a bad idea to use CPOWs for anything security-related, since you may not get results that are consistent with surrounding code that might use the message manager.</p> + +<p>Despite these problems, we’ve found CPOWs to be useful for converting certain parts of Firefox to be multiprocess-compatible. It’s best to use them in cases where users are less likely to notice poor responsiveness. As an example, we use CPOWs to implement the context menu that pops up when users right-click on content elements. Whether this code is asynchronous or synchronous, the menu cannot be displayed until content has responded with data about the element that has been clicked. The user is unlikely to notice if, for example, tab animations don’t run while waiting for the menu to pop up. Their only concern is for the menu to come up as quickly as possible, which is entirely gated on the response time of the content process. For this reason, we chose to use CPOWs, since they’re easier than converting the code to be asynchronous.</p> + +<p>It’s possible that CPOWs will be phased out in the future. Asynchronous messaging using the message manager gives a user experience that is at least as good as, and often strictly better than, CPOWs. We strongly recommend that people use the message manager over CPOWs when possible. Nevertheless, CPOWs are sometimes useful.</p> diff --git a/files/fr/mozilla/firefox/privacy/index.html b/files/fr/mozilla/firefox/privacy/index.html new file mode 100644 index 0000000000..3b51c404fe --- /dev/null +++ b/files/fr/mozilla/firefox/privacy/index.html @@ -0,0 +1,15 @@ +--- +title: Privacy +slug: Mozilla/Firefox/Privacy +tags: + - Privacy + - Security +translation_of: Mozilla/Firefox/Privacy +--- +<div>{{FirefoxSidebar}}</div> + +<div>Ce document liste la documentation relative à la confidentialité.</div> + +<div> </div> + +<p>{{ ListSubpages () }}</p> diff --git a/files/fr/mozilla/firefox/privacy/protection_contre_le_pistage/index.html b/files/fr/mozilla/firefox/privacy/protection_contre_le_pistage/index.html new file mode 100644 index 0000000000..f466aef11f --- /dev/null +++ b/files/fr/mozilla/firefox/privacy/protection_contre_le_pistage/index.html @@ -0,0 +1,79 @@ +--- +title: Protection contre le pistage +slug: Mozilla/Firefox/Privacy/protection_contre_le_pistage +tags: + - Bloquage + - Pistage + - Privé + - Vie privée +translation_of: Mozilla/Firefox/Privacy/Tracking_Protection +--- +<div>{{FirefoxSidebar}}</div><h2 id="Qu'est-ce_que_la_protection_contre_le_pistage">Qu'est-ce que la protection contre le pistage ?</h2> + +<p>Depuis la version 42, Firefox pour bureau et Firefox pour Android incluent une protection contre le pistage. En navigation privée, Firefox bloque le contenu chargé depuis des domaines qui pistent les utilisateurs à travers les sites.</p> + +<p>Certains contenus bloqués font partie de la mise en page, et les utilisateurs pourraient constater des problèmes de mise en page lorsque Firefox bloque ces chargements. Parfois, lorsque la page fonctionne de telle manière que d'autres éléments remplissent les espaces laissés par les éléments bloqués, les utilisateurs ne remarqueront rien.</p> + +<p>Quand Firefox bloque un contenu, il écrit un message dans la console web comme ceci :</p> + +<pre>The resource at "http://some/url" was blocked because tracking protection is enabled.</pre> + +<p>Notez qu'avec Firefox pour Android, vous pouvez accéder à la sortie de la console en utilisant le debogueur distant.</p> + +<p>L'interface utilisateur de Firefox indiquera aux utilisateurs quand un contenu a été bloqué et leur permet de le débloquer pour la session en cours s'ils le souhaitent. Les utilisateurs pourront aussi désactiver complêtement les protections contre le pistage s'ils le souhaitent.</p> + +<h2 id="Comment_Firefox_choisit_quoi_bloquer">Comment Firefox choisit quoi bloquer ?</h2> + +<p>Le contenu est bloqué selon le domaine à partir duquel il est chargé.</p> + +<p>Firefox contient une liste de sites qui ont été identifiés comme étant engagés dans une politique de suivi des utilisateurs au travers des différents sites visités. Quand la protection anti-tracking est activée, Firefox bloque le contenu provenant des sites de cette listes.</p> + +<p>Les sites surveillant les utilisateurs sont, le plus souvent, des sites tiers de publicité et d'analyse.</p> + +<h2 id="Ce_que_cela_signifie_pour_votre_site">Ce que cela signifie pour votre site</h2> + +<p>Bien évidemment, cela signifie que quand la protection anti-pistage est activée:</p> + +<ul> + <li>le contenu fourni par les pisteurs tiers ne sera pas visible par les utilisateurs</li> + <li>votre site ne pourra pas utiliser les services de publicité et d'analyse de sites tiers qui pratiquent le pistage.</li> +</ul> + +<p>Plus subtilement, si d'autres parties de votre site dependent de pisteurs pour être chargés, alors ces parties ne seront pas fonctionnelles quand la protection anti-pistage est activées. Par exemple, si votre site inclus un rappel qui se lance quand le contenu d'un site de pistage est chargé, alors le rappel ne sera pas utilisé.</p> + +<p>Par exemple, vous ne devez pas utiliser Google Analytics de cette façon :</p> + +<pre class="brush:html example-bad"><a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);">Visit example.com</a> +<script> +function trackLink(url,event) { + event.preventDefault(); + ga('send', 'event', 'outbound', 'click', url, { + 'transport': 'beacon', + 'hitCallback': function() { + document.location = url; + } + }); +} +</script></pre> + +<p>A la place, vous devez prendre en compte le cas où Google Analytics est manquant vérifiant si l'objet `ga` est initialisé :</p> + +<pre class="brush:html example-good"><a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);">Visit example.com</a> +<script> +function trackLink(url,event) { + event.preventDefault(); + if (window.ga && <span class="pl-smi">ga</span>.loaded) { + ga('send', 'event', 'outbound', 'click', url, { + 'transport': 'beacon', + 'hitCallback': function() { document.location = url; } + }); + } else { + document.location = url; + } +} +</script> +</pre> + +<p>Pour plus d'information sur cette technique : <a href="https://hacks.mozilla.org/2016/01/google-analytics-privacy-and-event-tracking/">Google Analytics, Privacy, and Event Tracking</a>.</p> + +<p>A noter qu'être dependant de l'utilisation de l'outil tiers de cette manière n'est pas une bonne pratique, car cela veut dire que votre site peut être cassé si l'outil tiers est lent ou inaccessible, ou si le tracker est bloqué par un add-on.</p> diff --git a/files/fr/mozilla/firefox/privacy/protection_du_pistage_par_rebond/index.html b/files/fr/mozilla/firefox/privacy/protection_du_pistage_par_rebond/index.html new file mode 100644 index 0000000000..1e93b3b26b --- /dev/null +++ b/files/fr/mozilla/firefox/privacy/protection_du_pistage_par_rebond/index.html @@ -0,0 +1,101 @@ +--- +title: Protection contre le pistage par redirection +slug: Mozilla/Firefox/Privacy/protection_du_pistage_par_rebond +tags: + - Firefox + - Mozilla + - Vie privée + - bounce tracking + - protection contre le pistage par redirection + - redirect tracking +translation_of: Mozilla/Firefox/Privacy/Redirect_tracking_protection +--- +<div>{{FirefoxSidebar}}</div> + +<p>Firefox 79 inclut une protection contre le pistage par redirection. Ce document décrit le fonctionnement de ces protections.</p> + +<h2 id="Définition_du_pistage_par_redirection">Définition du pistage par redirection</h2> + +<p>Le <strong>pistage par redirection</strong> est un abus de la navigation intersite dans lequel un traqueur redirige momentanément un utilisateur ou une utilisatrice vers son site web dans le but d’utiliser le stockage de première partie (<em>first-party</em>) pour suivre cet utilisateur ou cette utilisatrice à travers les sites web.</p> + +<p>Les navigations intersites sont une caractéristique essentielle du web. Une personne peut rechercher les « meilleures chaussures de course » sur un moteur de recherche, cliquer sur un résultat de recherche pour lire des critiques et enfin cliquer sur un lien pour acheter une paire de chaussures dans un magasin en ligne. Dans le passé, chacun de ces sites web pouvait intégrer des ressources provenant du même traqueur, et le traqueur pouvait utiliser ses cookies pour relier toutes ces visites de page à la même personne. Afin de protéger la vie privée des utilisateurs et utilisatrices de Firefox, la <a href="https://support.mozilla.org/kb/enhanced-tracking-protection-firefox-desktop">Protection renforcée contre le pistage</a> (ETP pour <em>Enhanced Tracking Protection</em>) empêche déjà les traqueurs d’utiliser des cookies lorsqu’ils sont intégrés dans un contexte tiers, mais leur permet toujours d’utiliser des cookies en tant que première partie, car le blocage des cookies de première partie provoque le dysfonctionnement de sites web. Le pistage par redirection en profite pour contourner le blocage des cookies de tiers.</p> + +<p>Les traqueurs de redirection fonctionnent en vous obligeant à faire une escale imperceptible et momentanée sur leur site web dans le cadre de ce voyage. Ainsi, au lieu de naviguer directement du site web de comparaison au détaillant, vous finirez par naviguer d’abord vers le traqueur de redirection plutôt que vers le commerçant. Cela signifie que le traqueur est chargé en tant que première partie. Le traqueur de redirection associe les données de pistage aux identifiants qu’il a stockés dans ses cookies de première partie et vous achemine ensuite vers le commerçant.</p> + +<h2 id="La_protection_contre_le_pistage_par_redirection_expliquée">La protection contre le pistage par redirection expliquée</h2> + +<p>Pour protéger contre le pistage par redirection, Firefox supprime périodiquement les cookies et données de site provenant des traqueurs. Nous effaçons uniquement ces données du stockage si l’utilisateur ou l’utilisatrice <a href="/docs/Mozilla/Firefox/Privacy/Storage_access_policy">bloque les cookies traqueurs</a> (c.-à-d. que la préférence <code>network.cookie.cookieBehavior</code> est réglée sur <code>4</code>). La prise en charge d’autres politiques de cookies est suivie dans le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1643045">bug 1643045</a>.</p> + +<h3 id="Quelles_origines_sont_supprimées">Quelles origines sont supprimées ?</h3> + +<p>Une origine sera supprimée si elle remplit les conditions suivantes :</p> + +<ol> + <li>Elle a stocké des cookies ou a accédé à un autre stockage de site (comme <a href="/en-US/docs/Web/API/Web_Storage_API">localStorage</a>, <a href="/en-US/docs/Web/API/IndexedDB_API">IndexedDB</a> ou <a href="/en-US/docs/Web/API/CacheStorage">Cache API</a>) dans les dernières 72 heures. Comme les cookies sont assignés par hôte, nous supprimerons les variantes d’origine <code>http</code> et <code>https</code> d’un hôte de cookies.</li> + <li>L’origine est <a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy#Tracking_protection_explained">répertoriée en tant que traqueur</a> dans la liste de notre protection contre le pistage.</li> + <li>Aucune origine disposant du même domaine de base (eTLD+1) n’a de permission d’interaction avec l’utilisateur ou l’utilisatrice. + <ul> + <li>Cette permission est accordée à une origine pour 45 jours dès qu’un utilisateur ou une utilisatrice interagit avec un document de premier niveau de cette origine. Une « interaction » peut être un défilement.</li> + <li>Bien que cette autorisation soit stockée à un niveau par origine, nous vérifierons si une origine ayant le même domaine de base l’a, pour éviter de casser les sites avec des sous-domaines et une configuration de cookies correspondante.</li> + </ul> + </li> +</ol> + +<h3 id="Quelles_données_sont_supprimées">Quelles données sont supprimées ?</h3> + +<p>Firefox supprimera les <a href="https://searchfox.org/mozilla-central/rev/622dbd3409610ad3f71b56c9a6a92da905dab0aa/toolkit/components/antitracking/PurgeTrackerService.jsm#209-225">données suivantes</a> :</p> + +<ul> + <li>les caches réseau et image</li> + <li>les cookies</li> + <li><em>AppCache</em></li> + <li><em>DOM Quota Storage</em> (<em>localStorage</em>, <em>IndexedDB</em>, <em>ServiceWorkers</em>, <em>DOM Cache</em>, etc.)</li> + <li>les notifications <em>Push</em> du DOM</li> + <li>les rapports de l’API <em>Reporting</em></li> + <li>les paramètres de sécurité (comme HSTS)</li> + <li>les données des plugins de média EME (<em>Encrypted Media Extensions</em>)</li> + <li>les données des plugins (comme Flash)</li> + <li>les appareils média</li> + <li>les permissions de <em>Storage Access</em> accordées à l’origine</li> + <li>les tokens d’authentification HTTP</li> + <li>le cache d’authentification HTTP</li> +</ul> + +<div class="blockIndicator note"> +<p><strong>Note</strong> : même si nous effaçons toutes ces données, nous ne marquons actuellement les origines pour suppression que lorsqu’elles utilisent des cookies ou d’autres moyens de stockage du site.</p> +</div> + +<p>La suppression du stockage ignore les attributs d’origine. Cela signifie que le stockage sera supprimé dans les <a href="https://wiki.mozilla.org/Security/Contextual_Identity_Project/Containers">containers</a> et le stockage isolé (comme celui de <a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/cookies#Isolement_de_la_première_partie">l</a>’<a href="/fr/docs/Mozilla/Add-ons/WebExtensions/API/cookies#Isolement_de_la_première_partie">isolement de la première partie (<em>First-Party</em>)</a>).</p> + +<h3 id="À_quelle_fréquence_les_données_sont-elles_supprimées">À quelle fréquence les données sont-elles supprimées ?</h3> + +<p>Firefox efface le stockage en fonction du déclenchement d’un événement interne appelé <code>idle-daily</code>, qui est défini par les conditions suivantes :</p> + +<ul> + <li>Il sera, au plus tôt, déclenché 24 heures après le dernier événement <code>idle-daily</code> déclenché.</li> + <li>Il sera seulement déclenché si l’utilisateur ou l’utilisatrice a été inatif·ve pour au moins 3 min (pour 24-48 h après le dernier <code>idle-daily</code>) ou 1 min (pour > 48 h après le dernier <code>idle-daily</code>).</li> +</ul> + +<p>Cela signifie qu’il y a au moins 24 heures entre chaque effacement de stockage et que le stockage sera uniquement effacé quand le navigateur est inactif. Lorsque nous supprimons des cookies, nous classons les cookies par date de création et nous les regroupons par lots de 100 (contrôlés par la préférence <code>privacy.purge_trackers.max_purge_count</code>) pour des raisons de performance.</p> + +<h2 id="Débogage">Débogage</h2> + +<p>Le pistage par redirection peut être activé et désactivé en inversant la préférence <code>privacy.purge_trackers.enabled</code> dans <code>about:config</code>. En outre, il ne fonctionnera que si la préférence <code>network.cookie.cookieBehavior</code> est réglée sur <code>4</code> ou <code>5</code> dans Firefox 79+ (<code>1</code>, <code>3</code>, <code>4</code>, ou <code>5</code> à partir de Firefox 80).</p> + +<p>Différents niveaux de journalisation peuvent être déterminés grâce à la préférence<code> privacy.purge_trackers.logging.level</code>.</p> + +<p>Pour le débogage, il est plus facile de déclencher l’effacement du stockage en déclenchant le service directement par la <a href="/en-US/docs/Tools/Browser_Console#Browser_Console_command_line">ligne de commande de la console du navigateur</a>. Remarquez que c’est différent de la <a href="/en-US/docs/Tools/Web_Console">console web</a> que vous pouvez utiliser pour déboguer un site web et cela nécessite que la préférence <code>devtools.chrome.enabled</code> soit réglée sur <code>true</code> pour l’utiliser interactivement. Une que vous avez activé la console du navigateur, vous pouvez déclencher la suppression du stockage en exécutant la commande suivante :</p> + +<pre class="brush: js notranslate">await Components.classes["@mozilla.org/purge-tracker-service;1"].getService(Components.interfaces.nsIPurgeTrackerService).purgeTrackingCookieJars()</pre> + +<p>L’intervalle de temps jusqu’à ce que les permissions d’interaction avec l’utilisateur ou l’utilisatrice expirent peut être réglé à un niveau inférieur grâce à la préférence <code>privacy.userInteraction.expiration</code>. Notez que vous aurez à régler cette préférence avant de consulter les sites que vous désirez tester – elle ne s’appliquera pas rétroactivement.</p> + +<h2 id="Autres_mises_en_œuvre">Autres mises en œuvre</h2> + +<p>WebKit a livré en premier la protection contre le pistage par redirection dans <a href="https://webkit.org/blog/8311/intelligent-tracking-prevention-2-0/">ITP 2.0</a> (ils se réfèrent à la même attaque en l’appelant pistage par rebond (<em>bounce tracking</em>)). À compter de juillet 2020, il y a plusieurs différences importantes entre la mise en œuvre dans WebKit et dans Firefox :</p> + +<ul> + <li>La liste des origines à effacer dans Firefox est basée notre <a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy#Tracking_protection_explained">liste de la protection contre le pistage</a>, alors que WebKit s’appuie sur la classification d’ITP.</li> + <li>La définition d’« interaction » de Firefox comprend le défilement contrôlé par l’utilisateur ou l’utilisatrice lors de la visite de l’origine comme première partie, alors que WebKit non.</li> + <li>Firefox ne supprimera de données pour une origine s’il a reçu une interaction comme première partie dans les 45 derniers jours calendaires. La fenêtre d’interaction de WebKit est de 30 jours d’utilisation du navigateur (p. ex. les jours au cours desquels l’utilisateur ou l’utilisatrice a eu au moins une interaction avec Safari).</li> +</ul> diff --git a/files/fr/mozilla/firefox/releases/25/index.html b/files/fr/mozilla/firefox/releases/25/index.html new file mode 100644 index 0000000000..522a634e1a --- /dev/null +++ b/files/fr/mozilla/firefox/releases/25/index.html @@ -0,0 +1,94 @@ +--- +title: Firefox 25 for developers +slug: Mozilla/Firefox/Releases/25 +tags: + - Beginner + - Firefox + - Firefox 25 + - Guide + - TopicStub +translation_of: Mozilla/Firefox/Releases/25 +--- +<div>{{FirefoxSidebar}}</div> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="Nouveau_dans_Firefox_DevTools">Nouveau dans Firefox DevTools</h3> + +<ul> + <li>L'inspecteur propose désormais la saisie semi-automatique des noms et valeurs CSS.</li> + <li>Le débogueur vous permet désormais de créer des fichiers de script "boîte noire", pour empêcher les points d'arrêt de s'arrêter dans le code de la bibliothèque que vous n'êtes pas intéressé par le débogage.</li> + <li>Le profileur a désormais la possibilité d'enregistrer et d'importer les résultats du profilage. "Afficher les données de la plateforme Gecko" est désormais une option dans les options des outils de développement Firefox.</li> + <li>Le panneau Réseau dispose d'un menu contextuel accessible par clic droit, avec des commandes de copie et de renvoi d'URL.</li> + <li>De nombreux changements sous le capot peuvent rendre nécessaire une réécriture pour les addons qui modifient les DevTools.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>La prise en charge du mot clé <code>local</code> en tant que valeur de la propriété CSS {{cssxref("background-attachment")}} a été ajoutée ({{bug("483446")}}).</li> + <li>La prise en charge d'une requête multimédia non standard de Mozilla uniquement pour déterminer la version du système d'exploitation a été ajoutée: <code><a href="/en-US/docs/Web/Guide/CSS/Media_queries#-moz-os-version" title="/en-US/docs/Web/Guide/CSS/Media_queries#-moz-os-version">-moz-os-version</a></code> ({{bug("810399")}}). <span class="tlid-translation translation" lang="fr"><span title="">La propriété n'est actuellement implémentée que sur Windows.</span></span></li> + <li>La propriété CSS {{cssxref("-moz-osx-font-smoothing")}} a été ajoutée ({{bug("857142")}}).</li> + <li>Notre support expérimental pour {{cssxref("filter")}} prend désormais en charge la notation fonctionnelle <code>hue-rotate()</code> ({{bug(897392)}}). Il est toujours désactivé par défaut.</li> + <li> + <p><code>page-break-inside</code><code>: avoid</code> travaille maintenant avec la hauteur d'un bloc ({{bug(883676)}}).</p> + </li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>L'attribut {{htmlattrxref("srcdoc", "iframe")}}, permettant la spécification en ligne du contenu d'un {{HTMLElement("iframe")}}, est maintenant pris en charge ({{bug("802895")}}).</li> + <li>Lorsqu'elle est utilisée avec un type <code>"image/jpeg"</code>, la méthode <code>HTMLCanvasElement.toBlob</code> accepte désormais un troisième attribut définissant la qualité de l'image ({{bug("891884")}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<p>L'implémentation d'<a href="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla" title="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla">EcmaScript 6</a> (Harmony) continue!</p> + +<ul> + <li>La méthode {{jsxref("Array.of()")}} est maintenant implémentée sur <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array">Array</a></code> ({{bug("866849")}}).</li> + <li>Le support des méthodes {{jsxref("Array.prototype.find()")}} et {{jsxref("Array.prototype.findIndex()")}} a été ajouté ({{bug("885553")}}).</li> + <li>Les méthodes {{jsxref("Global_Objects/Number/parseInt", "Number.parseInt()")}} et {{jsxref("Global_Objects/Number/parseFloat", "Number.parseFloat()")}} ont été implémentées ({{bug("886949")}}).</li> + <li>Les méthodes {{jsxref("Map.prototype.forEach()")}} et {{jsxref("Set.prototype.forEach()")}} sont maintenant implémentées ({{bug("866847")}}).</li> + <li>De nouvelles méthodes mathématiques ont été implémentées sur <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math"><code>Math</code></a>: <code>Math.log10()</code>, <code>Math.log2()</code>, <code>Math.log1p()</code>, <code>Math.expm1()</code>, <code>Math.cosh()</code>, <code>Math.sinh()</code>, <code>Math.tanh()</code>, <code>Math.acosh()</code>, <code>Math.asinh()</code>, <code>Math.atanh()</code>, <code>Math.trunc()</code>, <code>Math.sign()</code> et <code>Math.cbrt()</code> ({{bug("717379")}}).</li> + <li>La prise en charge des littéraux d'entiers binaires et octaux a été ajoutée: <code>0b10101010</code>, <code>0B1010</code>, <code>0o777</code>, <code>0O237</code> sont désormais valides ({{bug("894026")}}).</li> + <li>La constante epsilon de la machine, c'est-à-dire le plus petit nombre représentable qui ajouté à 1 ne sera pas 1<font>,</font> est désormais disponible sous la forme {{jsxref("Global_Objects/Number/EPSILON", "Number.EPSILON")}} ({{bug("885798")}}).</li> + <li>Les <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray">tableaux typés</a> ont été mis à jour pour <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Indexed_property_access">ne plus rechercher dans la chaîne de prototypes les propriétés indexées</a> ({{bug("829896")}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>L'<a href="/en-US/docs/Web_Audio_API" title="/en-US/docs/Web_Audio_API">API Web Audio</a> est désormais prise en charge. Une implémentation incomplète était auparavant disponible derrière une péférence ({{bug("779297")}}).</li> + <li>Certaines clés liées à IME sous Windows sont prises en charge par <code>KeyboardEvent.key</code> ({{bug("865565")}}), voir <a href="/en-US/docs/Web/API/KeyboardEvent#keyname_table_win" title="/en-US/docs/Web/API/KeyboardEvent#keyname_table_win">le tableau des noms de clé</a> pour plus de détails.</li> + <li>Firefox pour Metro distribue désormais les événements clés de la même manière que la version bureau ({{bug("843236")}}).</li> + <li>L'événement <code>keypress</code> n'est plus distribué si <code>preventDefault()</code> de l'événement <code>keydown</code> précédnt est appelé ({{bug("501496")}}), voir <a href="/en-US/docs/Web/Reference/Events/keydown#preventDefault()_of_keydown_event" title="/en-US/docs/Web/Reference/Events/keydown#preventDefault()_of_keydown_event">le document de l'événement <code>keydown</code></a> pour plus de détails.</li> + <li>L'interface <code>Future</code> a été renommée <code>Promise</code> ({{bug("884279")}}).</li> + <li>La propriété <code>srcDoc</code> sur l'interface {{domxref("HTMLIFrameElement")}}, permettant la spécification en ligne du contenu d'un {{HTMLElement("iframe")}}, est désormais prise en charge ({{bug("802895")}}).</li> + <li>La méthode <code>createTBody()</code> sur l'interface {{domxref("HTMLTableElement")}}, permettant d'obtenir son {{HTMLElement("tbody")}}, est désormais supportée ({{bug("813034")}}).</li> + <li>Le paramètre <code>toStart</code> de la méthode {{domxref("Range.collapse()")}} est maintenant facultatif et par défaut à <code>false</code>, comme défini dans la spécification ({{bug("891340")}}).</li> + <li>La prise en charge de l'interface {{domxref("ParentNode")}} sur {{domxref("Document")}} et {{domxref("DocumentFragment")}} a été ajoutée ({{bug("895974")}}).</li> + <li>Le <code>previousElementSibling</code> et le <code>nextElementSibling</code> ont été déplacés vers {{domxref("ChildNode")}} leur permettant d'être appelés non seulement sur un objet {{domxref("Element")}} mais aussi sur un {{domxref("CharacterData")}} ou {{domxref("DocumentType")}} ({{bug("895974")}}).</li> + <li>La propriété <code>navigator.geolocation</code> a été mise à jour pour correspondre à la spécification. Il ne renvoie jamais <code>null</code>. Lorsque la préférence <code>geo.enabled</code> est définie sur <code>false</code>, elle renvoie désormais <code>undefined</code> ({{bug("884921")}}).</li> + <li>L'attribut <code>videoPlaybackQuality</code> sur l'interface {{domxref("HTMLVideoElement")}} a été remplacé par la méthode <code>getVideoPlaybackQuality</code> ({{bug(889205)}}).</li> + <li>L'interface non standard de <code>GlobalObjectConstructor</code> a été supprimée ({{bug(898136)}}). Cette interface a été utilisée pour ajouter des arguments aux constructeursd'APIs que les <a href="/en-US/Add-ons">add-ons</a> de Firefox exposaient sur l'objet global. Cette capacité a été supprimée; Notez qu'à l'heure actuelle, il n'y a pas de remplacement pour cette fonctionnalité.</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="SVG">SVG</h3> + +<p><em>Pas de changement.</em></p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/25/">Compatibilité du Site pour Firefox 25</a></li> +</ul> + +<h3 id="Versions_plus_anciennes">Versions plus anciennes</h3> + +<p>{{Firefox_for_developers('24')}}</p> diff --git a/files/fr/mozilla/firefox/releases/25/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/25/site_compatibility/index.html new file mode 100644 index 0000000000..e748c19a4e --- /dev/null +++ b/files/fr/mozilla/firefox/releases/25/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 25 +slug: Mozilla/Firefox/Releases/25/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 25 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/25/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/25/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/releases/26/index.html b/files/fr/mozilla/firefox/releases/26/index.html new file mode 100644 index 0000000000..2abc7f2fe7 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/26/index.html @@ -0,0 +1,94 @@ +--- +title: Firefox 26 for developers +slug: Mozilla/Firefox/Releases/26 +tags: + - Firefox + - TopicStub +translation_of: Mozilla/Firefox/Releases/26 +--- +<div>{{FirefoxSidebar}}</div> + +<p>Firefox 26 est sorti le 10 Décembre 2013. Cet article répertorie les modifications clés qui sont utiles non seulement pour les développeurs Web, mais également pour les développeurs Firefox et Gecko ainsi que pour les développeurs de modules complémentaires.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>La propriété {{cssxref("text-decoration-line")}}, toujours préfixée, considère désormais <code>'blink'</code> comme une valeur valide, bien qu'elle ne fasse pas du tout clignoter le contenu ({{bug("812995")}}).</li> + <li>La propriété <code>non standard</code> {{cssxref("-moz-text-blink")}} a été supprimée ({{bug("812995")}}).</li> + <li>Le support de la propriété {{cssxref("image-orientation")}}, dans sa version CSS Images & Values Level 4, c'est-à-dire avec le mot clé <code>from-image</code> et le support EXIF, a été ajouté ({{bug(825771)}}).</li> + <li>Le support expérimental <code>position: sticky</code> a été implémenté et peut être activé par pref <code>layout.css.sticky.enabled</code> ({{bug(886646)}}).</li> + <li>La propriété {{cssxref("text-align")}} s'applique désormais au pseudo-élément {{cssxref("::-moz-placeholder")}} ({{bug(915551)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>La proprété <code>HTMLSelectElement.selectedOptions</code> a été implémentée ({{bug("596681")}}).</li> + <li>Dans l'élément {{HTMLElement("input")}} de type <code>email</code>, les valeurs avec des étiquettes de domaine de plus de 63 caractères ne sont plus considérées comme valides ({{bug("884332")}}).</li> + <li>Les propriétés <code>HTMLInputElement.width</code> et <code>height</code> renvoient désormais <code>0</code> lorsque le <code>type</code> n'est pas <code>image</code> ({{bug("905240")}}).</li> + <li>Un élément {{HTMLElement("fieldset")}} est désormais invalide, et peut être stylisé en utilisant la pseudo-classe {{cssxref(":invalid")}}, quand l'un des éléments qu'il contient est invalide ({{bug("717181")}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<p>L'implémentation d'<a href="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla" title="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla">EcmaScript 6</a> se poursuit!</p> + +<ul> + <li>La syntaxe conforme à ECMAScript 6 pour les <a href="http://wiki.ecmascript.org/doku.php?id=harmony:generators">Générateurs (yield)</a> a été implémentée ({{bug("666399")}}).</li> + <li>Les résultats du générateur / itérateur sont maintenant encadrés comme <code>{ value: foo, done: bool }</code> ({{bug(907744)}}).</li> + <li>De nouvelles méthodes mathématiques ont été implémentées sur <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math"><code>Math</code></a>: <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Math/fround" title="/en-US/docs/JavaScript/Reference/Global_Objects/Math/fround"><code>Math.fround()</code></a> ({{bug("900125")}}).</li> + <li>Les <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Reserved_Words">mots réservés</a> ne peuvent pas être utilisés pour les noms de fonctions: une telle utilisation lève désormis une <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError"><code>SyntaxError</code></a> ({{bug("907958")}}).</li> + <li>La syntaxe des <a href="/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters">paramètres par défaut</a> a été mise à jour pour autoriser les paramètres sans valeurs par défaut après les paramètres par défaut, tels que la <span id="summary_alias_container"><span id="short_desc_nonedit_display"><code><span id="summary_alias_container"><span id="short_desc_nonedit_display">function f(x=1, y)</span></span></code></span></span>. See {{bug(777060)}}.</li> + <li>{{jsxref("Global_Objects/GeneratorFunction", "GeneratorFunction")}} est implémenté ({{bug(904701)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>Rendez le dernier argument (doctype) de {{domxref("DOMImplementation.createDocument")}} facultatif ({{bug(909859)}}).</li> + <li>Implémentez la nouvelle spécification {{domxref("element.classList")}} qui permet d'ajouter / supprimer plusieurs classes en un seul appel ({{bug(814014)}}).</li> + <li>Le constructeur {{domxref("URL.URL", "URL()")}} a été implémenté sur l'interface {{domxref("URL")}} ({{bug("887364")}}).</li> + <li>Les propriétés {{domxref("URLUtils.origin")}}, {{domxref("URLUtils.password")}}, et {{domxref("URLUtils.username")}} sont désormais disponibles pour toutes les interfaces implémentant {{domxref("URLUtils")}}: {{domxref("URL")}}, {{domxref("Location")}}, {{domxref("HTMLAnchorElement")}}, et {{domxref("HTMLAreaElement")}} ({{bug("887364")}}).</li> + <li>L'interface {{domxref("URL")}} est désormais accessible depuis Web Workers ({{bug("887364")}}).</li> + <li>IndexedDB peut maintenant être utilisé comme une zone de stockage "optimiste" donc il ne nécessite aucune invite et les données sont stockées dans un pool avec une politique d'éviction LRU, dans un court stockage temporaire ({{bug("785884")}}).</li> + <li>Le support de {{domxref("WaveShaperNode.oversample")}} a été ajouté ({{bug(875277)}}).</li> + <li>Le chemin du stockage persistant a été changé de <code><profile>/indexedDB</code> à <code><profile>/storage/persistent</code> (sur b2g de <code>/data/local/indexedDB</code> à <code>/data/local/storage/persistent</code>).</li> + <li>La propriété {{domxref("Screen.orientation")}} et la méthode {{domxref("Screen.lockOrientation()")}} prennent désormais en charge la valeur <code>default</code>, mappant sur <code>portrait-primary</code> ou <code>landscape-primary</code>, selon l'appareil ({{bug(908058)}}). Cela ne fonctionne que pour Firefox OS et Firefox pour Android. Firefox Desktop n'est pas pris en charge.</li> + <li>Les constructeurs {{domxref("Event")}} peuvent être utilisés dans les Web workers ({{bug(910910)}}).</li> + <li>Tenter de définir la propriété {{domxref("Document.domain")}} sur une page intégrée dans un {{HTMLElement("iframe")}} avec l'attribut <code>sandbox</code> génère maintenant une erreur de sécurité ({{bug(907892)}}).</li> + <li>L'interface {{domxref("MessageEvent")}} a été mise à jour pour se conformer à la dernière spécification. La méthode <code>initMessageEvent</code> a été supprimée alors que l'interface a maintenant un constructeur ({{bug(848294)}}).</li> + <li>L'API HTML5 <code>MessageChannel</code> a été implémentée, derrière la préférence <code>dom.messageChannel.enabled</code> ({{bug("677638")}}).</li> + <li>Le support pour <code>VTTCue</code>, derrière la préférence <code>media.webvtt.enabled</code>, comme pour toutes les implémentations liées à WebVTT, a été ajouté ({{bug("868509")}}).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>Les rendus incohérents de {{MathMLElement("mmultiscripts")}}, {{MathMLElement("msub")}}, {{MathMLElement("msup")}} et {{MathMLElement("msubsup")}} ont été unifiés et la gestion des erreurs de ces éléments a été améliorée ({{bug("827713")}}).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>L'inclusion de glyphes SVG dans OpenType, <em>SVG-in-OpenType</em>, a été mise à jour pour correspondre à la version actuelle de la spécification ({{bug("906521")}}).</li> + <li>La méthode <span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>SVGElement.ownerSVGElement()</code> ne lance plus ({{bug("835048")}}).</span></span></li> +</ul> + +<h2 id="Outils_de_développement">Outils de développement</h2> + +<ul> + <li>L'Inspector est désormais accessible à distance ({{bug(805526)}}).</li> + <li>Le texte de la console Web peut être sélectionné, {{cssxref("::before")}} et {{cssxref("::after")}} maintenant inspectables, des fonctionnalités de débogage et de conception réactive sont prévues pour cette version. (<a href="https://hacks.mozilla.org/2013/09/new-features-in-the-firefox-developer-tools-episode-26/">https://hacks.mozilla.org/2013/09/new-features-in-the-firefox-developer-tools-episode-26/</a>)</li> +</ul> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/26/">Compatibilité du site pour Firefox 26</a></li> +</ul> + +<h3 id="Versions_plus_anciennes">Versions plus anciennes</h3> + +<p>{{Firefox_for_developers('25')}}</p> diff --git a/files/fr/mozilla/firefox/releases/26/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/26/site_compatibility/index.html new file mode 100644 index 0000000000..c594903c95 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/26/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 26 +slug: Mozilla/Firefox/Releases/26/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 26 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/26/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/26/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/releases/27/index.html b/files/fr/mozilla/firefox/releases/27/index.html new file mode 100644 index 0000000000..160bf931c6 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/27/index.html @@ -0,0 +1,113 @@ +--- +title: Firefox 27 for developers +slug: Mozilla/Firefox/Releases/27 +tags: + - Firefox + - TopicStub +translation_of: Mozilla/Firefox/Releases/27 +--- +<div>{{FirefoxSidebar}}</div> + +<p>Firefox 27 est sorti le 4 Février 2014. Cet article répertorie les modofications clés qui sont utiles non seulement pour les développeurs Web, mais aussi pour les développeurs Firefox et Gecko ainsi que pour les développeurs d'add-on.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<ul> + <li>Les points d'arrêt peuvent désormais être définis sur les événements DOM.</li> + <li>JavaScript dans le panneau du débogueur peut être supprimé à l'aide du bouton { }.</li> + <li>L'inspecteur a maintenant une fonction "edit-element-html", sans avoir besoin d'un add-on.</li> + <li>Les URL et les couleurs d'arrière-plan ont un aperçu dans l'inspecteur. Même le survol des éléments du canevas donnera une fenêtre contextuelle avec un aperçu de l'image.</li> + <li>La journalisation de redistribution a été ajoutée.</li> + <li>Les styles des éléments SVG sont désormais inspectables ({{Bug(921191)}}).</li> + <li>Le fait de ne pas trouver l'image en cliquant sur le lien URL dans l'inspecteur CSS a été corrigé ({{Bug(921686)}}).</li> +</ul> + +<p>Plus de détails dans <a href="https://hacks.mozilla.org/2013/11/firefox-developer-tools-episode-27-edit-as-html-codemirror-more/">cet article</a>.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Les mots-clés <code>-moz-grab</code> et <code>-moz-grabbing</code> de la propriété CSS {{cssxref("cursor")}} n'ont pas été préfixés pour <code>grab</code> et <code>grabbing</code> ({{bug("880672")}}).</li> + <li>Le support des notations fonctionnelles <code>-moz-hsla()</code> et <code>-moz-rgba()</code> a été abandonné. Seules les versions sans préfixe, <code>hsla()</code> et <code>rgba()</code> sont désormais supportées ({{bug("893319")}}).</li> + <li>La valeur "<code>true</code>" pour {{cssxref("text-align")}} a été ajoutée ({{bug(929991)}}).</li> + <li>Support expérimental de la <code>position:sticky</code> est désormais actif par défaut sur les builds non-release ({{bug("902992")}}). Pour les versions builds, la préférence <code>layout.css.sticky.enabled</code> doit toujours être définie sur <code>true.</code></li> + <li>La propriété abrégée {{cssxref("all")}} a été ajoutée ({{bug(842329)}}).</li> + <li>La valeur globale {{cssxref("unset")}} a été ajoutée; il permet de réinitialiser n'importe quelle propriété CSS ({{bug(921731)}}).</li> + <li>Les accolades ne sont plus autorisées dans les attributs de <code>style</code> HTML: faire <code><div style="{ display: none }"></code> fonctionnait en mode bizarreries, mais ne le sera plus {{bug(915053)}}.</li> + <li>La propriété {{cssxref("overflow")}} fonctionne désormais sur {{HTMLElement("fieldset")}} ({{bug(261037)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>La valeur <code>color</code> de l'attribut {{HTMLElement("input")}} {{htmlattrxref("type", "input")}} a été implémentée sur les plates-formes de bureau. Il était déjà disponible sur les mobiles.</li> + <li>La directive <code>allow-popups</code> est désormais prise en charge avec l'attribut {{htmlattrxref("sandbox", "iframe")}} de l'élément {{HTMLElement("iframe")}} ({{bug(766282)}}).</li> + <li>Le mélange d'éléments HTML à l'aide de la propriété {{cssxref("mix-blend-mode")}} a été implémenté. La préférence <code>layout.css.mix-blend-mode.enabled</code> doit être définie sur <code>true</code> ({{bug(902525)}}).</li> + <li>L'attribut {{htmlattrxref("typemustmatch", "object")}} de l'élément {{HTMLElement("object")}} est désormais pris en charge ({{bug(827160)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<p>L'implémentation d'<a href="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla" title="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla">EcmaScript 6</a> (Harmony) se poursuit!</p> + +<ul> + <li>L'<a href="/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator">opérateur de diffusion</a> est désormais pris en charge dans les appels de fonction ({{bug("762363")}}).</li> + <li>La fonction mathématique {{jsxref("Global_Objects/Math/hypot", "Math.hypot()")}} a été implémentée ({{bug("896264")}}).</li> + <li>L'expression {{jsxref("Operators/yield*", "yield*")}} est maintenant implémentée ({{bug(666396)}}).</li> + <li>Les objets <code>MapIterator</code>, <code>SetIterator</code> et <code>ArrayIterator</code> correspondent désormais à la spécification ({{bug("881226")}}).</li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...of">for..of</a> boucles s'attendent maintenant à ce que le <a href="/en-US/docs/Web/JavaScript/Guide/The_Iterator_protocol">protocole d'itérateur</a> standard ES6 s'éloigne de l'ancien protocole d'itérateur de SpiderMonkey utilisant <code>StopIteration</code>.</li> + <li>{{jsxref("String.match")}} et {{jsxref("String.replace")}} sont maintenant réinitialisés {{jsxref("RegExp.lastIndex")}} ({{bug(501739)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>Le support des deux méthodes <code>setRange()</code> sur l'interface {{domxref("HTMLInputElement")}} a été ajouté ({{bug(850364)}}).</li> + <li>Le support des deux méthodes <code>setRange()</code> sur l'interface {{domxref("HTMLTextAreaElement")}} a été ajouté ({{bug(918940)}}).</li> + <li>Les méthodes <code>getAllKeys()</code> et <code>openKeyCursor()</code> ont été ajoutées à {{domxref("IDBObjectStore")}} ({{bug(920633)}} et {{bug(920800)}}).</li> + <li>L'interface {{domxref("HTMLFormControlsCollection")}} a été implémentée ({{bug(913920)}}).</li> + <li>L'interface {{domxref("CanvasRenderingContext2D")}} prend désormais en charge les deux méthodes {{domxref("CanvasRenderingContext2D.getLineDash()", "getLineDash()")}} et {{domxref("CanvasRenderingContext2D.setLineDash()", "setLineDash()")}} et la propriété {{domxref("CanvasRenderingContext2D.lineDashOffset", "lineDashOffset")}} ({{bug(768067)}}).</li> + <li>L'attribut <code>typeMustMatch</code> a été implémenté sur l'interface {{domxref("HTMLObjectElement")}} ({{bug(827160)}}).</li> + <li>Les méthodes <code>copyFromChannel()</code> et <code>copyToChannel()</code> ont été ajoutées à {{domxref("AudioBuffer")}} ({{bug(915524)}}).</li> + <li><code>Event.isTrusted()</code> est désormais infalsifiable ({{bug(637248)}}).</li> + <li>La méthode {{domxref("Navigator.vibrate()")}} a été adaptée pour correspondre à la spécification finale: elle retourne désormais <code>false</code> lorsque la liste est trop longue ou contient des entrées trop volumineuses, au lieu de lancer ({{bug(884935)}}).</li> + <li>Dans le cadre de l'effort continu de normalisation des objets globaux, les interfaces d'événment de changement de feuille de style non standard, notamment <code>StyleRuleChangeEvent</code>, <code>StyleSheetApplicableStateChangeEvent</code> et <code>StyleSheetChangeEvent</code>, ne sont plus disponibles à partir du contenu Web. L'interface <code>CSSGroupRuleRuleList</code>, le détail d'implémentation de {{domxref("CSSRuleList")}}, a également été supprimée ({{Bug("872934")}} et {{bug(916871)}}).</li> + <li><code>atob</code> ignore désormais les espaces ({{bug(711180)}}).</li> + <li><a href="/en-US/docs/Web/WebGL">WebGL</a>: les chaînes d'extension avec préfixe <code>MOZ_</code> sont obsolètes. Le support pour eux sera supprimé à l'avenir. Utilisez uniquement une chaîne d'extension sans préfixe. Pour obtenir des brouillons d'extensions, définissez les préférences <code>webgl.enable-draft-extensions</code> ({{bug(924176)}}).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>Le mélange d'éléments SVG à l'aide de la propriété {{cssxref("mix-blend-mode")}} a été implémenté. La préférence <code>layout.css.mix-blend-mode.enabled</code> doit être définie sur <code>true</code> ({{bug(902525)}}).</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_daddon_et_de_Mozilla">Changements pour les développeurs d'addon et de Mozilla</h2> + +<ul> + <li>Le bouton <code>downloads-indicator</code> a disparu. Vous devez maintenant utiliser l'élément <code>downloads-button</code>. Si vous devez vérifier qu'il a chargé sa superposition, recherchez l'attribut <code>indicator</code> sur ce bouton.</li> + <li>La feuille de style <code>chrome://browser/skin/downloads/indicator.css</code> n'est plus référencée dans Firefox.</li> +</ul> + +<h2 id="Sécurité">Sécurité</h2> + +<ul> + <li>TLS 1.2 a été implémenté pour une sécurité améliorée ({{Bug(861266)}}).</li> +</ul> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/27/">Compatibilité du site pour Firefox 27</a></li> + <li><a href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&component=Marionette&product=Testing&target_milestone=mozilla27">Liste des changements</a> dans <a href="/en-US/docs/Mozilla/QA/Marionette">Marionette</a> pour Firefox 27.</li> +</ul> + +<h3 id="Anciennes_versions">Anciennes versions</h3> + +<p>{{Firefox_for_developers('26')}}</p> diff --git a/files/fr/mozilla/firefox/releases/27/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/27/site_compatibility/index.html new file mode 100644 index 0000000000..c627a2ca32 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/27/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 27 +slug: Mozilla/Firefox/Releases/27/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 27 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/27/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/27/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/releases/28/index.html b/files/fr/mozilla/firefox/releases/28/index.html new file mode 100644 index 0000000000..b485bd8958 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/28/index.html @@ -0,0 +1,121 @@ +--- +title: Firefox 28 for developers +slug: Mozilla/Firefox/Releases/28 +tags: + - Compatibility + - Firefox + - Mozilla + - TopicStub +translation_of: Mozilla/Firefox/Releases/28 +--- +<div>{{FirefoxSidebar}}</div> + +<p>Firefox 28 est sorti le 18 Mars 2014. Cet article répertorie les modifications clés qui sont utiles non seulement pour les développeurs Web, mais aussi pour les développeurs Firefox et Gecko ainsi que pour les développeurs d'add-ons.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<ul> + <li>La propriété {{domxref("console.exception")}} a été ajoutée ({{bug("922214")}}).</li> + <li>La propriété {{domxref("console.assert")}} a été ajoutée ({{bug("760193")}}).</li> + <li>Gestionnaire d'applications: un nouvel éditeur de manifeste a été ajouté.</li> + <li>Gestionnaire d'applications: la boîte à outils utilisée pour le débogage des applications est désormais intégrée dans l'interface utilisateur du gestionnaire d'applications.</li> + <li>Console Web: ajout d'un mode "console partagée" - appuyez sur Echap pour ouvrir rapidement la console dans n'importe quel autre outil.</li> + <li>Console Web: ajout d'un thème sombre pour la sortie.</li> + <li>Débogueur: JavaScript minifié pretty-print.</li> + <li>Débogueur: survolez simplement n'importe quelle variable ou cliquez dessus pour faire apparaître une fenêtre contextuelle qui affiche la valeur actuelle.</li> + <li>Inspecteur: ajout d'un sélecteur de couleur dans la vue des règles et de diverses info-bulles.</li> + <li>Browser Toolbox: permet aux développeurs d'add-on et de plates-formes d'utiliser presque tous les outils de développement tout en ciblant le navigateur lui-même.</li> +</ul> + +<p>Plus de détails dans <a href="https://hacks.mozilla.org/2013/12/split-console-pretty-print-minified-js-and-more-firefox-developer-tools-episode-28/" title="Split console, pretty-print minified JS and more – Firefox Developer Tools Episode 28">cet article</a>.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Le support de la <a href="/en-US/docs/Web/Guide/CSS/Flexible_boxes">flexbox</a> multi-lignes a été ajouté ({{bug("939901")}}).</li> + <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Les <a href="/en-US/docs/Web/CSS/list-style-type">styles de compteur</a></span></span> Longhand East Asian ont été implémentés ({{bug("934072")}}).</li> + <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">La prise en charge expérimentale de la propriété {{cssxref("background-blend-mode")}} a été ajoutée, mais elle est désactivée par défaut</span></span> ({{bug("841601")}}).</li> + <li>La valeur <code>none</code> a été ajoutée à {{cssxref("font-variant-ligatures")}} ({{bug("913264")}}).</li> + <li>Le support de la pseudo-classe d'action utilisateur {{cssxref(":hover")}} sur les pseudo-éléments a été implémenté ({{bug("922669")}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li><code><input type=color></code> et <code><input type=number></code> ont été implémentés, désactivés par défaut.</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla" title="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla">ECMAScript 6</a> (Harmony) l'implémentation continue: + + <ul> + <li>De nouvelles méthodes <code>Array</code> ont été implémentées: {{jsxref("Array.prototype.entries()")}} et {{jsxref("Array.prototype.keys()")}} ({{bug("894658")}}).</li> + </ul> + </li> + <li>Un bug provoquant que {{jsxref("Object.getOwnPropertyNames()")}} ne voyait pas les propriétés non résolues des objets {{jsxref("Error")}} a été corrigé ({{bug("724768")}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li><span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>HTMLVideoElement.canPlayType('video/webm')</code> signale maintenant <code>maybe</code>.</span></span> ({{bug("884275")}}).</li> + <li>La méthode {{domxref("DocumentFragment.getElementById()")}} a été implémentée. Par exemple <code>document.createDocumentFragment().getElementById()</code> ({{bug("933193")}}).</li> + <li>L'attribut {{domxref("KeyboardEvent.repeat")}} a été implémenté ({{bug("600117")}}).</li> + <li>Le constructeur {{domxref("File")}}, par exemple <code>new File(["foo"], "foo.txt")</code> a été implémenté ({{bug("819900")}}).</li> + <li>Le {{domxref("NavigatorPlugins.plugins", "navigator.plugins")}} n'est plus énumérable, pour des raisons de confidentialité ({{bug(757726)}}).</li> + <li>Les deux attributs {{domxref("Window.screenX")}} et {{domxref("Window.screenY")}} renvoient désormais des pixels CSS (et plus de pixels de périphérique) ({{bug(943668)}}).</li> + <li>Les deux méthodes {{domxref("CanvasRenderingContext2D.drawSystemFocusRing()")}} et {{domxref("CanvasRenderingContext2D.drawCustomFocusRing()")}} ont été implémentées. La préférence <code>canvas.focusring.enabled</code> doit être définié sur <code>true</code> pour activer les deux ({{bug(540456)}}).</li> + <li>L'attribut de contexte <code>willReadFrequently</code> pour les contextes de canevas "<code>2d</code>" a été implémenté (voir {{domxref("HTMLCanvasElement.getContext()")}}) ({{bug(884226)}}).</li> + <li>Les attributs et méthodes suivants de {{domxref("NavigatorID")}} ont été implémentés sur {{domxref("WorkerNavigator")}} pour permettre leur utilisation dans les workers: {{domxref("NavigatorID.appCodeName", "appCodeName")}}, {{domxref("NavigatorID.product", "product")}}, et {{domxref("NavigatorID.taintEnabled", "taintEnabled()")}} ({{bug(925847)}}).</li> + <li>Les propriétés {{domxref("NonDocumentTypeChildNode.previousElementSibling" , "previousElementSibling")}} et {domxref("NonDocumentTypeChildNode.nextElementSibling" , "nextElementSibling")}} ont été supprimées de {{domxref("DocumentType")}}, pour des problèmes de compatibilité ({{bug(932501)}}).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>Le support de l'attribut<span id="summary_alias_container"><span id="short_desc_nonedit_display"> </span></span><code>mathvariant</code> a été ajouté ({{bug("114365")}}).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="AudioVidéo">Audio/Vidéo</h3> + +<ul> + <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Opus dans WebM</span></span> est désormais supporté ({{bug("887978")}}).</li> + <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Le décodeur vidéo VP9 est désormais pris en charge</span></span> ({{bug("833023")}}).</li> +</ul> + +<h3 id="Réseau">Réseau</h3> + +<ul> + <li>La prise en charge de <code>SPDY/2</code> a été supprimée.</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_dadd-ons_et_de_Mozilla">Changements pour les développeurs d'add-ons et de Mozilla</h2> + +<ul> + <li>L'interface de <a href="/en-US/docs/Mozilla/JavaScript_code_modules/DeferredTask.jsm">DeferredTask.jsm</a> a été modifiée et les méthodes <code>isPending()</code>, <code>start()</code>, <code>flush()</code>, et <code>cancel()</code> ont été supprimées ({{bug("940408")}}).</li> +</ul> + +<h2 id="Sécurité">Sécurité</h2> + +<ul> + <li>Le CSP n'était pas appliqué dans les iframes en bac à sable. Cela a été corrigé ({{bug(886164)}}).</li> + <li>La directive expérimentale <code>script-nonce</code> du CSP 1.1 a été implémentée. La préférence <code>security.csp.experimentalEnabled</code> doit être définie sur <code>true</code> pour activer cette fonctionnalité ({{bug(855326)}}).</li> +</ul> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/28/">Compatibilité du site pour Firefox 28</a></li> +</ul> + +<h3 id="Anciennes_versions">Anciennes versions</h3> + +<p>{{Firefox_for_developers('27')}}</p> diff --git a/files/fr/mozilla/firefox/releases/28/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/28/site_compatibility/index.html new file mode 100644 index 0000000000..3abfe388b7 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/28/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 28 +slug: Mozilla/Firefox/Releases/28/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 28 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/28/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/28/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/releases/29/index.html b/files/fr/mozilla/firefox/releases/29/index.html new file mode 100644 index 0000000000..9b593c405d --- /dev/null +++ b/files/fr/mozilla/firefox/releases/29/index.html @@ -0,0 +1,137 @@ +--- +title: Firefox 29 pour les développeurs +slug: Mozilla/Firefox/Releases/29 +tags: + - TopicStub + - firefox developers + - firefox29 +translation_of: Mozilla/Firefox/Releases/29 +--- +<div>{{FirefoxSidebar}}</div> + +<p>Firefox 29 est sorti le 29 Avril, 2014. Cet article répertorie les modifications clés qui sont utiles non seulement pour les développeurs Web, mais aussi pour es développeurs Firefox et Gecko ainsi que pour les développeurs d'add-on.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<p>Les principaux changements comprennent:</p> + +<ul> + <li>Console web largement améliorée - Les tableaux sont affichés en lgne sans cliquer pour faire apparaître l'inspecteur de droite, les objets de fenêtre affichent leur URL, etc.</li> + <li>Ajout de l'<a href="https://developer.mozilla.org/docs/Web/API/console">API console</a> aux Web Workers (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=620935">bug 620935</a>). Vous pouvez désormais consigner les messages dans la console Web à partir de Web Workers.</li> + <li>L'outil <a href="/fr/docs/Outils/Moniteur_réseau">Moniteur réseau</a> affiche désormais des statistiques de performances à l'aide de graphiques à secteurs ({{bug(846601)}}).</li> + <li>Sur l'<a href="/fr/docs/Outils/Inspecteur">inspecteur</a>, des info-bulles d'aperçu des transformations CSS sont désormais disponibles ({{bug(726427)}}).</li> + <li>Les éléments DOM vus dans le débogueur et la console peuvent être supprimés ou inspectés directement, via les nouveaux boutons à droite de la liste des variables.</li> + <li>Une carte source CSS est désormais prise en charge par l'<a href="/fr/docs/Outils/Éditeur_de_style">éditeur de style</a> ({{bug(926014)}}).</li> + <li>L'Autocompletion des propriétés et valeurs CSS a été ajoutée à l'<a href="/fr/docs/Outils/Éditeur_de_style">éditeur de style</a> ({{bug(717369)}}).</li> +</ul> + +<p><em>Consultez l'<a href="https://hacks.mozilla.org/2014/02/css-source-map-support-network-performance-analysis-more-firefox-developer-tools-episode-29/" title="CSS source map support, network performance analysis & more – Firefox Developer Tools Episode 29 ✩ Mozilla Hacks – the Web developer blog">article du blog Mozilla Hacks</a> pour plus de détails et d'autres changements mineurs.</em></p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Des <a href="/fr/docs/Web/CSS/Using_CSS_custom_properties">variables CSS</a> ont été implémentées ({{bug("773296")}}). L'article Mozilla Hacks peut être trouvé <a href="https://hacks.mozilla.org/2013/12/css-variables-in-firefox-nightly/">ici</a>. Ils sont activés par défaut uniquement pour les versions non publiées (sur les versions publiées, retournez le pref <code>layout.css.variables.enabled</code> à <code>true</code> si vous voulez jouer avec).</li> + <li>Les Flexbox prennent désormais en charge {{cssxref("visibility")}}<code>: collapse</code> ({{bug(783470)}}).</li> + <li>La propriété {{cssxref("box-sizing")}} n'a pas de préfixe ({{bug(243412)}}).</li> + <li>La propriété {{cssxref("will-change")}}, un indice indiquant que quelque chose va s'animer a été ajoutée. La préférence <code>layout.css.will-change.enabled</code> doit être définie sur <code>true</code> pour l'activer. ({{bug(940842)}})</li> + <li>La notation exponentielle scientifique, comme <code>3e1</code> ou <code>10e+0</code>, est désormais prise en charge pour les valeurs et les dérivés {{cssxref("<number>")}}, comme {{cssxref("<percentage>")}} et les valeurs unitaires, mais pas {{cssxref("<integer>")}} ({{bug(964529)}}).</li> + <li>Les images de type {{cssxref("<gradient>")}} sont désormais prises en charge dans {{cssxref("border-image")}} ({{bug(709587)}}).</li> + <li>La propriété {{cssxref("touch-action")}} a été mise en <span class="tlid-translation translation" lang="fr"><span title="">implémenté.</span></span> Il n'est pas activé par défaut; le pref de <code>layout.css.touch_action.enabled</code> le contrôle. ({{bug(795567)}})</li> + <li>Supprimez le style par défaut redondant pour l'élément <pre> de quirk.css ({{bug(948914)}}).</li> + <li>Les variables CSS ne sont pas correctement implémentées (cycles primaires) ({{bug(950497)}}).</li> + <li>@supports les conditions avec des jetons après que la propriété d'une déclaration doit être évaluée à false ({{bug(909170)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li><code><input type=color></code> et <code><input type=number></code> sont disponibles par défaut.</li> + <li>La prise en charge des <code><pre cols></code> non standard a été supprimée, ainsi que l'effet de mise en page de <code><pre wrap></code>. Les deux effets peuvent et doivent être obtenus en utilisant CSS. ({{bug("949879")}})</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Nouvelles méthodes de chaîne ECMAScript 6 : {{jsxref("String.prototype.codePointAt()")}} et {{jsxref("String.prototype.fromCodePoint()")}} ont été implémentées ({{bug("918879")}}).</li> + <li>L'<a href="http://www.ecma-international.org/ecma-402/1.0/">API d'internationalisation ECMAScript (ECMA-402)</a> a été implémentée et est désormais activée par défaut dans Firefox Desktop ({{bug("853301")}}): + <ul> + <li>Nouveaux objets dans le nouvel espace de noms d'objet {{jsxref("Intl")}} : + <ul> + <li>{{jsxref("Collator", "Intl.Collator")}}</li> + <li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}</li> + <li>{{jsxref("NumberFormat", "Intl.NumberFormat")}}</li> + </ul> + </li> + <li>Les méthodes suivantes de {{jsxref("String")}}, {{jsxref("Number")}} et {{jsxref("Date")}} ont été mises à jour pour inclure les arguments <code>locales</code> et <code>options</code> selon ECMA-402: + <ul> + <li>{{jsxref("String.prototype.localeCompare()")}}</li> + <li>{{jsxref("Number.prototype.toLocaleString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li> + <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li> + </ul> + </li> + </ul> + </li> + <li>Pour correspondre au projet de spécification ECMAScript6 mis à jour, les objets {{jsxref("Map")}} et {{jsxref("Set")}} traitent désormais <code>-0</code> et <code>+0</code> comme étant identiques lors de la vérification de l'égalité des clés et des valeurs.</li> + <li>La <code>Promise</code> a été activée par défaut ({{bug(918806)}}).</li> + <li>Les <a href="/en-US/docs/Web/JavaScript/Reference/Statements/function*">générateurs</a> terminés renvoient maintenant un objet <code>IteratorResult</code> au lieu de lancer ({{bug(958951)}}).</li> + <li>Une chaîne JSON malformée analysée par {{jsxref("JSON.parse()")}} renvoie désormais un message d'erreur plus détaillé contenant le numéro de ligne et de colonne à l'origine de l'erreur d'analyse. Ceci est utile lors du débogage de données JSON volumineuses.</li> + <li>La méthode {{jsxref("ArrayBuffer.isView()")}} a été ajoutée ({{bug(896105)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>Un nouveau type de workers, {{domxref("SharedWorker")}}, est désormais disponible par défaut ({{bug(924089)}}).</li> + <li>L'interface {{domxref("URLUtils")}} prend désormais en charge la propriété {{domxref("URLUtils.searchParams", "searchParams")}} renvoyant un objet {{domxref("URLSearchParams")}}, permettant de modifier le paramètres de recherche d'une URL ({{bug(887836)}}). Le constructeur {{domxref("URLSearchParams")}} permet une analyse plus facile des chaînes de requête.</li> + <li>La propriété {{domxref("NavigatorOnLine.onLine")}} est désormais prise en charge sur {{domxref("WorkerNavigator")}}, permettant de connaître l'état en ligne / hors ligne des workers ({{bug(925437)}}).</li> + <li>Dans le cadre de l'implémentation des composants Web, l'interface {{domxref("HTMLShadowElement")}} a été implémentée derrière le <code>dom.webcomponents.enabled</code>. Retournez-le sur <code>true</code> si vous souhaitez l'utiliser. ({{bug(887538)}}).</li> + <li>La propriété en lecture seule {{domxref("HTMLIFrameElement.sandbox")}} n'est plus un {{domxref("string")}} mais un {{domxref("HTMLSettableToken")}} ({{bug(845057)}}).</li> + <li>Sur {{domxref("HTMLCanvasElement.getContext()")}}, la valeur <code>moz-webgl</code> n'est plus prise en charge. Utilisez la valeur standard <code>webgl</code> ({{bug(913597)}}).</li> + <li>Le constructeur de {{domxref("ImageData")}} a été ajouté. Cette interface peut être utilisée danss un {{domxref("Worker")}}. ({{bug(959958)}})</li> + <li>La propriété {{domxref("URLUtilsReadOnly.origin", "location.origin")}} est désormais disponible dans les workers (via {{domxref("WorkerLocation")}}) ({{bug(964148)}}).</li> + <li>La propriété {{domxref("ValidityState.badInput")}} a été implémentée ({{bug(827161)}}).</li> + <li>La propriété obsolète {{domxref("Window.pkcs11")}} a été supprimée; il retournait <code>null</code> depuis Firefox 3.0.14. ({{bug(964964)}})</li> + <li>Les méthodes {{domxref("Node.cloneNode()")}} et {{domxref("Document.importNode()")}} acceptent l'argument booléen <code>deep</code>. Jusqu'à présent, si elles étaient omises, ces méthodes agissaient comme si la valeur de <code>deep</code> était <code>true</code>. Mais ce comportement a été modifié selon la dernière spécification, et s'il est omis, les méthodes agiront comme si la valeur était <code>false</code>. ({{bug(937461)}})</li> + <li>{{domxref("Window._content")}} n'est plus disponible pour le contenu web ({{bug(946564)}}).</li> + <li>Le comportement de {{domxref("URLUtils.port")}} a été légèrement modifié: définir sur <code>''</code> le définira sur le port par défaut associé au protocole, et <code>0</code> sur <code>0.</code> ({{bug(930450)}})</li> + <li>{{domxref("Document.referrer")}} est maintenant basé sur le script en place ({{bug(887928)}}).</li> + <li>L'<a href="/fr/docs/Web/Guide/API/Gamepad">API Gamepad API</a> est activée par défaut ({{bug(878828)}}).</li> + <li>La méthode {{domxref("CanvasRenderingContext2D.drawSystemFocusRing()")}} a été renommée en {{domxref("CanvasRenderingContext2D.drawFocusIfNeeded()")}} ({{bug(959820)}}).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="SVG">SVG</h3> + +<p><em>Pas de changement.</em></p> + +<h2 id="Sécurité">Sécurité</h2> + +<ul> + <li>La directive expérimentale de <code>hash-source</code> CSP 1.1 a été implémentée. La préférence <code>security.csp.experimentalEnabled</code> doit être définie sur <code>true</code> pour activer cette fonctionnalité ({{bug(883975)}}).</li> +</ul> + +<h2 id="Modifications_pour_les_développeurs_dadd-on_et_Mozilla">Modifications pour les développeurs d'add-on et Mozilla</h2> + +<ul> + <li><a href="/en-US/Firefox/Australis_add-on_compat">Compatibilité Australis et add-on</a> - Il s'agit d'un changement majeur de thème Firefox qui affecte la plupart des extensions impliquant l'interface utilisateur de Firefox.</li> + <li><code>nsISecurityCheckedComponent</code> a été supprimé ({{bug(794943)}}). La plupart des consommateurs peuvent simplement supprimer nsISecurityCheckedComponent de leur définition d'interface et ils continueront à fonctionner.</li> +</ul> + +<p>Changements non-Australis à déterminer.</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/29/">Compatibilité du site pour Firefox 29</a></li> +</ul> + +<h3 id="Anciennes_versions">Anciennes versions</h3> + +<p>{{Firefox_for_developers('28')}}</p> diff --git a/files/fr/mozilla/firefox/releases/29/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/29/site_compatibility/index.html new file mode 100644 index 0000000000..63bac76439 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/29/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 29 +slug: Mozilla/Firefox/Releases/29/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 29 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/29/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/29/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/releases/30/index.html b/files/fr/mozilla/firefox/releases/30/index.html new file mode 100644 index 0000000000..528cfdc66f --- /dev/null +++ b/files/fr/mozilla/firefox/releases/30/index.html @@ -0,0 +1,97 @@ +--- +title: Firefox 30 for developers +slug: Mozilla/Firefox/Releases/30 +tags: + - Firefox + - Firefox for Developers + - TopicStub +translation_of: Mozilla/Firefox/Releases/30 +--- +<div>{{FirefoxSidebar}}</div> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<ul> + <li>Un surligneur de modèle de boîte a été implémenté ({{bug(663778)}}).</li> + <li>Partout où un <span class="tlid-translation translation" lang="fr"><span title="">nœud </span></span>DOM apparaît dans la sortie de la console, il est mis en surbrillance lorsque vous survolez cette sortie de la console ({{bug(757866)}}). De même, toutes les fonctions et les objets JS sont mis en évidence dans la sortie de la console ({{bug(584733)}}). Vous trouverez plus d'informations sur l'amélioration de la console dans cet <a href="http://www.robodesign.ro/mihai/blog/web-console-improvements-episode-30">article de blog</a>.</li> + <li>La prise en charge de {{domxref("Console.count()")}} a été ajoutée ({{bug(922208)}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>La propriété {{cssxref("background-blend-mode")}} a été activée par défaut ({{bug(970600)}}).</li> + <li>La propriété non standard {{cssxref("overflow-clip-box")}} a été implémentée pour une utilisation dans les feuilles de style UA uniquement ({{bug(966992)}}).</li> + <li>La propriété {{cssxref("line-height")}} affecte désormais les entrées de texte sur une seule ligne (types <code><input type=text|password|email|search|tel|url|unknown></code>) bien qu'elle ne puisse pas les réduire en dessous d'une hauteur de ligne de <code>1.0</code> ({{bug(349259)}}).</li> + <li>La propriété {{cssxref("line-height")}} affecte désormais également <code>type=button</code>, sans aucune restriction ({{bug(697451)}}).</li> + <li>Le changement du nom des images clés n'affecte pas les éléments actuels ({{bug(978648)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Nouvelles <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Array_comprehensions">compréhensions de tableaux</a> compatibles ES6 <code>[for (item of iterable) item]</code> et <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Generator_comprehensions">compréhensions de générateur</a> <code>(for (item of iterable) item)</code> ont été implémentées ({{bug(979865)}}).</li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Property_access">Les tableaux typés</a> sont désormais extensibles et prennent en charge de nouvelles propriétés nommées ({{bug(695438)}}).</li> + <li>La propriété {{jsxref("Error.prototype.stack")}} contient désormais des numéros de colonne ({{bug(762556)}}) et a été améliorée <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/Stack#Stack_of_eval'ed_code">lors de l'utilisation des appels <code>Function()</code> et <code>eval()</code></a>. Cela peut vous aider à mieux déboguer le code JavaScript minifié ou généré.</li> + <li>La méthode <code>Promise.cast()</code> a été renommée {{jsxref("Promise.resolve()")}} ({{bug(966348)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>{{domxref("Navigator.sendBeacon")}} a été implémenté, facilitant la collecte des données de télémétrie ({{bug(936340)}}).</li> + <li>Ajout d'une propriété <code>relList</code> renvoyant un {{domxref("DOMTokenList")}} à {{domxref("HTMLLinkElement")}}, {{domxref("HTMLAreaElement")}} et {{domxref("HTMLAnchorElement")}} ({{bug(968637)}}).</li> + <li>Conformément à la dernière spécification, le premier argument de {{domxref("OscillatorNode.start")}} et {{domxref("OscillatorNode.stop")}} est désormais facultatif et vaut par défaut <code>0</code> ({{bug(982541)}}).</li> + <li>La méthode {{domxref("Navigator.requestWakeLock()")}} et la méthode non standard {{domxref("MozWakeLock")}} ne sont plus disponibles sur le Web sur le Desktop ({{bug(963366)}}).</li> + <li>La constante <code>DOM_VK_ENTER</code> a été supprimée de {{domxref("KeyboardEvent")}} ({{bug(969247)}}).</li> + <li>Les composants Web {{domxref("Document.register")}} ont été adaptés pour suivre le comportement décrit dans la dernière version de la spécification ({{bug(856140)}}).</li> + <li>La prise en charge de base des régions Hit sur canvas a été ajouté: les méthodes {{domxref("CanvasRenderingContext2D.addHitRegion()")}} et {{domxref("CanvasRenderingContext2D.removeHitRegion()")}} ont été ajoutées. Ceux-ci sont désactivés par défaut; pour les activer, définissez la préférence <code>canvas.hitregions.enabled</code> sur <code>true</code> ({{bug(966591)}}).</li> + <li>Le non standard, et obsolète depuis Firefox 15, {{domxref("Blob.mozSlice")}} n'est plus supporté ({{bug(961804)}}).</li> + <li>Les non standards {{domxref("ArchiveReader")}} et {{domxref("ArchiveRequest")}} ne sont plus exposés au Web ({{bug(968883)}}).</li> + <li>Les <a href="http://dxr.mozilla.org/mozilla-central/source/dom/webidl/">constructeurs WebIDL</a> ne peuvent plus être appelés en tant que fonctions. Ils doivent être précédés du mot-clé <code>new</code> ({{bug(916644)}}).</li> + <li>Ajout du support d'une nouvelle valeur (<code>alpha</code>) pour le deuxième paramètre, optionnel, de la méthode {{domxref("HTMLCanvasElement.getContext()")}} permettant de définir si le mélange alpha doit être stocké ou non pour ce contexte. Dans le cas contraire, la valeur alpha par pixel dans ce magasin est toujours de <code>1.0</code>. Cela permet au back-end de mettre en <span class="tlid-translation translation" lang="fr"><span title="">œ</span></span>uvre une procédure accélérée ({{bug(982480)}}).</li> + <li>{{domxref("GlobalWorkerScope.consle")}} renvoie maintenant pour le {{domxref("Console")}} normal ; {{domxref("WorkerConsole")}} a été supprimé ({{bug(965860)}}).</li> + <li>L'extension {{domxref("WebGL_debug_shaders")}} WebGL a été implémentée ({{bug(968374)}}).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>{{SVGElement("feDropShadow")}}, et son interface {{domxref("SVGFEDropShadowElement")}}, du module Filter Effects sont désormais supportés ({{bug(964200)}}).</li> +</ul> + +<h3 id="AudioVidéo">Audio/Vidéo</h3> + +<ul> + <li>Sous Linux, Gstreamer 1.0 est désormais supporté (au lieu de 0.10) ({{bug(806917)}}).</li> +</ul> + +<h2 id="Sécurité">Sécurité</h2> + +<p><em>Pas de changement.</em></p> + +<h2 id="Changements_pour_les_développeurs_dadd-on_et_de_Mozilla">Changements pour les développeurs d'add-on et de Mozilla</h2> + +<ul> + <li>L'interface <code>nsIDOMWindowUtils</code> supporte désormais l'attribut booléen <code>audioMuted</code> et <code>audioVolume</code>, un float dans la plage <code>[0.0</code> , <code>1.0]</code>, permettant de contrôler le son produit par une fenêtre (c'est-à-dire n'importe quel onglet ou iframe). Il n'y a pas d'interface utilisateur pour cela, mais est disponible pour les add-ons. ({{bug(923247)}})</li> +</ul> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/30/">Compatibilité du site pour Firefox 30</a></li> +</ul> + +<h3 id="Anciennes_versions">Anciennes versions</h3> + +<p>{{Firefox_for_developers('29')}}</p> diff --git a/files/fr/mozilla/firefox/releases/30/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/30/site_compatibility/index.html new file mode 100644 index 0000000000..8c5a65bdbd --- /dev/null +++ b/files/fr/mozilla/firefox/releases/30/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 30 +slug: Mozilla/Firefox/Releases/30/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 30 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/30/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/30/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/releases/31/index.html b/files/fr/mozilla/firefox/releases/31/index.html new file mode 100644 index 0000000000..a8e9c364d3 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/31/index.html @@ -0,0 +1,132 @@ +--- +title: Firefox 31 for developers +slug: Mozilla/Firefox/Releases/31 +tags: + - Firefox + - Firefox 31 + - Firefox for Developers + - NeedsTranslation + - TopicStub +translation_of: Mozilla/Firefox/Releases/31 +--- +<div>{{FirefoxSidebar}}</div><h2 id="Changes_for_Web_developers">Changes for Web developers</h2> + +<h3 id="Developer_Tools">Developer Tools</h3> + +<p>Highlights:</p> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Eyedropper">Eyedropper tool to select colors in web pages</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Error_messages">full stack traces for console error messages</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector#Box_model_view">editable Box Model View</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages">%c formatting to style console messages</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor#Copy_as_cURL">"copy as cURL" command in Network Monitor</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/tools/Keyboard_shortcuts#Source_editor">Sublime Text keybindings in the source editor</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor#Network_request_list">Option to make Network Monitor logs persistent</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console#JavaScript_errors_and_warnings">JavaScript warnings on by default in the Web Console</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector#HTML_pane_2">Alt+click to expand all descendants of a node</a></li> +</ul> + +<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Client%20Software&chfieldto=2014-04-28&chfield=resolution&query_format=advanced&chfieldfrom=2014-03-17&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20App%20Manager&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Profiler&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&product=Firefox&list_id=10022921">All devtools bugs fixed between Firefox 30 and Firefox 31</a>.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Changed <code>var-</code> prefix of CSS Variables to <code>--</code> to reflect the final spec change ({{Bug(985838)}}).</li> + <li>The {{cssxref("hyphens")}} property now support Polish hyphenation rules ({{Bug(987668)}}).</li> + <li>Removed an unwanted white space for multiple of 10,000 in Korean counter styles ({{Bug(985186)}}).</li> + <li>CSS opacity transition broken with parent pseudo :before and overflow auto ({{Bug(990340)}}).</li> + <li>The <code>::-moz-math-stretchy</code> pseudo-element has been removed ({{Bug(1000879)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>{{HTMLElement("track")}} has been implemented ({{Bug(629350)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<p>New ECMAScript 6 features implemented:</p> + +<ul> + <li>New <code>Array</code> built-in: {{jsxref("Array.prototype.fill()")}} ({{Bug(911147)}})</li> + <li>New <code>Math</code> function: {{jsxref("Math.clz32()")}} ({{Bug(925123)}})</li> + <li>New <code>String</code> built-in: {{jsxref("String.prototype.normalize()")}} is available in Firefox Desktop ({{Bug(918987)}}).</li> + <li>New <code>Object</code> method {{jsxref("Object.setPrototypeOf()")}}.</li> + <li>New <code>Number</code> constants: {{jsxref("Number.MAX_SAFE_INTEGER")}} and {{jsxref("Number.MIN_SAFE_INTEGER")}}.</li> + <li>The ES6 Proxy {{jsxref("Global_Objects/Proxy/handler/isExtensible", "isExtensible")}} trap have been implemented ({{bug(978235)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>Constructor of <code>KeyboardEvent</code> has been implemented ({{Bug(930893)}}).</li> + <li>The Resource Timing API has been implemented (see {{ Bug("822480") }}).</li> + <li><code>KeyboardEvent.isComposing</code> attribute has been implemented ({{Bug(993234)}}).</li> + <li><code>InputEvent</code> interface has been implemented ({{Bug(993253)}}).</li> + <li><code>InputEvent.isComposing</code> attribute has been implemented ({{Bug(993253)}}).</li> + <li>{{domxref("CSS.escape", "CSS.escape()")}} has been implemented ({{Bug(955860)}}).</li> + <li>{{event("mousemove") }} is now cancelable like in other browsers ({{Bug(704423)}}). Calling <code>preventDefault()</code> only sets <code>defaultPrevented</code> attribute to <code>true;</code> any other behaviors are not changed. E.g., it cannot prevent to set <code>:hover</code> state.</li> + <li>The {{domxref("Path2D")}} interface has been implemented.</li> + <li>The {{domxref("CanvasRenderingContext2D.isPointInPath()")}}, {{domxref("CanvasRenderingContext2D.isPointInStroke()")}}, {{domxref("CanvasRenderingContext2D.clip()")}}, {{domxref("CanvasRenderingContext2D.fill()")}} and {{domxref("CanvasRenderingContext2D.stroke()")}} methods have been updated to optionally accept a {{domxref("Path2D")}} object.</li> + <li>Implemented {{domxref("HTMLMediaElement.fastSeek()")}}.</li> + <li>The <code>Connection</code> interface has been renamed to {{domxref("NetworkInformation")}} and has been modified to match the new specificaiton ({{bug(960426)}}).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>Partial implementation of the <a href="http://mpeg.chiariglione.org/standards/mpeg-4/open-font-format/text-isoiec-cd-14496-22-3rd-edition">OpenType MATH table</a>, section 6.3.6 ({{Bug(407059)}}). For details, see the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/MathML_Project/Fonts">fonts for Mozilla's MathML engine</a> and try the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/MathML_Project/MathML_Torture_Test">MathML torture test</a> .</li> + <li>The <code>:</code><span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>:-moz-math-stretchy</code> pseudo-element has been removed</span></span> ({{Bug(1000879)}}).</li> + <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">When available, the Unicode Mathematical alphanumeric characters are used for bold, italic and bold-italic mathvariants</span></span> ({{Bug(930504)}}).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>No change.</em></p> + +<h3 id="AudioVideo">Audio/Video</h3> + +<p><em>No change.</em></p> + +<h2 id="Security">Security</h2> + +<ul> + <li><a href="/en-US/docs/Xray_vision#Xrays_for_JavaScript_objects">Privileged code now gets Xray vision for <code>Date</code> instances</a>.</li> +</ul> + +<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2> + +<ul> + <li>The "<code>align</code>" attribute on the <code>urlbar-wrapper</code> (formerly on the <code>urlbar-container</code>) which was set to "<code>center</code>" since <a href="http://bonsai.mozilla.org/cvsview2.cgi?diff_mode=context&whitespace_mode=show&root=/cvsroot&subdir=mozilla/browser/base/content&command=DIFF_FRAMESET&file=browser.xul&rev2=1.10&rev1=1.9">time immemorial</a>, has been removed. This is known to affect third-party themes. You should look carefully at what the right fix is for your theme, but for maintaining the equivalent effect, you can add the following CSS rule to your theme:<br> + <code>#urlbar-wrapper {<br> + -moz-box-align: center;<br> + }</code></li> + <li><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowUtils#sendQueryContentEvent()"><code>nsIDOMWindowUtils.sendQueryContentEvent()</code></a> and <a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowUtils#sendSelectionSetEvent%28%29"><code>nsIDOMWindowUtils.sendSelectionSetEvent()</code></a> have <code>aAdditionalFlags</code> as optional argument. If you called <code>nsIDOMWindowUtils.sendSelectionSetEvent()</code> with <code>true</code> for <code>aReverse</code>, the behavior would be broken by this change. See <a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowUtils#Constants">explanation of each flag</a> (<code>QUERY_CONTENT_FLAG_*</code> and <code>SELECTION_SET_FLAG_*</code>) for the detail of <code>aAdditionalFlags</code>.</li> +</ul> + +<h3 id="Add-on_SDK">Add-on SDK</h3> + +<p>Highlights:</p> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/Add-on_Debugger">Add-on Debugger</a></li> + <li>Added the ability to convert <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/windows#Converting_to_DOM_windows">between high-level BrowserWindow objects and DOM windows</a>, and <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/tabs#Converting_to_XUL_tabs">between high-level Tab objects and XUL tabs</a>.</li> + <li>Updated the default theme used for panels on Mac OS X.</li> + <li>Added <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/panel#Styling_panel_content">contentStyle and contentStyleFile</a> options to panel.</li> +</ul> + +<p><a class="external external-icon" href="https://github.com/mozilla/addon-sdk/compare/firefox30...firefox31">GitHub commits made between Firefox 30 and Firefox 31</a>. This will not include any uplifts made after this release entered Aurora.</p> + +<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&chfieldto=2014-04-29&chfield=resolution&query_format=advanced&chfieldfrom=2014-03-18&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&product=Add-on%20SDK&list_id=10493962">Bugs fixed between Firefox 30 and Firefox 31</a>. This will not include any uplifts made after this release entered Aurora.</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/31/">Site Compatibility for Firefox 31</a></li> +</ul> + +<h3 id="Older_versions">Older versions</h3> + +<p>{{Firefox_for_developers('30')}}</p> diff --git a/files/fr/mozilla/firefox/releases/31/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/31/site_compatibility/index.html new file mode 100644 index 0000000000..1eacc3303e --- /dev/null +++ b/files/fr/mozilla/firefox/releases/31/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 31 +slug: Mozilla/Firefox/Releases/31/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 31 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/31/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/31/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/releases/32/index.html b/files/fr/mozilla/firefox/releases/32/index.html new file mode 100644 index 0000000000..52aa292e5d --- /dev/null +++ b/files/fr/mozilla/firefox/releases/32/index.html @@ -0,0 +1,139 @@ +--- +title: Firefox 32 for developers +slug: Mozilla/Firefox/Releases/32 +tags: + - NeedsTranslation + - TopicStub +translation_of: Mozilla/Firefox/Releases/32 +--- +<div>{{FirefoxSidebar}}</div><h2 id="Changes_for_Web_developers">Changes for Web developers</h2> + +<h3 id="Developer_Tools">Developer Tools</h3> + +<p>Highlights:</p> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Web_Audio_Editor">Web Audio Editor</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Scratchpad#Code_completion_and_inline_documentation">Code completion and inline documentation in Scratchpad</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector#Rules_view">User agent styles in the Inspector's Rules view</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector#Firefox_32_onwards_2">Element picker button has moved</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector#Firefox_32_onwards">Node dimensions added to the Inspector's infobar</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Tools_Toolbox#Extra_tools">Full page screenshot button added</a></li> + <li>HiDPI images added to the tools</li> + <li>Nodes that have <code>display:none</code> are shown differently in the Inspector</li> +</ul> + +<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Client%20Software&chfieldto=2014-06-09&chfield=resolution&query_format=advanced&chfieldfrom=2014-04-28&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20App%20Manager&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Profiler&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&product=Firefox">All devtools bugs fixed between Firefox 31 and Firefox 32</a>.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Enabled {{cssxref("mix-blend-mode")}} by default ({{Bug(952643)}}).</li> + <li>Enabled <code>position:sticky</code> by default in release builds (only enabled on Nightly and Aurora before) ({{Bug(916315)}}).</li> + <li>Implemented {{cssxref("box-decoration-break")}} and removed the non-standard {{cssxref("-moz-background-inline-policy")}}({{Bug(613659)}}).</li> + <li>Allowed {{cssxref("flex-grow")}} and {{cssxref("flex-shrink")}} to transition between zero and nonzero values ({{Bug(996945)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Experimentally implemented, behind a pref, {{HTMLElement("img")}} {{HTMLattrxref("srcset", "img")}} property, To activate it set <code>dom.image.srcset.enable</code> to <code>true</code> ({{Bug(870021)}}).</li> + <li><a href="/en-US/docs/Web/HTML/Global_attributes/id"><strong>id</strong></a> and <a href="/en-US/docs/Web/HTML/Global_attributes/class"><strong>class</strong></a> are now true <a href="/en-US/docs/Web/HTML/Global_attributes">global attributes</a> and also apply to XML elements, in a namespace or not ({{bug(741295)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>The following new ECMAScript 6 built-in methods got implemented: + <ul> + <li>{{jsxref("Array.from()")}} ({{bug(904723)}}),</li> + <li>{{jsxref("Array.prototype.copyWithin()")}} ({{bug(934423)}}),</li> + <li>{{jsxref("Number.isSafeInteger()")}} ({{bug(1003764)}}).</li> + </ul> + </li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>The {{domxref("NavigatorLanguage.languages", "navigator.languages")}} property and {{event("languagechange")}} event have been implemented ({{Bug(889335)}}).</li> + <li>The {{domxref("Navigator.vibrate()")}} method behavior has been adapted to the latest specification: too long vibrations are now truncated ({{bug(1014581)}}).</li> + <li>The {{domxref("KeyboardEvent.getModifierState()")}} and {{domxref("MouseEvent.getModifierState()")}} methods have been extended to support the <code>Accel</code> virtual modifier ({{Bug(1009388)}}).</li> + <li>The {{domxref("KeyboardEvent.code")}} property have been experimentally implemented: it is disabled on release build ({{Bug(865649)}}).</li> + <li>Scoped selectors for {{domxref("Document.querySelector()")}} and {{domxref("Document.querySelectorAll()")}}, for example <code>querySelector(":scope > li")</code>have been implemented ({{Bug(528456)}}).</li> + <li>The experimental implementation of the {{domxref("Document.timeline")}} interface, related to the <a href="http://dev.w3.org/fxtf/web-animations/">Web Animation API</a>, has been added ({{bug("998246")}}). It is controlled by <code>layout.web-animations.api.enabled</code> preference, enabled only on Nightly and Aurora for the moment.</li> + <li>The <a href="/en-US/docs/Web/API/Data_Store_API">Data Store API</a> has been made available to <a href="/en-US/docs/Web/Guide/Performance/Using_web_workers">Web Workers</a> ({{bug("949325")}}). It still is only activated for certified applications.</li> + <li>The <a href="/en-US/docs/Web/API/ServiceWorker_API">ServiceWorker</a> {{domxref("InstallPhaseEvent")}} and {{domxref("InstallEvent")}} interfaces have been implemented ({{ Bug("967264") }}).</li> + <li> The <a href="/en-US/docs/Web/API/MSISDN_Verification_API">MSISDN Verification API</a>, only activated for privileged apps, has been added ({{ Bug("988469") }}).</li> + <li>The <a href="/en-US/docs/Web/API/Gamepad_API">Gamepad API</a> is now supported on Firefox for Android ({{bug(852935)}}).</li> + <li>To match the spec and the evolution of the CSS syntax, minor changes have been done to {{domxref("CSS.escape()")}}. The identifier now can begins with <code>'--'</code> and the second dash must not be escaped. Also vendor identifier are no more escaped. ({{bug(1008719)}})</li> + <li>To complete our Hit Regions implementation, {{domxref("MouseEvent.region")}} has been implemented ({{bug(979692)}}).</li> + <li>The {{domxref("CanvasRenderingContext2D.drawFocusIfNeeded()")}} method is now enabled by default ({{bug(1004579)}}).</li> + <li>The {{domxref("Navigator.doNotTrack")}} properties now returns <code>'1'</code> or <code>'0'</code>, reflecting the HTTP value, instead of <code>'yes'</code> or <code>'no'</code> ({{bug(887703)}}).</li> + <li>New constraints for <a href="/en-US/docs/Glossary/WebRTC">WebRTC</a>'s {{domxref("NavigatorUserMedia.getUserMedia", "getUserMedia()")}}, <code>width</code>, <code>height</code>, and <code>framerate</code>, have been added, to limit stream dimensions and frame rate ({{bug("907352")}}): + <pre class="brush: json">{ + mandatory: { + width: { min: 640 }, + height: { min: 480 } + }, + optional: [ + { width: 650 }, + { width: { min: 650 }}, + { frameRate: 60 }, + { width: { max: 800 }}, + ] +}</pre> + </li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>Add support for the {{MathMLElement("menclose")}} notation <code>phasorangle</code>.</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>No change.</em></p> + +<h3 id="AudioVideo">Audio/Video</h3> + +<p><em>No change.</em></p> + +<h2 id="Security">Security</h2> + +<ul> + <li><a href="/en-US/docs/Xray_vision#Xray_semantics_for_Object_and_Array">Privileged code now gets Xray vision for JavaScript <code>Object</code> and <code>Array</code> instances</a>.</li> +</ul> + +<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2> + +<p>Xray vision is now applied to JavaScript objects that are not themselves DOM objects: <a href="https://developer.mozilla.org/en-US/docs/Xray_vision#Xrays_for_JavaScript_objects">Xrays for JavaScript objects</a>.</p> + +<p>A <a href="/en-US/Add-ons/Add-on_Manager/Addon#getDataDirectory()">getDataDirectory()</a> method has been added to <a href="/en-US/Add-ons/Add-on_Manager/Addon">Addon</a> instances. This method returns the preferred location, within the current profile, for add-ons to store data.</p> + +<h3 id="Add-on_SDK">Add-on SDK</h3> + +<h4 id="Highlights">Highlights</h4> + +<ul> + <li>Added <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/page-mod#PageMod%28options%29"><code>exclude</code></a> option to <code>PageMod</code>.</li> + <li>Added <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/request#Request%28options%29"><code>anonymous</code></a> option to <code>Request</code>.</li> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/Add-on_Debugger">Add-on Debugger</a> now includes a Console and a Scratchpad.</li> +</ul> + +<h4 id="Details">Details</h4> + +<p><a class="external external-icon" href="https://github.com/mozilla/addon-sdk/compare/firefox31...firefox32">GitHub commits made between Firefox 31 and Firefox 32</a>. This will not include any uplifts made after this release entered Aurora.</p> + +<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&chfieldto=2014-06-09&chfield=resolution&query_format=advanced&chfieldfrom=2014-04-28&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&product=Add-on%20SDK&list_id=10493962">Bugs fixed between Firefox 31 and Firefox 32</a>. This will not include any uplifts made after this release entered Aurora.</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Mozilla/Firefox/Releases/32/Site_Compatibility">Site Compatibility for Firefox 32</a></li> +</ul> + +<h3 id="Older_versions">Older versions</h3> + +<p>{{Firefox_for_developers('31')}}</p> diff --git a/files/fr/mozilla/firefox/releases/32/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/32/site_compatibility/index.html new file mode 100644 index 0000000000..d06ff17614 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/32/site_compatibility/index.html @@ -0,0 +1,122 @@ +--- +title: Site Compatibility for Firefox 32 +slug: Mozilla/Firefox/Releases/32/Site_Compatibility +translation_of: Mozilla/Firefox/Releases/32/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 32 was released on <time datetime="2014-09-02">September 2, 2014</time>. While it has been developed to maintain compatibility as much as possible, the new version includes some changes affecting backward compatibility aimed at improving interoperability with the other browsers or following the latest Web standards. Here's the list of such changes — hope this helps whenever you test your sites or applications.</p> + +<p><strong>This article only explains the changes that may affect backward compatibility for websites</strong>. For the other new features and changes, please read the following documents:</p> + +<ul> + <li><a href="http://www.mozilla.org/en-US/firefox/32.0/releasenotes/">Firefox 32 Release Notes</a></li> + <li><a href="/en-US/docs/Mozilla/Firefox/Releases/32">Firefox 32 for developers</a></li> +</ul> + +<p>Follow <a href="https://twitter.com/FxSiteCompat">@FxSiteCompat</a> on Twitter for further updates.</p> + +<section id="sect1"> +<h2 id="DOM">DOM</h2> + +<section id="sect2"> +<h3 id="navigator.doNotTrack_now_returns_a_correct_value"><code>navigator.doNotTrack</code> now returns a correct value</h3> + +<ul> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=887703">Bug 887703 – Do not track settings results in wrong value for navigator.doNotTrack</a></li> +</ul> + +<p>Previously, the {{ domxref("navigator.doNotTrack") }} property was incorrectly returning <code>"yes"</code> even when the <a href="http://www.mozilla.org/dnt/">Do Not Track</a> option was being disabled by the user. Starting with Firefox 32, it returns <code>"0"</code> (disabled), <code>"1"</code> (enabled) or <code>"unspecified"</code> to follow the spec.</p> +</section> + +<section id="sect3"> +<h3 id="new_Document()_now_returns_Document_instead_of_XMLDocument"><code>new Document()</code> now returns <code>Document</code> instead of <code>XMLDocument</code></h3> + +<ul> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1017932">Bug 1017932 – Document() constructor should return Document object (not XMLDocument)</a></li> +</ul> + +<p>The <code>Document</code> constructor starts returning a {{ domxref("Document") }} object instead of {{ domxref("XMLDocument") }} to follow the latest spec. They are identical except the {{ domxref("XMLDocument.load", "load") }} method which is only available on <code>XMLDocument</code>. The {{ domxref("DOMImplementation.createDocument") }} method continues returning an <code>XMLDocument</code> object.</p> +</section> + +<section id="sect4"> +<h3 id="HTMLCollection_no_longer_matches_an_empty_string_name"><code>HTMLCollection</code> no longer matches an empty string name</h3> + +<ul> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=891952">Bug 891952 – Update empty string handling in named getters to spec changes</a></li> +</ul> + +<p>Previously, the empty named property of an {{ domxref("HTMLCollection") }} object, like <code>document.forms[0][""]</code>, was returning the first unnamed child element. This behavior has been changed to return <code>undefined</code> to match the updated spec.</p> +</section> + +<section id="sect5"> +<h3 id="HTMLTableElement.insertRow_now_always_inserts_the_row_to_<tbody>"><code>HTMLTableElement.insertRow</code> now always inserts the row to <code><tbody></code></h3> + +<ul> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1003539">Bug 1003539 – HTMLTableElement.insertRow doesn't insert the row at the right place when table has a thead or tfoot, no tbody, and no rows</a></li> +</ul> + +<p>The behavior of the {{ domxref("HTMLTableElement.insertRow") }} method has been changed to follow the latest HTML5 spec. When there is a {{ HTMLElement("thead") }} but no {{ HTMLElement("tbody") }} and {{ HTMLElement("tr") }}, the new <code><tr></code> will be inserted to a newly created <code><tbody></code> instead of the existing <code><thead></code>.</p> +</section> + +<section id="sect6"> +<h3 id="WindowUtils_has_been_removed"><code>WindowUtils</code> has been removed</h3> + +<ul> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1017820">Bug 1017820 – Remove the classinfo for DOMWindowUtils</a></li> +</ul> + +<p>As part of the ongoing effort to standardize global objects, the non-standard <code>WindowUtils</code> interface has been removed from {{ domxref("window") }}.</p> +</section> + +<section id="sect7"> +<h3 id="window.openDialog_has_been_removed"><code>window.openDialog</code> has been removed</h3> + +<ul> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=962747">Bug 962747 – Hide Window.openDialog from content</a></li> +</ul> + +<p>The non-standard {{ domxref("window.openDialog") }} method is no longer available from Web content. {{ domxref("window.open") }} should be used instead.</p> +</section> +</section> + +<section id="sect9"> +<h2 id="Networking">Networking</h2> + +<section id="sect10"> +<h3 id="Cache_backend_has_been_overhauled">Cache backend has been overhauled</h3> + +<ul> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=913806">Bug 913806 – Turn HTTP cache v2 on by default on all products</a></li> +</ul> + +<p>The new HTTP cache backend has been landed on Firefox 32 to improve the page load performance. See <a href="http://www.janbambas.cz/new-firefox-http-cache-enabled/">Honza Bambas' blog post</a> for details. If you encountered any regressions, please <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&component=Networking%3A%20Cache">report the issue</a> to Bugzilla.</p> +</section> +</section> + +<section id="sect8"> +<h2 id="Security">Security</h2> + +<section id="sect13"> +<h3 id="Several_1024-bit_root_certificates_have_been_removed">Several 1024-bit root certificates have been removed</h3> + +<ul> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=881553">Bug 881553 – Remove or turn off trust bits for 1024-bit root certs after December 31, 2013</a></li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1029561">Bug 1029561 – Update Mozilla 32 to use NSS 3.16.3 after July 1st to include root CA updates</a></li> +</ul> + +<p>As part of the ongoing security improvements, several SSL and code signing trust bits for 1024-bit root certificates have been removed from <a href="/en-US/docs/Mozilla/Projects/NSS">Network Security Services (NSS)</a> used in Firefox and other products. Those include AC Raíz Certicámara, Entrust.net, GTE CyberTrust, NetLock, TDC Internet, ValiCert and VeriSign. <a href="https://wiki.mozilla.org/CA:MD5and1024">1024-bit root certificates will all be removed</a> over the next few Firefox releases, because these are no longer considered as secure.</p> +</section> +</section> + +<section id="sect11"> +<h2 id="WebRTC">WebRTC</h2> + +<section id="sect12"> +<h3 id="onconnection_and_onclosedconnection_have_been_dropped"><code>onconnection</code> and <code>onclosedconnection</code> have been dropped</h3> + +<ul> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1014304">Bug 1014304 – Remove onconnection and onclosedconnection from PC</a></li> +</ul> + +<p>The <code>onconnection</code> and <code>onclosedconnection</code> properties have been removed from the {{ domxref("RTCPeerConnection") }} interface, currently implemented as <code>mozRTCPeerConnection</code>, since they are no longer in the spec.</p> +</section> +</section> diff --git a/files/fr/mozilla/firefox/releases/33/index.html b/files/fr/mozilla/firefox/releases/33/index.html new file mode 100644 index 0000000000..4dd7d4305f --- /dev/null +++ b/files/fr/mozilla/firefox/releases/33/index.html @@ -0,0 +1,148 @@ +--- +title: Firefox 33 for developers +slug: Mozilla/Firefox/Releases/33 +tags: + - Firefox + - NeedsTranslation + - TopicStub +translation_of: Mozilla/Firefox/Releases/33 +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 33 was released on October 14, 2014. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.</p> + +<h2 id="Changes_for_Web_developers">Changes for Web developers</h2> + +<h3 id="Developer_Tools">Developer Tools</h3> + +<p>Highlights</p> + +<ul> + <li>Event listeners popup</li> + <li>@media sidebar</li> + <li>Add new rule</li> + <li>Edit keyframes</li> + <li>Cubic bezier editor</li> + <li>Transform highlighter</li> + <li>Persistent disable cache</li> + <li>New Commands</li> + <li>Editor preferences</li> + <li>WebIDE</li> +</ul> + +<p>For details please <a href="https://hacks.mozilla.org/2014/07/event-listeners-popup-media-sidebar-cubic-bezier-editor-more-firefox-developer-tools-episode-33/">see the hacks post</a>. Special thanks to the 33 contributors that added <a href="http://mzl.la/1pGLFDs">all the features and fixes</a> in this release.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Implemented {{cssxref("@counter-style")}} rule ({{bug(966166)}}).</li> + <li>Unprefixed <code>ethiopic-numeric</code>, <code>persian</code>, <code>arabic-indic</code>, <code>devanagari</code>, <code>bengali</code>, <code>gurmukhi</code>, <code>gujarati</code>, <code>oriya</code>, <code>tamil</code>, <code>telugu</code>, <code>kannada</code>, <code>malayalam</code>, <code>thai</code>, <code>lao</code>, <code>myanmar</code>, <code>khmer</code>, <code>cjk-heavenly-stem</code>, <code>cjk-earthly-branch</code> in {{cssxref("list-style-type")}} ({{bug(985825)}} and {{bug(1063856)}}).</li> + <li>Added support for <code>mongolian</code>, <code>disclosure-open</code> and<strong> </strong><code>disclosure-closed</code> counter styles in {{cssxref("list-style-type")}} ({{bug(982355)}} and {{bug(1063856)}}).</li> + <li>Fixed CSS animations with empty keyframes rule so they also dispatch events ({{bug(1004377)}}).</li> + <li>Added support for <code>rebeccapurple</code>, a new {{cssxref("<color>")}} name defined in CSS Colors level 4 ({{bug(1024642)}}).</li> + <li>Our experimental implementation of CSS Fonts Level 3 progresses. Its activation is governed by the the <code>layout.css.font-features.enabled</code> preference, enabled by default in Nightly. Newly implemented features are: + <ul> + <li>The fallback algorithm of {{cssxref("font-variant-caps")}}, creating synthetic alternates for missing glyphs ({{bug(961558)}}).</li> + <li>The {{cssxref("font-synthesis")}} CSS property has been implemented ({{bug(871453)}}).</li> + </ul> + </li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Added the experimental support for {{htmlelement("picture")}} element ({{bug(870022)}}), behind the <code>dom.image.picture.enabled</code> preference (off by default).</li> + <li>The {{HTMLElement("label")}}, especially without a {{htmlattrxref("for", "label")}} attribute, doesn't apply anymore to a <code><input type=hidden></code> field ({{bug(597650)}}). The previous behavior wasn't spec compliant.</li> + <li>The link annotation <code>noreferrer</code> has been implemented on {{HTMLElement("a")}} elements. <code><a rel="noreferrer"></code> will not include the URL of the referrer in the HTTP request sent to fetch it ({{bug(530396)}}). Note that this work only for in-page links, not for linked clicked via the UI, like via contextual menus.</li> + <li>On Android, support for two new values for the {{htmlattrxref("name", "meta")}} attribute of {{HTMLElement("meta")}} has been added: <code>msapplication-TileImage</code> and <code>msapplication-TileColor</code> ({{bug(1014712)}}).<br> + Example:<br> + <code><meta name="msapplication-TileImage" content="images/benthepcguy-144.png"/><br> + <meta name="msapplication-TileColor" content="#d83434"/></code></li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>The non-standard method {{jsxref("Number.toInteger()")}} has been removed ({{bug(1022396)}}).</li> + <li>The {{jsxref("Map.prototype.set()")}}, {{jsxref("WeakMap.prototype.set()")}} and {{jsxref("Set.prototype.add()")}} methods are now chainable, return their equivalent objects and no longer <code>undefined</code> ({{bug(1031632)}}).</li> + <li>A <a href="/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters">default parameter</a> is evaluated before function declarations inside the function body, so those functions cannot be referred from default parameter ({{bug(1022962)}}).</li> + <li>Shorthand properties are now allowed in object literals: if not explicitly defined, property keys are initialized by variables of the same name. E.g. <code>function f(x, y) { return {x, y}; }</code> is equivalent to <code>function f(x, y) { return {x: x, y: y}; }</code> ({{bug(875002)}}).</li> + <li>The parsing of <code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/yield">yield</a></code> and <code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/yield*">yield*</a></code> has been updated to conform with the latest ES6 specification ({{bug(981599)}}).</li> + <li>The non-standard <code>hasOwn</code> trap has been removed ({{bug(980565)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>The {{domxref("RadioNodeList")}} API has been implemented and the selected radio button is accessible via {{domxref("RadioNodeList.value")}} ({{bug(779723)}}).</li> + <li>The {{domxref("DOMMatrix")}} has been added ({{bug(1018497)}}).</li> + <li>A non-standard (but implemented in other browsers) <code>DOMException.stack</code> property has been added. It returns a string with a human-friendly formatted stack ({{bug(857648)}}), in the same format as the existing non-standard {{jsxref("Error.stack")}} property.</li> + <li>For {{HTMLElement("canvas")}}, the method {{domxref("CanvasPattern.setTransform()")}}, allowing to modify a pattern using the {{domxref("SVGMatrix")}} representation of a linear transform ({{bug(1019257)}}).</li> + <li>Our experimental implementation of Media Source Extensions, behind the <code>media.mediasource.enabled</code> preference, enabled by default in Nightly and Aurora only, now supports MP4 ({{bug(1000686)}}).</li> + <li>The properties {{domxref("HTMLMediaElement.audioTracks")}} and {{domxref("HTMLMediaElement.videoTracks")}} have been experimentally implemented. They are controlled by the <code>media.track.enabled</code>, off by default ({{bug(744896)}}).</li> + <li>The non-standard <code>XMLHttpRequest.mozBackgroundRequest()</code> is no more accessible from Web sites. Only Firefox-internal code (Chrome code) can use it ({{bug(1035242)}}).</li> + <li>The {{event("touchenter")}} and {{event("touchleave")}} events, removed from the specification, have been removed ({{bug(1036444)}}).</li> + <li>The formely called <code>loaded</code> event, sent on a {{domxref("HTMLTrackElement")}} has been renamed {{event("load")}} to match the specification ({{bug(1035505)}}).</li> + <li>The IndexedDB interface {{domxref("FileHandle")}} has been renamed in {{domxref("IDBMutableFile")}} ({{bug(1006485)}}).</li> + <li>The IndexedDB interface {{domxref("LockedFile")}} has been renamed in {{domxref("IDBFileHandle")}} ({{bug(1006485)}}).</li> + <li>The {{domxref("ServiceWorker")}} interface has been implemented, behind the <code>dom.serviceWorkers.enabled</code> flag ({{bug(903441)}}).</li> + <li>The {{domxref("NetworkInformation.type")}} now also support the <code>"unknown"</code> value ({{bug(1023029)}}).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>The attributes <code>columnspacing</code>, <code>framespacing</code>, and <code>rowspacing</code> of the {{MathMLElement("mtable")}} element are now supported ({{bug(330964)}}).</li> + <li>Use <a href="https://wiki.mozilla.org/MathML:Open_Type_MATH_Table#Implementation_Status">Open Type MATH</a> constants for fractions, stacks, radicals, and scripts ({{bug(961365)}}).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>No change.</em></p> + +<h3 id="AudioVideo">Audio/Video</h3> + +<p><em>No change.</em></p> + +<h3 id="WebGL">WebGL</h3> + +<ul> + <li><a href="http://www.khronos.org/registry/webgl/extensions/EXT_blend_minmax/"><code>EXT_blend_minmax</code></a> is now exposed. It extends blending capabilities by adding two new blend equations, producing the minimum or maximum color compnents of the source and destination colors ({{bug(973815)}}).</li> +</ul> + +<h2 id="Security">Security</h2> + +<ul> + <li>The <a href="/en-US/docs/Web/Security/CSP">CSP</a> 1.1 <code>frame-ancestors</code> <a href="/en-US/docs/Web/Security/CSP/CSP_policy_directives">directive</a> is now supported ({{bug(846978)}}).</li> +</ul> + +<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2> + +<ul> + <li>The <a href="/en-US/Add-ons/Code_snippets/JavaScript_Debugger_Service">JavaScript Debugger Service (JSD)</a> has been removed in favor of the new <a href="/en-US/docs/Tools/Debugger-API">Debugger API</a> ({{bug(800200)}}).</li> + <li>The interface nsIX509CertDB2 has been removed and the methods from that interface have been moved to the nsIX509CertDB interface.</li> +</ul> + +<h3 id="Add-on_SDK">Add-on SDK</h3> + +<h4 id="Highlights">Highlights</h4> + +<ul> + <li>Added support for context menus in panels via a new option in the <a href="/en-US/Add-ons/SDK/High-Level_APIs/panel#Panel(options)"><code>Panel</code> constructor</a>.</li> + <li>Added <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#readyState"><code>tab.readyState</code></a>.</li> + <li>Added a <a href="/en-US/Add-ons/SDK/High-Level_APIs/windows#BrowserWindow"><code>BrowserWindow</code></a> parameter to <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#show(window)"><code>sidebar.show()</code></a> and <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar#hide(window)"><code>sidebar.hide()</code></a>, to control the window for which the sidebar will be shown or hidden.</li> +</ul> + +<h4 id="Details">Details</h4> + +<p><a href="https://github.com/mozilla/addon-sdk/compare/firefox32...firefox33">GitHub commits made between Firefox 32 and Firefox 33</a>. This will not include any uplifts made after this release entered Aurora.</p> + +<p><a href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&chfieldto=2014-07-21&chfield=resolution&query_format=advanced&chfieldfrom=2014-06-09&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&product=Add-on%20SDK&list_id=10493962">Bugs fixed between Firefox 32 and Firefox 33</a>. This will not include any uplifts made after this release entered Aurora.</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/33/">Site Compatibility for Firefox 33</a></li> +</ul> + +<h3 id="Older_versions">Older versions</h3> + +<p>{{Firefox_for_developers('32')}}</p> diff --git a/files/fr/mozilla/firefox/releases/33/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/33/site_compatibility/index.html new file mode 100644 index 0000000000..ce9916b850 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/33/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 33 +slug: Mozilla/Firefox/Releases/33/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 33 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/33/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/33/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/releases/34/index.html b/files/fr/mozilla/firefox/releases/34/index.html new file mode 100644 index 0000000000..2e3885ab33 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/34/index.html @@ -0,0 +1,158 @@ +--- +title: Firefox 34 for developers +slug: Mozilla/Firefox/Releases/34 +tags: + - Firefox + - NeedsTranslation + - Releases + - TopicStub +translation_of: Mozilla/Firefox/Releases/34 +--- +<div>{{FirefoxSidebar}}</div><div> +<p>Firefox 34 was released on December 1st, 2014. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.</p> +</div> + +<h2 id="Changes_for_Web_developers">Changes for Web developers</h2> + +<h3 id="Developer_Tools">Developer Tools</h3> + +<p>Highlights:</p> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Storage_Inspector">Storage Inspector: a new tool enabling you to view data stored by web pages</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Performance">Performance tool: revamped Profiler UI and frame rate timeline</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/tools/Working_with_iframes">Frame switching: point the developer tools at a specific iframe in the page</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Console.table">console.table support</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector#Examining_event_listeners">jQuery events are visible in the Page Inspector</a></li> +</ul> + +<p><a class="external-icon external" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&chfieldto=2014-09-02&chfield=resolution&query_format=advanced&chfieldfrom=2014-07-21&chfieldvalue=FIXED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Profiler&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Storage%20Inspector&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20Timeline&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20Web%20Audio%20Editor&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&component=Developer%20Tools%3A%20WebIDE&component=Simulator&product=Firefox&product=Firefox%20OS&list_id=11184176">All devtools bugs fixed between Firefox 33 and Firefox 34</a>.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Our experimental implementation of CSS Fonts Level 3 progresses. Newly implemented features are: + <ul> + <li>the fallback algorithm of {{cssxref("font-variant-position")}}, creating synthetic alternates for missing glyphs, based on the subscript and superscript metrics supplied by the font ({{bug(1024804)}}).</li> + <li>The <code>layout.css.font-features.enabled</code> preference has been removed, meaning the following properties have been activated by default: + <ul> + <li>The CSS Font Level 3 version of {{cssxref("font-variant")}} which is now a shorthand property.</li> + <li>The longhand properties {{cssxref("font-variant-caps")}}, {{cssxref("font-variant-numeric")}}, {{cssxref("font-variant-position")}}, {{cssxref("font-variant-east-asian")}}, {{cssxref("font-variant-ligatures")}}, and {{cssxref("font-variant-alternates")}}.</li> + <li>The properties {{cssxref("font-kerning")}} and {{cssxref("font-synthesis")}}</li> + <li>The properties {{cssxref("font-feature-settings")}} and {{cssxref("font-language-override")}} are unprefixed. The prefixed version are still available for some time to ease transition.</li> + </ul> + </li> + </ul> + </li> + <li>The value <code>auto</code> has been added to {{cssxref("min-width")}} and {{cssxref("min-height")}} with a different behavior than the last time ({{bug(984711)}} and {{bug(1015474)}}).</li> + <li>An experimental implementation, disabled by default, of the filter functional values of the {{cssxref("filter")}} property have been implemented. It is controlled by the <code>layout.css.filters.enabled</code> pref ({{bug(948265)}}).</li> + <li>Fixed starting of CSS transitions that start together with changes to {{cssxref("display")}}, {{cssxref("position")}}, {{cssxref("overflow")}}, and similar properties ({{bug(625289)}})</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<p><em>No change.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>The ES6 syntax for <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names">computed property names on object literals</a> has been implemented ({{bug(924688)}}). + + <ul> + <li>This includes <a href="/en-US/docs/Web/JavaScript/Reference/Functions/get">getter</a> and <a href="/en-US/docs/Web/JavaScript/Reference/Functions/set">setter</a> method names as well ({{bug(1048384)}}) and can also be used with <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Computed_object_property_names_and_destructuring">destructuring</a>.</li> + </ul> + </li> + <li>The ES6<a href="/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions"> shorthand syntax for defining methods</a> on objects has been implemented ({{bug(924672)}}).</li> + <li>The ES6 <code>Object</code> method {{jsxref("Object.assign", "Object.assign()")}} has been implemented ({{bug(937855)}}).</li> + <li>ES6 <a href="/en-US/docs/Web/JavaScript/Reference/template_strings">template strings</a> and the {{jsxref("String.raw()")}} method are now supported ({{bug(1038259)}}, {{bug(1039774)}}).</li> + <li>A new ES6 object {{jsxref("WeakSet")}} has been added ({{bug(792439)}}).</li> + <li>ES6 <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol">Symbols</a> (only available in the Nightly channel) have been updated to conform with recent specification changes ({{bug(1042602)}}): + <ul> + <li>When trying to convert a symbol to a number, a <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError" title="The TypeError object represents an error when a value is not of the expected type."><code>TypeError</code></a> will be thrown now.</li> + <li>When using loose equality, <code>Object(sym) == sym</code> returns <code>true</code> now.</li> + </ul> + </li> + <li>The experimental {{jsxref("TypedArray.prototype.move()")}} method (only available in former Nightly and Aurora channels) has been replaced with the now implemented standard ES6 {{jsxref("TypedArray.prototype.copyWithin()")}} method ({{bug(1021379)}}).</li> + <li>In <a href="/en-US/docs/Web/JavaScript/Reference/Strict_mode">strict mode</a>, setting a <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Duplicate_property_names">duplicate property name in object literals</a> will no longer throw a <code>SyntaxError</code> as per ES6 specification ({{bug(1041128)}}).</li> + <li>In regular expressions (including <code>String.replace</code>), the matched text for a capturing group is now <code>undefined</code> instead of the empty string when that capturing group didn't get consulted because quantifiers prevented its exercise (see {{bug(369778)}} and <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#Gecko_specific_notes">this example code</a>). Note that due to web compatibility, RegExp.$N will still return an empty string ({{bug(1053944)}}).</li> + <li>The ES6 <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator">spread operator</a> is now supported in <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">destructuring</a> ({{bug(933276)}}).</li> + <li><a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">Destructuring</a> now uses iterator protocol instead of array-like protocol ({{bug(933276)}}).</li> + <li><span class="message"><span class="content">{{jsxref("Proxy.revocable()")}} has been implemented</span></span> ({{bug(978279)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>The {{domxref("Element.matches()")}} method has been added; it does what the non-standard <code>mozMatchesSelector()</code> was doing ({{bug(886308)}}).</li> + <li>The {{domxref("Performance.now()")}} method is now available to Web workers ({{bug(908390)}}).</li> + <li>The non-standard interface <code>MozNamedAttrMap</code> has been renamed to the standard {{domxref("NamedNodeMap")}} and {{domxref("Element.attributes")}} has been adapted to use it ({{bug(1055467)}}).</li> + <li>The {{domxref("Path2D.addPath()")}} method has been added ({{bug(985801)}}).</li> + <li>The non-standard <a href="/en-US/docs/Web/API/Device_Storage_API">Device Storage API</a> is now also enabled for privileged apps installed on Android ({{bug(886627)}}).</li> + <li>Web Crypto API has been enabled by default ({{bug(1074001)}}).</li> + <li>The {{domxref("MediaStreamTrack.stop()")}} method has been added ({{bug(1057955)}}).</li> + <li>Our experimental implementation of EME continues. The {{domxref("MediaKeySession.getUsableKeyIds()")}} method has been added ({{bug(1057171)}}).</li> + <li>Regarding <a href="/en-US/docs/Web/Guide/API/WebRTC">WebRTC</a>: + <ul> + <li>an experiment implementation of {{domxref("RTPSender")}} and {{domxref("RTPReceiver")}} working with {{domxref("RTCPeerConnection")}} has landed ({{bug(1032835)}}).</li> + <li>application window sharing has been added to {{domxref("Navigation.getUserMedia()")}} ({{bug(1036653)}}) and {{domxref("MediaTrackConstraintSet")}} now supports <code>browserWindow</code> and <code>scrollWithPage</code> allowing to chose the tab of a window that has to be shared without showing the tab chooser dialog ({{bug(1041700)}}).</li> + <li><code>"browser"</code> is now an accepted value of MediaSourceEnum, used to define constraints ({{bug(1041493)}}).</li> + </ul> + </li> + <li>For Web Components, event retargeting is now implemented ({{bug(887541)}}).</li> + <li>The {{domxref("Headers")}} interface has been implemented ({{bug(1029620)}}). It is controlled by the <code>dom.fetch.enabled</code> preference which is set to <code>false</code> by default.</li> + <li>Regarding our experimental implementation of Web Animations, the {{domxref("AnimationEffect")}} interface has been added, with the single {{domxref("AnimationEffect.name")}} property ({{bug(1045993)}}). Web Animations is not activated by default and is controlled by the <code>dom.animations-api.core.enabled</code> preference.</li> + <li>CSSOM View smooth scrolling methods have been added: {{domxref("Window.scroll()")}}, {{domxref("Window.scrollTo()")}}, and {{domxref("Window.scrollBy()")}} ({{bug(1022818)}}).</li> + <li>The non-standard <code>MozSmsSegmentInfo</code> is no more visible on the global object {{bug(916607)}}.</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<p><em>No change.</em></p> + +<h3 id="SVG">SVG</h3> + +<p><em>No change.</em></p> + +<h3 id="AudioVideo">Audio/Video</h3> + +<p><em>No change.</em></p> + +<h2 id="Security_and_Networking">Security and Networking</h2> + +<ul> + <li>SSLv3 is now disabled by default ({{bug(1030963)}}).</li> + <li>A warning is sent to the console when a Web site use the CSS <code>reflected-xss</code> directive ({{bug(1045902)}}).</li> +</ul> + +<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2> + +<ul> + <li>localstore.rdf has been removed ({{bug(559505)}}).</li> +</ul> + +<h3 id="Add-on_SDK">Add-on SDK</h3> + +<h4 id="Highlights">Highlights</h4> + +<ul> + <li>New API: <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/dev_panel">dev/panel</a> enables you to extend the Firefox Developer Tools.</li> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm">jpm</a> beta released.</li> + <li><code>"./my-file"</code> introduced everywhere as an alias for <code>require("sdk/self").data.url("my-file")</code></li> + <li>Added the ability to <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/tabs#Attaching_stylesheets">attach stylesheets to individual tabs</a>.</li> +</ul> + +<h4 id="Details">Details</h4> + +<p><a class="external external-icon" href="https://github.com/mozilla/addon-sdk/compare/firefox33...firefox34">GitHub commits made between Firefox 33 and Firefox 34</a>. This will not include any uplifts made after this release entered Aurora.</p> + +<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&chfieldto=2014-09-02&chfield=resolution&query_format=advanced&chfieldfrom=2014-07-21&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&product=Add-on%20SDK&list_id=11562840">Bugs fixed between Firefox 33 and Firefox 34</a>. This will not include any uplifts made after this release entered Aurora.</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/34/">Site Compatibility for Firefox 34</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers('33')}}</p> diff --git a/files/fr/mozilla/firefox/releases/34/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/34/site_compatibility/index.html new file mode 100644 index 0000000000..10affefd54 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/34/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 34 +slug: Mozilla/Firefox/Releases/34/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 34 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/34/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/34/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/releases/36/index.html b/files/fr/mozilla/firefox/releases/36/index.html new file mode 100644 index 0000000000..6bb7247404 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/36/index.html @@ -0,0 +1,198 @@ +--- +title: Firefox 36 for developers +slug: Mozilla/Firefox/Releases/36 +tags: + - Firefox + - NeedsTranslation + - TopicStub +translation_of: Mozilla/Firefox/Releases/36 +--- +<div>{{FirefoxSidebar}}</div><div> +<div><span class="seoSummary">Firefox 36 was released on February 24th, 2015. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.</span></div> + +<div> </div> +</div> + +<h2 id="Changes_for_Web_developers">Changes for Web developers</h2> + +<h3 id="Developer_Tools">Developer Tools</h3> + +<p>Highlights:</p> + +<ul> + <li><a href="/en-US/docs/Tools/Debugger#Debug_eval_sources">eval sources now appear in the Debugger</a></li> + <li><a href="/en-US/docs/Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE">Simpler process for connecting to Firefox for Android</a></li> + <li>Box Model Highlighter works on remote targets</li> + <li><a href="/en-US/docs/Tools/Performance#Inverting_the_call_tree">"Invert the call tree" option in the Profiler </a></li> + <li><a href="/en-US/docs/Tools/Web_Console#Type-specific_rich_output">Inspect DOM promises in the console</a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector#Element_popup_menu_2">Extra "Paste" commands in the Inspector</a></li> +</ul> + +<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Client%20Software&chfieldto=2014-11-28&chfield=resolution&query_format=advanced&chfieldfrom=2014-10-13&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Profiler&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Storage%20Inspector&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20Timeline&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20Web%20Audio%20Editor&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&component=Developer%20Tools%3A%20WebIDE&product=Firefox&list_id=11736454">All devtools bugs fixed between Firefox 35 and Firefox 36</a>.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>The {{cssxref("will-change")}} property has been enabled by default ({{bug(961871)}}).</li> + <li>The {{cssxref("white-space")}} property is now working on {{HTMLElement("textarea")}} HTML elements ({{bug(82711)}}).</li> + <li>The {{cssxref("unicode-range")}} descriptor is now supported by {{cssxref("@font-face")}} ({{bug(475891)}}), but not enabled by default.</li> + <li>The properties {{cssxref("text-decoration-color")}}, {{cssxref("text-decoration-line")}}, and {{cssxref("text-decoration-style")}} are unprefixed ({{bug(825004)}}). The prefixed version are still available for some time to ease transition ({{bug(1097922)}}).</li> + <li>The {{cssxref("text-decoration")}} property is turned into shorthand property ({{bug(1039488)}}).</li> + <li>The properties {{cssxref("object-fit")}} and {{cssxref("object-position")}} are now supported ({{bug(624647)}})</li> + <li>The <code>contents</code> value of the {{cssxref("display")}} property has been experimentally implemented. It is preffed off by default ({{bug(907396)}}).</li> + <li>In <a href="/en-US/docs/Quirks_Mode_and_Standards_Mode">Quirks mode</a>, the <a href="https://developer.mozilla.org/en-US/docs/Mozilla_Quirks_Mode_Behavior#Miscellaneous_.26_Style"><code>:active</code> and <code>:hover</code> quiver quirk</a> has been altered to be applied less often: it is now used only on links, only if there are no pseudo-element or other pseudo-class in the element and if it isn't part of a pseudo-class element ({{bug(783213)}}).</li> + <li>The {{cssxref("isolation")}} property has been implemented ({{bug(1077872)}}).</li> + <li>CSS {{cssxref("<gradient>")}} now applies on the premultiplied colors, matching the spec and other browsers, and getting rid of unexpected gray colors appearing in them ({{bug(591600)}}).</li> + <li>Interpolation hint syntax has been added to {{cssxref("<gradient>")}} ({{bug(1074056)}}).</li> + <li>The {{cssxref("scroll-behavior")}} property has been implemented ({{bug(1010538)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Support for <a href="/en-US/docs/Web/HTML/Element/meta"><code><meta name="referrer"></code></a> has been added ({{bug(704320)}}).</li> + <li>In Firefox, {{HTMLElement("input")}} filters specified in the {{htmlattrxref("accept", "input")}} attribute will always be selected by default, unless there is a unknown value, that is an unknown mime type or badly formatted value in the {{htmlattrxref("accept", "input")}} attribute. Previously specified filters were only selected by default for <code>image/*</code>,<code>video/*</code> and <code>audio/*</code> values ({{bug(826185)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>The <a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla">ECMAScript 6</a> Symbol data type has been enabled by default (was available in the Nightly channel since version 33) ({{bug(1066322)}}): + + <ul> + <li>{{jsxref("Symbol")}}</li> + <li>{{jsxref("Symbol.for()")}}</li> + <li>{{jsxref("Symbol.keyFor()")}}</li> + <li>{{jsxref("Object.getOwnPropertySymbols()")}}</li> + </ul> + </li> + <li>The old placeholder string <code>"@@iterator"</code> has been replaced with the real ES6 well-known symbol {{jsxref("Symbol.iterator")}} for the <a href="/en-US/docs/Web/JavaScript/Guide/iterable">iterable</a> interface property key ({{bug(918828)}}).</li> + <li>The spec-internal abstract operation <code>ToNumber(string)</code> now supports binary (<code>0b</code>) and octal (<code>0o</code>) literals, this is a potentially breaking change from ES5 ({{bug(1079120)}}). + <ul> + <li><code>Number("0b11")</code> now returns <code>3</code>, not <code>NaN</code>.</li> + <li><code>"0o11" == 9</code> now returns <code>true</code>, not <code>false</code>.</li> + </ul> + </li> + <li>The <a href="/en-US/docs/Web/JavaScript/Reference/Statements/const"><code>const</code></a> declaration is now block-scoped and requires an initializer ({{bug(611388)}}). It also can not be redeclared anymore ({{bug(1095439)}}). + <ul> + <li><code>{const a=1}; a;</code> now throws a {{jsxref("ReferenceError")}} and does not return <code>1</code> anymore due to block-scoping.</li> + <li><code>const a;</code> now throws a {{jsxref("SyntaxError")}} ("missing = in const declaration<code>"</code>): An initializer is required.</li> + <li><code>const a = 1; a = 2;</code> now also throws a {{jsxref("SyntaxError")}} ("invalid assignment to const a").</li> + </ul> + </li> + <li>The ES7 method {{jsxref("Array.prototype.includes")}} has been implemented, but for now, it is only enabled in Nightly builds ({{bug(1069063)}}).</li> + <li>The <a href="/en-US/docs/Web/JavaScript/Reference/Operators/delete"><code>delete</code></a> operator now triggers the "<a href="/en-US/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone_and_errors_with_let">temporal dead zone</a>" when using with <a href="/en-US/docs/Web/JavaScript/Reference/Statements/let"><code>let</code></a> and <a href="/en-US/docs/Web/JavaScript/Reference/Statements/const"><code>const</code></a> ({{bug(1074571)}}).</li> + <li>The non-standard <a href="/en-US/docs/Web/JavaScript/Reference/Statements/let#Non-standard_let_extensions"><code>let</code> blocks and <code>let</code> expressions</a> are deprecated and will now log a warning in the console. Do not use them anymore, they will be removed in the future.</li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap">WeakMap</a> constructor now handles optional iterable argument ({{bug(1092537)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>The {{domxref("CanvasRenderingContext2D.resetTransform()")}} method of the Canvas API has been implemented ({{bug(1099148)}}).</li> + <li>ECDSA is now supported in the Web Crypto API ({{bug(1034854)}}).</li> + <li>Our experimental implementation of WebGL 2.0 is going forward! + <ul> + <li>The {{domxref("WebGLQuery")}} interface is available ({{bug(1048719)}}).</li> + <li>The {{domxref("WebGL2RenderingContext.invalidateFrameBuffer()")}} method has been implemented ({{bug(1076456)}}).</li> + </ul> + </li> + <li>The {{domxref("MediaDevices")}} interface, containing the {{jsxref("Promise")}}-based version of {{domxref("MediaDevices.getUserMedia()", "getUserMedia()")}}, has been added. It is available via {{domxref("Navigator.mediaDevices")}} ({{bug(1033885)}}).</li> + <li>The EME-related {{domxref("Navigator.requestMediaKeySystemAccess()")}} method, and the related {{domxref("MediaKeySystemAccess")}}, is now supported ({{bug(1095257)}}).</li> + <li>The {{event("keyschange")}} event is now sent when an EME-related CDM change keys in a session ({{bug(1081755)}}).</li> + <li>Experimental support for virtual reality devices has landed behind the <code>dom.vr.enabled</code> preference, off by default ({{bug(1036604)}}).</li> + <li>The function associated with {{domxref("RTCPeerConnection.onsignalingstatechange")}} now receives an event as parameter, as per spec ({{bug(1075133)}}).</li> + <li>The experimental implementation of Web Animations make progress: the method {{domxref("AnimationPlayer.play()")}} and {{domxref("AnimationPlayer.pause()")}} are now supported ({{bug(1070745)}}), as well as {{domxref("AnimationPlayer.playState")}} ({{bug(1037321)}}).</li> + <li>The non-standard {{domxref("DOMRequest")}} interface has now a {{domxref("DOMRequest.then()", "then()")}} method ({{bug(839838)}}).</li> + <li>The CSSOM View scroll behavior controlling methods, {{domxref("Element.scroll()")}}, {{domxref("Element.scrollTo()")}}, {{domxref("Element.scrollBy()")}}, and {{domxref("Element.scrollIntoView()")}}, have been implemented or extended ({{bug(1045754)}} and {{bug(1087559)}}).</li> + <li>Assigning to {{domxref("Element.innerHTML")}} on an {{domxref("SVGElement")}} now create elements in the SVG namespace ({{bug(886390)}}).</li> + <li>The <a href="/en-US/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebBrowserPersist#saveURI()"><code>nsIWebBrowserPersist.saveURI()</code></a> method now requires 8 arguments, in an order incompatible with previous releases.</li> + <li>Support for Media Source Extensions (MSE) is activated by default in non-build releases (Nightly and Developer Edition only) ({{bug(1000686)}}). It keeps being preffed off on Beta and Release version.</li> +</ul> + +<section id="sect13"> </section> + +<h3 id="MathML">MathML</h3> + +<p><em>No change.</em></p> + +<h3 id="SVG">SVG</h3> + +<p><em>No change.</em></p> + +<h3 id="AudioVideo">Audio/Video</h3> + +<p><em>No change.</em></p> + +<h2 id="Networking">Networking</h2> + +<ul> + <li>Support for SPDY/3 has been removed; support for SPDY/3.1 is still available ({{bug(1097944)}}).</li> +</ul> + +<h2 id="Security">Security</h2> + +<ul> + <li>RC4 is now considered as insecure and all UI indicators will react as such; SSLv3 has been disabled by default in Firefox 34, but the UI has been changed to help the user better understand what is happening ({{bug(1093595)}}).</li> + <li>Also, RC4 is no longer offered in the initial handshake of TLS ({{bug(1088915)}}).</li> + <li>The <a href="/en-US/docs/Web/Security/CSP/CSP_policy_directives#form-action"><code>form-action</code></a> directive of CSP 1.1 is now supported ({{bug(529697)}}).</li> + <li>In the preferences of Firefox, The <a href="/en-US/docs/Web/Security/Do_not_track_field_guide">Do not track </a>selection widget is again an on/off switch ({{bug(1071747)}}).</li> +</ul> + +<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2> + +<h3 id="Add-on_SDK">Add-on SDK</h3> + +<h4 id="Highlights">Highlights</h4> + +<ul> + <li>The <code><a href="en-US/Add-ons/SDK/Low-Level_APIs/test_httpd">sdk/test/httpd</a></code> module was removed in <a href="/en-US/Firefox/Releases/36">Firefox 36</a>, please use the <a href="https://www.npmjs.com/package/addon-httpd">addon-httpd</a> npm module instead.</li> + <li>Add badges to <code><a href="en-US/Add-ons/SDK/High-Level_APIs/ui">sdk/ui</a></code> buttons ({{bug(994280)}}).</li> + <li>Implemented global <code>require</code> function to access sdk modules anywhere ({{bug(1070927)}}), using:</li> +</ul> + +<pre>var { require } = Cu.import("resource://gre/modules/commonjs/toolkit/require.js", {});</pre> + +<h4 id="Details">Details</h4> + +<p><a href="https://github.com/mozilla/addon-sdk/compare/firefox35...firefox36">Github commits made between Firefox 35 and Firefox 36</a>.</p> + +<h3 id="JavaScript_code_modules">JavaScript code modules</h3> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/PromiseUtils.jsm#resolveOrTimeout()" title="PromiseUtils.resolveOrTimeout">PromiseUtils.resolveOrTimeout</a> is implemented ({{bug(1080466)}}).</li> + <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/PromiseUtils.jsm#defer()" title="PromiseUtils.defer">PromiseUtils.defer</a> (a replacement for <a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm#defer()" title="Promise.defer">Promise.defer</a>) is implemented ({{bug(1093021)}}).</li> +</ul> + +<h3 id="Interfaces">Interfaces</h3> + +<h4 id="nsIContentPolicy">nsIContentPolicy</h4> + +<p>New constants have been added to {{interface("nsIContentPolicy")}} to allow Gecko internals and add-on code to better differentiate different types of requests. These are:</p> + +<dl> + <dt><code>TYPE_FETCH</code></dt> + <dd>Indicates a content load request initiated by the {{domxref("GlobalFetch.fetch()")}} method.</dd> + <dt><code>TYPE_IMAGESET</code></dt> + <dd>Indicates a request to load an {{HTMLElement("img")}} (with the {{htmlattrxref("srcset", "img")}} attribute or {{HTMLElement("picture")}} element.</dd> +</dl> + +<h3 id="XUL">XUL</h3> + +<p><em>No change.</em></p> + +<h3 id="Other">Other</h3> + +<ul> + <li>Firefox <code>-remote</code> <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options">command line option</a> has been removed ({{bug(1080319)}}).</li> +</ul> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/36/">Site Compatibility for Firefox 36</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers('35')}}</p> diff --git a/files/fr/mozilla/firefox/releases/36/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/36/site_compatibility/index.html new file mode 100644 index 0000000000..486f1fdf23 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/36/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 36 +slug: Mozilla/Firefox/Releases/36/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 36 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/36/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/36/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/releases/37/index.html b/files/fr/mozilla/firefox/releases/37/index.html new file mode 100644 index 0000000000..60852c8ec1 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/37/index.html @@ -0,0 +1,128 @@ +--- +title: Firefox 37 for developers +slug: Mozilla/Firefox/Releases/37 +tags: + - Firefox + - NeedsTranslation + - Release Notes + - TopicStub +translation_of: Mozilla/Firefox/Releases/37 +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 37 was released on March 31st, 2015. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.</p> + +<h2 id="Changes_for_Web_developers">Changes for Web developers</h2> + +<h3 id="Developer_Tools">Developer Tools</h3> + +<p>Highlights:</p> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor#Security">Security panel in the Network Monitor</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Work_with_animations#Firefox_37">Animations panel in the Page Inspector</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/WebIDE/Running_and_debugging_apps#Running_a_custom_build_step">Support for running a custom build step in WebIDE</a></li> +</ul> + +<p><a class="external-icon external" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Client%20Software&chfieldto=2015-01-12&chfield=resolution&query_format=advanced&chfieldfrom=2014-11-28&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Profiler&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Storage%20Inspector&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20Timeline&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20Web%20Audio%20Editor&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&component=Developer%20Tools%3A%20WebIDE&product=Firefox&list_id=11892733">All devtools bugs fixed between Firefox 36 and Firefox 37</a>.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>{{cssxref("display")}}<code>:</code> <code>contents</code> is now activated by default ({{bug(1102374)}} and {{bug(1105369)}}).</li> + <li><a href="/en-US/docs/Web/Guide/CSS/Using_multi-column_layouts">CSS multi-column layout</a> is now working on element with {{cssxref("display")}}<code>:</code> <code>table-caption</code> ({{bug(1109571)}}).</li> + <li>Relative positioning ({{cssxref("position")}}<code>:</code> <code>relative</code>) of table cells has been implemented ({{bug(35168)}}).</li> + <li>The quirks mode behavior of {{cssxref("empty-cells")}} has been removed: it now defaults to <code>show</code> like in standard mode ({{bug(1020400)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>The value <code><a rel="noreferrer"></code> now also works when the link is opened in new tab ({{bug(1031264)}}).</li> + <li>The <code>'.'</code> followed by the extension is now allowed in <code><input accept></code>: when used, a file selector filters with this given extension to be proposed to the user ({{bug(826176)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>The {{jsxref("Map")}}, {{jsxref("Set")}}, {{jsxref("WeakMap")}} and {{jsxref("WeakSet")}} constructors now ignore null iterable ({{bug(1092538)}}).</li> + <li>The {{jsxref("Map")}}, {{jsxref("Set")}}, {{jsxref("WeakMap")}} and {{jsxref("WeakSet")}} constructors now supports monkey-patched <code>prototype.set</code> or <code>prototype.add</code> ({{bug(804279)}}).</li> + <li>The Non-standard {{jsxref("String.quote","String.prototype.quote()")}} method has been removed ({{bug(1103181)}}).</li> + <li>The {{jsxref("RegExp.prototype.flags")}} property has been implemented ({{bug(1108467)}}).</li> + <li>Several {{jsxref("Array")}} methods have been implemented for <a href="/en-US/docs/Web/JavaScript/Typed_arrays">typed arrays</a> as well: + <ul> + <li>The {{jsxref("TypedArray.every", "every()")}} and {{jsxref("TypedArray.some", "some()")}} methods ({{bug(1116390)}}).</li> + <li>The {{jsxref("TypedArray.find", "find()")}} and {{jsxref("TypedArray.findIndex", "findIndex()")}} methods ({{bug(1078975)}}).</li> + <li>The {{jsxref("TypedArray.fill", "fill()")}} method ({{bug(1113722)}}).</li> + <li>The {{jsxref("TypedArray.indexOf", "indexOf()")}} and {{jsxref("TypedArray.lastIndexOf", "lastIndexOf()")}} methods ({{bug(1107601)}}).</li> + <li>The {{jsxref("TypedArray.join", "join()")}} method ({{bug(1115817)}}).</li> + <li>The {{jsxref("TypedArray.reduce", "reduce()")}} and {{jsxref("TypedArray.reduceRight", "reduceRight()")}} methods ({{bug(1117350)}}).</li> + <li>The {{jsxref("TypedArray.reverse", "reverse()")}} method ({{bug(1111516)}}).</li> + <li>The {{jsxref("TypedArray.keys", "keys()")}}, {{jsxref("TypedArray.values", "values()")}}, and {{jsxref("TypedArray.entries", "entries()")}} methods ({{bug(1119217)}}).</li> + </ul> + </li> + <li>ES6 Proxy {{jsxref("Global_Objects/Proxy/handler/enumerate", "enumerate")}} trap is implemented ({{bug(783829)}}).</li> + <li>The <code>configurable</code> attribute of the {{jsxref("Function.length")}} property is now <code>true</code> per the ES6 specification ({{bug(911142)}}).</li> + <li>The development of <a href="http://wiki.ecmascript.org/doku.php?id=strawman:data_parallelism">ParallelJS (PJS)</a> has been discontinued due to the limited future prospects, little attention and code complexity. The experimental implementation that had been enabled only on the Nightly channel, including the <code>Array.prototype.mapPar</code>, <code>filterPar</code> and <code>reducePar</code> methods, has been completely removed.</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>The {{domxref("StereoPannerNode")}} <a href="/en-US/docs/Web/API/Web_Audio_API">Web Audio</a> node has been implemented ({{bug(1100349)}}).</li> + <li>The {{jsxref("Promise")}}-based version of {{domxref("OfflineAudioContext")}} is now available ({{bug(1087944)}}).</li> + <li>The experimental, not activated by default, implementation of <a href="/en-US/docs/Web/API/ServiceWorker_API">Service Workers</a> progresses: {{domxref("ServiceWorkerGlobalScope.update()")}} has been implemented {{bug(1065366)}}.</li> + <li>The <a href="/en-US/docs/Web/API/IndexedDB_API">IndexedDB API</a> can now be used in <a href="/en-US/docs/Web/API/Web_Workers_API">Web workers</a> ({{bug(701634)}}).</li> + <li>Our experimental implementation of WebGL 2.0 is going forward! + <ul> + <li>The {{domxref("WebGL2RenderingContext.getBufferSubData()")}} method has been implemented to provide access to Buffer Objects ({{bug(1048731)}}).</li> + </ul> + </li> + <li>Some key names of <code>KeyboardEvent.key</code> are changed for conforming <a href="https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3Events-key.html">the latest DOM Level 3 Events spec</a>. See <a href="/en-US/docs/Web/API/KeyboardEvent.key#Key_values">the tables of KeyboardEvent.key values in MDN</a>. The green cells are new values. And purple values are still ustable. Be careful if you use them (meta bug for these changes is {{bug(900372)}}).</li> + <li>The {{domxref("Console")}} interface is now working on {{domxref("ServiceWorker")}} and {{domxref("SharedWorker")}}. It was previously available but not working ({{bug(1058644)}}).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<p><em>No change.</em></p> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>SVG2's <code><marker orient="auto-start-reverse"></code> has been implemented ({{bug(1107584)}}).</li> +</ul> + +<h3 id="AudioVideo">Audio/Video</h3> + +<p><em>No change.</em></p> + +<h2 id="Networking">Networking</h2> + +<ul> + <li>WebSockets now supports the <code>permessage</code> compression method, if the server does support it ({{bug(792831)}}).</li> +</ul> + +<h2 id="Security">Security</h2> + +<ul> + <li>The usage of weak protocols or ciphers, like SSL 3.0 and RC4, are now logged in the console, to warn sites that are using it ({{bug(1092835)}}).</li> + <li>The <a href="/en-US/docs/Web/Security/CSP">CSP</a> 1.1 <code>referrer</code> <a href="/en-US/docs/Web/Security/CSP/CSP_policy_directives">directive</a> is now supported ({{bug(965727)}}).</li> +</ul> + +<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2> + +<h3 id="Add-on_SDK">Add-on SDK</h3> + +<p><em>No change.</em></p> + +<h3 id="XUL">XUL</h3> + +<p><em>No change.</em></p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/37/">Site Compatibility for Firefox 37</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers('36')}}</p> diff --git a/files/fr/mozilla/firefox/releases/37/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/37/site_compatibility/index.html new file mode 100644 index 0000000000..343e8da620 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/37/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 37 +slug: Mozilla/Firefox/Releases/37/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 37 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/37/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/37/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/releases/38/index.html b/files/fr/mozilla/firefox/releases/38/index.html new file mode 100644 index 0000000000..f325fed7b5 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/38/index.html @@ -0,0 +1,186 @@ +--- +title: Firefox 38 for developers +slug: Mozilla/Firefox/Releases/38 +tags: + - Firefox + - NeedsTranslation + - Release + - TopicStub +translation_of: Mozilla/Firefox/Releases/38 +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 38 was released on May 12th, 2015. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.</p> + +<h2 id="Changes_for_Web_developers">Changes for Web developers</h2> + +<h3 id="Developer_Tools">Developer Tools</h3> + +<p>Highlights:</p> + +<ul> + <li><a href="/en-US/docs/Tools/Web_Audio_Editor#Bypassing_nodes">Bypass audio nodes in Web Audio Editor</a></li> + <li><a href="/en-US/docs/Tools/Web_Console#Helper_commands">"copy" command in Web Console</a></li> + <li><a href="/en-US/docs/Tools/Web_Console#XHR">Highlight and filter XmlHttpRequests in Web Console</a></li> + <li><a href="/en-US/docs/Tools/Debugger/How_to/Examine,_modify,_and_watch_variables">See optimized-out variables in the Debugger</a></li> + <li><a href="/en-US/docs/Tools/Network_Monitor#Security">See security warnings in the Network Monitor</a></li> + <li><a href="/en-US/docs/Tools/Network_Monitor#Network_request_fields">See transferred sizes in the Network Monitor</a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Work_with_animations#Animations_view">Play/pause all animations in the page</a></li> +</ul> + +<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Client%20Software&chfieldto=2015-02-23&query_format=advanced&chfield=resolution&chfieldfrom=2015-01-12&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Profiler&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Storage%20Inspector&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20Timeline&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20Web%20Audio%20Editor&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&component=Developer%20Tools%3A%20WebIDE&product=Firefox&list_id=12076303">All devtools bugs fixed between Firefox 37 and Firefox 38</a>.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Support for {{cssxref("ruby-position")}} and {{cssxref("ruby-align")}} have been added and is available by default ({{bug(1055676)}} {{bug(1123917)}} and {{bug(1039006)}}).</li> + <li>The {{cssxref(":unresolved")}} pseudo-class has been implemented for custom elements ({{bug(1111633)}}).</li> + <li>The predefined style {{cssxref("list-style-type", "ethiopic-numeric")}} now uses a space, instead of a dot, as the suffix to match a recent change to the spec ({{bug(1120721)}}).</li> + <li>CSS transitions on generated content (with {{cssxref("::before")}} and {{cssxref("::after")}}) on both an inline and the block that splits them now start as expected by the specification ({{bug(1110277)}}).</li> + <li>The implementation of CSS Logical Properties made big progress. The following properties are available behind the {{pref("layout.css.vertical-text.enabled")}} flag (<code>false</code> by default): + <ul> + <li>Direction-independent equivalents of {{cssxref("width")}} and {{cssxref("height")}}: {{cssxref("block-size")}} and {{cssxref("inline-size")}} ({{bug(1117983)}}).</li> + <li>Direction-independent equivalents of {{cssxref("min-width")}} and {{cssxref("min-height")}}: {{cssxref("min-block-size")}} and {{cssxref("min-inline-size")}} ({{bug(1117983)}}).</li> + <li>Direction-independent equivalents of {{cssxref("max-width")}} and {{cssxref("max-height")}}: {{cssxref("max-block-size")}} and {{cssxref("max-block-size")}} ({{bug(1117983)}}).</li> + <li>Direction-independent equivalents of {{cssxref("margin-top")}}, {{cssxref("margin-right")}}, {{cssxref("margin-bottom")}} and {{cssxref("margin-left")}}: {{cssxref("margin-block-start")}}, {{cssxref("margin-block-end")}}, {{cssxref("margin-inline-start")}} and {{cssxref("margin-inline-end")}} ({{bug(649142)}}).</li> + <li>Direction-independent equivalents of {{cssxref("padding-top")}}, {{cssxref("padding-right")}}, {{cssxref("padding-bottom")}} and {{cssxref("padding-left")}}: {{cssxref("padding-block-start")}}, {{cssxref("padding-block-end")}}, {{cssxref("padding-inline-start")}} and {{cssxref("padding-inline-end")}} ({{bug(649142)}}).</li> + <li>Direction-independent equivalents of {{cssxref("border-top")}}, {{cssxref("border-right")}}, {{cssxref("border-bottom")}} and {{cssxref("border-left")}} and their longhands for width, style and color: {{cssxref("border-block-start")}}, {{cssxref("border-block-start-width")}}, {{cssxref("border-block-start-style")}}, {{cssxref("border-block-start-color")}}, {{cssxref("border-block-end")}}, {{cssxref("border-block-end-width")}}, {{cssxref("border-block-end-style")}}, {{cssxref("border-block-end-color")}}, {{cssxref("border-inline-start")}}, {{cssxref("border-inline-start-width")}}, {{cssxref("border-inline-start-style")}}, {{cssxref("border-inline-start-color")}}, {{cssxref("border-inline-end")}}, {{cssxref("border-inline-end-width")}}, {{cssxref("border-inline-end-style")}} and {{cssxref("border-inline-end-color")}} ({{bug(649142)}}).</li> + <li>Direction-independent equivalents of {{cssxref("top")}}, {{cssxref("right")}}, {{cssxref("bottom")}} and {{cssxref("left")}}: {{cssxref("offset-block-start")}}, {{cssxref("offset-block-end")}}, {{cssxref("offset-inline-start")}} and {{cssxref("offset-inline-end")}} ({{bug(1120283)}}).</li> + </ul> + </li> + <li>How <a href="/en-US/docs/Web/Guide/CSS/Using_CSS_transitions">CSS transitions</a> start has been modified to match a recent change of the specifications, aiming at having an interoperable behavior between browsers ({{bug(960465)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>The {{HTMLElement("label")}} element no longer dispatches events to the label target element if interactive content is found between the event target and the label ({{bug(229925)}}).</li> + <li>The {{HTMLElement("picture")}} element has been activated by default ({{bug(1017875)}}).</li> + <li>The <code><meta name="referrer"></code> is supported for navigations from the context menu or via a middle-click ({{bug(1113431)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>{{jsxref("Generator/return", "Generator.prototype.return()")}} is implemented ({{bug(1115868)}}).</li> + <li>{{jsxref("Functions/set", "Setter")}} with a {{jsxref("Functions/rest_parameters", "rest parameter", "", 1)}} is now a {{jsxref("SyntaxError")}} ({{bug(1089632)}}).</li> + <li>The {{jsxref("Function/name", "name")}} property of functions is configurable now ({{bug(1084019)}}).</li> + <li>Several {{jsxref("Array")}} methods have been implemented for <a href="/en-US/docs/Web/JavaScript/Typed_arrays">typed arrays</a> as well: + <ul> + <li>The {{jsxref("TypedArray.of", "of()")}} and {{jsxref("TypedArray.from", "from()")}} methods ({{bug(896608)}}).</li> + <li>The {{jsxref("TypedArray.forEach", "forEach()")}} method ({{bug(1107645)}}).</li> + <li>The {{jsxref("TypedArray.filter", "filter()")}} and {{jsxref("TypedArray.map", "map()")}} methods ({{bug(1121936)}}).</li> + <li>The {{jsxref("TypedArray.slice", "slice()")}} method ({{bug(1121935)}}).</li> + </ul> + </li> + <li>Duplicated parameter name is no longer allowed when rest-parameter is present ({{bug(1096376)}}).</li> + <li>Duplicated parameter name is no longer allowed in arrow functions ({{bug(1096377)}}).</li> + <li>Duplicated parameter name is no longer allowed in concise method definitions ({{bug(1096378)}}).</li> + <li>Warning is shown when {{jsxref("Map")}}/{{jsxref("Set")}}/{{jsxref("WeakMap")}} constructor is called without {{jsxref("Operators/new", "new")}} ({{bug(1108930)}}).</li> + <li>The {{jsxref("WeakMap.get", "get")}}, {{jsxref("WeakMap.has", "has")}}, and {{jsxref("WeakMap.delete", "delete")}} methods of {{jsxref("WeakMap")}} objects no longer throw when the <code>key</code> parameter is not an object ({{bug(1127827)}}).</li> + <li>The optional and non-standard second <code>fallback</code> parameter for {{jsxref("WeakMap.prototype.get()")}} has been removed ({{bug(1127827)}}).</li> + <li>When defining a <a href="/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions">generator method</a>, "<code>set</code>" and "<code>get</code>" are no longer invalid names ({{bug(1073809)}}).</li> + <li>{{jsxref("RegExp.prototype.source")}} now returns "(?:)" instead of an empty string for empty regular expressions ({{bug(1130798)}}).</li> + <li>{{jsxref("RegExp.prototype.source")}} and {{jsxref("RegExp.prototype.toString()")}} now escape regular expression patterns properly (e.g. line terminators, "\n") ({{bug(1130860)}}).</li> + <li>The {{jsxref("Regexp")}} {{jsxref("Regexp.global", "global")}}, {{jsxref("Regexp.ignoreCase", "ignoreCase")}}, {{jsxref("Regexp.multiline", "multiline")}}, and {{jsxref("Regexp.sticky", "sticky")}} properties are now prototype accessor properties rather than own data properties of <code>RegExp</code> instances ({{bug(1120169)}}).</li> + <li>The {{jsxref("RegExp.prototype.source")}} property is now prototype accessor property rather than own data property of <code>RegExp</code> instances ({{bug(1120169)}}). Available only in non-Release version, due to {{bug(1150297)}}.</li> + <li>{{jsxref("Function.prototype.toString()")}} now throws for {{jsxref("Proxy")}} objects ({{bug(1100936)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>The Fetch API {{domxref("fetch()")}} method has been implemented ({{bug(1039846)}}).</li> + <li>{{domxref("BroadcastChannel")}} API has been implemented and is available in <a href="/en-US/docs/Web/API/Web_Workers_API">Web Workers</a> ({{bug(966439)}} and {{bug(1121420)}}).</li> + <li>The Console API is now available in <a href="/en-US/docs/Web/API/Web_Workers_API">Web Workers</a>.</li> + <li>{{domxref("CanvasRenderingContext2D.clearHitRegions()")}} has been implemented ({{bug(1119527)}}).</li> + <li>Constants of {{domxref("KeyboardEvent.location")}}, <code>DOM_KEY_LOCATION_MOBILE</code> and DOM_KEY_LOCATION_JOYSTICK, have been removed, since they were removed from the DOM Level 3 Spec ({{bug(936313)}}.</li> + <li>{{domxref("KeyboardEvent.code")}} is now available; previously it was only available in prerelease builds. ({{bug(1126673)}})</li> + <li>{{domxref("KeyboardEvent.code")}} now supports special keys on Sun keyboards on Linux, Android, and Firefox OS. ({{bug(1020139)}})</li> + <li>The {{domxref("TextEncoder.TextEncoder", "TextEncoder()")}} constructor has been changed to match the spec: when an invalid parameter is passed, the {{exception("RangeError")}} exception is now raised, rather than the erroneous {{exception("TypeError")}} ({{bug(1125766)}}).</li> + <li>The User Timing API, adding {{domxref("Performance.mark()")}}, {{domxref("Performance.clearMarks()")}}, {{domxref("Performance.measure()")}}, and {{domxref("Performance.clearMeasures()")}} has been implemented ({{bug(782751)}}).</li> + <li>The prefixed version of {{domxref("Window.indexedDB", "indexedDB")}}, <code>mozIndexedDB</code> has been removed ({{bug(975699)}}).</li> + <li>The {{event("DOMContentLoaded")}} event is no longer cancelable ({{bug(1134559)}}).</li> + <li>You can now use <a href="/en-US/docs/WebSockets">WebSockets</a> in <a href="/en-US/docs/Web/API/Web_Workers_API">Workers</a> ({{bug(504553)}}).</li> + <li>The {{domxref("XMLHttpRequest.responseType")}} and {{domxref("XMLHttpRequest.withCredentials")}} properties can now be set before calling {{domxref("XMLHttpRequest.open()")}} ({{bug(707484)}}).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<p><em>No change.</em></p> + +<h3 id="SVG">SVG</h3> + +<p><em>No change.</em></p> + +<h3 id="AudioVideo">Audio/Video</h3> + +<p><em>No change.</em></p> + +<h2 id="Networking">Networking</h2> + +<p><em>No change.</em></p> + +<h2 id="Security">Security</h2> + +<ul> + <li>In Firefox, the {{htmlattrxref("autocomplete", "input")}}<code>=false</code> attribute is now ignored when dealing with a login form ({{bug(1025703)}}). This is intended to encourage the use of more secure passwords by allowing password manager tools to work more reliably.</li> + <li>RC4 is now disabled when using TLS, except for a few specifically whitelisted Web sites. This whitelist is an interim measure until those sites are fixed ({{bug(1124039)}}). This fallback is controlled by the <code>security.tls.unrestricted_rc4_fallback</code> preference, <code>true</code> by default for the moment ({{bug(1138882)}}).</li> + <li>Web sites needing to fall back to an insecure version of TLS in order to work are now in a hardcoded whitelist which will shrink over time ({{bug(1114816)}}). The whitelist can be disabled by setting {{pref("security.tls.insecure_fallback_hosts.use_static_list")}} to <code>false</code>.</li> +</ul> + +<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2> + +<h3 id="Add-on_SDK">Add-on SDK</h3> + +<h4 id="Highlights">Highlights</h4> + +<ul> + <li><code>sdk/context-menu@2</code> was implemented ({{bug(1070952)}}).</li> + <li><code>sdk/addon/bootstrap</code> was implemented ({{bug(1075541)}}).</li> + <li><code>sdk/windows/loader</code> was removed ({{bug(970135)}}).</li> + <li>Fix for default language detection on Linux ({{bug(1114712)}}).</li> + <li><code>toolkit/loader</code> now has opt-in module compatibility checking, which is enabled for all jpm add-ons ({{bug(1037235)}}).</li> +</ul> + +<h4 id="Electrolysis_(E10s)_updates">Electrolysis (E10s) updates</h4> + +<ul> + <li><code>sdk/page-worker</code> e10s updates ({{bug(1116004)}}).</li> + <li><code>sdk/content/worker</code> e10s updates ({{bug(1116544)}}).</li> + <li><code>sdk/tabs</code> e10s updates ({{bug(1033838)}}).</li> +</ul> + +<h4 id="Details">Details</h4> + +<ul> + <li><a href="https://github.com/mozilla/addon-sdk/compare/firefox36...firefox38">Github commits made between Firefox 37 and Firefox 38</a>.</li> +</ul> + +<h3 id="XUL">XUL</h3> + +<p><em>No change.</em></p> + +<h3 id="JavaScript_code_modules">JavaScript code modules</h3> + +<h4 id="Downloads.jsm">Downloads.jsm</h4> + +<ul> + <li><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadTarget">DownloadTarget</a></code> objects now have <code>exists</code> and <code>size</code> properties, allowing you to determine the existence of and the size of the download's target file on disk, as well as a new <code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadTarget#refresh()">refresh()</a></code> method, which asks that these values be updated.</li> +</ul> + +<h3 id="XPCOM">XPCOM</h3> + +<ul> + <li><code>"@mozilla.org/network/atomic-file-output-stream;1"</code> and <code>"@mozilla.org/network/safe-file-output-stream;1"</code> now throw an exception if <code>PR_APPEND</code> is passed without <code>PR_TRUNCATE</code> ({{bug(1117580)}}).</li> + <li>{{ interface("nsICompositionStringSynthesizer") }} and {{ifmethod("nsIDOMWindowUtils", "sendCompositionEvent")}} have been removed. Instead, use {{ interface("nsITextInputProcessor") }}. ({{bug(917322)}})</li> + <li><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowUtils#sendKeyEvent%28%29">nsIDOMWindowUtils.sendKeyEvent()</a></code> is now deprecated. Instead, use {{ interface("nsITextInputProcessor") }} ({{bug(1119609)}}).</li> +</ul> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/38/">Site Compatibility for Firefox 38</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers('37')}}</p> diff --git a/files/fr/mozilla/firefox/releases/38/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/38/site_compatibility/index.html new file mode 100644 index 0000000000..f7e1b8151e --- /dev/null +++ b/files/fr/mozilla/firefox/releases/38/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 38 +slug: Mozilla/Firefox/Releases/38/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 38 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/38/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/38/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/releases/39/index.html b/files/fr/mozilla/firefox/releases/39/index.html new file mode 100644 index 0000000000..414b60f03c --- /dev/null +++ b/files/fr/mozilla/firefox/releases/39/index.html @@ -0,0 +1,123 @@ +--- +title: Firefox 39 for developers +slug: Mozilla/Firefox/Releases/39 +tags: + - Firefox + - Releases + - TopicStub +translation_of: Mozilla/Firefox/Releases/39 +--- +<div>{{FirefoxSidebar}}</div> + +<p>Firefox 39 est sorti le 2 juillet 2015. Cet article répertorie les modifications clés qui sont utiles non seulement pour les développeurs Web, mais également pour les développeurs Firefox et Gecko ainsi que pour les développeurs d'add-on.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<p>Points forts:</p> + +<ul> + <li><a href="/en-US/docs/Tools/WebIDE/Setting_up_runtimes#Connecting_over_WiFi">WebIDE prend désormais en charge le débogage des appareils Firefox OS via Wi-Fi</a></li> + <li><a href="/en-US/docs/Tools/WebIDE/Working_with_Cordova_apps_in_WebIDE">WebIDE soutient désormais les projets Cordova</a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Work_with_animations#Firefox_39">Affichage des animations: rembobinage, avance rapide et passage à une heure spécifique</a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Work_with_animations#Firefox_39">L'éditeur de courbe de Bézier cubique comprend désormais 31 préréglages</a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Drag_and_drop">Glissez et déposez des éléments dans l'inspecteur de page</a></li> + <li><a href="/en-US/docs/Tools/Web_Console#Command_history">L'historique des commandes de la console Web est désormais conservé entre les sessions</a></li> + <li><a href="/en-US/docs/Tools/Web_Console#Helper_commands">Commande $_ console pour imprimer le dernier résultat évalué</a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_the_box_model#Firefox_39">Meilleur mise en évidence du modèle de boîte pour les éléments en ligne</a></li> +</ul> + +<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Client%20Software&query_based_on=devtools_resolved_week&chfieldto=2015-03-31&chfield=resolution&query_format=advanced&chfieldfrom=2015-02-22&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Storage%20Inspector&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20Web%20Audio%20Editor&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&component=Developer%20Tools%3A%20WebIDE&product=Firefox&known_name=devtools_resolved_week&list_id=12157026">Tous les bogues de devtools corrigés entre Firefox 38 et Firefox 39</a>.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Prise en charge du type {{cssxref("<string>")}} sur {{cssxref("list-style-type")}}, ainsi que sa propriété abrégée {{cssxref("list-style")}} a été implémenté ({{bug(1144607)}}).</li> + <li>CSS Scroll Snapping a été implémenté ({{bug(945584)}} et {{bug(1138658)}}).</li> + <li>La cascade des animations CSS et des transitions CSS a été réécrite pour correspondre à la dernière spécification ({{bug(1125455)}}).</li> + <li>La prise en charge des scripts verticaux, avec le {{cssxref("writing-mode")}} est maintenant activée par défaut sur Nightly et Developer Edition, mais pas sur Firefox Beta et Firefox Release ({{bug(1099032)}}). Notez que l'implémentation n'est pas encore terminée et que certains widgets, comme les tables, n'obéiront pas à toutes les valeurs.</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Un nouveau rôle {{glossary("ARIA")}}, <code>switch</code>, est maintenant supporté ({{bug(1136563)}}).</li> + <li>Le support de <code><link rel="preconnect"></code> permettant d'anticiper une future connexion sans révéler aucune information a été implémenté ({{bug(1135160)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Le <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp">constructeur <code>RegExp</code></a> ne se lance plus lorsque le premier argument est un <code>RegExp</code> et que le second argument <code>flags</code> est présent ({{bug(1108949)}}).</li> + <li>La propriété {{jsxref("Object.noSuchMethod", "Object.prototype.__noSuchMethod__")}} est désormais obsolète et émet un avertissement de console (voir {{bug(1140428)}} et cette <a href="https://groups.google.com/forum/#!topic/mozilla.dev.platform/0EkHgphxUo8">annonce de plate-forme</a>).</li> + <li>L'implémentation de l'objet {{jsxref("Proxy")}} a été mise à jour pour se conformer davantage à la spécification ES6 : + <ul> + <li>Les gestionnaires {{jsxref("Global_Objects/Proxy/handler/defineProperty", "defineProperty")}} et {{jsxref("Global_Objects/Proxy/handler/set", "set")}} doivent maintenant renvoyer explicitement <code>true</code> pour réussir, sinon une exception {{jsxref("TypeError")}} sera lancée en mode strict ({{bug(1132522)}}).</li> + <li>Si l'objet {{domxref("window")}} est défini comme cible, ces gestionnaires lancent désormais une <code>TypeError</code> ({{bug(828137)}}).</li> + </ul> + </li> + <li>Lors de l'utilisation des <a href="/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions">fonctions fléchées</a> (<code>=></code>), un terminateur de ligne (<code>\n</code>) n'est plus autorisé après les arguments de fonction fléchée (<code>() \n => {}</code>) ({{bug(1141392)}}).</li> + <li>{{jsxref("RegExp.prototype.toString")}} est maintenant une fonction générique ({{bug(1079919)}}).</li> + <li>L'argument de <code>flags</code> non standard de {{jsxref("String.prototype.match()")}}, {{jsxref("String.prototype.search()")}}, et {{jsxref("String.prototype.replace()")}} est désormais obsolètee et émet un avertissement de console ({{bug(1142351)}}).</li> + <li>Le comportement try/catch de {{jsxref("Object.assign()")}} a été supprimé pour se conformer au dernier projet ES6 ({{bug(1103344)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>La méthode expérimentale {{domxref("CanvasRenderingContext2D.addHitRegion()")}} accepte désormais une option de <code>path</code>, qui vous permet d'ajouter des <a href="/en-US/docs/Web/API/Canvas_API/Tutorial/Hit_regions_and_accessibility#Hit_regions">régions hit</a> aux objets {{domxref("Path2D")}} ({{bug(1129147)}}).</li> + <li>De nouvelles méthodes ont été ajoutées pour manipuler les objets {{domxref("FormData")}} ({{bug(1085283)}}) et <code>FormData</code> est désormais supporté par les workers Web ({{bug(739173)}}).</li> + <li>La méthode non standard {{domxref("XMLHttpRequest.sendAsBinary()")}} a été supprimée ({{bug(853162)}}).</li> + <li>Progression dans notre implémentation expérimentale des animations Web : {{domxref("AnimationPlayer.startTime")}} est désormais accessible en écriture ({{bug(1073379)}}).</li> + <li>Progression de notre implémentation expérimentale de <a href="/en-US/docs/Web/API/ServiceWorker_API">Service Workers</a>: les interfaces {{domxref("Cache")}} et {{domxref("CacheStorage")}} sont désormais implémentées ({{bug(940273)}}).</li> + <li>L'<a href="/en-US/docs/Web/API/Fetch_API">API Fetch</a> expérimentale a été activée par défaut ({{bug(1133861)}}).</li> + <li>Progression de notre implémentation expérimentale de WebGL2: {{domxref("WebGLSync")}} est maintenant implémenté ({{bug(1048721)}}).</li> + <li>La prise en charge de {{domxref("MouseEvent.offsetX")}} et {{domxref("MouseEvent.offsetY")}} a été ajoutée sur le desktop ({{bug(69787)}}, mais pas sur Firefox pour Android ou Firefox OS (ils seront ajoutés dans <a href="/en-US/docs/Mozilla/Firefox/Releases/43">Firefox 43</a>).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="SVG">SVG</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="AudioVideo">Audio/Video</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="Miscelleanous">Miscelleanous</h3> + +<ul> + <li>Le support des polices <a href="/en-US/docs/Web/Guide/WOFF">WOFF2</a> est désormais activé par défaut dans la version finale de Firefox (Beta et Release, en plus de Nightly et Developer Edition) ({{bug(1084026)}}).</li> + <li>L'option de ligne de commande <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options#-remote_remote_command">-remote</a></code> a été supprimée ({{bug(1080319)}}).</li> + <li> + <p>Prise en charge des nouveaux <a href="http://www.bbc.co.uk/newsbeat/article/32220611/diverse-thumbs-up-emojis-with-different-skin-tones-finally-here">emoji de couleur chair Unicode 8.0</a> ({{bug(1153460)}}).</p> + </li> +</ul> + +<h2 id="La_mise_en_réseau">La mise en réseau</h2> + +<ul> + <li>La prise en charge de SSLv3 a été complètement supprimée ({{bug(1106470)}}).</li> +</ul> + +<h2 id="Sécurité">Sécurité</h2> + +<p><em>Pas de changement.</em></p> + +<h2 id="Changements_pour_les_développeurs_dadd-on_et_de_Mozilla">Changements pour les développeurs d'add-on et de Mozilla</h2> + +<p><em>Pas de changement.</em></p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/39/">Compatibilité du site pour Firefox 39</a></li> +</ul> + +<h2 id="Anciennes_versions">Anciennes versions</h2> + +<p>{{Firefox_for_developers('38')}}</p> diff --git a/files/fr/mozilla/firefox/releases/39/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/39/site_compatibility/index.html new file mode 100644 index 0000000000..1a2ab836b6 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/39/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 39 +slug: Mozilla/Firefox/Releases/39/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 39 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/39/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/39/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/releases/42/index.html b/files/fr/mozilla/firefox/releases/42/index.html new file mode 100644 index 0000000000..3b8d3fddfe --- /dev/null +++ b/files/fr/mozilla/firefox/releases/42/index.html @@ -0,0 +1,198 @@ +--- +title: Firefox 42 for developers +slug: Mozilla/Firefox/Releases/42 +tags: + - '42' + - Firefox + - Mozilla + - Release + - Release Notes + - TopicStub +translation_of: Mozilla/Firefox/Releases/42 +--- +<div>{{FirefoxSidebar}}</div> + +<div class="column-container zone-callout"><a href="https://www.mozilla.org/firefox/developer/" style="">Pour tester les dernières fonctionnalités de développement de Firefox, installer Firefox Developer Edition</a> Firefox 42 a été publié le 3 Novembre 2015. Cet article répertorie les modificarions clés qui sont utiles non seulement pour les développeurs Web, mais aussi pour les développeurs Firefox et Gecko ainsi que pour les développeurs d'add-on.</div> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<p>Points forts:</p> + +<ul> + <li><a href="/en-US/docs/Tools/Remote_Debugging/Debugging_Firefox_for_Android_over_Wifi">Débogage de Firefox pour Android via Wifi</a></li> + <li><a href="/en-US/docs/Tools/WebIDE/Setting_up_runtimes#Configuring_Simulators">Configuration de Firefox OS Simulator dans WebIDE</a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Edit_CSS_filters#Saving_filter_presets">Préréglages de filtre CSS</a></li> +</ul> + +<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Client%20Software&chfieldto=2015-08-10&query_format=advanced&chfield=resolution&chfieldfrom=2015-06-29&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Storage%20Inspector&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20Web%20Audio%20Editor&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&component=Developer%20Tools%3A%20WebIDE&product=Firefox&list_id=12478437">Tous les bogues devtools corrigés entre Firefox 41 et Firefox 42</a>.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Vertical {{cssxref('writing-mode')}} est maintenant pris en charge avec les scripts rtl ({{bug(1131451)}}).</li> + <li>Les valeurs de {{cssxref("caption-side")}} sont désormais relatives à la table, et changent de signification réelle en fonction de sa valeur {{cssxref("writing-mode")}} {{bug(1202993)}}.</li> + <li>Les propriétés non standard comme {{cssxref('-moz-margin-start')}} sont maintenant des alias de leur homologue standard ({{cssxref('margin-inline-start')}}, …). Auparavant, c'était le contraire. Cela affecte la valeur renvoyée par {{domxref('CSSStyleDeclaration.cssText')}} et l'itération des propriétés dans une règle de style et l'itération des propriétés dans une règle de style, qui utilisent toutes deux la forme canonical ({{bug(1118103)}}).</li> + <li>La version préfixée ds dégradés CSS peut être désactivée en définissant la préférence <code>layout.css.prefixes.gradients</code> sur <code>false</code>.</li> + <li>Plusieurs anciens bogues avec {{cssxref("float")}} et le comportement de réduction des marges ont été corrigés ({{bug(478834)}}, {{bug(538194)}}, et {{bug(451791)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Prise en charge expérimentale de l'attribut {{htmlattrxref("referrer", "input")}} de {{HTMLElement("img")}} ({{bug(1166910)}}), {{htmlElement("iframe")}} ({{bug(1175736)}}), {{HTMLElement("a")}} et {{HTMLElement("area")}} ont été ajoutés ({{bug(1174913)}}). Il n'y a aucun effet par défaut, le <code>network.http.enablePerElementReferrer</code> étant <code>false</code> par défaut.</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>L'objet {{jsxref("Reflect")}} a été implémenté ({{bug(987514)}}).</li> + <li>La mise en <span class="tlid-translation translation" lang="fr"><span title="">œuvre de l'interruption</span></span> {{jsxref("Proxy")}} {{jsxref("Global_Objects/Proxy/handler/ownKeys", "handler.ownKeys()")}} a été mise à jour pour correspondre à la spécification finale ES2015 ({{bug(1049662)}}).</li> + <li>Appel de {{jsxref("Map")}}, {{jsxref("Set")}}, ou {{jsxref("WeakMap")}} sans {{jsxref('Operators', 'new')}}, va maintenant lancer un {{jsxref("TypeError")}} ({{bug(1083752)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<h4 id="DOM_HTML_DOM">DOM & HTML DOM</h4> + +<ul> + <li>Les images avec une {{HTMLattrxref('id', 'img')}} ne sont plus répertoriées comme propriété de l'interface {{domxref("Window")}} : <code><img id="login"></code> n'est plus accessible en tant que <code>window.login</code>. Ce comportement a été introduit dans Firefox 26 et a été supprimé pour correspondre à une modification ultérieure de la spécification ({{bug(959992)}}).</li> + <li>{{domxref('MouseEvent.offsetX')}} et {{domxref('MouseEvent.offsetY')}} ont été ajoutés ({{bug(69787)}}).</li> + <li>L'interface {{domxref("HTMLInputElement")}} a été étendue expérimentalement pour gérer le téléchargement des répertoires ({{bug(1164310)}}). Ces quatre membres peuvent être exposés en définissant la préférence <code>dom.input.dirpicker</code> sur <code>true</code>: + <ul> + <li>{{domxref("HTMLInputElement.directory")}}</li> + <li>{{domxref("HTMLInputElement.isFilesAndDirectoriesSupported")}}</li> + <li>{{domxref("HTMLInputElement.getFilesAndDirectories()")}}</li> + <li>{{domxref("HTMLInputElement.chooseDirectory()")}}</li> + </ul> + </li> + <li>L'interface {{domxref("Directory")}} a été étendue expérimentalement ({{bug(1177688)}}). Les deux membres {{domxref("Directory.path")}} et {{domxref("Directory.getContents")}} peuvent être exposés en définissant la préférence <code>dom.input.dirpicker</code> sur <code>true</code>.</li> + <li>Le <code>HTMLMediaElement.mozSrcObject</code> a été renommé dans {{domxref('HTMLMediaElement.srcObject')}} ({{bug(1175523)}}).</li> +</ul> + +<h4 id="Service_Workers">Service Workers</h4> + +<ul> + <li>{{domxref('Request.context')}} a été supprimé ({{bug(1188062)}}).</li> + <li>L'<a href="/en-US/docs/Web/API/Push_API">API Push</a> a été activée par défaut sur Firefox pour bureau ({{bug(1153499)}}), mais uniquement sur les canaux Nightly/Dev Edition/Beta. Elle est désactivée par défaut dans le canal Release jusqu'à ce que l'UX grand public et les fonctionnalit"s de débogage aient été correctement implémentées ({{bug(1207875)}}). Vous pouvez toujours l'activer en activant la préférence <span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>dom.push.enabled</code> dans <a>about:config</a>.</span></span></li> + <li>La méthode {{domxref("PushManager.hasPermission()")}} a été désapprouvée dans la spécification et remplacée par la méthode {{domxref("PushManager.permissionState()")}}. Firefox a mis à jour son implémentation pour refléter cela ({{bug("1183853")}}).</li> + <li>Des ajouts liés au service worker de l'<a href="/en-US/docs/Web/API/Notifications_API">API Notifications</a> ont été mis en <span class="tlid-translation translation" lang="fr"><span title="">œuvre</span></span> ({{bug(1114554)}}), mais sont désactivés dans cette version.</li> +</ul> + +<h4 id="API_Web_Animations">API Web Animations</h4> + +<p>Notre implémentation expérimentale de l'<a href="/en-US/docs/Web/API/Web_Animations_API">API Web Animations</a> a été étendue pour prendre en charge:</p> + +<ul> + <li>La propriété {{domxref('AnimationPlayer.playbackRate')}} ({{bug(1127380)}}).</li> + <li>Les interface {{domxref('CSSAnimation')}} et {{domxref('CSSTransition')}} ({{bug(1178186)}}).</li> + <li>La méthode {{domxref('Animation.reverse()')}} ({{bug(1150808)}}).</li> + <li>L'interface {{domxref('AnimationPlaybackEvent')}} a été ajoutée et {{event('cancel')}} et {{event('finish')}} sont maintenant déclenchés sur {{domxref('Animation')}} ({{bug(1178664)}}).</li> +</ul> + +<h4 id="Composants_Web">Composants Web</h4> + +<p>Notre implémentation expérimentale du <a href="/en-US/docs/Web/Web_Components/Shadow_DOM">Shadow DOM</a> a été modifiée:</p> + +<ul> + <li>Lorsque vous essayez d'appeler {{domxref('Node.cloneNode()')}} sur un {{domxref('ShadowRoot')}}, lance une exception <code>DataCloneError</code> ({{bug(1176757)}}).</li> + <li>En invoquant {{domxref('Document.importNode()')}} avec un {{domxref('ShadowRoot')}} comme argument, nous lançons maintenant une exception <code>NotSupportedError</code> ({{bug(1177914)}}).</li> + <li>En invoquant {{domxref('Document.adoptNode()')}} avec un {{domxref('ShadowRoot')}} comme argument, nous lançons maintenant une exception <code>HierarchyRequestError</code> ({{bug(1177991)}}).</li> +</ul> + +<h4 id="WebGL">WebGL</h4> + +<ul> + <li>WebGL2 {{domxref('WebGLTransformFeedback')}} a été implémenté ({{bug(1048724)}}).</li> + <li>Pour obtenir un contexte WebGL2, {{domxref('HTMLCanvasElement.getContext()')}} prend maintenant <code>webgl2</code> au lieu de <code>experimental-webgl2</code> ({{bug(1187174)}}).</li> +</ul> + +<h4 id="WebRTC">WebRTC</h4> + +<ul> + <li>Le <code>RTCICECandidatePairStats.mozPriority</code> a été renommé {{domxref('RTCICECandidatePairStats.priority')}} ({{bug(1184426)}}).</li> +</ul> + +<h4 id="Nouvelles_API">Nouvelles API</h4> + +<ul> + <li>L'interface {{domxref("ImageBitmap")}} et la méthode {{domxref("ImageBitmapFactories.createImageBitmap","createImageBitmap()")}} ont été implémentées. Ils sont disponibles sur les scripts de fenêtre standard et dans les Web workers et permettent un affichage efficace des images entre les contextes fenêtre et worker ({{bug(1044102)}}).</li> +</ul> + +<h4 id="Divers">Divers</h4> + +<ul> + <li>L'interface {{domxref('IDBCursorWithValue')}} est désormais disponible dans les <a href="/en-US/docs/Web/API/Web_Workers_API">Web workers</a> ({{bug(1188115)}}).</li> + <li>Les événements d'erreur envoyés dans les <a href="/en-US/docs/Web/API/Web_Workers_API">Web workers</a> ne bouillonnent plus ({{bug(1188141)}}).</li> + <li><a href="/en-US/docs/Web/API/Media_Source_Extensions_API">Media Source Extensions</a> (MSE) a été activé pour tous les sites Web, et pas plus pour une liste blanche de sites ({{bug(1185611)}}).</li> + <li>Le {{domxref('Window.mozRequestAnimationFrame()')}} non standard et obsolète a été supprimé ({{bug(909154)}}). Utilisez plutôt le standard {{domxref('Window.requestAnimationFrame()')}}.</li> + <li>La synthèse vocale (text-to-speech) a été implémentée dans Firefox Desktop pour Windows, cachée derrière l'indicateur <code>media.webspeech.synth.enabled</code> dans <code>about:config</code> ({{bug("1003457")}}). Voir <a href="/en-US/docs/Web/API/Web_Speech_API">API Web Speech</a> pour plus d'informations.</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="SVG">SVG</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="AudioVideo">Audio/Video</h3> + +<p><em>Pas de changement.</em></p> + +<h2 id="HTTP">HTTP</h2> + +<ul> + <li>Firefox 41 et les versions antérieures acceptaient à tord les champs de pseudo-en-tête non définis ou non valides dans les réponses HTTP/2 . Ceci est maintenant corrigé et le seul champ pseudo-en-tête accepté depuis Firefox 42 est le : <em>statut</em> selon la spécification. <span class="tlid-translation translation" lang="fr"><span title="">Les en-têtes de réponse contenant des champs arbitraires sont considérés comme mal formés.</span></span> ({{bug(1136727)}})</li> +</ul> + +<h2 id="La_mise_en_réseau">La mise en réseau</h2> + +<ul> + <li>La directive <code><a href="/Web/Security/CSP/CSP_policy_directives#upgrade-insecure-requests">upgrade-insecure-requests</a></code> du CSP a été implémentée ({{bug(1139297)}}).</li> +</ul> + +<h2 id="Sécurité">Sécurité</h2> + +<ul> + <li>Les certificats EV d'une validité supérieure à 39 mois sont désormais considérés et traités comme des certificats DV ({{bug(1145679)}}).</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_dadd-on_et_de_Mozilla">Changements pour les développeurs d'add-on et de Mozilla</h2> + +<h3 id="Interfaces">Interfaces</h3> + +<h4 id="nsIContentPolicy">nsIContentPolicy</h4> + +<ul> + <li>La constante <code><strong>TYPE_EMBED</strong></code> a été ajoutée à <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPolicy" title="">nsIContentPolicy</a></code> pour permettre aux internes de Gecko et au code add-on de mieux différencier les différents types de requêtes. Auparavant, <code><strong>TYPE_OBJECT</strong></code> était utilisé pour ces cas ({{bug(1148030)}}).</li> + <li>De même, les constantes <strong><code>TYPE_SUBDOCUMENT</code></strong> ont été divisées en <code><strong>TYPE_FRAME</strong></code> et <strong><code>TYPE_IFRAME</code></strong> ({{bug(1148044)}}).</li> +</ul> + +<h3 id="XUL">XUL</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="Modules_de_code_JavaScript">Modules de code JavaScript</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="XPCOM">XPCOM</h3> + +<p><em>Pas de changement.</em></p> + +<h3 id="Autre">Autre</h3> + +<p><em>Pas de changement.</em></p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/42/">Compatibilité du site pour Firefox 42</a></li> +</ul> + +<h2 id="Anciennes_versions">Anciennes versions</h2> + +<p>{{Firefox_for_developers('41')}}</p> diff --git a/files/fr/mozilla/firefox/releases/42/site_compatibility/index.html b/files/fr/mozilla/firefox/releases/42/site_compatibility/index.html new file mode 100644 index 0000000000..dddf083664 --- /dev/null +++ b/files/fr/mozilla/firefox/releases/42/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 42 +slug: Mozilla/Firefox/Releases/42/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 42 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/42/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/42/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/versions/1.5/index.html b/files/fr/mozilla/firefox/versions/1.5/index.html new file mode 100644 index 0000000000..84f17d122f --- /dev/null +++ b/files/fr/mozilla/firefox/versions/1.5/index.html @@ -0,0 +1,125 @@ +--- +title: Firefox 1.5 pour les développeurs +slug: Mozilla/Firefox/Versions/1.5 +tags: + - Firefox + - Firefox 1.5 +translation_of: Mozilla/Firefox/Releases/1.5 +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 1.5, basé sur le moteur <a class="internal" href="/fr/Gecko" title="fr/Gecko">Gecko</a> 1.8, améliore son support des standards déjà de premier ordre et fournit de nouvelles opportunités de créer la prochaine génération d'applications Web. Firefox 1.5 propose un support amélioré de CSS2 et CSS3, des API pour des graphiques 2D scriptables et programmables grâce à <a class="internal" href="/fr/SVG" title="fr/SVG">SVG</a> 1.1 et <code><canvas></code>, les évènements <a class="internal" href="/fr/XForms" title="fr/XForms">XForms</a> et XML, ainsi que de nombreuses améliorations du DHTML, du JavaScript et du DOM.</p> + +<h2 id="Outils_pour_d.C3.A9veloppeurs" name="Outils_pour_d.C3.A9veloppeurs">Outils pour développeurs</h2> + +<p>Plusieurs outils et extensions sont disponibles pour aider les développeurs à travailler avec Firefox 1.5.</p> + +<ul> + <li>L'<a class="internal" href="/fr/Inspecteur_DOM" title="fr/Inspecteur_DOM">Inspecteur DOM</a>, un outil permettant aux développeurs d'examiner et de transformer les documents sans avoir à les modifier directement. L'inspecteur DOM est disponible lors de l'installation de Firefox 1.5 dans les options d'installation personnalisée, en choisissant les outils de développement.</li> + <li>La console JavaScript, un outil permettant d'écrire et tester du code JavaScript, ainsi que d'afficher les erreurs JavaScript et CSS d'une page.</li> + <li>L'affichage du code source d'une page avec coloration syntaxique et recherche intégrée.</li> + <li>Des <a class="link-https" href="https://addons.mozilla.org/extensions/showlist.php?application=firefox&category=Developer%20Tools">extensions</a> comme <a class="external" href="http://www.joehewitt.com/software/firebug/">Firebug</a>, <a class="internal" href="/fr/Extension_Firefox_Web_Developer_(externe)" title="fr/Extension_Firefox_Web_Developer_(externe)">la barre d'outils Web Developer</a>, <a class="internal" href="/fr/Live_HTTP_Headers_(externe)" title="fr/Live_HTTP_Headers_(externe)">Live HTTP Headers</a>, <a class="internal" href="/fr/Validateur_HTML_en_français_(externe)" title="fr/Validateur_HTML_en_français_(externe)">un validateur HTML</a>, <a class="internal" href="/fr/Extension_Developer's_Extension_(externe)" title="fr/Extension_Developer's_Extension_(externe)">une extension pour les développeurs d'extensions</a> et bien d'autres.</li> +</ul> + +<p><strong>Note :</strong> Certaines extensions ne sont pas encore supportées par Firefox 1.5 et seront automatiquement désactivées.</p> + +<h2 id="Fonctionnalit.C3.A9s" name="Fonctionnalit.C3.A9s">Fonctionnalités</h2> + +<p>Voici certaines des nouvelles fonctionnalités de Firefox 1.5 :</p> + +<h3 id="Site_Web_et_d.C3.A9veloppeurs_d.27applications" name="Site_Web_et_d.C3.A9veloppeurs_d.27applications">Site Web et développeurs d'applications</h3> + +<dl> + <dt><a class="internal" href="/fr/Introduction_à_SVG_dans_HTML" title="fr/Introduction_à_SVG_dans_HTML">Introduction à SVG dans HTML</a></dt> + <dd>Apprenez à utiliser le SVG dans des pages XHTML et comment JavaScript et CSS sont utilisés pour manipuler une image comme vous le feriez avec le XHTML dans un script. Voir également <a class="internal" href="/fr/SVG_dans_Firefox" title="fr/SVG_dans_Firefox">SVG dans Firefox</a> pour connaître l'état et les problèmes connus de l'implémentation du SVG dans la version 1.5.</dd> +</dl> + +<dl> + <dt><a class="internal" href="/fr/Dessiner_avec_canvas" title="fr/Dessiner_avec_canvas">Dessiner avec canvas</a></dt> + <dd>Apprenez à utiliser la nouvelle balise <code><canvas></code> et comment dessiner des graphiques et d'autres objets dans Firefox.</dd> +</dl> + +<dl> + <dt><a href="/fr/Colonnes_CSS3" title="fr/Colonnes_CSS3">Colonnes CSS3</a></dt> + <dd>Apprenez à utiliser le nouveau support de mise en page multi-colonnes automatiques comme proposé par CSS3.</dd> +</dl> + +<dl> + <dt><a class="internal" href="/fr/Utilisation_du_cache_de_Firefox_1.5" title="fr/Utilisation_du_cache_de_Firefox_1.5">Utilisation du cache de Firefox 1.5</a></dt> + <dd>Découvrez <code>bfcache</code> et comment il accélère la navigation en arrière et en avant.</dd> +</dl> + +<h3 id="XUL_et_d.C3.A9veloppeurs_d.27extension" name="XUL_et_d.C3.A9veloppeurs_d.27extension">XUL et développeurs d'extension</h3> + +<dl> + <dt><a class="internal" href="/fr/Construire_une_extension" title="fr/Construire_une_extension">Construire une extension</a></dt> + <dd>Ce tutoriel vous guidera par étape dans la création d'une extension très simple pour Firefox. Consultez également <a class="external" href="http://kb.mozillazine.org/Getting_started_with_extension_development">un autre tutoriel sur la base de connaissance de MozillaZine</a> qui montre comment il est encore plus simple de créer une nouvelle extension avec les nouvelles fonctionnalités du gestionnaire d'extensions dans 1.5.</dd> +</dl> + +<dl> + <dt><a class="internal" href="/fr/XPCNativeWrapper" title="fr/XPCNativeWrapper">XPCNativeWrapper</a></dt> + <dd><code>XPCNativeWrapper</code> est un moyen pour empaqueter un objet afin qu'il puisse <a class="internal" href="/fr/Accès_sécurisé_au_contenu_DOM_depuis_le_chrome" title="fr/Accès_sécurisé_au_contenu_DOM_depuis_le_chrome">accéder à des privilèges chrome</a>. Il peut être utilisé dans toutes les versions de Firefox bien que son comportement soit sensiblement différent au lancement de Firefox 1.5 (Gecko 1.8).</dd> +</dl> + +<dl> + <dt><a class="internal" href="/fr/Système_de_préférences" title="fr/Système_de_préférences">Système de préférences</a></dt> + <dd>Apprenez à utiliser les nouveaux composants graphiques qui vous permettront de créer des fenêtres d'options plus facilement en utilisant moins de code JavaScript.</dd> +</dl> + +<dl> + <dt><a class="internal" href="/fr/Caractères_internationaux_dans_du_JavaScript_XUL" title="fr/Caractères_internationaux_dans_du_JavaScript_XUL">Caractères internationaux dans du JavaScript XUL</a></dt> + <dd>Les fichiers JavaScript XUL peuvent maintenant contenir des caractères non-ASCII.</dd> +</dl> + +<dl> + <dt><a class="internal" href="/fr/Modifications_du_composant_graphique_tree" title="fr/Modifications_du_composant_graphique_tree">Modifications de l'API Tree</a></dt> + <dd>Les interfaces pour accéder aux éléments XUL <code><tree></code> ont été modifiées.</dd> +</dl> + +<dl> + <dt><a class="internal" href="/fr/Modifications_XUL_pour_Firefox_1.5" title="fr/Modifications_XUL_pour_Firefox_1.5">Modifications XUL pour Firefox 1.5</a></dt> + <dd>Résumé des modifications du XUL. Consultez également <a class="internal" href="/fr/Adaptation_des_applications_XUL_pour_Firefox_1.5" title="fr/Adaptation_des_applications_XUL_pour_Firefox_1.5">Adaptation des applications XUL pour Firefox 1.5</a>.</dd> +</dl> + +<h2 id="Nouvelles_fonctionnalit.C3.A9s_pour_l.27utilisateur" name="Nouvelles_fonctionnalit.C3.A9s_pour_l.27utilisateur">Nouvelles fonctionnalités pour l'utilisateur</h2> + +<h3 id="Utilisation_courante" name="Utilisation_courante">Utilisation courante</h3> + +<ul> + <li><strong>Navigation plus rapide</strong> avec une performance accrue des boutons permettant de reculer ou d'avancer d'une page.</li> + <li><strong>Réorganisation des onglets par glisser-déposer.</strong></li> + <li><strong>Le dictionnaire MediaDICO a été ajouté à la liste des moteurs de recherche</strong>.</li> + <li><strong>Une meilleure prise en main</strong> avec des pages d'erreur descriptives, un menu d'options redessiné, la découverte automatique des fils RSS et un « mode sans échec » plus facile à utiliser.</li> + <li><strong>Meilleur support de l'accessibilité</strong>, notamment pour les pages DHTML.</li> + <li><strong>Assistant pour les sites Web non fonctionnels</strong> pour rapporter les sites Web qui ne fonctionnent pas avec Firefox.</li> + <li><strong>Meilleur support de Mac OS X</strong> (10.2 et supérieur), avec la migration des profils de Safari et d'Internet Explorer pour Mac.</li> +</ul> + +<h3 id="S.C3.A9curit.C3.A9_et_vie_priv.C3.A9e" name="S.C3.A9curit.C3.A9_et_vie_priv.C3.A9e">Sécurité et vie privée</h3> + +<ul> + <li><strong>Mises à jour automatiques</strong> pour rationaliser les mises à niveau du navigateur. La notification d'une mise à jour est plus visible et les mises à jour de Firefox n'excèdent plus le demi méga-octet. La mise à jour des extensions a également été améliorée.</li> + <li><strong>Améliorations du système de blocage de l'ouverture intempestive de fenêtres (popups).</strong></li> + <li><strong>La fonctionnalité d'effacement des traces</strong> offre un accès simplifié et rapide pour supprimer toutes vos données personnelles via un menu ou un raccourci clavier.</li> +</ul> + +<h3 id="Support_des_standards_Web_ouverts" name="Support_des_standards_Web_ouverts">Support des standards Web ouverts</h3> + +<p>Le support des standards Web de Firefox garde une longueur d'avance avec des implémentations fonctionnelles et multiplateformes pour :</p> + +<ul> + <li>Hypertext Markup Language (<a class="internal" href="/fr/HTML" title="fr/HTML">HTML</a>) et Extensible Hypertext Markup Language (<a class="internal" href="/fr/XHTML" title="fr/XHTML">XHTML</a>): <a class="external" href="http://www.w3.org/TR/html401/">HTML 4.01</a> et <a class="external" href="http://www.w3.org/TR/xhtml1/">XHTML 1.0/1.1</a></li> + <li>Cascading Style Sheets (<a class="internal" href="/fr/CSS" title="fr/CSS">CSS</a>): <a class="external" href="http://www.w3.org/TR/REC-CSS1">CSS niveau 1</a>, <a class="external" href="http://www.w3.org/TR/REC-CSS2">CSS niveau 2</a> et quelques parties de <a class="external" href="http://www.w3.org/Style/CSS/current-work.html">CSS niveau 3</a></li> + <li>Document Object Model (<a class="internal" href="/fr/DOM" title="fr/DOM">DOM</a>): <a class="external" href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/">DOM niveau 1</a>, <a class="external" href="http://www.w3.org/DOM/DOMTR#dom2">DOM niveau 2</a> et quelques parties de <a class="external" href="http://www.w3.org/DOM/DOMTR#dom3">DOM niveau 3</a></li> + <li>Mathematical Markup Language: <a class="external" href="http://www.w3.org/Math/">MathML Version 2.0</a></li> + <li>Extensible Markup Language (<a class="internal" href="/fr/XML" title="fr/XML">XML</a>): <a class="external" href="http://www.w3.org/TR/REC-xml">XML 1.0</a>, <a class="external" href="http://www.w3.org/TR/REC-xml-names/">Espaces de nommage sous XML</a>, <a class="external" href="http://www.w3.org/TR/xml-stylesheet/">Feuilles de styles associées avec des documents XML 1.0</a>, <a class="external" href="http://lists.w3.org/Archives/Public/www-xml-linking-comments/2001AprJun/att-0074/01-NOTE-FIXptr-20010425.htm">Fragment Identifier for XML</a></li> + <li>XSL Transformations (<a class="internal" href="/fr/XSLT" title="fr/XSLT">XSLT</a>): <a class="external" href="http://www.w3.org/TR/xslt">XSLT 1.0</a></li> + <li>XML Path Language (<a class="internal" href="/fr/XPath" title="fr/XPath">XPath</a>): <a class="external" href="http://www.w3.org/TR/xpath">XPath 1.0</a></li> + <li>Resource Description Framework (<a class="internal" href="/fr/RDF" title="fr/RDF">RDF</a>): <a class="external" href="http://www.w3.org/RDF/">RDF</a></li> + <li>Simple Object Access Protocol (SOAP): <a class="external" href="http://www.w3.org/TR/SOAP/">SOAP 1.1</a></li> + <li><a class="internal" href="/fr/JavaScript" title="fr/JavaScript">JavaScript</a> 1.6, basé sur <a href="/fr/ECMAScript" title="fr/ECMAScript">ECMA-262</a>, révision 3 : <a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMA-262</a></li> +</ul> + +<p>Firefox 1.5 supporte un bon nombre de protocoles de transport de données (HTTP, FTP, SSL, TLS et d'autres), les caractères multi-langages (Unicode), plusieurs formats graphiques (GIF, JPEG, PNG, SVG et d'autres) et la dernière version du langage de script le plus populaire au monde, <a href="/fr/Nouveautés_dans_JavaScript_1.6" title="fr/Nouveautés_dans_JavaScript_1.6">JavaScript 1.6</a>.</p> + +<h2 id="Changements_depuis_Firefox_1.0" name="Changements_depuis_Firefox_1.0">Changements depuis Firefox 1.0</h2> + +<p>De nombreux changements ont été introduits dans Firefox depuis sa première sortie le 9 novembre 2004. Firefox a progressé avec beaucoup de nouvelles fonctions et de corrections de bogues. Une <a class="external" href="http://www.squarefree.com/burningedge/releases/1.5-comprehensive.html">liste détaillée des modifications</a> est disponible sur squarefree.com.</p> diff --git a/files/fr/mozilla/firefox/versions/11/index.html b/files/fr/mozilla/firefox/versions/11/index.html new file mode 100644 index 0000000000..bc1d161fbd --- /dev/null +++ b/files/fr/mozilla/firefox/versions/11/index.html @@ -0,0 +1,144 @@ +--- +title: Firefox 11 pour les développeurs +slug: Mozilla/Firefox/Versions/11 +tags: + - Firefox + - Firefox 11 +translation_of: Mozilla/Firefox/Releases/11 +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 11, basé sur Gecko 11.0, est sorti le 13 mars 2012. Cet article fournit des informations sur les nouvelles fonctionnalités et les principaux bugs corrigés, ainsi que des liens vers une documentation plus détaillée pour les développeurs web et d'extensions.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Les attributs <code>muted</code> et <code>loop</code> pour les éléments {{HTMLElement("audio")}} et {{HTMLElement("video")}} ont été implémentés.</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>La propriété {{domxref("element.outerHTML")}} supporte maintenant les éléments HTML.</li> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/HTML_in_XMLHttpRequest" title="HTML in XMLHttpRequest"><code>XMLHttpRequest</code> supporte l'analyse HTML</a>.</li> + <li>Suppression du support des attributs <code>responseType</code> et <code>withCredentials</code> {{domxref("XMLHttpRequest")}} lors de requêtes synchrones. Si vous tentez de le faire l'exception <code>NS_ERROR_DOM_INVALID_ACCESS_ERR</code> est envoyée. Ce changement a été proposé au W3C pour être normalisé.</li> + <li>la nouvelle méthode {{domxref("window.navigator.mozVibrate()")}} vous permet de faire vibrer le périphérique supporté, c'est implémenté dans Gecko en tant que <code>mozVibrate()</code>.</li> + <li>{{domxref("window.navigator.mozApps")}} retourne un objet <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Apps" title="DOM/Apps">Apps</a>, vous pouvez l'utiliser pour installer et gérer des <a class="internal" href="https://developer.mozilla.org/fr/docs/Applications" title="Applications">applications Web ouvertes</a>.</li> + <li>Les évènements <code>MozBeforePaint</code> ne sont plus exploités. Ceux qui ont utilisé {{domxref("window.requestAnimationFrame", "mozRequestAnimationFrame()")}} devraient transmettre une fonction de rappel à la place.</li> + <li>La prise en charge de l'annulation des demandes d'animation de trame a été ajouté, {{domxref("window.requestAnimationFrame", "window.mozRequestAnimationFrame()")}} retourne désormais la valeur ID de la demande, que vous pouvez passer à {{domxref("window.cancelAnimationFrame", "window.mozCancelAnimationFrame()")}} pour annuler la demande.</li> + <li>Plusieurs constructeurs {{domxref("Event")}} (<code>Event</code>, HTML events, <code>UIEvent</code> et <code>MouseEvent</code>) introduits dans les spécifications DOM4 sont à présent supportés.</li> + <li>{{domxref("window.navigator.mozBattery", "Battery API")}} est désormais activée par défaut.</li> + <li>Le support des propriétés <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLMediaElement" title="HTMLMediaElement"><code>defaultMuted</code></a>, <code><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLMediaElement" title="HTMLMediaElement">loop</a></code> et <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLMediaElement" title="HTMLMediaElement"><code>muted</code></a> de <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLMediaElement" title="HTMLMediaElement"><code>HTMLMediaElement</code></a> a été ajouté.</li> + <li>L'appel {{domxref("document.mozCancelFullScreen()")}} restaure à présent l'élément précédemment en plein-écran, si un autre élément était en mode plein-écran lorsque la méthode {{domxref("element.mozRequestFullScreen()")}} a été appelée.</li> + <li>La méthode {{domxref("window.requestAnimationFrame", "window.mozRequestAnimationFrame()")}} ne supporte plus une forme sans argument. Cela n'est pas beaucoup utilisé et il est peu probable que ça fasse partie de la norme.</li> + <li>Les images SVG peuvent à présent être dessinées dans un canvas sans <a class="internal" href="https://developer.mozilla.org/en-US/docs/CORS_Enabled_Image#What_is_a_.22tainted.22_canvas.3F" title="CORS Enabled Image#What is a tainted canvas ?">entacher le canvas</a>.</li> + <li>La propriété non-standard <code>countryCode</code> de l'interface <code>GeoPositionAddress</code> a été supprimée, voir {{interface("nsIDOMGeoPositionAddress")}}.</li> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/Server-sent_events" title="Server-sent events">Les évènements Server-sent</a> supportent désormais <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTTP_access_control" title="HTTP access control (CORS)">CORS</a>.</li> + <li>Dans le passé, lorsque l'utilisateur suivait un lien, les valeurs définies sur l'objet {{domxref("window.navigator")}} été retenus par la nouvelle page. Maintenant un nouvel objet <code>navigator</code> est crée pour la nouvelle page. Cela rend le comportement de Firefox identique aux autres navigateurs.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>La propriété <a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/text-size-adjust" title="text-size-adjust"><code>text-size-adjust</code></a> est à présent supportée.</li> + <li>Les <a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/CSS3#Conditional_Rules" title="Règles Conditionnelles CSS3">Règles Conditionnelles</a> <a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/CSS3" title="CSS3">CSS3</a> sont à présent mieux supportées : les déclarations imbriquées peuvent désormais être ajoutées à <a class="internal" href="https://developer.mozilla.org/fr/docs/CSS/@media" title="@media">@media</a>, <a class="internal" href="https://developer.mozilla.org/fr/docs/CSS/@-moz-document" title="@document">@-moz-document</a>. (Voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/Syntax" title="Syntax">CSS Syntax</a> et <a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/At-rule" title="At-rule">CSS at-rules</a>).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>L'interface DOM {{domxref("SVGSVGElement")}} supporte désormais la méthode <code>getElementById</code>.</li> +</ul> + +<h3 id="WebSocket">WebSocket</h3> + +<ul> + <li>L'API <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebSockets" title="WebSockets">WebSocket</a> supporte désormais les messages binaires (voir {{bug("676439")}}).</li> + <li>Le protocole et l'API ont été mis à jour suivant la dernière version de la spécification et l'API n'a plus de préfixe (voir {{bug("666349")}} et {{bug("695635")}}).</li> + <li>Auparavant, les messages envoyés et reçus à l'aide de WebSockets dans Firefox été limités à 16 Mo en taille, désormais ils peuvent aller jusqu'à 2 Go (bien que les limitations de capacité de mémoire peut les empêcher d'être plus grand, Firefox le supporte).</li> +</ul> + +<h3 id="IndexedDB">IndexedDB</h3> + +<ul> + <li>Le support de <a class="internal" href="https://developer.mozilla.org/en-US/docs/IndexedDB/IDBFactory#cmp%28%29" title="IDBFactory#cmp()">IDBFactory.cmp()</a> a été ajouté.</li> + <li>Une <a class="internal" href="https://developer.mozilla.org/en-US/docs/IndexedDB/Basic_Concepts_Behind_IndexedDB#section_6" title="Basic Concepts Behind IndexedDB#section_6">clé IndexedDB</a> peut également être de l'un des types suivants : Date, Arrays et Float (et pas seulement String et Integer).</li> +</ul> + +<h3 id="Réseau">Réseau</h3> + +<ul> + <li>La modification dans Firefox 8 concernant la suppression des guillemets comme délimiteurs pour {{rfc(2231)}} et {{rfc(5987)}} a été annulée, car cela a cassé certains sites, y compris Outlook Web Access.</li> +</ul> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<ul> + <li>L'<a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector" title="Page Inspector">Inspecteur de page</a> offre désormais une <a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/3D_view" title="3D view">vue 3D</a> si votre système supporte <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebGL" title="WebGL">WebGL</a>.</li> + <li>Le nouvel <a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Style_Editor" title="Style Editor">Editeur de styles</a> offre un moyen d'éditer et de composer des feuilles de style CSS en temps réel.</li> + <li>La <a class="internal" href="https://developer.mozilla.org/en-US/docs/View_source" title="View source">fonctionnalité Afficher la source</a> utilise désormais le nouveau parseur HTML5 au lieu du vieux parseur HTML.</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<h3 id="Module_de_code_JavaScript">Module de code JavaScript</h3> + +<h4 id="NetUtil.jsm">NetUtil.jsm</h4> + +<ul> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/NetUtil.jsm#readInputStreamToString()" title="NetUtil.jsm#readInputStreamToString()"><code>readInputStreamToString()</code></a> a un nouveau paramètre (optionnel) à configurer pour l'interprétation du jeu de caractères lors de la lecture du flux d'entrée.</li> +</ul> + +<h4 id="Nouveau_module_de_code_JavaScript">Nouveau module de code JavaScript</h4> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/source-editor.jsm" title="source-editor.jsm"><code>source-editor.jsm</code></a></dt> + <dd>Offre un moyen pratique facile d'éditeur de code source que vous pouvez utiliser dans vos add-ons. C'est le même éditeur utilisé par l'<a class="internal" href="https://developer.mozilla.org/fr/docs/Outils/Ardoise" title="Ardoise">Ardoise</a> et les autres outils de développement intégrés dans Firefox.</dd> +</dl> + +<h3 id="Changements_dans_les_interfaces">Changements dans les interfaces</h3> + +<ul> + <li>L'interface {{interface("mozIAsyncHistory")}} a une nouvelle méthode {{ifmethod("mozIAsyncHistory","isURIVisited")}} pour vérifier si une URI a été visitée.</li> + <li>Une nouvelle interface {{interface("mozIVisitStatusCallback")}} a été ajoutée pour fournir une fonctionnalité de traitement des rappels pour {{ifmethod("mozIAsyncHistory","isURIVisited")}}.</li> + <li>L'interface {{interface("nsIMacDockSupport")}} interface now supports adding a text badge to the application's icon in the Dock using its new <code>badgeText</code> attribute.</li> + <li>Dans l'interface {{interface("nsINavHistoryResultObserver")}}, vous devez à présent implémenter {{ifmethod("nsINavHistoryResultObserver", "containerStateChanged")}} au lieu des anciennes méthodes <code>containerOpened()</code> et <code>containerClosed()</code>.</li> +</ul> + +<h4 id="Interface_supprimées">Interface supprimées</h4> + +<p>Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :</p> + +<ul> + <li>{{interface("nsICharsetResolver")}}</li> + <li>{{interface("nsIDOMNSElement")}}, voir {{bug("707576")}} ; utilisez {{interface("nsIDOMElement")}} à la place.</li> +</ul> + +<h3 id="Changement_lié_au_thème">Changement lié au thème</h3> + +<ul> + <li>Le fichier <code>omni.jar</code> se nomme désormais <a class="internal" href="https://developer.mozilla.org/en-US/docs/Mozilla/About_omni.ja_(formerly_omni.jar)" title="About omni.ja(formerly_omni.jar)"><code>omni.ja</code></a>.</li> +</ul> + +<h3 id="Changement_dans_les_préférences">Changement dans les préférences</h3> + +<dl> + <dt>{{Pref("ui.tooltipDelay")}}</dt> + <dd>Définit le délai, en millisecondes, entre le moment où le curseur de la souris s'arrête et l'affichage d'une info-bulle.</dd> +</dl> + +<h3 id="Changement_dans_le_système_de_compilation">Changement dans le système de compilation</h3> + +<ul> + <li>L'option de compilation <code>--enable-tracejit</code> a été supprimée.</li> +</ul> + +<h3 id="Autre_changement">Autre changement</h3> + +<ul> + <li>Les extensions qui n'ont pas été mises à jour depuis longtemps sont supposées ne plus être compatible par défaut, ce qui concerne actuellement les add-ons qui indiquent 4.0 pour <code>maxVersion</code>.</li> +</ul> + +<h2 id="Voir_également">Voir également</h2> + +<p>{{Firefox_for_developers('10')}}</p> diff --git a/files/fr/mozilla/firefox/versions/12/index.html b/files/fr/mozilla/firefox/versions/12/index.html new file mode 100644 index 0000000000..dbb7811cb7 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/12/index.html @@ -0,0 +1,162 @@ +--- +title: Firefox 12 pour les développeurs +slug: Mozilla/Firefox/Versions/12 +tags: + - Firefox + - Firefox 12 +translation_of: Mozilla/Firefox/Releases/12 +--- +<div>{{FirefoxSidebar}}</div> + +<p>Firefox 12, basé sur Gecko 12.0, est sorti le 24 avril 2012. Cette page résume les principaux changements dans Firefox 12 qui sont utiles aux développeurs.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>L'attribut <code>title</code> supporte désormais les caractères de saut de ligne pour permettre des multi-lignes dans les info-bulles.</li> + <li>Si JavaScript est désactivé, l'élément {{HTMLElement("canvas")}} était rendu au lieu d'afficher le contenu de secours selon la <a class="external" href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html" title="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html">spécification</a>. Désormais, c'est le contenu de secours qui est rendu.</li> + <li>L'attribut <code>crossorigin</code> est à présent supporté par {{HTMLElement("video")}}.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Le support de la propriété {{cssxref("text-align-last")}} a été ajouté (prefixée).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Le support des <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Sharp_variables_in_JavaScript" title="Sharp variables in JavaScript">variables sharp</a> (extension non-standard de Netscape) a été abandonné.</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>{{domxref("DOMParser")}} supporte désormais l'analyse de fragments de documents HTML.</li> + <li>{{domxref("XMLHttpRequest")}} supporte désormais des délais d'attente en utilisant la propriété <code>timeout</code> et l'évènement "timeout", ainsi que le gestionnaire d'évènements <code>ontimeout</code> de l'interface {{domxref("XMLHttpRequestEventTarget")}}.</li> + <li>{{domxref("XMLHttpRequest")}} peut désormais se charger à partir des <a class="internal" href="https://developer.mozilla.org/en-US/docs/data_URIs" title="data URIs">URIs <code>data:</code></a>.</li> + <li>Lors du téléchargement de grandes quantités de données, les gestionnaires d'événements {{domxref("XMLHttpRequest")}} de progression sont désormais appelés régulièrement avec l'ensemble <code>responseType</code> vers "moz-blob" et la réponse étant un {{domxref("Blob")}} contenant toutes les données reçues jusqu'ici. Cela permet aux gestionnaires de progression de commencer le traitement des données sans avoir à tout attendre.</li> + <li>Gecko supporte désormais le <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Touch_events" title="Touch events">multi-touch</a> (au lieu d'une touche à la fois) sur Android.</li> + <li>Lorsque vous éditez du texte à l'aide d'un IME, l'événement <code>input</code> est à présent envoyé chaque fois que le contenu de l'élément en cours d'édition a été changé, ce qui se passe après l'événement <code>compositionupdate</code> est envoyé pour indiquer que le texte de l'IME a été modifié. Vous pouvez donc utiliser le gestionnaire d'événements <code>input</code>, pour suivre l'évolution du contenu réel de l'élément.</li> + <li>{{domxref("DOMError")}} a été implémenté selon la spécification DOM 4.</li> + <li>La méthode {{domxref("Document.createNodeIterator()")}} a été mise à jour suivant la spécification DOM4. Cela rend les paramètres <code>whatToShow</code> et <code>filter</code> facultatifs et supprime le quatrième paramètre non-standard, <code>entityReferenceExpansion</code>.</li> + <li>La méthode <code>slice()</code> de l'interface {{domxref("Blob")}} a été touché par un bug qui l'empêchait d'accepter correctement le début et la fin des valeurs hors de la portée d'un entier de 64 bits signé, cela a été corrigé.</li> + <li>La méthode {{domxref("element.getBoundingClientRect()")}} considère désormais l'effet des <a class="internal" href="https://developer.mozilla.org/fr-/docs/CSS/Utilisation_des_transformations_CSS" title="Utilisation des transformations CSS">transformations CSS</a> lors du calcul des délimitations du rectangle de l'élément.</li> + <li>La propriété <code>crossOrigin</code> est à présent supportée par {{domxref("HTMLMediaElement")}}.</li> +</ul> + +<h4 id="Nouvelles_WebAPIs">Nouvelles WebAPIs</h4> + +<ul> + <li>API Information Réseau : Ajout du support expérimental de {{domxref("window.navigator.connection")}} (prefixé).</li> + <li>API WebTelephony : {{domxref("window.navigator.mozTelephony")}} a été implémenté et fournit un support pour composer, répondre, et gérer les appels téléphoniques sur un appareil.</li> + <li>API WebSMS : {{domxref("window.navigator.mozSms")}} est à présent disponible pour les appareils mobiles pour envoyer des SMS.</li> + <li>API Screen brightness : {{domxref("window.screen.mozEnabled")}} et {{domxref("window.screen.mozBrightness")}} ont été ajoutés pour contrôler l'écran de l'appareil.</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>Firefox implémente désormais l'API DOM {{domxref("SVGTests")}}, voir {{bug(607854)}}</li> + <li>L'interface DOM {{domxref("SVGStringList")}} supporte la propriété non-standard <code>length</code>, voir {{bug(711958)}}</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>Pour contrôler la directionnalité des formules de MathML, l'attribut <code>dir</code> est désormais supporté par les éléments {{MathMLElement("math")}}, {{MathMLElement("mrow")}} et {{MathMLElement("mstyle")}} ainsi que par les <a class="internal" href="https://developer.mozilla.org/Special:Tags?tag=MathML:Token+Elements" title="Special:Tags?tag=MathML:Token+Elements">éléments MathML Token</a>. C'est particulièrement important pour certaines <a class="external" href="http://www.w3.org/TR/arabic-math/" title="http://www.w3.org/TR/arabic-math/">notations mathématiques Arabes</a>.</li> + <li>L'attribut d'alignement <code>align</code> definit dans MathML3 a été implementé pour {{MathMLElement("munder")}}, {{MathMLElement("mover")}} et {{MathMLElement("munderover")}}.</li> +</ul> + +<h3 id="Réseau">Réseau</h3> + +<ul> + <li>Auparavant, Gecko rapportait le code de fermeture <code>CLOSE_NORMAL</code> quand un canal WebSocket était fermé en raison d'une erreur inattendue ou d'une condition d'erreur que la spécification ne couvre pas. Désormais, <code>CLOSE_GOING_AWAY</code> est rapporté à la place.</li> +</ul> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<ul> + <li>La <a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console" title="Web Console">console Web/a> met à présent en cache les message d'erreurs et les entrées du journal ajoutés grâce à {{domxref("console.log()")}} si la console n'est pas ouverte actuellement, et les affichent lorsque qu'elle s'ouvre.</a></li> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console" title="Web Console">Vous pouvez désormais réinitialiser le niveau de zoom, panoramique et de rotation dans la </a><a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/3D_view" title="3D view">vue 3D</a> en appuyant sur la touche "r".</li> + <li>Vous pouvez désormais masquer les nœuds dans la <a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/3D_view" title="3D view">vue 3D</a> en appuyant sur la touche "x" après les avoir sélectionnés.</li> + <li>L'<a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Using_the_Source_Editor" title="Using the Source Editor">éditeur de source</a> a plusieurs nouvelles fonctionnalités d'édition et de raccourcis clavier, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Using_the_Source_Editor" title="Using the Source Editor">Utilisation de l'éditeur de source</a> pour plus de détails</li> +</ul> + +<p>Mozilla travaille sur l'intégration des ses propres outils de développement Web qui complètent l'add-on populaire <a class="external" href="http://getfirebug.com/" title="Firebug Firefox add-on">Firebug</a>. Vous pouvez obtenir plus d'informations sur ces outils et également voir une liste de ressources externes à Firefox qui vous aideront dans le développement Web. La liste se trouve dans les <a class="internal" href="https://developer.mozilla.org/fr/docs/Outils" title="Outils de développement Web">outils de développement Web</a>.</p> + +<h3 id="Changements_divers">Changements divers</h3> + +<ul> + <li>Le jeu de caractères GEOSTD8, qui n'a jamais été entièrement supporté, n'est plus du tout pris en charge.</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<h3 id="Modules_de_code_JavaScript">Modules de code JavaScript</h3> + +<h4 id="source-editor.jsm">source-editor.jsm</h4> + +<ul> + <li>La méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/source-editor.jsm#resetUndo%28%29" title="source-editor.jsm#resetUndo%28%29"><code>resetUndo()</code></a> a été ajoutée, elle vous permet d'effacer la pile d'annulation.</li> + <li>L'éditeur de source offre à présent des méthodes pour apporter des capacités de recherche : <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/source-editor.jsm#find()" title="source-editor.jsm#find()"><code>find()</code></a>, <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/source-editor.jsm#findNext()" title="source-editor.jsm#findNext()"><code>findNext()</code></a>, and <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/source-editor.jsm#findPrevious()" title="source-editor.jsm#findPrevious()"><code>findPrevious()</code></a>.</li> +</ul> + +<h3 id="XUL">XUL</h3> + +<ul> + <li>La définition des valeurs pour l'attribut {{XULAttr("chromemargin")}} a été légèrement modifié, pour que ce soit plus facile de faire du code XUL multi-plateforme qui rend bien sur les plateformes avec des largeurs par défaut des bordures de fenêtres différentes.</li> +</ul> + +<h3 id="XPCOM">XPCOM</h3> + +<ul> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/nsISupports_proxies" title="nsISupports proxies">Les proxys <code>nsISupports</code></a> ne sont plus supportés. A la place, vous devez utiliser des exécutables ; voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/XPCOM/Making_cross-thread_calls_using_runnables" title="XPCOM/Making cross-thread calls using runnables">Faire des appels inter-thread exécutables</a>.</li> + <li>Firefox 11 a changé le comportement de <a class="internal" href="https://developer.mozilla.org/en-US/docs/Components.utils.getWeakReference" title="Components.utils.getWeakReference"><code>Components.utils.getWeakReference()</code></a> pour générer une exception lorsque la référence de l'objet est nulle, l'ancien comportement qui était silencieux a été rétabli.</li> +</ul> + +<h3 id="XPConnect">XPConnect</h3> + +<ul> + <li>Le type de données <a class="internal" href="https://developer.mozilla.org/en-US/docs/PRUint64" title="PRUint64"><code>PRUint64</code></a> été mal utilisé puisqu'il est sensiblement identique à <a class="internal" href="https://developer.mozilla.org/en-US/docs/PRInt64" title="PRInt64"><code>PRint64</code></a> lorsqu'il est utilisé avec XPConnect. Cela a été corrigé.</li> +</ul> + +<h3 id="Changements_dans_les_interfaces">Changements dans les interfaces</h3> + +<ul> + <li>L'interface <code>nsIScreen_MOZILLA_2_0_BRANCH</code> a été intégré dans {{interface("nsIScreen")}}. Les API définies dans cette interface (pour contrôler la luminosité de l'écran) n'avaient pas encore été documentées, mais désormais elles le sont.</li> + <li>L'interface {{interface("nsIScriptError2")}} a été intégré dans {{interface("nsIScriptError")}}.</li> + <li>{{ifmethod("nsIDownloadManager", "addDownload")}} est à présent géré de manière asynchrone plutôt que de façon synchrone.</li> + <li>La méthode {{ifmethod("imgIContainerObserver", "frameChanged")}} reçoit désormais le premier paramètre d'un objet {{interface("imgIRequest")}} qui identifie la demande correspondante.</li> + <li>La méthode {{ifmethod("nsIDOMWindowUtils", "sendTouchEvent")}} a été ajoutée pour permettre de synthétiser les événements tactiles.</li> + <li>Vous pouvez désormais faire défiler le contenu spécifié verticalement au centre de la vue en spécifiant <code>SCROLL_CENTER_VERTICALLY</code> lors de l'appel de la constante de défilement {{ifmethod("nsISelectionController", "scrollSelectionIntoView")}}.</li> + <li>Le nouvel attribut {{ifattribute("nsIMemoryMultiReporter", "explicitNonHeap")}} a été ajouté ; C'est un moyen plus efficace d'obtenir la somme de toutes les mesures du multi-rapporteur qui mesure ceux qui ont un chemin commençant par "explicit" <strong>et</strong> qui sont de type <code>KIND_NONHEAP</code>.</li> + <li>L'attribut {{ifattribute("nsIDOMWindowUtils", "paintingSuppressed")}} a été ajouté ; cette valeur booléenne indique si oui ou non la toile est en train d'être supprimée de la fenêtre. C'est utilisé sur mobile pour éviter le rendu sautillant qui se produit lorsque les tentatives pour dessiner la page commencent avant que le contenu disponible soit insuffisant pour le faire.</li> + <li>Les interfaces <code>nsIDocCharset</code> et <code>nsIDocumentCharsetInfo</code> ont été intégrées dans {{interface("nsIDocShell")}}. Dans le cadre de ce travail, le vieil attribut <code>forcedDetector</code> a été enlevé, il n'a jamais rien fait.</li> +</ul> + +<h3 id="SpiderMonkey">SpiderMonkey</h3> + +<ul> + <li><code>JSThread</code> a été supprimé.</li> + <li><code>JSThreadData</code> a été intégré dans <code>JSRuntime</code>.</li> +</ul> + +<h3 id="Compilation">Compilation</h3> + +<ul> + <li>Lors de la compilation sous Windows, vous devez avoir le SDK de Windows 7 installé.</li> +</ul> + +<h3 id="Autres_changements">Autres changements</h3> + +<ul> + <li>Le composant d'édition (appelé <a class="internal" href="https://developer.mozilla.org/en-US/docs/Midas" title="Midas">Midas</a>) <a class="internal" href="https://developer.mozilla.org/en-US/docs/Using_the_Editor_from_XUL#Editor_event_handling" title="Using the Editor from XUL#Editor event handling">n'accepte désormais que les évènements</a> provenant du code privilégié.</li> +</ul> + +<h2 id="Voir_également">Voir également</h2> + +<p>{{Firefox_for_developers('11')}}</p> diff --git a/files/fr/mozilla/firefox/versions/13/index.html b/files/fr/mozilla/firefox/versions/13/index.html new file mode 100644 index 0000000000..df1af7aca1 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/13/index.html @@ -0,0 +1,145 @@ +--- +title: Firefox 13 pour les développeurs +slug: Mozilla/Firefox/Versions/13 +tags: + - Firefox + - Firefox 13 +translation_of: Mozilla/Firefox/Releases/13 +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 13, basé sur Gecko 13.0, est sorti le 5 juin 2012. Cette page résume les principaux changements dans Firefox 13 qui sont utiles aux développeurs.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>L'attribut {{htmlattrxref("cellspacing", "table")}} de {{htmlelement("table")}} est désormais analysé de la manière qu'il soit en mode quirks ou non. Autrement dit, si une valeur est spécifiée en pourcentage, elle est traitée comme un certain nombre de pixels, puisque les valeurs en pourcentage ne sont pas réellement autorisée selon la spécification.</li> + <li>L'élément {{htmlelement("wbr")}} a vu son comportement bi-directionnel corrigé. Il se comporte à présent comme l'Unicode <code>U+200B ZERO-WIDTH SPACE</code> et n'affecte donc plus la bi-directionnalité de son élément parent.</li> + <li>La peusdo-classe {{Cssxref(":invalid")}} peut à présent être appliquée à l'élément {{htmlelement("form")}}.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>L'unité <code>turn</code> de la propriété {{cssxref("<angle>")}} est désormais supportée (à utiliser avec la fonction CSS <code>rotate()</code>).</li> + <li>Le support d'une syntaxe de 3 à 4 valeurs pour la propriété {{cssxref("background-position")}} a été ajouté. Vous pour décaler une image de fond à partir de n'importe quel coin en écrivant par exemple "<code>right 10px bottom 20px</code>". Voir {{bug(522607)}}</li> + <li>Le support d'une syntaxe à 2 valeurs pour la propriété {{cssxref("background-repeat")}} a été ajouté.</li> + <li>Les propriétés {{cssxref("border-radius","-moz-border-radius*")}} et {{cssxref("box-shadow","-moz-box-shadow")}} n'ont plus de préfixe (<code>border-radius</code> ou <code>box-shadow</code>). Voir {{bug(693510)}}</li> + <li>La propriété {{cssxref("column-fill")}} a été implémentée (prefixée).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Le support pour la construction <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/for...of" title="for...of"><code>for..of</code></a> de l'ECMAScript 6 a été ajouté.</li> + <li>Le support expérimental pour les objets ECMAScript 6 <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Map" title="Map">Map</a> and <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Set" title="Set">Set</a> a été ajouté.</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>L'argument <code>deep</code> de la méthode {{domxref("Node.cloneNode()")}} est désormais optionnel, comme c'est spécifié dans DOM4.</li> + <li>Les méthodes {{domxref("window.setTimeout()")}} et {{domxref("window.setInterval()")}} ne transmettent plus l'argument supplémentaire "lateness" lors du rappel de routine.</li> + <li>La méthode {{domxref("Blob","Blob.mozSlice()")}} n'a plus de préfixe.</li> + <li>Le support du constructeur {{domxref("Blob")}} a été ajouté.</li> + <li>Le support de <a class="internal" href="https://developer.mozilla.org/fr/docs/DOM/Storage#globalStorage" title="DOM/Storage#globalStorage"><code>globalStorage</code></a> a été retiré.</li> + <li>La nouvelle interface {{domxref("DOMRequest")}}, utilisée pour rapporté l'état et le résultat des opérations en arrière-plan, a été ajoutée.</li> + <li>La méthode {{domxref("HTMLOptionElement", "HTMLOptionElement.index()")}} renvoie désormais <code>0</code> au lieu de l'incorrect <code>-1</code> lorsque {{HTMLElement("option")}} est à l'intérieur d'un élément {{HTMLElement("datalist")}}.</li> + <li>{{domxref("DOMException")}} a été implémenté selon la spécification DOM Level 4.</li> + <li>L'inteface {{domxref("FileError")}} a été supprimée en faveur de l'interface {{domxref("DOMError")}} selon la dernière spécification FileAPI.</li> + <li>L'objet {{domxref("Range")}} ne lance plus une <code>RangeException</code>. A la place une {{domxref("DOMException")}} est utilisée selon DOM 4.</li> + <li>{{domxref("element.getAttributeNS()")}} renvoie désormais toujours <code>null</code> au lieu d'une chaîne vide pour les attributs inexistants. Auparavant, il y avait des cas où une chaîne vide pouvait être retournée. Pour être conforme à la spécification DOM4, null doit être retourné pour les attributs inexistants.</li> + <li>L'interface {{domxref("HTMLCanvasElement")}} a maintenant une méthode non-standard, <code>mozFetchAsStream()</code>, qui fournit un flux entrant contenant les données d'image de l'élément au format spécifié.</li> +</ul> + +<h3 id="UA_string">UA string</h3> + +<ul> + <li>Firefox Mobile ou Tablet pour Android dispose désormais <a class="internal" href="https://developer.mozilla.org/en-US/docs/Gecko_user_agent_string_reference#Mobile_and_Tablet_indicators" title="Gecko user agent string reference#Mobile and Tablet indicators">d'une chaîne UA</a> pour indiquer le style et n'a plus le signe Fennec. En outre, le nombre après "Gecko /" est à présent le numéro de version de Gecko au lieu d'une date.</li> + <li>La chaîne UA n'affiche plus le numéro de correctif Gecko ou le statut de version dans le numéro de version ; le numéro de version est à présent toujours de la forme "X.Y", où X est le numéro de version majeur et Y le mineur. Par exemple, "13.0" ou "14.1". Il n'y aura plus quelque chose comme "14.0.1b1".</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>L'interface DOM {{domxref("SVGStringList")}} est désormais indexable comme <a class="internal" href="https://developer.mozilla.org/fr/docs/JavaScript/Référence_JavaScript/Objets_globaux/Array" title="Array"><code>Array</code></a> (voir {{bug(722071)}}).</li> +</ul> + +<h3 id="WebGL">WebGL</h3> + +<ul> + <li>Le support pour l'extension <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebGL/Using_Extensions#EXT_texture_filter_anisotropic" title="WebGL/Using_Extensions#EXT_texture_filter_anisotropic"><code>EXT_texture_filter_anisotropic</code></a> a été ajouté. Le filtrage des textures anisotrope améliore la qualité de l'accès aux textures mipmapped lors de la visualisation d'une primitive texturée à un angle oblique.</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>Le support pour l'attribut <code>width</code> sur l'élément {{MathMLElement("mtable")}} a été ajouté ({{bug(722880)}}).</li> + <li>La <a class="external" href="http://www.mathjax.org/demos/tex-samples/" rel="external" title="Demos TeX Samples">police MathJax</a> est désormais utilisée comme police par défaut pour le texte mathématique are now used as the default fonts for mathematical text. Voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Mozilla_MathML_Project/Fonts" title="Fonts for Mozilla's MathML engine">les polices pour le moteur MathML de Mozilla</a> pour plus d'informations.</li> +</ul> + +<h3 id="Réseau">Réseau</h3> + +<ul> + <li>Le protocole SPDY est désormais activé par défaut.</li> +</ul> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<h4 id="Amélioration_de_la_vue_3D">Amélioration de la vue 3D</h4> + +<ul> + <li>Vous pouvez à présent appuyer sur la touche "F" pour s'assurer que le nœud actuellement sélectionné est visible.</li> +</ul> + +<h4 id="Améliorations_du_panneau_de_style">Améliorations du panneau de style</h4> + +<ul> + <li>En cliquant sur l'en-tête d'une règle dans le <a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/Style_panel" title="Style panel">panneau de style</a> ouvre à présent <a class="internal" href="https://developer.mozilla.org/fr/docs/Outils/%C3%89diteur_de_Style" title="Editeur de style">l'Editeur de style</a> correspondant au CSS.</li> + <li>Un clique droit sur une règle dans le <a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/Style_panel" title="Style panel">panneau de style</a> offre à présent une option pour copier la règle dans le presse-papiers.</li> + <li>La saisie d'un nom de propriété inconnue, ou d'une valeur de propriété illégale, affiche une icône d'avertissement près de cette propriété.</li> +</ul> + +<h4 id="Amélioration_de_l'Ardoise">Amélioration de l'Ardoise</h4> + +<ul> + <li>L'<a class="internal" href="https://developer.mozilla.org/fr/docs/Outils/Ardoise" title="Ardoise">Ardoise</a> a maintenant une option dans le menu Aide pour vous rendre à la documentation MDN sur l'Ardoise.</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<h3 id="Note_de_compatibilité">Note de compatibilité</h3> + +<p>A partir de Firefox 13, Firefox pour Windows requiert au minimum Windows XP Service Pack 2, il ne pourra plus s'exécuter sur Windows 2000 ou les versions antérieures de Windows XP.</p> + +<h3 id="Modules_de_code_JavaScript">Modules de code JavaScript</h3> + +<h4 id="source-editor.jsm">source-editor.jsm</h4> + +<ul> + <li>Le support d'un drapeau sale a été ajouté à l'API Source Editor.</li> + <li>L'éditeur de source ne supporte plus de retomber sur un {{HTMLElement("textarea")}} au lieu d'utiliser Orion.</li> + <li>L'éditeur expose à présent les évènements focus et blur.</li> + <li>La méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/source-editor.jsm#getIndentationString%28%29" title="source-editor.jsm#getIndentationString%28%29"><code>getIndentationString()</code></a> a été ajoutée, cela renvoie la chaîne à utiliser pour l'indentation du texte dans l'éditeur.</li> + <li>L'éditeur de source supporte désormais la gestion d'une liste de points d'arrêt et l'affichage de l'interface utilisateur pour les basculer sur et en dehors ; toutefois, il ne fait pas la mise en œuvre des points d'arrêt. C'est à vous d'écrire du code pour le débogueur.</li> + <li>Le support pour mettre en surbrillance la ligne actuelle a été ajouté, en utilisant l'option de configuration <code>highlightCurrentLine</code>.</li> +</ul> + +<h3 id="ARIA">ARIA</h3> + +<ul> + <li>Les propriétés CSS {{cssxref("margin-left")}}, {{cssxref("margin-right")}}, {{cssxref("margin-top")}}, {{cssxref("margin-bottom")}} sont à présent toutes reflétées dans les attributs des objets ARIA avec le même nom. Voir les <a class="internal" href="https://developer.mozilla.org/en-US/docs/Accessibility/AT-APIs/Gecko/Attrs" title="Gecko Object Attributes">attributs des objets Gecko</a> pour plus d'informations.</li> +</ul> + +<h3 id="Interfaces">Interfaces</h3> + +<ul> + <li>L'interface {{interface("nsIScreen")}} supporte à présent le contrôle de la rotation via le nouvel attribut <code>rotation</code>.</li> + <li>L'interface {{interface("nsIPrefBranch2")}} a été intégrée dans {{interface("nsIPrefBranch")}} ({{bug(718255)}}).</li> + <li>Les alias <code>MozOpacity</code>, <code>MozOutline</code>, <code>MozOutlineStyle</code>, <code>MozOutlineWidth</code>, <code>MozOutlineOffset</code> et <code>MozOutlineColor</code>, qui ont tous été retirés des précédentes versions de Gecko, ont été supprimés de {{interface("nsIDOMCSS2Properties")}}, qui aurait dû avoir ces alias.</li> + <li>L'attribut <code>excludeItemIfParentHasAnnotation</code> de {{interface("nsINavHistoryQueryOptions")}} a été retiré, avec l'opération de requête correspondante. Il existait les livemarks, qui n'existent plus.</li> +</ul> + +<h2 id="Voir_également">Voir également</h2> + +<p>{{Firefox_for_developers('12')}}</p> diff --git a/files/fr/mozilla/firefox/versions/14/index.html b/files/fr/mozilla/firefox/versions/14/index.html new file mode 100644 index 0000000000..95e45a7a02 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/14/index.html @@ -0,0 +1,90 @@ +--- +title: Firefox 14 pour les développeurs +slug: Mozilla/Firefox/Versions/14 +tags: + - Firefox + - Firefox 14 +translation_of: Mozilla/Firefox/Releases/14 +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 14, basé sur Gecko 14.0, est sorti le 17 juillet 2012. Cette page résume les principaux changements dans Firefox 14 qui sont utiles aux développeurs.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>L'élément {{HTMLElement("progress")}} n'est plus classé à tort comme un élément de formulaire, et n'a donc plus l'attribut <code>form</code>.</li> + <li>Les touches de modification par défaut pour l'<code><a class="internal" href="https://developer.mozilla.org/fr/docs/HTML/Global_attributes" title="Attributs globaux">accesskey</a></code> du contenu HTML sur Mac sont modifiées en Control + Option. C'est la même chose que sur les navigateur basés sur WebKit sur Mac.</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>Les évènements <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/DOM_event_reference/input" title="input">input</a> sont aussi déclenchés sur l'édition d'un élément hôte de l'éditeur <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Element.contentEditable" title="Element.contentEditable">contenteditable</a> et de l'élément racine de l'éditeur <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/document.designMode" title="document.designMode">designMode</a>.</li> + <li>{{domxref("DOMException", "DOMException.code")}} est à présent obsolète par la dernière spécification DOM 4.</li> + <li>La méthode {{domxref("Range.insertNode()")}} fonctionne désormais correctement lorsqu'elle est utilisée sur des gammes effondrées.</li> + <li>L'interface {{domxref("BlobBuilder", "MozBlobBuilder")}} a été abandonnée au profit du constructeur {{domxref("Blob")}}. Si vous utilisez <code>MozBlobBuilder</code> vous verrez un message d'avertissement dans la console Web.</li> + <li>Le support pour les <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/DOM_Mutation_Observers" title="DOM Mutation Observers">observateurs de mutation</a> a été lancé. Il est conçu pour remplacer les événements de mutation dans DOM3, ayant de nombreuses questions concernant la performance.</li> + <li>Les propriétés <code>x</code> et <code>y</code> de l'interface {{domxref("HTMLImageElement")}} ont été retirées dans Gecko 7.0 {{geckoRelease("7.0")}} mais restaurées dans cette version pour des raisons de compatibilité.</li> + <li>Les méthodes <code>execCommandShowHelp()</code> et <code>queryCommandText()</code> de {{ domxref("Document") }}, qui n'ont jamais rien fait, ont été retirées.</li> + <li>L'interface <code>GeoPositionAddress</code>, un élément obsolète de l'API <a class="internal" href="https://developer.mozilla.org/fr/docs/Utilisation_de_la_géolocalisation" title="Utilisation de la géolocalisation">Geolocation</a>, a été supprimée.</li> + <li>{{domxref("Storage", "localStorage/sessionStorage")}} retourne désormais correctement <code>undefined</code> au lieu de <code>null</code> pour les clés non déclarées grâce à la propriété d'accès.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Les propriétés CSS {{cssxref("text-transform")}} et {{cssxref("font-variant")}} ont été corrigées pour gérer correctement les <code>i</code> → <code>İ</code> et <code>ı</code> → <code>I</code> des langues <a class="external" href="http://fr.wikipedia.org/wiki/Langues_turques" title="http://fr.wikipedia.org/wiki/Langues_turques">Turc</a>.</li> + <li>Le digramme Hollandais IJ est à présent correctement géré par <code>text-transform: capitalization</code>. De même que la lettre grecque <code>Σ</code>, qui a deux formes minuscules, <code>σ</code> et <code>ς</code>, est à présent correctement géré par <code>text-transform: lowercase</code>.</li> + <li>Le support de la fonction <code>skew()</code> a été retiré de la propriété {{cssxref("transform")}}, comme elle a été supprimée du standard.</li> + <li>La syntaxe pour {{cssxref("border-image")}} a été mise à jour pour correspondre à la dernière version de la spécification ; elle n'accepte plus de slash ("/").</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>La syntaxe de l'action <code>statusline</code> sur les éléments {{MathMLElement("maction")}} a été ajustée pour correspondre à la spécification MathML.</li> +</ul> + +<h3 id="HTTP">HTTP</h3> + +<ul> + <li>Gecko supporte à présent le nouveau code d'état <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTTP" title="HTTP">HTTP</a> <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTTP/HTTP_response_codes#308" title="en/HTTP/HTTP_response_codes#308"><code>308 Permanent Redirect</code></a>. Comme Gecko ne fait pas la différence entre les redirection permanentes et temporaires, elle se comporte comme le code d'état <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTTP/HTTP_response_codes#307" title="en/HTTP/HTTP_response_codes#307"><code>307 Temporary Redirect</code></a>, car elle interdit l'agent utilisateur de modifier la méthode HTTP utilisée entre les deux demandes (<code>POST</code> restera <code>POST</code>, <code>GET</code> restera <code>GET</code>).</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<h3 id="Modules_de_code_JavaScript">Modules de code JavaScript</h3> + +<h4 id="source-editor.jsm">source-editor.jsm</h4> + +<ul> + <li>Ajout d'un raccourci clavier pour basculer en commentaire la sélection actuelle (Ctrl-/ ou Cmd-/ sur Mac OS X).</li> + <li>Ajout de raccourcis clavier (Ctrl-[ et Ctrl-]) pour déplacer la position du curseur de texte au début et à la fin du bloc actuel.</li> + <li>Ajout de nouvelles méthodes <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/source-editor.jsm#getLineStart%28%29" title="en/JavaScript_code_modules/source-editor.jsm#getLineStart()"><code>getLineStart()</code></a> et <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/source-editor.jsm#getLineEnd%28%29" title="en/JavaScript_code_modules/source-editor.jsm#getLineEnd()"><code>getLineEnd()</code></a>.</li> +</ul> + +<h3 id="XUL">XUL</h3> + +<ul> + <li>Ajout du nouvel attribut {{XULAttr("fullscreenbutton")}} à l'élément {{XULElem("window")}} ; la valeur <code>true</code> ajoute un bouton à la fenêtre de chrome pour activer le mode plein écran.</li> +</ul> + +<h3 id="Interfaces">Interfaces</h3> + +<ul> + <li>L'interface {{interface("nsILocalFile")}} a été intégrée dans {{interface("nsIFile")}} {{bug(682360)}}.</li> + <li>Les méthodes dans {{interface("nsIPlacesImportExportService")}} pour importer des marques-pages ont toutes été retirées en faveur du module de code JavaScript <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/BookmarkHTMLUtils.jsm" title="en/JavaScript_code_modules/BookmarkHTMLUtils.jsm"><code>BookmarkHTMLUtils.jsm</code></a>.</li> + <li>L'interface {{interface("nsIDOMGeoPositionAddress")}} a été supprimée.</li> + <li>Les méthodes <code>getItemGUID</code>, <code>setItemGUID</code> et <code>getItemIdForGUID</code> ont été retirées de l'interface {{interface("nsINavBookmarksService")}} ({{bug(715355)}}).</li> +</ul> + +<h3 id="Vérification_orthographique">Vérification orthographique</h3> + +<ul> + <li>Les noms du dictionnaire sont désormais analysés comme des étiquettes de langues <a class="external" href="http://tools.ietf.org/html/bcp47" title="http://tools.ietf.org/html/bcp47">BCP 47</a> ({{bug(730209)}}, {{bug(741842)}}). Les développeurs sont encouragés à ne pas coder le nom de leur langue en dur dans leur dictionnaire de noms.</li> +</ul> + +<h2 id="Voir_également">Voir également</h2> + +<p>{{Firefox_for_developers('13')}}</p> diff --git a/files/fr/mozilla/firefox/versions/15/index.html b/files/fr/mozilla/firefox/versions/15/index.html new file mode 100644 index 0000000000..e4ed3d90ea --- /dev/null +++ b/files/fr/mozilla/firefox/versions/15/index.html @@ -0,0 +1,114 @@ +--- +title: Firefox 15 pour les développeurs +slug: Mozilla/Firefox/Versions/15 +tags: + - Firefox + - Firefox 15 +translation_of: Mozilla/Firefox/Releases/15 +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 15, basé sur Gecko 15.0, est sorti le 28 août 2012. Cette page résume les principaux changements dans Firefox 15 qui sont utiles aux développeurs.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>L'attribut <code>size</code> de l'élément {{HTMLElement("font")}} est à présent géré selon la spécification HTML5. Cela signifie que toutes les valeurs entières supérieures à 10 ou inférieure à -10 sont désormais considérées, respectivement, comme équivalentes à 10 et -10.</li> + <li>Le support pour les attributs <code>font-weight</code> et <code>point-size</code> de l'élément <code><font></code> a été supprimé ; ils n'étaient pas standards et Gecko était le seul moteur qui les a supportés.</li> + <li>Le <a class="external" href="http://www.opus-codec.org/" title="http://www.opus-codec.org/">codec Opus</a> est à présent supporté pour l'audio dans les conteneurs Ogg pour les éléments HTML {{HTMLElement("audio")}} et {{HTMLElement("video")}}.</li> + <li>L'élément {{HTMLElement("source")}} supporte désormais l'attribut <code>media</code>.</li> + <li>Les éléments {{HTMLElement("audio")}} et {{HTMLElement("video")}} supportent désormais l'attribut <code>played</code>, qui fournit l'objet {{domxref("TimeRanges")}} listant les plages de temps des médias qui ont été lus jusqu'à présent.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>La propriété {{cssxref("font-feature-settings")}} a été mise à jour selon la dernière syntaxe : <code>font-feature-settings: "lnum" 1;</code>.</li> + <li>La propriété CSS {{cssxref("text-transform")}} a été étendue pour gérer correctement les ligatures Unicode (comme <code>fi</code>).</li> + <li>La propriété CSS {{cssxref("word-break")}} a été impémentée.</li> + <li>La propriété {{cssxref("border-image")}} a été mise à jour selon la dernière spécification et n'a plus de préfixe. ({{bug(713643)}})</li> + <li>La fonction <code>skew()</code> de {{cssxref("transform")}} retirée dans Firefox 14, a été restaurée pour la compatibilitée avec les sites existants. Toutefois, les auteurs sont invités à utiliser à la place les fonctions <code>skewX()</code> et <code>skewY()</code>.</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>Les méthodes <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent#getModifierState%28%29" title="DOM/KeyboardEvent#getModifierState()"><code>KeyboardEvent.getModifierState()</code></a> et <a class="internal" href="https://developer.mozilla.org/en/DOM/MouseEvent#getModifierState%28%29" title="DOM/MouseEvent#getModifierState()"><code>MouseEvent.getModifierState()</code></a> de DOM Events Level 3, qui vous permettent de demander l'état des touches de modification, comme <code>Ctrl</code> ou <code>Shift</code>, ont été implémentées ({{bug(630811)}} et {{bug(731878)}}). Mais le comportement est conforme au dernier brouillon de D3E. Donc, certains noms de touches de modification diffèrent de IE ({{bug(769190)}}).</li> + <li>Sur les évènements de la souris, l'attribut <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/MouseEvent" title="DOM/MouseEvent"><code>MouseEvent.buttons</code></a> pour interroger l'état des boutons de la souris, a été implémenté.</li> + <li>Sur les évènements du clavier, l'attribut <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent#Attributes_location" title="DOM/KeyboardEvent#Attributes_location">KeyboardEvent.location</a> pour interroger l'emplacement de la clé (standard, à gauche ou à droite de la touche de modification, dans le pavé numérique), a été implémenté ({{bug(166240)}}).</li> + <li>Le résultat de KeyboardEvent.keyCode a été calculé à partir de meilleures règles qui étaient presque identiques sous Windows/Linux/Mac. Et désormais elles sont disponibles sur certaines configurations de clavier qui n'ont pas la disposition ASCII sur Linux et Mac, comme l'arabe, le cyrillique, thaï et ainsi de suite. Voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent#Virtual_key_codes" title="DOM/KeyboardEvent#Virtual_key_codes">le document des codes pour les touches virtuelles</a>.</li> + <li>La méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/range.detach" title="DOM/range.detach"><code>range.detach()</code></a> a été tranformée en no-op et sera probablement supprimée dans le futur.</li> + <li>La méthode <code>HTMLVideoElement.mozHasAudio()</code> a été implémentée. Elle indique si une piste audio est associée à un élément vidéo. ({{bug(480376)}})</li> + <li>L'API <code>Performance</code> a une nouvelle méthode, <code>now()</code>, supportant les horloges haute résolution du type de <code>DOMHighResTimeStamp</code>. ({{bug(539095)}}).</li> + <li>L'<a class="internal" href="https://developer.mozilla.org/en-US/docs/API/WebSMS" title="API/WebSMS">API WebSMS</a> a été mise à jour et supporte à présent l'attribut <code>read</code> indiquant si un SMS est lu ou non.</li> + <li>L'<a class="link-https" href="https://wiki.mozilla.org/WebAPI/FileHandleAPI" title="https://wiki.mozilla.org/WebAPI/FileHandleAPI">API FileHandle</a> a été implémentée.</li> + <li>Le constructeur <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Blob" title="DOM/Blob"><code>Blob</code></a> prend désormais <code>ArrayBufferView</code> comme un membre du paramètre <code><var>blobParts</var></code> en plus de <code>ArrayBuffer</code>. ({{bug(752402)}})</li> + <li>{{domxref("DeviceLightEvent")}} spécifié dans <a href="http://www.w3.org/TR/ambient-light/" title="http://www.w3.org/TR/ambient-light/">Ambient Light Events</a> a été implémenté.</li> + <li>{{domxref("DeviceProximityEvent")}} et {{domxref("UserProximityEvent")}} de <a href="http://www.w3.org/TR/proximity/" title="http://www.w3.org/TR/proximity/">Proximity Events</a> ont été implementés.</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Le support de l'interface <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_typed_arrays/DataView" title="JavaScript_typed_arrays/DataView"><code>DataView</code></a> a été ajouté à partir de la spécification des tableaux typés. Cela fournit un accès de bas niveau aux données contenues dans un <a class="internal" href="https://developer.mozilla.org/fr/docs/JavaScript/Référence_JavaScript/Objets_globaux/ArrayBuffer" title="Référence_JavaScript/Objets_globaux/ArrayBuffer"><code>ArrayBuffer</code></a>.</li> + <li>Le support de <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number/isNaN" title="JavaScript/Reference/Global_Objects/Number/isNaN"><code>Number.isNaN</code></a> d'ECMAScript Harmony a été ajouté. ({{bug(749818)}}, {{bug(761495)}}, {{bug(761480)}})</li> + <li>Le support du paramètre default d'ECMAScript Harmony a été ajouté. ({{bug(757676)}})</li> + <li>Le support du paramètre rest d'ECMAScript Harmony a été ajouté. ({{bug(574132)}})</li> +</ul> + +<h3 id="WebGL">WebGL</h3> + +<ul> + <li>Le support de l'extension <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebGL/Using_Extensions#WEBGL_compressed_texture_s3tc" title="WebGL/Using_Extensions#WEBGL_compressed_texture_s3tc"><code>WEBGL_compressed_texture_s3tc</code></a> a été ajouté. Les textures compressées réduisent la quantité de mémoire nécessaire pour stocker une texture sur le GPU, ce qui permet d'utiliser des textures en plus hautes résolutions ou plus de textures de même résolution.</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>Les opérateurs mathématiques peuvent désormais utiliser les polices téléchargeables spécifiés avec {{cssxref("@font-face")}}. Cela permet à <a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/mathml-fonts/" title="https://addons.mozilla.org/en-US/firefox/addon/mathml-fonts/">l'extension MathML-fonts</a> de travailler également avec les opérateurs extensibles.</li> + <li>L'attribut <code>selection</code> de {{MathMLElement("maction")}} est désormais uniquement pris en compte avec l'actiontype <code>toggle</code>.</li> + <li><a class="external" href="http://www.w3.org/TR/MathML3/chapter3.html#id.3.3.4.2.1" title="http://www.w3.org/TR/MathML3/chapter3.html#id.3.3.4.2.1"><span id="summary_alias_container"><span id="short_desc_nonedit_display">L'obsolète et contraignant namedspace</span></span></a> a été supprimé ({{bug("673759")}}).</li> + <li>La prise en charge de la syntaxe des valeurs de <a class="internal" href="https://developer.mozilla.org/en-US/docs/MathML/Attributes/Values" title="Values">Length</a> et {{MathMLElement("mpadded")}} a été améliorée selon la spécification MathML3.</li> + <li>Les nouveaux opérateurs MathML pour les maths arabes ont été ajoutés au dictionnaire opérateur ({{bug(757125)}}).</li> +</ul> + +<h3 id="Réseau">Réseau</h3> + +<ul> + <li>Le support du protocole SPDY v3 a été lancé. Il est désactivé par défaut et peut être activé en définissant la préférence <code>network.http.spdy.enabled.v3</code> sur vrai. ({{bug(737470)}})</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<h3 id="Changements_dans_les_interfaces">Changements dans les interfaces</h3> + +<dl> + <dt>{{interface("nsIDOMWindowUtils")}}</dt> + <dd><code>aModifiers</code> de <code>sendMouseEvent()</code>, <code>sendTouchEvent()</code>, <code>sendMouseEventToWindow()</code>, <code>sendMouseScrollEvent()</code> et <code>sendKeyEvent()</code> supporte toutes les touches de modification qui sont supportées par <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/KeyboardEvent#getModifierState%28%29" title="DOM/KeyboardEvent#getModifierState()"><code>KeyboardEvent.getModifierState()</code></a>. Utiliser les valeurs <code>MODIFIER_*</code>. Et désormais le 5ème paramètre de <code>sendKeyEvent()</code> est changé d'un <code>boolean</code> vers un <code>unsigned long</code>. Pour la compatibilité ascendante, si l'appelant passe <code>true</code> ou <code>false</code>, le comportement n'est pas changé. Ce changement permet aux appelants d'indiquer l'emplacement de la touche.</dd> + <dt>{{interface("nsIBrowserHistory")}}</dt> + <dd>La méthode <code>hidePage()</code> n'a jamais été implémentée, et a été entièrement supprimée dans cette version. La méthode <code>addPageWithDetails()</code> a également été supprimée dans le cadre des travaux pour faire une API <a class="internal" href="https://developer.mozilla.org/en-US/docs/Places" title="Places">Places</a> asynchrone ; à la place, utilisez plutôt {{ifmethod("mozIAsyncHistory", "updatePlaces")}}. De plus, l'attribut <code>count</code> a été retiré, il ne renvoyé pas un comptage réel à certain moment (à la place, il indiqué simplement si les entrées existées). Vous pouvez utiliser à la place {{ifattribute("nsINavHistoryService", "hasHistoryEntries")}}.</dd> +</dl> + +<dl> + <dt>{{interface("inIDOMUtils")}}</dt> + <dd>La méthode <code>parseStyleSheet()</code> permet d'ajouter et d'analyser des feuilles de style.</dd> +</dl> + +<h4 id="Nouvelles_interfaces">Nouvelles interfaces</h4> + +<dl> + <dt>{{interface("nsISpeculativeConnect")}}</dt> + <dd>Fournit un moyen de suggérer la couche réseau que vous allez être susceptibles de demander l'ouverture d'une connexion à un URI donné dans un futur proche. Cela permet à la couche réseau d'entamer le processus, qui a parfois une forte latence, d'ouvrir une nouvelle connexion réseau à l'avance.</dd> +</dl> + +<h4 id="Interfaces_supprimées">Interfaces supprimées</h4> + +<p>Les interfaces suivantes ont été supprimées.</p> + +<ul> + <li>{{interface("nsIGlobalHistory")}}</li> +</ul> + +<h2 id="Voir_également">Voir également</h2> + +<p>{{Firefox_for_developers('14')}}</p> diff --git a/files/fr/mozilla/firefox/versions/16/index.html b/files/fr/mozilla/firefox/versions/16/index.html new file mode 100644 index 0000000000..0d9335ab6b --- /dev/null +++ b/files/fr/mozilla/firefox/versions/16/index.html @@ -0,0 +1,88 @@ +--- +title: Firefox 16 pour les développeurs +slug: Mozilla/Firefox/Versions/16 +tags: + - Firefox + - Firefox 16 +translation_of: Mozilla/Firefox/Releases/16 +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 16, basé sur Gecko 16.0, est sorti le 9 octobre 2012. Cette page résume les principaux changements dans Firefox 15 qui sont utiles aux développeurs.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>L'élément {{HTMLElement("meter")}} est à présent supporté.</li> + <li>Le support pour l'API HTML Microdata a été ajouté. ({{bug(591467)}})</li> + <li>{{HTMLElement("canvas")}} supporte à présent le mot-clé CSS <code>currentColor</code> dans tous les cas. ({{bug("629882")}})</li> + <li>{{HTMLElement("input")}} permet désormais un filtrage basé sur les types MIME abitraires dans <code>accept</code>. ({{bug(565274)}})</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Le support du standard des <a href="https://developer.mozilla.org/fr/docs/CSS/Animations_CSS" title="Animations CSS">Animations CSS</a> a été lancé sans préfixe. ({{bug(762302)}})</li> + <li>Le support pour l'inversion de la direction de l'animation (mots-clés <code>reverse</code> et <code>alternate-reverse</code> sur la propriété {{cssxref("animation-direction")}}) a été ajouté. ({{bug(655920)}})</li> + <li>Vous pouvez désormais animer les propriétés CSS {{cssxref("height")}} et {{cssxref("width")}}.</li> + <li>Les propriétés CSS {{cssxref("animation-duration")}} et {{cssxref("transition-duration")}} rejettent désormais les valeurs négatives (et ne les traitent plus comme <code>0s</code>) ({{bug(773102)}})</li> + <li>Le support du standard des <a href="https://developer.mozilla.org/fr/docs/CSS/Utilisation_des_transformations_CSS" title="Utilisation des transformations CSS">Transformations CSS</a> a été lancé sans préfixe. ({{bug(745523)}})</li> + <li>Le support du standard des <a href="https://developer.mozilla.org/fr/docs/CSS/Using_CSS_gradients" title="fr/CSS/Using_CSS_gradients">Dégradés CSS</a> a été lancé sans préfixe. Notez que la syntaxe a considérablement évoluée depuis la version préfixée. ({{bug(752187)}})</li> + <li>L'implémentation de {{cssxref("box-sizing", "-moz-box-sizing")}} a été actualisée pour aussi s'appliquer aux cellules du tableau. ({{bug(338554)}})</li> + <li>Le support du standard de {{cssxref("calc")}} a été lancé sans préfixe. ({{bug(771678)}})</li> + <li>Le type de données de {{cssxref("<resolution>")}} a été étendu et supporte le <code>dppx</code>. ({{bug(741644)}})</li> + <li>Sur l'écran, pour les <a href="https://developer.mozilla.org/fr/docs/CSS/Media_queries" title="/fr/CSS/Media_queries">media queries</a>, <code>dppx</code>, <code>dpi</code> et <code>dpcm</code> représentent désormais des valeurs basés sur des pixels CSS et non plus avec les unités physiques. ({{bug(771390)}})</li> + <li>Trois nouvelles pseudo-classes, <code>:-moz-meter-optimum</code>, <code>:-moz-meter-sub-optimum</code> et <code>:-moz-meter-sub-sub-optimum</code>, ont été ajoutées pour accéder à/styliser un élément {{HTMLElement("meter")}} dans un état particulier. ({{bug(660238)}})</li> + <li>La propriété {{cssxref("-moz-appearance")}} gagnes deux nouvelles valeurs : <code>meterbar</code> et <code>meterchunk</code>. Elles représentent des composants dans l'élément {{HTMLElement("meter")}}. ({{bug(659999)}})</li> + <li>{{cssxref("min-width")}} et {{cssxref("min-height")}} supportent désormais le mot-clé <code>auto</code> pour les articles flexibles (et règlent les autres articles à <code>0</code> ). ({{bug(763689)}})</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>Deux nouvelles propriétés, <code>width</code> et <code>height</code>, ont été ajoutée à l'interface {{domxref("HTMLInputElement")}}. ({{bug(683855)}})</li> + <li>Les propriétés et méthodes d'IndexedDB n'ont plus de préfixe, depuis que IndexedDB est passé au statut Candidate Recommendation. ({{bug(726378)}})</li> + <li><a href="https://developer.mozilla.org/en-US/docs/DOM/window.navigator.battery" title="DOM/window.navigator.battery">Battery API</a> n'a plus de préfixe.</li> + <li>L'API Vibration n'a plus de préfixe.</li> + <li>L'interface {{domxref("Keyboard")}}, qui est toujours préfixée (<code>mozKeyboard</code>), a désormais les méthodes {{domxref("Keyboard.setSelectedOption()")}} et {{domxref("Keyboard.setValue()")}}, ainsi que la propriété {{domxref("Keyboard.onfocuschange")}}.</li> + <li>Les attributs <code>Window.java</code> et <code>Window.packages</code> ont été supprimés. Ils n'ont jamais été documentés, et nous espérons que vous ne les utilisiez pas !</li> + <li><code>CSSRule.type</code> associé avec {{domxref("CSSNamespaceRule")}} a été mis à jour à partir de <code>UNKNOWN_RULE</code> (<code>0</code>) vers <code>NAMESPACE_RULE</code> (<code>10</code>). ({{bug(765590)}})</li> + <li>API WebSMS : <a href="https://developer.mozilla.org/en-US/docs/DOM/SmsRequest" title="DOM/SmsRequest">SmsRequest</a> a été remplacé par qui est plus général.</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>L'objet <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Number" title="JavaScript/Reference/Global_Objects/Number"><code>Number</code></a> offre désormais les méthodes <code>isFinite()</code>, <code>toInteger()</code> et <code>isInteger()</code>. ({{bug(761480)}}, {{bug(761495)}})</li> + <li>L'<a href="http://wiki.ecmascript.org/doku.php?id=harmony:spread" title="http://wiki.ecmascript.org/doku.php?id=harmony:spread">opérateur de diffusion</a> d'Harmony a été ajouté à l'objet <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array" title="JavaScript/Reference/Global_Objects/Array"><code>Array</code></a>. ({{bug(574130)}})</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>Les attributs <code>lspace</code> et <code>rspace</code> de {{MathMLElement("mo")}} ont désormais la constante <code>thickmathspace</code> par défaut.</li> +</ul> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<ul> + <li>Il existe à présent une barre de développement très pratique, vous pouvez y accéder en allant dans Outils > Développeur Web > Barre de Développement, ou en appuyant sur Maj+F2. Cette barre d'outils propose une interface en ligne de commande ainsi que des boutons pour accéder rapidement aux outils utiles. L'interface graphique de commande en ligne (<a href="https://developer.mozilla.org/en-US/docs/Tools/GCLI" title="en/Tools/GCLI">GCLI</a>) est facile à étendre et d'autres commandes devraient dans le futur. Tapez "help" pour obtenir la liste des commandes disponibles.</li> + <li>La console Web affiche désormais le nombre d'erreurs afin que vous voyez rapidement la quantité de travail que vous avez devant vous.</li> + <li>L'Ardoise propose désormais la liste des fichiers récemments ouverts.</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<h3 id="Changements_dans_les_interfaces">Changements dans les interfaces</h3> + +<p>{{interface("nsIPrivateDOMEvent")}} a été fusionné dans {{interface("nsIDOMEvent")}}. ({{bug("761613")}})</p> + +<h4 id="Nouvelles_interfaces">Nouvelles interfaces</h4> + +<h4 id="Interfaces_supprimées">Interfaces supprimées</h4> + +<p>Les interfaces suivantes ont été supprimées.</p> + +<h2 id="Voir_également">Voir également</h2> + +<p>{{Firefox_for_developers('15')}}</p> diff --git a/files/fr/mozilla/firefox/versions/17/index.html b/files/fr/mozilla/firefox/versions/17/index.html new file mode 100644 index 0000000000..b8c77bfa66 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/17/index.html @@ -0,0 +1,87 @@ +--- +title: Firefox 17 pour les développeurs +slug: Mozilla/Firefox/Versions/17 +tags: + - Firefox + - Firefox 17 +translation_of: Mozilla/Firefox/Releases/17 +--- +<div>{{FirefoxSidebar}}</div> + +<p>Firefox 17, basé sur Gecko 17.0, est sorti le 20 novembre 2012. Cette page résume les principaux changements dans Firefox 17 qui sont utiles aux développeurs.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Le support de l'attribut {{htmlattrxref("sandbox", "iframe")}} sur l'élément {{HTMLElement("iframe")}} a été ajouté. ({{bug(341604)}})</li> + <li>Le support de l'attribut <code>inputmode</code> sur l'élément {{HTMLElement("input")}} a été ajouté. (Note : actuellement, les valeurs de Gecko diffèrent de la spécification HTML de WHATWG.) ({{bug(746142)}})</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Le support de la règle {{cssxref("@supports")}} définie dans la <a href="http://dev.w3.org/csswg/css3-conditional/" title="http://dev.w3.org/csswg/css3-conditional/">spécification CSS3 Conditional Rules</a> a été lancée. Les développeurs peuvent l'essayer en passant la préférence <code>layout.css.supports-rule.enabled</code> à <code>true</code> ({{bug(649740)}})</li> + <li>Le support de la pseudo-classe {{cssxref(":dir", ":dir()")}}, des sélecteurs CSS de niveau 4, permettant de sélectionner des éléments selon leur directionnalité a été lancée. ({{bug(562169)}})</li> + <li>Le support de la nouvelle valeur <code>isolate-override</code> de la propriété CSS {{cssxref("unicode-bidi")}} a été lancée. ({{bug(774335)}})</li> + <li>Notre implémentation de {{cssxref("box-sizing")}} préfixé prend désormais en compte {{cssxref("min-height")}} et {{cssxref("max-height")}}. Un pas de plus vers son dépréfixage. ({{bug(308801)}})</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>Le support de l'interface {{domxref("CSSSupportsRule")}} définie dans la <a href="http://dev.w3.org/csswg/css3-conditional/" title="http://dev.w3.org/csswg/css3-conditional/">spécification CSS3 Conditional Rules</a> a été lancée. ({{bug(649740)}})</li> + <li>Le support de l'objet {{domxref("WheelEvent")}} et de l'évènement <code>wheel</code> a été lancé. ({{bug(719320)}}).</li> + <li>Le support de la touche DOM Meta sur Linux est de nouveau disponible. ({{bug(751749)}}).</li> + <li>Sur {{domxref("HTMLMediaElement")}}, une nouvelle méthode a été ajoutée, <code>mozGetMetadata</code>. Elle retourne un objet JavaScript dont les propriétés représentent les métadonnées à partir de la ressource du média joué comme des paires {clé: valeur}. ({{bug(763010)}}).</li> +</ul> + + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>L'objet <a href="https://developer.mozilla.org/fr/docs/JavaScript/R%C3%A9f%C3%A9rence_JavaScript/Objets_globaux/String" title="/JavaScript/R%C3%A9f%C3%A9rence_JavaScript/Objets_globaux/String"><code>String</code></a> offre à présent les méthodes d'Harmony <code>startsWith</code>, <code>endsWith</code> et <code>contains</code>. ({{bug(772733)}})</li> + <li>Les méthodes de <code>String</code> <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/link" title="JavaScript/Reference/Global_Objects/String/link"><code>link</code></a> et <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/anchor" title="JavaScript/Reference/Global_Objects/String/anchor"><code>anchor</code></a> échappent désormais à <strong>"</strong> (guillemet). ({{bug("352437")}})</li> + <li>Le support expérimental pour l'objet <a href="https://developer.mozilla.org/fr/docs/JavaScript/R%C3%A9f%C3%A9rence_JavaScript/Objets_globaux/ParallelArray" title="JavaScript/R%C3%A9f%C3%A9rence_JavaScript/Objets_globaux/ParallelArray"><code>ParallelArray</code></a> a été implémenté. ({{bug(778559)}})</li> + <li>Support des itérateurs <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Map" title="JavaScript/Reference/Global_Objects/Map"><code>Map</code></a>/<a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Set" title="JavaScript/Reference/Global_Objects/Set"><code>Set</code></a>. ({{bug(725909)}})</li> + <li><a href="https://developer.mozilla.org/fr/docs/E4X" title="E4X">E4X</a> est désactivé par défaut pour le contenu Web. ({{bug(778851)}})</li> + <li><code>__exposedProps__</code> doit désormais être défini pour les objets JavaScript Chrome exposés au contenu. Les tentatives d'accès à des objets de contenu sans Chrome <code>__exposedProps__ </code> échoueront ensembles silencieusement. ({{bug(553102)}})</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>L'analyse de l'attribut <code>align</code> sur les éléments {{MathMLElement("mtable")}} a été mise à jour pour mieux traiter les espaces optionnels.</li> +</ul> + +<h3 id="XUL">XUL</h3> + +<ul> + <li>L'élément XUL <a href="https://developer.mozilla.org/en-US/docs/XUL/key" title="XUL/key"><code>key</code></a> supporte le modificateur "os" qui est la touche Win (Super ou Hyper touche). ({{bug(751749)}})</li> +</ul> + +<h3 id="Agent_Utilisateur">Agent Utilisateur</h3> + +<p>La partie de Gecko sur la chaine de l'agent utilisateur a changée. La date de compilation (qui n’avait pas été mise à jour depuis 2010) a été retirée, et c'est le numéro de version de Gecko qui a été mis en place. Donc <code>Gecko/20100101</code> -> <code>Gecko/17.0</code>. Cela peut vous affecter si vous faites du reniflement.</p> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<h3 id="Changements_dans_les_interfaces">Changements dans les interfaces</h3> + +<dl> + <dt>{{interface("nsIInputStream")}}</dt> + <dd>La méthode <code>available()</code> retourne une longueur de 64-bit au lieu de 32-bit. ({{bug(215450)}})</dd> + <dt>{{interface("nsIDOMWindowUtils")}}</dt> + <dd>La méthode <code>sendMouseScrollEvent()</code> a été remplacée par <code>sendWheelEvent()</code>. ({{bug(719320)}})</dd> + <dt>{{interface("nsIFilePicker")}}</dt> + <dd>La méthode <code>open()</code>, pour ouvrir la boîte de dialogue d'un fichier de façon asynchrone, a été ajoutée et la méthode <code>show()</code> a été dépréciée. ({{bug("731307")}})</dd> + <dt>{{interface("nsIScriptSecurityManager")}}</dt> + <dd>Les méthodes <code>checkLoadURIStr()</code> et <code>checkLoadURI()</code> ont été retirées. ({{bug(327244)}})</dd> + <dt>{{interface("nsIRefreshURI")}}</dt> + <dd>La méthode <code>setupRefreshURIFromHeader()</code> a un paramètre <code>principal</code> en plus.</dd> +</dl> + +<h2 id="Voir_également">Voir également</h2> + +<p>{{Firefox_for_developers('16')}}</p> diff --git a/files/fr/mozilla/firefox/versions/17/site_compatibility/index.html b/files/fr/mozilla/firefox/versions/17/site_compatibility/index.html new file mode 100644 index 0000000000..5f4d2359da --- /dev/null +++ b/files/fr/mozilla/firefox/versions/17/site_compatibility/index.html @@ -0,0 +1,12 @@ +--- +title: Compatibilité des sites avec Firefox 17 +slug: Mozilla/Firefox/Versions/17/Site_compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 17 + - FxSiteCompat +translation_of: Mozilla/Firefox/Releases/17/Site_compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/17/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/versions/18/index.html b/files/fr/mozilla/firefox/versions/18/index.html new file mode 100644 index 0000000000..7ed2e61e84 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/18/index.html @@ -0,0 +1,92 @@ +--- +title: Firefox 18 pour les développeurs +slug: Mozilla/Firefox/Versions/18 +tags: + - Firefox + - Firefox 18 +translation_of: Mozilla/Firefox/Releases/18 +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 18, basé sur Gecko 18.0, est sorti le 8 janvier 2013. Cette page résume les principaux changements dans Firefox 18 qui sont utiles aux développeurs.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>L'attribut {{htmlattrxref("reversed","ol")}} de l'élément {{HTMLElement("ol")}} est à présent supporté. ({{bug("601912")}})</li> + <li>L'attribut {{htmlattrxref("crossorigin","link")}} de l'élément {{HTMLElement("link")}} est à présent supporté. ({{bug("786564")}})</li> + <li>L'attribut {{htmlattrxref("allowfullscreen", "iframe")}} de {{HTMLElement("iframe")}} a été implémenté et son prédécesseur préfixé, {{htmlattrxref("mozallowfullscreen", "iframe")}}, est à présent obsolète.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>{{cssxref("min-width")}} et {{cssxref("min-height")}} utilisent désormais le mot-clé <code>auto</code> comme <em>valeur initiale</em> (Cela influe uniquement sur les éléments flexibles qui corrigeaient à <code>0</code>, la précédente valeur initiale, pour les autres éléments). ({{bug("763689")}})</li> + <li>La cascade a été mise à jour : désormais l'auteur des règles <code>!important</code> prend le dessus sur les <a href="https://developer.mozilla.org/fr/docs/CSS/Animations_CSS" title="CSS/Animations_CSS">animations CSS</a>. ({{bug("783714")}})</li> + <li>La propriété raccourcie {{cssxref("background")}} reconnait à présent la propriété CSS3 {{cssxref("background-size")}}. ({{bug("570326")}})</li> + <li>Le support initial du module CSS Flexbox a été lancé. Il est désactivé par défaut mais peut être activé en passant le paramètre <code>layout.css.flexbox.enabled</code> à <code>true</code>. ({{bug('666041')}})</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li><code>navigator.mozPay</code> a été lancé. ({{bug("767818")}})</li> + <li><code>window.devicePixelRatio</code> a été lancé. ({{bug("564815")}})</li> + <li>Le backend MacOS X pour <code>window.navigator.battery</code> a été implémenté. ({{bug("696045")}})</li> + <li>{{domxref("BlobBuilder", "MozBlobBuilder")}} a été retiré. Les développeurs doivent utiliser le constructeur {{domxref("Blob")}} pour créer un objet <code>Blob</code>. ({{bug("744907")}})</li> + <li>L'évènement {{event("visibilitychange")}} et l'<a href="https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API" title="DOM/Using_the_Page_Visibility_API">API Page Visibility</a> ont été dépréfixés. ({{bug("812086")}})</li> + <li><code>TextDecoder</code> et <code>TextEncoder</code> ont été ajoutés. ({{bug("764234")}})</li> + <li><code>HTMLMediaElement.src</code> a été séparée en deux propriétés : la propriété <code>src</code> standard, qui traite {{domxref("DOMString")}}, et la propriété préfixée <code>mozSrcObject</code>, qui traite <a href="https://developer.mozilla.org/en-US/docs/WebRTC/MediaStream_API" title="WebRTC/MediaStream_API">les flux multimédia</a>. ({{bug("792665")}})</li> + <li>Support des <a href="https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers#Passing_data_by_transferring_.C2.A0ownership_%28transferable_objects%29" title="DOM/Using_web_workers#Passing_data_by_transferring_.C2.A0ownership_%28transferable_objects%29">objets transférables</a>.</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Les <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Proxy">Direct Proxies</a> d'Harmony (ECMAScript 6) ont été lancés. ({{bug("703537")}})</li> +</ul> + +<h3 id="Réseau">Réseau</h3> + +<ul> + <li>Les facteurs de qualité ("q-values") sont désormais fixés à 2 chiffres dans l'en-tête HTTP <code>Accept-Language</code>. ({{bug("672448")}})</li> + <li>La syntaxe <code>ALLOW-FROM</code> de l'en-tête HTTP <a href="https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options" title="The_X-FRAME-OPTIONS_response_header"><code>X-FRAME-OPTIONS</code></a> Response est à présent supportée. ({{bug("690168")}})</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<h3 id="Changements_dans_les_interfaces">Changements dans les interfaces</h3> + +<dl> + <dt>{{interface("nsIStreamListener")}}</dt> + <dd>Le 4ème paramètre (aOffset) de la méthode <code>onDataAvailable()</code> modifie unsigned long long. ({{bug("784912")}})</dd> + <dt>{{interface("nsIUploadChannel")}}</dt> + <dd><code>setUploadStream()</code> supporte plus de 2 Go de content-length. ({{bug("790617")}})</dd> + <dt>{{interface("nsIEditor")}}</dt> + <dd><code>addEditorObserver()</code> a été supprimé, utilisez <code>setEditorObserver()</code> à la place, <code>removeEditorObserver()</code> ne prend plus le paramètre {{interface("nsIEditorObserver")}}. ({{bug("785091")}})</dd> + <dt>{{interface("nsIHttpProtocolHandler")}}</dt> + <dd>Il n'y a plus de garantie que les observateurs <code>http-on-modify-request</code> soit appelés de manière synchrone au cours de <code>nsIChannel.asyncOpen().</code> Pour les observateurs qui ont besoin d'être appelés pendant <code>asyncOpen</code>(), le nouvel observateur <code>http-on-opening-request</code> a été ajouté. {{bug("800799")}}</dd> + <dt>{{interface("nsIProtocolProxyService")}}</dt> + <dd>La méthode <code>resolve</code> a été retirée. Maintenant, seule la méthode <code>asyncResolve</code> peut être utilisée. Voir ({{bug("769764")}}).</dd> +</dl> + +<h4 id="Interfaces_supprimées">Interfaces supprimées</h4> + +<p>Les interfaces suivantes ont été supprimées.</p> + +<ul> + <li>{{interface("nsIEditorObserver")}}</li> +</ul> + +<h2 id="Voir_également">Voir également</h2> + +<ul> + <li><a href="http://www.mozilla.org/en-US/firefox/18.0/releasenotes/">Notes de version de Firefox 18</a></li> + <li><a href="https://hacks.mozilla.org/2012/10/aurora-18-hidpi-touch-events/">Aurora 18 : HiDPI & Touch Events</a> (Mozilla Hacks)</li> + <li><a href="https://developer.mozilla.org/en-US/docs/Site_Compatibility_for_Firefox_18">Compatibilité des sites pour Firefox 18</a></li> + <li><a href="https://blog.mozilla.org/addons/2012/12/28/compatibility-for-firefox-18/">Compatibilité des modules complémentaires pour Firefox 18</a> (Add-ons Blog)</li> +</ul> + +<h3 id="Anciennes_versions">Anciennes versions</h3> + +<p>{{Firefox_for_developers('17')}}</p> diff --git a/files/fr/mozilla/firefox/versions/18/site_compatibility/index.html b/files/fr/mozilla/firefox/versions/18/site_compatibility/index.html new file mode 100644 index 0000000000..40090de357 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/18/site_compatibility/index.html @@ -0,0 +1,12 @@ +--- +title: Compatibilité des sites avec Firefox 18 +slug: Mozilla/Firefox/Versions/18/Site_compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 18 + - FxSiteCompat +translation_of: Mozilla/Firefox/Releases/18/Site_compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/18/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/versions/19/index.html b/files/fr/mozilla/firefox/versions/19/index.html new file mode 100644 index 0000000000..8ece44bb72 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/19/index.html @@ -0,0 +1,82 @@ +--- +title: Firefox 19 pour les développeurs +slug: Mozilla/Firefox/Versions/19 +tags: + - Firefox + - Firefox 19 +translation_of: Mozilla/Firefox/Releases/19 +--- +<div>{{FirefoxSidebar}}</div><p>{{ draft() }}</p> + +<p>Firefox 19, basé sur Gecko 19.0, est sorti le 19 février 2013. Cette page résume les principaux changements dans Firefox 19 qui sont utiles aux développeurs.</p> + +<p>Vous voulez aider à documenter Firefox 19 ? Regardez la <a class="external" href="http://beta.elchi3.de/doctracker/#list=fx&version=19.0">liste des bugs qui ont besoin de rédaction</a> et lancez-vous !</p> + +<h2 id="Changements_pour_les_développeurs_web">Changements pour les développeurs web</h2> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>La méthode <code>size()</code>des objets <code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Map" title="/en-US/docs/JavaScript/Reference/Global_Objects/Map">Map</a></code> et <code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Set" title="/en-US/docs/JavaScript/Reference/Global_Objects/Set">Set</a></code> devient la propriété <code>size</code> ({{bug("807001")}})</li> + <li>Les objets <code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Map" title="/en-US/docs/JavaScript/Reference/Global_Objects/Map">Map</a></code> et <code><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Set" title="/en-US/docs/JavaScript/Reference/Global_Objects/Set">Set</a></code> ont maintenant une méthode <code>clear()</code>. ({{bug("805003")}})</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Support des unités relatives au viewport {{cssxref("<length>")}}, <code>vh</code>, <code>vw</code>, <code>vmin</code>, et <code>vmax</code>. ({{bug("503720")}})</li> + <li>CSS Flexbox est maintenant non-préfixé, mais reste désactivé par défaut ({{bug("801098")}}).</li> + <li>La valeur <code>-moz-initial</code> n'est plus préfixée ({{bug("806068")}}). <code>-moz-initial</code> sera conservée pendant quelques temps en tant qu'alias, cependant les auteurs sont fortement encouragés à utiliser <code>initial</code>.</li> + <li>La propriété CSS {{cssxref("text-transform")}} supporte dorénavant le mot-clé <code>full-width</code> qui permet une intégration plus discrète des caractères latins dans les textes utilisant des caractères idéographiques à largeur fixe tel que le chinois ou le japonais ({{bug("774560")}}).</li> + <li>La propriété CSS {{cssxref("page-break-inside")}} a été implémentée ({{bug("685012")}}).</li> + <li>La fonction CSS {{cssxref("calc", "calc()")}} peut maintenant être utilisée avec <code><color-stop></code> (sur {{cssxref("<gradient>")}}).</li> + <li>La règle CSS {{ cssxref("@page") }} est maintenant supportée ({{bug("115199")}}). Notez que les pseudo-classes {{cssxref(":first")}}, {{cssxref(":right")}}, et {{cssxref(":left")}} ne le sont pas encore.</li> + <li>La pseudo-classe {{cssxref(":-moz-placeholder")}} est remplacée par le pseudo-élément {{cssxref("::-moz-placeholder")}} ({{bug("737786")}}).</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>La méthode {{domxref("element.getElementsByTagName")}} retourne maintenant un <code>HTMLCollection</code> ({{bug("799464")}}).</li> + <li>La propriété <code>mozLastModifiedDate</code> de {{domxref("File")}} a été implémentée. ({{bug("793955")}})</li> + <li>La propriété <code>lastModifiedDate</code> de {{domxref("File")}} renvoie la date actuelle, si la date de la dernière modification est inconnue ({{bug("793459")}}).</li> + <li>La méthode <code>isPointInStroke</code> de {{domxref("CanvasRenderingContext2D")}} a été implémentée ({{bug("803124")}}).</li> + <li>La méthode <code>toBlob</code> de {{domxref("HTMLCanvasElement")}} a été implémentée ({{bug("648610")}}).</li> + <li>Les méthodes {{domxref("Node.isSupported")}} et {{domxref("document.implementation", "document.implementation.hasFeature()")}} ont été modifiées pour qu'elles renvoient toujours <code>true</code> ({{bug("801425")}}).</li> + <li>Lors de l'appel de <code>document.createElement(null)</code>, <code>null</code> sera désormais "stringified" et fonctionne comme <code>document.createElement("null")</code>.</li> +</ul> + +<h3 id="XForms">XForms</h3> + +<p>Le support des <a href="/en-US/docs/XForms" title="/en-US/docs/XForms">XForms</a> a été <a href="http://www.philipp-wagner.com/blog/2011/07/the-future-of-mozilla-xforms/" title="http://www.philipp-wagner.com/blog/2011/07/the-future-of-mozilla-xforms/"><strong>retiré</strong></a> dans Firefox 19.</p> + +<h2 id="Changements_pour_les_développeurs_d'add-ons_et_les_développeurs_Mozilla">Changements pour les développeurs d'add-ons et les développeurs Mozilla</h2> + +<div class="note"> +<p><strong>Note:</strong> <a href="/en-US/docs/XPCOM_API_Reference/nsresult" title="/en-US/docs/XPCOM_API_Reference/nsresult"><code>nsresult</code></a> est maintenant fortement typé, c'est un changement majeur dans Firefox 19. Cela permet de détecter plus facilement les bugs causés par la mauvaise gestion des valeurs retournées mais peut empêcher des codes actuels de fonctionner si <a href="/en-US/docs/XPCOM_API_Reference/nsresult" title="/en-US/docs/XPCOM_API_Reference/nsresult"><code>nsresult</code></a> fait de mauvaises suppositions concernant ces valeurs.</p> +</div> + +<ul> + <li><code>getBrowserSelection()</code> retourne dorénavant le texte sélectionné dans un input de type <code>text</code>. Ainsi, <code>gContextMenu.isTextSelected</code> vaudra <code>true</code> quand l'utilisateur sélectionne du texte depuis un champ texte qui n'est pas de type <code>password</code>. ({{bug("565717")}})</li> + <li><a href="/en/Mozilla/JavaScript_code_modules/Dict.jsm" title="en/Mozilla/JavaScript_code_modules/Dict.jsm">Dict.jsm</a>: <a href="/en/Mozilla/JavaScript_code_modules/Dict.jsm#Creating_a_dictionary" title="en/Mozilla/JavaScript_code_modules/Dict.jsm#Creating_a_dictionary"><code>Dict()</code></a> accepte maintenant les String JSON. <a href="/en/Mozilla/JavaScript_code_modules/Dict.jsm#toJSON()" title="en/Mozilla/JavaScript_code_modules/Dict.jsm#toJSON()"><code>Dict.toJSON()</code></a> a été ajouté et retourne un String JSON. ({{bug("727967")}})</li> +</ul> + +<h3 id="Changements_dans_les_intefaces">Changements dans les intefaces</h3> + +<dl> + <dt>{{interface("nsIImgLoadingContent")}}</dt> + <dd>Le paramètre (aObserver) de la méthode <code>addObserver()</code> change de {{interface("imgIDecoderObserver")}} pour {{interface("imgINotificationObserver")}}. La méthode <code>notify()</code> de {{interface("imgINotificationObserver")}} n'est pas scriptable, vous devez donc utiliser <code>createScriptedObserver()</code> à partir de {{interface("imgITools")}}.</dd> + <dt>{{interface("nsIChannel")}}</dt> + <dd>La propriété <code>contentLength</code> a changée de <code>long</code> à <code>int64_t</code></dd> +</dl> + +<h2 id="A_voir_également">A voir également</h2> + +<ul> + <li><a href="http://www.mozilla.org/en-US/firefox/19.0beta/releasenotes/">Notes de versions de Firefox 19</a></li> + <li><a href="/en-US/docs/Site_Compatibility_for_Firefox_19">Compatibilité des sites avec Firefox 19</a></li> +</ul> + +<h3 id="Anciennes_versions">Anciennes versions</h3> + +<p>{{Firefox_for_developers('18')}}</p> diff --git a/files/fr/mozilla/firefox/versions/19/site_compatibility/index.html b/files/fr/mozilla/firefox/versions/19/site_compatibility/index.html new file mode 100644 index 0000000000..bf8fd61a81 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/19/site_compatibility/index.html @@ -0,0 +1,12 @@ +--- +title: Compatibilité des sites avec Firefox 19 +slug: Mozilla/Firefox/Versions/19/Site_compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 19 + - FxSiteCompat +translation_of: Mozilla/Firefox/Releases/19/Site_compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/19/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/versions/2/index.html b/files/fr/mozilla/firefox/versions/2/index.html new file mode 100644 index 0000000000..c0027bed2d --- /dev/null +++ b/files/fr/mozilla/firefox/versions/2/index.html @@ -0,0 +1,149 @@ +--- +title: Firefox 2 pour les développeurs +slug: Mozilla/Firefox/Versions/2 +tags: + - Firefox + - Firefox 2 +translation_of: Mozilla/Firefox/Releases/2 +--- +<div>{{FirefoxSidebar}}</div><p><span class="comment">''Une grande partie du contenu de cette page est juste là pour boucher les trous. Voyez la <a href="/en/Firefox_2_for_developers">version anglaise de cette page</a> pour savoir comment la compléter.''</span></p> + +<h2 id="Nouvelles_fonctionnalit.C3.A9s_pour_les_d.C3.A9veloppeurs_dans_Firefox_2" name="Nouvelles_fonctionnalit.C3.A9s_pour_les_d.C3.A9veloppeurs_dans_Firefox_2">Nouvelles fonctionnalités pour les développeurs dans Firefox 2</h2> + +<p>Firefox 2 propose un grand nombre de nouvelles fonctionnalités et de nouvelles possibilités. Cet article fournit des liens vers des articles couvrant les nouvelles fonctionnalités.</p> + +<h3 id="Pour_les_d.C3.A9veloppeurs_Web_et_les_d.C3.A9veloppeurs_d.27applications" name="Pour_les_d.C3.A9veloppeurs_Web_et_les_d.C3.A9veloppeurs_d.27applications">Pour les développeurs Web et les développeurs d'applications</h3> + +<dl> + <dt><a class="external" href="http://wiki.mozilla.org/Microsummaries">Microrésumés</a></dt> + <dd>Les microrésumés sont de courtes compilations, régulièrement mises à jour, des plus importantes informations présentes sur des pages Web. Ils peuvent être fournis tant par les sites eux-mêmes que par des développeurs tiers. Lorsque les utilisateurs marquent des pages présentant des microrésumés, ils peuvent choisir d'afficher ceux-ci en lieu et place de titres statiques.</dd> +</dl> + +<dl> + <dt><a href="/fr/Création_d'un_générateur_de_microrésumé" title="fr/Création_d'un_générateur_de_microrésumé">Création d'un générateur de microrésumé</a></dt> + <dd>Un tutoriel sur la création d'un générateur de microrésumés.</dd> +</dl> + +<dl> + <dt><a href="/fr/Référence_grammaticale_XML_d'un_microrésumé" title="fr/Référence_grammaticale_XML_d'un_microrésumé">Référence grammaticale XML d'un microrésumé</a></dt> + <dd>Un guide de référence sur la grammaire XML utilisée pour la création de générateurs de microrésumés.</dd> +</dl> + +<dl> + <dt><a href="/fr/Création_de_plugins_MozSearch" title="fr/Création_de_plugins_MozSearch">Création de plugins MozSearch</a></dt> + <dd>Firefox 2 utilise MozSearch, un format de plugins de recherche basé sur OpenSearch.</dd> +</dl> + +<dl> + <dt><a href="/fr/Création_de_plugins_OpenSearch_pour_Firefox" title="fr/Création_de_plugins_OpenSearch_pour_Firefox">Création de plugins OpenSearch pour Firefox</a></dt> + <dd>Firefox 2 support le format de moteur de recherche OpenSearch.</dd> +</dl> + +<dl> + <dt><a href="/fr/Gestion_de_suggestions_dans_les_plugins_de_recherche" title="fr/Gestion_de_suggestions_dans_les_plugins_de_recherche">Gestion de suggestions dans les plugins de recherche</a></dt> + <dd>Comment permettre à votre plugin MozSearch de proposer des suggestions, qui apparaîtront dans une liste déroulante au fur et à mesure de la frappe dans la Barre de recherche.</dd> +</dl> + +<dl> + <dt><a href="/fr/Nouveautés_dans_JavaScript_1.7" title="fr/Nouveautés_dans_JavaScript_1.7">Nouveautés dans JavaScript 1.7</a></dt> + <dd>Firefox 2 fournit JavaScript 1.7, qui comprend de nouvelles fonctionnalités comme <code>let</code>, des assignations déstructurantes, des générateurs et itérateurs, et la définition de tableaux par compréhension.</dd> +</dl> + +<dl> + <dt><a href="/fr/DOM/Storage" title="fr/DOM/Storage">WHATWG Client-side session and persistent storage (ou DOM Storage)</a></dt> + <dd>Le stockage de session et le stockage persistant côté client permet aux applications Web de conserver des données structurées du côté du client.</dd> +</dl> + +<dl> + <dt><a href="/fr/SVG_dans_Firefox" title="fr/SVG_dans_Firefox">SVG dans Firefox</a></dt> + <dd>Firefox 2 améliore le support du SVG (<em>Scalable Vector Graphics</em>) en implémentant l'élément <code><textPath></code> et en ajoutant le support de quelques attributs non encore supportés.</dd> +</dl> + +<dl> + <dt><a href="/fr/Contrôle_du_correcteur_d'orthographe_dans_les_formulaires_HTML" title="fr/Contrôle_du_correcteur_d'orthographe_dans_les_formulaires_HTML">Contrôle du correcteur d'orthographe dans les formulaires HTML</a></dt> + <dd>Firefox 2 contient un correcteur d'orthographe des zones de texte et des champs de saisie. Cet article décrit comment écrire votre HTML pour activer et désactiver ce correcteur d'orthographe sur des éléments individuels de formulaires.</dd> +</dl> + +<dl> + <dt><a href="/fr/La_sécurité_dans_Firefox_2" title="fr/La_sécurité_dans_Firefox_2">La sécurité dans Firefox 2</a></dt> + <dd>Firefox 2 a modifié les protocoles de sécurité activés par défaut.</dd> +</dl> + +<h2 id="Pour_les_d.C3.A9veloppeurs_XUL_et_les_d.C3.A9veloppeurs_d.27extensions" name="Pour_les_d.C3.A9veloppeurs_XUL_et_les_d.C3.A9veloppeurs_d.27extensions">Pour les développeurs XUL et les développeurs d'extensions</h2> + +<dl> + <dt><a href="/fr/Mise_à_jour_des_extensions_pour_Firefox_2" title="fr/Mise_à_jour_des_extensions_pour_Firefox_2">Mise à jour des extensions pour Firefox 2</a></dt> + <dd>Comment migrer vos extensions existantes pour qu'elles fonctionnent avec Firefox 2.</dd> +</dl> + +<dl> + <dt><a href="/fr/API_de_restauration_de_session" title="fr/API_de_restauration_de_session">API de restauration de session</a></dt> + <dd>Ajout d'élément à enregistrer et à restaurer d'une session à l'autre dans Firefox.</dd> +</dl> + +<dl> + <dt><a href="/fr/API_d'accès_au_contenu_de_flux" title="fr/API_d'accès_au_contenu_de_flux">API d'accès au contenu de flux</a></dt> + <dd>API permettant aux développeurs d'accéder et de traiter des flux RSS et Atom.</dd> +</dl> + +<dl> + <dt><a href="/fr/SAX" title="fr/SAX">Support SAX</a></dt> + <dd>API de parcours XML basé sur les évènements.</dd> +</dl> + +<dl> + <dt><a href="/fr/Ajout_de_moteurs_de_recherche_depuis_des_pages_Web" title="fr/Ajout_de_moteurs_de_recherche_depuis_des_pages_Web">Ajout de moteurs de recherche depuis des pages Web</a></dt> + <dd>Un code JavaScript peut demander à Firefox d'installer un nouveau plugin de moteur de recherche, qui peut être fourni au format OpenSearch ou au format Sherlock.</dd> +</dl> + +<dl> + <dt><a href="/fr/Utilisation_du_correcteur_orthographique_dans_XUL" title="fr/Utilisation_du_correcteur_orthographique_dans_XUL">Utilisation du correcteur orthographique dans XUL</a></dt> + <dd>Explique comment vérifier l'orthographe de certains mots et comment obtenir une liste de suggestions de corrections depuis le code.</dd> +</dl> + +<dl> + <dt><a href="/fr/Ajout_de_fournisseurs_de_données_de_protection_anti-phishing" title="fr/Ajout_de_fournisseurs_de_données_de_protection_anti-phishing">Ajout de fournisseurs de données de protection anti-phishing</a></dt> + <dd>Il est possible d'améliorer la protection de Firefox contre le phishing (hameçonnage) en ajoutant des fournisseurs de données pour le système de navigation sécurisée.</dd> +</dl> + +<dl> + <dt><a href="/fr/Storage" title="fr/Storage">Storage</a></dt> + <dd>Firefox 2 propose mozStorage, une architecture de base de données basée sur sqlite.</dd> +</dl> + +<dl> + <dt><a href="/fr/Changements_dans_les_thèmes_graphiques_pour_Firefox_2" title="fr/Changements_dans_les_thèmes_graphiques_pour_Firefox_2">Changements dans les thèmes graphiques pour Firefox 2</a></dt> + <dd>Discussion autour des changements à apporter au thèmes graphiques existants pour qu'ils fonctionnent avec Firefox 2.</dd> +</dl> + +<dl> + <dt>Améliorations de Textbox (à partir de Firefox 2.0.0.1 uniquement)</dt> + <dd>L'élément <code><textbox></code> dispose à présent d'une méthode <code>reset()</code> pour réinitialiser la valeur de la boîte de texte à sa valeur par défaut. La propriété <code>defaultValue</code> peut être utilisée pour récupérer et modifier cette valeur par défaut ({{ Bug(312867) }}).</dd> + <dd>Support d'une propriété <code>editor</code> permettant d'obtenir l'interface interne <a href="/fr/NsIEditor" title="fr/NsIEditor">nsIEditor</a> pour le champ texte ({{ Bug(312867) }}).</dd> +</dl> + +<h2 id="Nouvelles_fonctionnalit.C3.A9s_pour_les_utilisateurs" name="Nouvelles_fonctionnalit.C3.A9s_pour_les_utilisateurs">Nouvelles fonctionnalités pour les utilisateurs</h2> + +<p>Firefox 2 offre une version améliorée de l'agréable interface utilisateur par rapport à ses versions précédentes, avec un niveau accru de sécurité pour rendre votre expérience de navigation encore plus sûre et plus pratique que jamais.</p> + +<h3 id="Apparence_et_comportement" name="Apparence_et_comportement">Apparence et comportement</h3> + +<ul> + <li>La <strong>vérification orthographique des zones de texte</strong> qui permet de remplir les formulaires Web en confiance.</li> + <li>Les <strong>microrésumés</strong> qui permettent de créer des marque-pages affichant des informations provenant du site auxquels ils sont liés, mises à jour automatiquement. Très utile pour suivre le cours d'une action, d'un enchère, etc.</li> + <li><strong>L'interface utilisateur du gestionnaire d'extensions</strong> a été améliorée.</li> + <li>Les <strong>moteurs de recherche</strong> peuvent être réarrangés et supprimés dans la barre de recherche.</li> + <li>La <strong>navigation par onglets</strong> a été améliorée, avec l'ajout de boutons de fermeture pour chaque onglet, un meilleur choix de l'onglet à afficher après la fermeture du précédent et des options simplifiées.</li> + <li>La <strong>découverte automatique des moteurs de recherche</strong> permet aux moteurs de recherche fournissant des plugins pour la barre de recherche de Firefox de vous proposer l'installation directe de ceux-ci.</li> + <li>Les <strong>suggestions de recherche</strong> permettent aux moteurs de recherche de vous proposer des termes de recherche suivant ce que vous avez commencé à saisir dans la barre de recherche.</li> +</ul> + +<h3 id="S.C3.A9curit.C3.A9_et_vie_priv.C3.A9e" name="S.C3.A9curit.C3.A9_et_vie_priv.C3.A9e">Sécurité et vie privée</h3> + +<ul> + <li><strong>Fonctionnalité anti-phishing</strong> pour vous avertir lorsque vous consultez un site qui semble être une imitation frauduleuse.</li> +</ul> + +<h2 id="Voir_aussi" name="Voir_aussi">Voir aussi</h2> + +<p>{{Firefox_for_developers('1')}}</p> diff --git a/files/fr/mozilla/firefox/versions/20/index.html b/files/fr/mozilla/firefox/versions/20/index.html new file mode 100644 index 0000000000..d9bf6ebdd7 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/20/index.html @@ -0,0 +1,75 @@ +--- +title: Firefox 20 pour les développeurs +slug: Mozilla/Firefox/Versions/20 +tags: + - Firefox + - Firefox 20 +translation_of: Mozilla/Firefox/Releases/20 +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 20 est sorti le 2 avril 2013. Cette page résume les principaux changements dans Firefox 20 qui sont utiles aux développeurs.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Le support de l'attribut {{htmlattrxref("download", "a")}} sur les éléments {{HTMLElement("a")}} et {{HTMLElement("area")}} a été ajouté ({{bug(676619)}}).</li> + <li>La valeur <code>auto</code> pour <a href="https://developer.mozilla.org/fr/docs/HTML/Global_attributes" title="fr/docs/HTML/Global_attributes">l'attribut global</a> <a href="https://developer.mozilla.org/en-US/docs/HTML/Global_attributes#attr-dir" title="en-US/docs/HTML/Global_attributes#attr-dir"><code>dir</code></a> a été implémenté ({{bug("548206")}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Le support de la méthode <code><a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/WeakMap" title="/en-US/docs/JavaScript/Reference/Global_Objects/WeakMap">Weakmap</a>.prototype.clear()</code>, récemment ajoutée au brouillon d'Harmony (EcmaScript 6), a été ajouté ({{bug(814562)}}).</li> + <li>Le support de la méthode <code><a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/imul" title="en-US/docs/JavaScript/Reference/Global_Objects/Math/imul">Math.imul()</a></code>, une fonction de multiplication 32 bits de type C. Bien qu'elle soit proposée pour Harmony (EcmaScript 6), elle n'a pas encore été acceptée et reste non-standard ({{bug(808148)}}).</li> + <li>Les applications Web utilisant le déplacement de texte grâce à Kinetic 3.x fonctionnent, même en utilisant le backend Cairo Canvas. ({{bug("835064")}})</li> + <li>L'instruction <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/for_each...in" title="en-US/docs/JavaScript/Reference/Statements/for_each...in"><code>for each...in</code></a> a été dépréciée et ne doit plus être utilisée. Pensez à utiliser la nouvelle instruction <a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/for...of" title="en-US/docs/JavaScript/Reference/Statements/for...of"><code>for...of</code></a> ({{bug("804834")}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/docs/CSS/Tutorials/Using_CSS_flexible_boxes" title="en-US/docs/CSS/Tutorials/Using_CSS_flexible_boxes">CSS Flexbox</a> est désormais disponible par défaut, uniquement dans les versions préliminaires (hors Bêta). Elle peut être activée dans la version finale en modifiant une préférence dans about:config.</li> + <li>La propriété <code>mask-type</code> de la <a href="https://dvcs.w3.org/hg/FXTF/raw-file/tip/masking/index.html" title="https://dvcs.w3.org/hg/FXTF/raw-file/tip/masking/index.html">spécification CSS Masking</a> a été ajoutée ({{bug(793617)}}).</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>{{domxref("HTMLMediaElement")}} supporte désormais <code>playbackRate</code> (en lecture et écriture), avec correction de hauteur. La correction de hauteur peut être contrôlé à l'aide de la propriété <code>mozPreservesPitch</code> ({{bug(495040)}}).</li> + <li>CSSOM : Le support des nouvelles interfaces {{domxref("CSSGroupingRule")}} et {{domxref("CSSConditionRule")}} a été ajouté ({{bug(814907)}}).</li> + <li>CSSOM : Sur la constante {{domxref("CSSRule")}}, <span id="summary_alias_container"><span id="short_desc_nonedit_display">CSSRule.MOZ_KEYFRAME_RULE</span></span> et <span id="summary_alias_container"><span id="short_desc_nonedit_display">CSSRule.MOZ_KEYFRAMES_RULE</span></span> ont été dé-préfixés pour <span id="summary_alias_container"><span id="short_desc_nonedit_display">CSSRule.KEYFRAME_RULE</span></span> et <span id="summary_alias_container"><span id="short_desc_nonedit_display">CSSRule.KEYFRAMES_RULE</span></span>. La version préfixée est temporairement maintenue, pour aider les auteurs Web à la transition de leur code ({{bug(816431)}}).</li> + <li>CSSOM : Il est désormais possible de définir la valeur de <code>conditionText</code> pour {{domxref("CSSMediaRule")}} ({{bug(815021)}}).</li> + <li>Les méthodes <code>parseFromStream</code> et <code>parseFromBuffer</code> de {{domxref("DOMParser")}} ne sont plus disponibles à partir de contenu web ({{bug(816410)}}).</li> + <li>La méthode <code>serializeToStream</code> de <a href="https://developer.mozilla.org/fr/docs/XMLSerializer" title="fr/docs/XMLSerializer"><code>XMLSerializer</code></a> n'est plus disponible à partir de contenu web ({{bug(816410)}}).</li> + <li>Les interfaces <code>TextDecoder</code> et <code>TextEncoder</code> sont désormais disponibles dans Workers ({{bug(795542)}}).</li> + <li>Le support de la méthode <code>CSS.supports()</code>a été ajouté ({{bug(779917)}}).</li> + <li>Le support pour UndoManager a été ajouté ({{bug(617532)}}).</li> + <li>L'interface {{domxref("CaretPosition")}} a été implémentée dans la méthode CSSOM {{domxref("document.caretPositionFromPoint")}}.</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>Pour aider les auteurs MathML dans le débogage des erreurs "invalid-markup" dans leurs documents, les erreurs d'analyse MathML (comme avoir trop / pas assez d'éléments enfants) et les avertissements au sujet des attributs obsolètes ou fausses valeurs d'attributs sont maintenant signalées à la <a href="https://developer.mozilla.org/en-US/docs/Error_Console" title="en-US/docs/Error_Console">console d'erreur</a></li> + <li>L'attribut <code>scriptminsize</code> accepte désormais des valeurs sans unité et les valeurs en pourcent. Elles sont interprétées comme des multiples de la valeur par défaut ("8pt").</li> + <li>Des valeurs sans unité sont désormais permis pour les attributs <code>mathsize</code> et <code>fontsize</code>, ils multiplient la valeur par défaut.</li> +</ul> + +<h2 id="Changements_pour_les_add-ons_et_les_développeurs_Mozilla">Changements pour les add-ons et les développeurs Mozilla</h2> + +<ul> + <li>L'interface nsIDOMParserJS n'existe plus ({{bug(816410)}}). Voir <a href="https://developer.mozilla.org/en-US/docs/nsIDOMParser" title="en-US/docs/nsIDOMParser">nsIDOMParser</a> pour des alternatives.</li> + <li>Préférences de contenu : L'interface {{interface("nsIContentPrefService")}} est désormais obsolète et l'API asynchrone de stockage {{interface("nsIContentPrefService2")}} a été implémentée.</li> +</ul> + +<h2 id="Voir_également">Voir également</h2> + +<ul> + <li><a href="http://www.mozilla.org/en-US/firefox/20.0/releasenotes/">Notes de version de Firefox 20</a></li> + <li><a href="/en-US/docs/Site_Compatibility_for_Firefox_20">Site Compatibility for Firefox 20</a></li> +</ul> + +<h3 id="Anciennes_versions">Anciennes versions</h3> + +<p>{{Firefox_for_developers('19')}}</p> diff --git a/files/fr/mozilla/firefox/versions/20/site_compatibility/index.html b/files/fr/mozilla/firefox/versions/20/site_compatibility/index.html new file mode 100644 index 0000000000..b126ee10ba --- /dev/null +++ b/files/fr/mozilla/firefox/versions/20/site_compatibility/index.html @@ -0,0 +1,12 @@ +--- +title: Compatibilité des sites avec Firefox 20 +slug: Mozilla/Firefox/Versions/20/Site_compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 20 + - FxSiteCompat +translation_of: Mozilla/Firefox/Releases/20/Site_compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/20/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/versions/21/index.html b/files/fr/mozilla/firefox/versions/21/index.html new file mode 100644 index 0000000000..5b31107b63 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/21/index.html @@ -0,0 +1,141 @@ +--- +title: Firefox 21 pour les développeurs +slug: Mozilla/Firefox/Versions/21 +tags: + - Firefox + - Firefox 21 +translation_of: Mozilla/Firefox/Releases/21 +--- +<div>{{FirefoxSidebar}}</div> + +<p>Firefox 21 est sorti le 14 mai 2013. Cette page résume les principaux changements dans Firefox 21 qui sont utiles aux développeurs, que vous soyez développeur web, développeur Firefox et Gecko, ou développeur d'add-ons.</p> + +<h2 id="Changement_pour_les_développeurs_Web">Changement pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>L'attribut {{htmlattrxref("scoped", "style")}} a été ajouté à l'élément {{HTMLElement("style")}}. Il permet d'inclure des styles qui sont isolés du reste du document. Ces styles peuvent être sélectionnés par le pseudo élément CSS {{cssxref(":scope")}} ajouté dans Firefox 20. ({{bug("508725")}}).</li> + <li>Le nouvel élément HTML {{HTMLElement("main")}} a été implémenté ({{bug("820508")}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li><a href="/fr/docs/E4X" title="E4X">E4X</a>, une ancienne extension JavaScript, a été retirée. Implementée seulement par Gecko, elle n'a jamais reçu suffisament de soutien ({{bug("788293")}}).</li> + <li><a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/parseInt" title="">parseInt</a> ne traite plus les chaînes de caractères commençant par "0" comme un octal ({{bug("786135")}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>La valeur <code>none</code> pour {{cssxref("user-select", "-moz-user-select")}} a maintenant le même comportement que la valeur <code>-moz-none</code>, alignant Gecko sur WebKit (Chrome, Safari), Presto (Opera) et Trident (Internet Explorer) ({{bug("816298")}}).</li> + <li>Dans des contenus XHTML, la valeur <code>auto</code> de {{cssxref("hyphens", "-moz-hyphens")}} appliquait incorrectement des règles de césure quand le langage n'était pas explicitement défini. Cela a été corrigé par ({{bug("702121")}}).</li> + <li>Une valeur <code>auto</code> a été ajoutée pour la propriété CSS {{cssxref("-moz-orient")}}. La valeur <code>auto</code> est équivalente à <code>horizontal</code> quand appliquée à {{HTMLElement("meter")}} et {{HTMLElement("progress")}} ({{bug("835883")}}).</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>La propriété <code>origin</code> a été ajoutée à {{domxref("window.location")}} ({{bug("828261")}}).</li> + <li>Les méthodes <code>valueAsDate</code> et <code>valueAsNumber</code> ont été ajoutées à <code><input type="time"></code> ({{bug("781570")}}).</li> + <li>Les attributs <code>min</code> et <code>max</code> sont maintenant aussi appliquées à <code><input type="time"></code> ({{bug("781572")}}).</li> + <li>De nouveaux keyCodes pour contrôler le volume sont supportées ({{bug("674739")}}).</li> + <li>De nouveaux keyCodes pour des anciennes disposition de touches de claviers tels que AS/400 sont maintenant supportées sur Windows et Linux ({{bug("833719")}}).</li> + <li>Différentes valeurs keyCode pour des touches OEM spécifiques sur Windows sont maintenant supportées ({{bug("833719")}}).</li> + <li>La fonction <a href="/en-US/docs/DOM/window.crypto.getRandomValues" title="DOM/window.crypto.getRandomValues"><code>window.crypto.getRandomValues</code></a> est maintenant implémentée ({{bug("440046")}}).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>La propriété {{cssxref("paint-order")}} a été implémentée ({{bug("828805")}}).</li> +</ul> + +<h3 id="Networking">Networking</h3> + +<ul> + <li>Nous continuons à faire évoluer notre implémentation de CSP pour qu'elle corresponde à la spécification CSP 1.0, qui vient d'atteindre la statut de Candidate Recommendation : + <ul> + <li>Le support de l'entête HTTP <span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>Content-Security-Policy</code> conformément à la spécification (en plus de l'entête expérimental </span></span><span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>X-Content-Security-Policy</code>) a été ajouté ({{bug("783049")}}). <strong>Note : </strong>le patch pour ce nouvel entête est arrivé dans Firefox 21, mais il a été désactivé dans les compilations </span></span>({{bug("842657")}}).</li> + </ul> + </li> +</ul> + +<h3 id="Worker">Worker</h3> + +<ul> + <li>Les fonctions {{domxref("window.URL.createObjectURL", "URL.createObjectURL")}} et {{domxref("window.URL.revokeObjectURL", "URL.revokeObjectURL")}} font maintenant partie des <a href="/en-US/docs/Web/Guide/Needs_categorization/Functions_available_to_workers" title="/en-US/docs/Web/Guide/Needs_categorization/Functions_available_to_workers">fonctions disponibles au workers</a>.</li> +</ul> + +<h2 id="Changement_pour_les_add-ons_et_les_développeurs_Mozilla">Changement pour les add-ons et les développeurs Mozilla</h2> + +<ul> + <li>Les applications FUEL ne peuvent plus utiliser le service Livemarks ({{bug("834492")}}). Le service Livemarks est déprécié et mis en retrait en faveur de l'interface async.</li> + <li><code>resource:///modules/</code> et <code>resource://gre/modules/</code> ne sont plus identiques ({{bug("755724")}}). Ce changement a eu lieu à cause du travail pour la version metro de Firefox. Si vous chargez des modules en utilisant <code>resource:///modules/</code>, vous devriez vérifier si vous ne préférez pas utiliser <code>resource://gre/modules/</code> à la place. Notez que certains modules ont migrés de Firefox à Toolkit ({{bug("840287")}} et {{bug("811548")}} ont déplacé respectivement <code>NewTabUtils.jsm</code> et les modules thumbnail).</li> + <li>Le SDK Add-on est maintenant inclus dans Firefox ({{bug("731779")}})</li> + <li>L'API History a vu plusieurs API dépréciées, retirées : + <ul> + <li>Remplacées par <code>mozIAsyncFavicons</code> : + <ul> + <li><code>nsIFaviconService::setFaviconUrlForPage</code></li> + <li><code>nsIFaviconService::setFaviconData</code></li> + <li><code>nsIFaviconService::getFaviconData</code></li> + <li><code>nsIFaviconService::getFaviconForPage</code></li> + <li><code>nsIFaviconService::setAndLoadFaviconForPage</code></li> + <li><code>nsIFaviconService::getFaviconImageForPage</code></li> + <li><code>nsIFaviconService::getFaviconDataAsDataURL</code></li> + </ul> + </li> + <li>Remplacées par <code>mozIAsyncLivemarks </code>: + <ul> + <li><code>nsILivemarkService::*</code></li> + <li><code>PlacesUtils.itemIsLivemark</code></li> + <li><code>PlacesUtils.nodeIsLivemarkContainer</code></li> + <li><code>PlacesUtils.nodeIsLivemarkItem</code></li> + </ul> + </li> + <li>Retire seulement le 3e arguments : + <ul> + <li><code>PlacesUIUtils.showBookmarkDialog</code></li> + </ul> + </li> + <li>Plus implementé par Places, utilisez <code>mozIAsyncHistory</code> à la place : + <ul> + <li><code>nsIGlobalHistory2::addURI</code></li> + <li><code>nsIGlobalHistory2::isVisited</code></li> + <li><code>nsIGlobalHistory2::setPageTitle</code></li> + </ul> + </li> + <li>Plus nécessaire, utilisez <code>onDeleteURI</code> ou <code>onItemRemoved</code>: + <ul> + <li><code>nsINavHistoryObserver::OnBeforeDeleteURI</code></li> + <li><code>nsINavBookmarkObserver::OnBeforeItemRemoved</code></li> + </ul> + </li> + <li>Jamais implementé correctement : + <ul> + <li><code>nsINavHistoryFullVisitResultNode</code></li> + </ul> + </li> + <li>Déprécié, utilisez <code>mozIAsyncHistory::updatePlaces</code> à la place : + <ul> + <li><code>nsINavHistoryService::AddVisit</code></li> + </ul> + </li> + </ul> + </li> + <li><code>nsIHttpChannel.redirectTo</code> a été ajouté pour permettre de rediriger les canaux HTTP sans faire des bidouilles fragiles.</li> +</ul> + +<h2 id="Voir_également">Voir également</h2> + +<ul> + <li><a href="http://www.mozilla.org/en-US/firefox/21.0/releasenotes/">Firefox 21 Release Notes</a></li> + <li><a href="/en-US/docs/Site_Compatibility_for_Firefox_21">Site Compatibility for Firefox 21</a></li> + <li><a href="https://blog.mozilla.org/addons/2013/04/26/compatibility-for-firefox-21/">Add-on Compatibility for Firefox 21</a></li> +</ul> + +<h3 id="Anciennes_versions">Anciennes versions</h3> + +<div>{{Firefox_for_developers('20')}}</div> diff --git a/files/fr/mozilla/firefox/versions/21/site_compatibility/index.html b/files/fr/mozilla/firefox/versions/21/site_compatibility/index.html new file mode 100644 index 0000000000..0baf393fc3 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/21/site_compatibility/index.html @@ -0,0 +1,12 @@ +--- +title: Compatibilité des sites avec Firefox 21 +slug: Mozilla/Firefox/Versions/21/Site_compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 21 + - FxSiteCompat +translation_of: Mozilla/Firefox/Releases/21/Site_compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/21/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/versions/22/index.html b/files/fr/mozilla/firefox/versions/22/index.html new file mode 100644 index 0000000000..d772c8108d --- /dev/null +++ b/files/fr/mozilla/firefox/versions/22/index.html @@ -0,0 +1,72 @@ +--- +title: Firefox 22 pour les développeurs +slug: Mozilla/Firefox/Versions/22 +translation_of: Mozilla/Firefox/Releases/22 +--- +<div>{{FirefoxSidebar}}</div><p>Vous voulez aider à documenter Firefox 22 ? Parcourez la <a href="http://beta.elchi3.de/doctracker/#list=fx&version=22.0">liste des bugs qui ont besoin d'être documentés</a> et lancez-vous !</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>L'élément HTML5 {{HTMLElement("data")}} a été implémenté ({{bug(839371)}}).</li> + <li>Le type <code>range</code> de l'élément {{HTMLElement("input")}} (<code><input type="range"></code>) a été implémenté mais n'est seulement activé que dans les canaux Aurora et Nightly pour l'instant ({{bug(841948)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Les optimizations <a href="http://asmjs.org/spec/latest/" title="http://asmjs.org/spec/latest/">Asm.js</a> sont activées, rendant possible la compilation d'applications C / C++ vers un sous-ensemble Javascript pour de meilleures performances.</li> + <li>La syntaxe ES6 <a href="/en-US/docs/JavaScript/Reference/arrow_functions" title="/en-US/docs/JavaScript/Reference/arrow_functions">Arrow Function</a> a été implémentée ({{bug(846406)}}).</li> + <li>La nouvelle fonction <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is" title="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is">Object.is </a>a été ajoutée ({{bug(839979)}}).</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>Support de la propriété <code>multipart</code> avec <code>XMLHttpRequest</code>. Les réponses <code>multipart/x-mixed-replace</code> dans <code>XMLHttpRequest</code> ont été supprimées. C'était une fonctionnalité uniquement supportée par Gecko et jamais standardisée. Il est possible d'utiliser <a href="/en-US/docs/Server-sent_events" title="Server-sent_events">Server-Sent Events</a> et <a href="/en-US/docs/WebSockets" title="WebSockets">Web Sockets</a> ou d'inspecter la propriété <code>responseText</code> des <em>progress events</em> à la place.</li> + <li>Le support des <a href="http://notifications.spec.whatwg.org/" title="http://notifications.spec.whatwg.org/">Web Notifications</a> est activé par défaut. ({{bug(782211)}}).</li> + <li>La méthode {{domxref("XMLHttpRequest/FormData", "FormData")}} <code>append</code> accepte maintenant un troisième paramètre optionnel <code>filename</code> ({{bug(690659)}}).</li> + <li>{{domxref("Node.isSupported")}} a été supprimé ({{bug(801562)}}).</li> + <li>{{domxref("Node.setUserData")}} et {{domxref("Node.getUserData")}} ont été supprimés pour le contenu web et dépréciés pour le contenu chrome ({{bug(842372)}})</li> + <li>Un backend Mac OS X pour {{domxref("DeviceLightEvent", "Ambient Light Events")}} a été implémenté.</li> + <li>Les éléments du namespace HTML avec les noms locaux "bgsound", "multicol", et "image" n'utilisent plus l'interface <code>HTMLSpanElement</code>. "bgsound" et "multicol" utilisent <code>HTMLUnknownElement</code> et "image" utilise <code>HTMLElement</code>.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Le support de <a href="/en-US/docs/CSS/Tutorials/Using_CSS_flexible_boxes" title="CSS/Tutorials/Using_CSS_flexible_boxes">CSS Flexbox layout</a> a été activé par défaut ({{bug("841876")}}).</li> + <li>Le support de CSS Conditionals ({{cssxref("@supports")}} et {{domxref("CSS.supports")}}) ont été activés par défaut ({{bug("855455")}}).</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_Mozilla_et_développeurs_d'add-on">Changements pour les développeurs Mozilla et développeurs d'add-on</h2> + +<ul> + <li>Le paramètre <code>properties</code> a été supprimé des méthodes {{ifmethod('nsITreeView','getCellProperties')}}, {{ifmethod('nsITreeView','getColumnProperties')}} et {{ifmethod('nsITreeView','getRowProperties')}} de l'interface {{interface('nsITreeView')}}. Ces méthodes retourneront maintenant un string de noms de propriétés séparées par des espaces. ({{bug('407956')}})</li> + <li>La méthode {{ifmethod('inIDOMUtils', 'getCSSPropertyNames')}} a été implémentée et retourne le nom de toutes les <a href="/en-US/docs/CSS/CSS_Reference" title="/en-US/docs/CSS/CSS_Reference">propriétés CSS</a> supportées.</li> + <li>Voir <a href="https://blog.mozilla.org/addons/2013/06/03/compatibility-for-firefox-22/" title="https://blog.mozilla.org/addons/2013/06/03/compatibility-for-firefox-22/">tous les changements</a>.</li> +</ul> + +<h3 id="Outils_pour_développeurs_de_Firefox">Outils pour développeurs de Firefox</h3> + +<ul> + <li><a href="https://hacks.mozilla.org/2013/04/developer-tools-update-firefox-22/" title="https://hacks.mozilla.org/2013/04/developer-tools-update-firefox-22/">L'inspecteur de polices</a> montre quelles polices sur votre ordinateur ont été appliquées sur cette page.</li> + <li>Le mode d'affichage de rendu visuel montre quand et où une page est re-rendue.</li> + <li>Les outils pour développeurs peuvent maintenant être affichés à droite d'une fenêtre et plus seulement en bas.</li> + <li>Certains onglets des outils pour développeurs sont passés de <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=875727" title="https://bugzilla.mozilla.org/show_bug.cgi?id=875727">XUL à HTML</a>. Par exemple, l'onglet présentant les règles css fait maintenant partie de chrome://browser/content/devtools/cssruleview.xhtml, et pas de <span class="comment-copy"><code>cssruleview.xul</code></span>. Au lieu d'ajouter une couche pour ajouter des fonctionnalités directement sur ces onglets, vous pouvez ajouter une couche et la lier par script au document xul externe afin d'ajouter des écouteurs d'événements et de changer ces documents html.</li> + <li>L'affichage en pile est maintenant affiché en fil d'Ariane en haut de l'onglet et la liste des scripts est maintenant sur la gauche du débuggeur.</li> +</ul> + +<h2 id="A_voir_aussi">A voir aussi</h2> + +<ul> + <li><a href="http://www.mozilla.org/en-US/firefox/22.0beta/releasenotes/">Notes de version de Firefox 22 Beta</a></li> + <li><a href="/en-US/docs/Site_Compatibility_for_Firefox_22">Compatibilité des sites avec Firefox 22</a></li> + <li><a href="https://blog.mozilla.org/addons/2013/06/03/compatibility-for-firefox-22/">Compatibilité des add-ons avec Firefox 22</a></li> +</ul> + +<h3 id="Versions">Versions</h3> + +<div>{{Firefox_for_developers('21')}}</div> diff --git a/files/fr/mozilla/firefox/versions/22/site_compatibility/index.html b/files/fr/mozilla/firefox/versions/22/site_compatibility/index.html new file mode 100644 index 0000000000..d58f2a06c8 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/22/site_compatibility/index.html @@ -0,0 +1,12 @@ +--- +title: Compatibilité des sites avec Firefox 22 +slug: Mozilla/Firefox/Versions/22/Site_compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 22 + - FxSiteCompat +translation_of: Mozilla/Firefox/Releases/22/Site_compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/22/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/versions/23/index.html b/files/fr/mozilla/firefox/versions/23/index.html new file mode 100644 index 0000000000..6d9da9604c --- /dev/null +++ b/files/fr/mozilla/firefox/versions/23/index.html @@ -0,0 +1,85 @@ +--- +title: Firefox 23 pour les développeurs +slug: Mozilla/Firefox/Versions/23 +translation_of: Mozilla/Firefox/Releases/23 +--- +<div>{{FirefoxSidebar}}</div><h5 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h5> + +<h3 id="Sécurité">Sécurité</h3> + +<ul> + <li>Blocage des contenus mixte. Firefox ne charge plus les ressources non-sécurisées (http) sur une page sécurisée (https). ({{bug(834836)}})</li> + <li>La syntaxe standard de <a href="/fr/docs/Sécurité/CSP" title="/fr/docs/Sécurité/CSP">CSP</a> 1.0 a été implémentée et appliquée par défaut.</li> +</ul> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<ul> + <li>Un panneau Réseau a été ajouté aux outils de développement. C'est une vue plus détaillée que la vue "Réseau" présente dans la console Web.</li> + <li>La console Web a été renommée en "Console", et inclus une option pour filtrer les erreurs/avertissement de sécruité.</li> + <li>Les nouvelles options des outils vous permettent de désactiver des fonctionnalités, de changer de thème (sombre ou clair), ou d'activer le débogage du Chrome.</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Le support de l'élément {{HTMLElement("blink")}} a désormais été abandonné. La balise <code><blink></code> fait désormais partie de l'interface {{domxref("HTMLUnknownElement")}} ({{bug(857820)}}.)</li> + <li>Le type <code>range</code> de l'élément {{HTMLElement("input")}} (<code><input type="range"></code>) a été activé par défaut ({{bug(841950)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>La méthode <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/defineProperty" title="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/defineProperty"><code>Object.defineProperty</code></a> peut désormais être utilisée pour redéfinir la propriété <code>length</code> d'un objet <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array" title="/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array"><code>Array</code></a>.</li> + <li>L'option pour désactiver JavaScript, incluant les options pour permettre de déplacer une fenêtre/remplacer le menu contextuel, a été retirée. Vous pouvez toujours désactiver JavaScript en double-cliquant sur l'option "javascript.enabled" dans about:config.</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>D3E <a href="/fr/docs/Web/API/KeyboardEvent" title="/fr/docs/Web/API/KeyboardEvent"><code>KeyboardEvent.key</code></a> est désormais supporté, mais seulement pour les éléments non-imprimables ({{bug(842927)}}).</li> + <li>L'attribut <code>title</code> de {{domxref("DOMImplementation.createHTMLDocument")}} est désormais optionnel, d'après la mise à jour de la spécification DOM.</li> + <li>La possibilité d'ajouter un panneau latéral (<code>window.sidebar.addPanel</code>) a été abandonnée ({{bug(691647)}}).</li> + <li>Les méthodes {{domxref("Window.requestAnimationFrame")}} et {{domxref("Window.cancelAnimationFrame")}} sans préfixe ont été ajoutées ({{bug(704063)}}).</li> + <li>Le rappel pour {{domxref("Window.requestAnimationFrame")}} reçoit désormais {{domxref("DOMHighResTimeStamp")}} comme argument à la place de {{domxref("DOMTimeStamp")}}, moins précis, qui est utilisé dans la version sans préfixe ({{bug(753453)}}).</li> + <li>L'argument text pour {{domxref("window.alert")}} et {{domxref("window.confirm")}} est désormais optionnel ({{bug(861605)}}).</li> + <li>La propriété {{domxref("HTMLMediaElement.initialTime")}}, retirée de la spécification, n'est plus supportée ({{bug(742537)}}).</li> + <li>Le constructeur {{domxref("AnimationEvent.AnimationEvent", "AnimationEvent()")}} a été ajoutée ({{bug(848293)}}).</li> + <li>La propriété {{domxref("AnimationEvent.pseudoElement")}} a été implémentée ({{bug(848293)}}).</li> + <li>Le constructeur {{domxref("TransitionEvent.TransitionEvent", "TransitionEvent()")}} a été ajoutée ({{bug(848291)}}).</li> + <li>La propriété {{domxref("TransitionEvent.pseudoElement")}} a été implémentée ({{bug(848291)}}).</li> + <li>{{domxref("TransitionEvent.initTransitionEvent()")}} et {{domxref("AnimationEvent.initAnimationEvent()")}} qui ne sont pas standardisées ont été retirées ({{bug(868751)}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>L'effet blink pour <code><a href="/fr/docs/Web/CSS/text-decoration" title="/fr/docs/Web/CSS/text-decoration">text-decoration</a>: blink;</code> n'a plus d'effet, mais c'est encore une valeur valide ({{bug(857820)}}).</li> + <li>Les pseudo-éléments {{cssxref("::after")}} et {{cssxref("::before")}} sont désormais des objets flexibles ({{bug(867454)}}).</li> + <li>La façon de calculer les <a href="/fr/docs/Web/CSS/longueur#Longueurs_li.C3.A9es_au_viewport">unités viewport</a> a été changée. en liaison avec <code>overflow:auto</code>, l'espace occupé par d'éventuelles barres de défilement n'est pas soustrait de la fenêtre, alors que dans le cas de <code>overflow:scroll</code>, ça l'est ({{bug(811403)}}).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>Les largeurs négatives pour l'élément {{MathMLElement("mspace")}} ont été implémentées ({{bug(717546)}}).</li> + <li>L'élément {{MathMLElement("semantics")}} détermine désormais l'enfant visible comme décrit dans la spécification MathML3.</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_Mozilla_et_développeurs_d'add-on">Changements pour les développeurs Mozilla et développeurs d'add-on</h2> + +<h3 id="Outils_pour_développeurs_de_Firefox">Outils pour développeurs de Firefox</h3> + +<p>Les add-ons qui ont recourt à chrome://browser/content/debugger.xul doivent désormais utiliser chrome://browser/content/devtools/debugger.xul. Vous pouvez ajouter des références à ces deux fichiers dans chrome.manifest pour la compatibilité.</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://www.mozilla.org/en-US/firefox/23.0/releasenotes/">Notes de version de Firefox 23</a></li> + <li><a href="/en-US/docs/Site_Compatibility_for_Firefox_23">Compatibilité des sites avec Firefox 23</a></li> + <li><a href="https://blog.mozilla.org/addons/2013/07/24/compatibility-for-firefox-23/">Compatibilité des add-ons avec Firefox 23</a></li> +</ul> + +<h3 id="Anciennes_versions">Anciennes versions</h3> + +<p>{{Firefox_for_developers('22')}}</p> diff --git a/files/fr/mozilla/firefox/versions/23/site_compatibility/index.html b/files/fr/mozilla/firefox/versions/23/site_compatibility/index.html new file mode 100644 index 0000000000..ee40cc83d3 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/23/site_compatibility/index.html @@ -0,0 +1,12 @@ +--- +title: Compatibilité des sites avec Firefox 23 +slug: Mozilla/Firefox/Versions/23/Site_compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 23 + - FxSiteCompat +translation_of: Mozilla/Firefox/Releases/23/Site_compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/23/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/versions/24/index.html b/files/fr/mozilla/firefox/versions/24/index.html new file mode 100644 index 0000000000..7aa78478c5 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/24/index.html @@ -0,0 +1,77 @@ +--- +title: Firefox 24 pour les développeurs +slug: Mozilla/Firefox/Versions/24 +translation_of: Mozilla/Firefox/Releases/24 +--- +<div>{{FirefoxSidebar}}</div><h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Les deux valeurs <code>-moz-zoom-in</code> et <code>-moz-zoom-out</code> de la propriété {{cssxref("cursor")}} ont été dépréfixés pour <code>zoom-in</code> et <code>zoom-out</code> ({{bug("772153")}}).</li> + <li>Pour correspondre à la spécification, les mots-clés <span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>not</code>, <code>only</code>, <code>and</code> et <code>or</code> ne peuvent plus être utilisés comme un type de média ({{bug("757554")}}).</span></span></li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>L'élément {{HTMLElement("track")}} a été implémenté derrière la préférence <code>media.webvtt.enabled</code> ({{bug(833385)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Les <a href="/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fléchées" title="/fr/docs/Web/JavaScript/Reference/Fonctions/Fonctions_fléchées">fonctions fléchées</a> ne sont plus automatiquement en mode strict sauf si c'est spécifié avec <code>"use strict"</code> ({{bug(852762)}}).</li> + <li>La méthode <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/String/repeat" title="/fr/docs/Web/JavaScript/Reference/Objets_globaux/String/repeat"><code>String.prototype.repeat</code></a> a été implémentée ({{bug(815431)}}).</li> + <li>Les méthodes {{jsxref("Set.prototype.values()")}}, {{jsxref("Set.prototype.keys()")}} et {{jsxref("Set.prototype.entries()")}} de l'objet {{jsxref("Set")}} ont été implémentées ({{bug("869996")}}).</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>Le support du constructeur {{domxref("Range.Range", "Range()")}} a été ajouté ({{bug(868999)}}).</li> + <li>Le support du constructeur {{domxref("Text.Text", "Text()")}} a été ajouté ({{bug(869000)}}).</li> + <li>Le support du constructeur {{domxref("Comment.Comment", "Comment()")}} a été ajouté ({{bug(869006)}}).</li> + <li>Le support du constructeur {{domxref("DocumentFragment.DocumentFragment", "DocumentFragment()")}} a été ajouté ({{bug(869002)}}).</li> + <li>L'interface {{domxref("FocusEvent")}} a été implémentée ({{bug(855741)}}).</li> + <li>Le support de la méthode {{domxref("ChildNode.remove()")}} a été ajoutée ({{bug(856629)}}).</li> + <li>Les interfaces liées à l'élémént {{HTMLElement("track")}}, {{domxref("HTMLTrackElement")}}, {{domxref("TextTrack")}}, {{domxref("TextTrackCue")}}, {{domxref("TextTrackList")}} et {{domxref("TextTrackCueList")}} ont été implémentées derrière la préférence <code>media.webvtt.enabled</code>, sur <code>false</code> par défaut ({{bug(833385)}}).</li> + <li>L'interface {{domxref("Gamepad")}} et la méthode {{domxref("Navigator.getGamepads")}} ont été implémentées derrière la préférence <code>dom.gamepad.enabled</code>, sur <code>false</code> par défaut ({{bug(690935)}}).</li> + <li>Sur Firefox Desktop seulement, <code>HTMLCanvasElement.getContext()</code> peut désormais prendre la valeur de <code>webgl</code>, en plus de <code>experimental-webgl</code> ({{bug(870232)}}).</li> + <li>La méthode non standard <code>mozLoadFrom()</code> de {{domxref("HTMLMediaElement")}} a été retirée ({{bug(877135)}}).</li> +</ul> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<ul> + <li>L'inspecteur Réseau vous permet désormais de filtrer par type de contenu (CSS/Images/Polices etc.) et de voir la taille et les temps de chargement par pertinence.</li> + <li>Le panneau d'options des Outils de développement vous permet de désactiver temporairement Javascript.</li> + <li>Les développeurs d'extensions peuvent utiliser la nouvelle <a href="http://www.robodesign.ro/mihai/blog/the-browser-console-is-replacing-the-error-console" title="http://www.robodesign.ro/mihai/blog/the-browser-console-is-replacing-the-error-console">Console Web</a> pour les scripts au niveau du Chrome (Remplace la console d'erreur).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>L'attribut <code>dir</code> pour contrôler le sens de lecture des formules, par ex. sur les éléments {{MathMLElement("math")}} ou {{MathMLElement("mrow")}}, est désormais équivalent à l'utilisation de la propriété CSS {{cssxref("direction")}}.</li> + <li>Le signe égal ("=") est désormais <a href="/en-US/docs/Web/MathML/Element/mo#attr-stretchy">extensible</a>.</li> + <li>La valeur "<code>updiagonalarrow</code>" pour la notation de l'attribut <code>notation</code> sur l'élément {{MathMLElement("menclose")}} a été ajouté.</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_Mozilla_et_développeurs_d'add-on">Changements pour les développeurs Mozilla et développeurs d'add-on</h2> + +<ul> + <li>DocShell a désormais l'attribut <code>allowMedia</code> pour désactiver la lecture des médias ({{bug(759964)}}).</li> + <li>Les plugins de recherche Sherlock dans le répertoire de l'application ou du profile, ne seront plus chargés ({{bug(862143)}}).</li> +</ul> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://www.mozilla.org/en-US/firefox/24.0/releasenotes/">Notes de version de Firefox 24</a></li> + <li><a href="https://www.fxsitecompat.com/en-US/versions/24/">Compatibilité des sites avec Firefox 24</a></li> + <li><a href="https://blog.mozilla.org/addons/2013/09/03/compatibility-for-firefox-24/">Compatibilité des add-ons avec Firefox 24</a></li> +</ul> + +<h3 id="Anciennes_versions">Anciennes versions</h3> + +<p>{{Firefox_for_developers('23')}}</p> diff --git a/files/fr/mozilla/firefox/versions/24/site_compatibility/index.html b/files/fr/mozilla/firefox/versions/24/site_compatibility/index.html new file mode 100644 index 0000000000..7cacf2fae5 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/24/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 24 +slug: Mozilla/Firefox/Versions/24/Site_compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 24 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/24/Site_compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/24/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/versions/3.5/index.html b/files/fr/mozilla/firefox/versions/3.5/index.html new file mode 100644 index 0000000000..375c8488d7 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/3.5/index.html @@ -0,0 +1,233 @@ +--- +title: Firefox 3.5 pour les développeurs +slug: Mozilla/Firefox/Versions/3.5 +tags: + - Firefox + - Firefox 3.5 +translation_of: Mozilla/Firefox/Releases/3.5 +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 3.5 introduit un certain nombre de nouvelles fonctionnalités, ainsi qu'une gestion améliorée d'une grande variété de standards du Web. Cet article en fournit une longue liste, avec des liens vers des articles décrivant les améliorations majeures.</p> + +<h2 id="Nouvelles_fonctionnalités_pour_les_développeurs_dans_Firefox_3.5">Nouvelles fonctionnalités pour les développeurs dans Firefox 3.5</h2> + +<h3 id="Pour_les_développeurs_de_sites_et_d'applications_web">Pour les développeurs de sites et d'applications web</h3> + +<h4 id="HTML5">HTML5</h4> + +<dl> + <dt><a class="internal" href="/Fr/Utilisation_d'audio_et_video_dans_Firefox" title="fr/Utilisation d'audio et video dans Firefox">Utilisation d'audio et video dans Firefox</a></dt> + <dd>Firefox 3.5 ajoute la gestion des éléments HTML5 <a class="internal" href="/fr/HTML/Element/audio" title="fr/HTML/Element/audio"><code>audio</code></a> et <a class="internal" href="/Fr/HTML/Element/Video" title="fr/HTML/Element/video"><code>video</code></a>.</dd> + <dt><a class="internal" href="/fr/Ressources_hors_ligne_dans_Firefox" title="fr/Ressources hors ligne dans Firefox">Ressources hors ligne dans Firefox</a></dt> + <dd>Firefox 3.5 gère entièrement la spécification de ressources hors ligne d'HTML5.</dd> + <dt><a class="internal" href="/Fr/GlisserDéposer/Glisser_et_déposer" title="fr/GlisserDéposer/Glisser et déposer">Glisser et déposer</a></dt> + <dd>L'API de glisser/déposer d'HTML5 permet de gérer le glisser/déposer d'éléments à l'intérieur et entre des sites web. Elle fournit également une API plus simple pour les extensions et applications basées sur Mozilla.</dd> +</dl> + +<h4 id="Nouvelles_fonctionnalités_CSS">Nouvelles fonctionnalités CSS</h4> + +<dl> + <dt><a class="internal" href="/fr/CSS/@font-face" title="fr/CSS/@font-face">Gestion des polices téléchargeables</a></dt> + <dd>La nouvelle règle-@ <code>@font-face</code> permet aux pages web de fournir des polices téléchargeables, afin qu'elles puissent être affichées exactement telles que l'auteur de la page les attend.</dd> + <dt><a class="internal" href="/Fr/CSS/Media_queries" title="fr/CSS/Media queries">Media queries</a></dt> + <dd>Firefox 3.5 gère les requêtes de médias, qui améliorent le traitement des feuilles de style destinées à des médias particuliers.</dd> + <dt>Mise à jour de {{ cssxref(":before") }} et {{ cssxref(":after") }} pour CSS 2.1</dt> + <dd>Les pseudo-éléments <code>:before</code> et <code>:after</code> ont été mis à jour pour respecter complètement CSS 2.1, avec l'ajout des propriétés <code>position</code>, <code>float</code> et <code>list-style-*</code>, ainsi que de certaines valeurs de <code>display</code>.</dd> + <dt>Unité de longueur <code>ch</code></dt> + <dd>L'unité <code>ch</code> peut à présent être utilisée à tout endroit où peut être indiquée une <a class="internal" href="/fr/CSS/longueur#Unités" title="fr/CSS/longueur#Unités">unité de longueur</a>. <code>1ch</code> est la largeur du caractère « 0 » (zéro).</dd> + <dt>{{ cssxref("opacity") }}</dt> + <dd>L'extension à CSS <code>-moz-opacity</code> de Mozilla a été supprimée en faveur de la propriété standard <code>opacity</code>.</dd> + <dt>{{ cssxref("text-shadow") }}</dt> + <dd>La propriété <code>text-shadow</code>, qui permet à du contenu web de spécifier des effets d'ombres sur le texte et les décorations de texte est à présent gérée.</dd> + <dt>{{ cssxref("word-wrap") }}</dt> + <dd>Cette nouvelle propriété permet au contenu d'indiquer si oui ou non les lignes de texte peuvent être coupées au milieu d'un mot afin d'empêcher un débordement lorsqu'une chaîne normalement insécable est trop longue pour rentrer dans une seule ligne.</dd> + <dt>Valeur <code>pre-line</code> pour la propriété <code>white-space</code></dt> + <dd>La propriété {{ cssxref("white-space") }} accepte à présent la valeur <code>pre-line</code>.</dd> + <dt>{{ cssxref("-moz-box-shadow") }}</dt> + <dt>{{ cssxref("-moz-border-image") }}</dt> + <dt>{{ cssxref("-moz-column-rule") }}</dt> + <dt>{{ cssxref("-moz-column-rule-width") }}</dt> + <dt>{{ cssxref("-moz-column-rule-style") }}</dt> + <dt>{{ cssxref("-moz-column-rule-color") }}</dt> + <dd>La gestion de ces extensions à CSS de Mozilla a été ajoutée dans Firefox 3.5.</dd> + <dt>La {{ cssxref("valeur_de_couleur#Extensions_spécifiques_à_Mozilla","-moz-nativehyperlinktext") }}</dt> + <dd>Cette nouvelle valeur de couleur représente la couleur de lien hypertexte par défaut de l'utilisateur du système.</dd> + <dt>La nouvelle propriété {{ cssxref("-moz-window-shadow") }} et la pseudo-classe {{ cssxref(":-moz-system-metric(mac-graphite-theme)") }}</dt> + <dd>Ces nouvelles fonctionnalités CSS ont été ajoutées pour faciliter la mise en place de thèmes.</dd> + <dt>Nouvelles valeurs pour {{ cssxref("-moz-appearance") }}</dt> + <dd>Les valeurs <code>-moz-win-glass</code> et <code>-moz-mac-unified-toolbar</code> ont été ajoutées à <code>-moz-appearance</code>.</dd> + <dt><a class="internal" href="/fr/CSS/Utilisation_des_transformations_CSS" title="fr/CSS/Utilisation des transformations CSS">Utilisation des transformations CSS</a></dt> + <dd>Firefox 3.5 gère les transformations CSS. Consultez {{ cssxref("-moz-transform") }} et {{ cssxref("-moz-transform-origin") }} pour plus de détails.</dd> + <dt>{{ cssxref(":nth-child") }}</dt> + <dt>{{ cssxref(":nth-last-child") }}</dt> + <dt>{{ cssxref(":nth-of-type") }}</dt> + <dt>{{ cssxref(":nth-last-of-type") }}</dt> + <dt>{{ cssxref(":first-of-type") }}</dt> + <dt>{{ cssxref(":last-of-type") }}</dt> + <dt>{{ cssxref(":only-of-type") }}</dt> + <dd>Ces sélecteurs sont nouvellement gérés dans Firefox 3.5</dd> +</dl> + +<h4 id="Nouvelles_fonctionnalités_DOM">Nouvelles fonctionnalités DOM</h4> + +<dl> + <dt><a class="internal" href="/fr/DOM/Storage#localStorage" title="fr/DOM/Storage#localStorage">localStorage</a></dt> + <dd>Firefox 3.5 ajoute la gestion de la propriété <code>localStorage</code> pour le stockage web, fournissant ainsi une manière pour les applications web de stocker des données localement sur l'ordinateur du client.</dd> + <dt><a class="internal" href="/fr/Utilisation_de_workers_web" title="fr/Utilisation de workers DOM">Utilisation de workers DOM</a></dt> + <dd>Firefox 3.5 gère les workers DOM afin de permettre une gestion multithreadée dans les applications web.</dd> + <dt><a class="internal" href="/fr/Utilisation_de_la_géolocalisation" title="fr/Utilisation_de_la_géolocalisation">Utilisation de la géolocalisation</a></dt> + <dd>Firefox 3.5 gère l'API Geolocation, qui permet aux applications web d'obtenir des informations concernant l'emplacement actuel de l'utilisateur si cette information est fournie et activée dans le système.</dd> + <dt><a class="internal" href="/fr/DOM/Identification_d'éléments_DOM_à_l'aide_de_sélecteurs" title="fr/DOM/Identification d'éléments DOM à l'aide de sélecteurs">Identification d'éléments DOM à l'aide de sélecteurs</a></dt> + <dd>L'API Selectors permet d'interroger un document afin d'identifier les éléments correspondant à une règle de sélection donnée.</dd> + <dt><a class="internal" href="/fr/DOM/Évènements_de_mouvement_de_souris" title="fr/DOM/Évènements de mouvement de souris">Évènements de mouvement de souris</a></dt> + <dd>Firefox 3.5 gère les évènements de mouvements de souris dont les glissades sur un trackpad.</dd> + <dt><a class="internal" href="/fr/DOM/NodeIterator" title="fr/DOM/NodeIterator">L'objet <code>NodeIterator</code></a></dt> + <dd>L'objet <code>NodeIterator</code> permet de parcourir la liste de nœuds dans un sous-arbre DOM.</dd> + <dt><a class="internal" href="/fr/Évènements_DOM_spécifiques_à_Gecko#MozAfterPaint" title="fr/Évènements DOM spécifiques à Gecko#MozAfterPaint">L'évènement MozAfterPaint</a></dt> + <dd>Ce nouvel évènement DOM est envoyé après les mises à jour de l'affichage dans les fenêtres.</dd> + <dt><a class="internal" href="/fr/Évènements_DOM_spécifiques_à_Gecko#MozMousePixelScroll" title="fr/Évènements DOM spécifiques à Gecko#MozMousePixelScroll">L'évènement MozMousePixelScroll</a></dt> + <dd>Ce nouvel évènement DOM permet de détecter les évènements de défilement à la souris par pixels plutôt que par ligne.</dd> +</dl> + +<h4 id="Nouvelles_fonctionnalités_JavaScript">Nouvelles fonctionnalités JavaScript</h4> + +<dl> + <dt><a class="internal" href="/fr/Nouveautés_dans_JavaScript_1.8.1" title="fr/Nouveautés dans JavaScript 1.8.1">Nouveautés dans JavaScript 1.8.1</a></dt> + <dd>Un aperçu de tous les changements dans JavaScript 1.8.1.</dd> + <dt><a class="internal" href="/fr/Référence_de_JavaScript_1.5_Core/Objets_globaux/Object/GetPrototypeOf" title="Référence de JavaScript 1.5 Core/Objets globaux/Object/GetPrototypeOf"><code>Object.getPrototypeOf()</code></a></dt> + <dd>Cette nouvelle méthode renvoie le prototype d'un objet spécifié.</dd> + <dt><a class="internal" href="/fr/Utilisation_de_JSON_dans_Firefox" title="fr/Utilisation de JSON dans Firefox">Utilisation de JSON dans Firefox</a></dt> + <dd>La gestion de <a class="internal" href="/fr/JSON" title="fr/JSON">JSON</a> est à présent intégrée dans le DOM.</dd> + <dt>Nouvelles méthodes de nettoyage des espaces sur l'objet String</dt> + <dd>L'objet <a class="internal" href="/fr/Référence_de_JavaScript_1.5_Core/Objets_globaux/String" title="fr/Référence de JavaScript 1.5 Core/Objets globaux/String"><code>String</code></a> dispose à présent des méthodes <a class="internal" href="/fr/R%C3%A9f%C3%A9rence_de_JavaScript_1.5_Core/Objets_globaux/String/Trim" rel="internal"><code>trim()</code></a>, <a class="internal" href="/fr/R%C3%A9f%C3%A9rence_de_JavaScript_1.5_Core/Objets_globaux/String/TrimLeft" rel="internal"><code>trimLeft()</code></a> et <a class="internal" href="/fr/R%C3%A9f%C3%A9rence_de_JavaScript_1.5_Core/Objets_globaux/String/TrimRight" rel="internal"><code>trimRight()</code></a>.</dd> +</dl> + +<h4 id="Réseau">Réseau</h4> + +<dl> + <dt><a class="internal" href="/fr/Contrôle_d'accès_HTTP" title="fr/Contrôle d'accès HTTP">Contrôle d'accès entre sites pour HTTP</a></dt> + <dd>Dans Firefox 3.5, il devient possible pour les requêtes HTTP, notamment celles faites au travers d'<a class="internal" href="/fr/XMLHttpRequest" title="fr/XMLHttpRequest"><code>XMLHttpRequest</code></a>, de fonctionne entre différents domaines si le serveur le permet.</dd> + <dt><a class="internal" href="/fr/Utilisation_de_XMLHttpRequest#Suivi_de_la_progression" title="fr/Utilisation de XMLHttpRequest#Suivi de la progression">Évènements de progression pour <code>XMLHttpRequest</code></a></dt> + <dd>Des évènements de progression sont à présent émis pour permettre aux extensions de surveiller l'état des requêtes.</dd> + <dt><a class="internal" href="/fr/Utilisation_de_XMLHttpRequest#Suivi_de_la_progression" title="fr/Utilisation de XMLHttpRequest#Suivi de la progression">Amélioration des appels <code>XMLHttpRequest</code> synchrones </a></dt> + <dd>Les <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=340345" title="https://bugzilla.mozilla.org/show_bug.cgi?id=340345">timeouts DOM</a> et les <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=333198" title="https://bugzilla.mozilla.org/show_bug.cgi?id=333198">évènements d'entrée</a> sont à présent supprimés pendant un appel <code>XMLHttpRequest</code> synchrone.</dd> + <dt><a class="internal" href="/fr/Contrôle_du_préchargement_DNS" title="fr/Contrôle du préchargement DNS">Contrôle du préchargement DNS</a></dt> + <dd>Firefox 3.5 permet le préchargement DNS, par lequel il effectue la résolution des noms de domaines à l'avance pour les liens présents dans la page courante, afin de gagner du temps lorsque l'on clique effectivement sur ces liens. Cet article explique comment adapter votre site pour désactiver le préchargement, ou contrôler le comportement de ce préchargement.</dd> +</dl> + +<h4 id="Nouvelles_fonctionnalités_de_Canvas">Nouvelles fonctionnalités de Canvas</h4> + +<dl> + <dt><a class="internal" href="/fr/Dessin_de_texte_avec_canvas" title="fr/Dessin de texte avec canvas">API HTML5 text pour les éléments <code>canvas</code></a></dt> + <dd>Les éléments canvas gèrent à présent l'API texte d'HTML5.</dd> + <dt><a class="internal" href="/fr/Tutoriel_canvas/Ajout_de_styles_et_de_couleurs#Ombres" title="fr/Tutoriel canvas/Ajout de styles et de couleurs#Ombres">Effets d'ombres dans un <code>canvas</code></a></dt> + <dd>Les effets d'ombrages sont à présent gérés dans canvas.</dd> + <dt><a class="internal" href="/fr/HTML/Canvas/Manipulation_de_pixels_avec_canvas#Création_d'un_objet_ImageData" title="fr/HTML/Canvas/Manipulation de pixels avec canvas#Création d'un objet ImageData"><code>createImageData()</code></a></dt> + <dd>La méthode <code>createImageData()</code> de canvas est à présent gérée, ce qui permet à du code de créer spécifiquement un objet <code>ImageData</code> plutôt que demander que ce soit fait automatiquement. Les performances d'autres méthodes d'<code>ImageData</code> peuvent en être améliorées puisqu'elles n'ont pas à créer l'objet.</dd> + <dt>Attribut <code>moz-opaque</code></dt> + <dd>L'attribut DOM <code>moz-opaque</code> a été ajouté, ce qui permet à canvas de savoir si oui ou non la transparence devra être prise en compte. Si le canvas sait qu'il n'y a pas de transparence, les performances de dessin peuvent être optimisées.</dd> +</dl> + +<h4 id="Nouvelles_fonctionnalités_SVG">Nouvelles fonctionnalités SVG</h4> + +<dl> + <dt><a class="internal" href="/fr/Application_d'effets_SVG_à_du_contenu_HTML" title="fr/Application d'effets SVG à du contenu HTML">Application d'effets SVG à du contenu HTML</a></dt> + <dd>Vous pouvez à présent appliquer des effets SVG à du contenu HTML et XHTML ; cet article explique comment.</dd> +</dl> + +<h4 id="Autres_nouvelles_fonctionnalités">Autres nouvelles fonctionnalités</h4> + +<dl> + <dt><a class="internal" href="/fr/Correction_de_couleurs_ICC_dans_Firefox" title="fr/Correction de couleurs ICC dans Firefox">Correction de couleurs ICC dans Firefox</a></dt> + <dd>Firefox 3.5 gère à présent la correction de couleurs ICC pour les images balisées.</dd> + <dt>L'attribut <code>defer</code> est géré sur les éléments <a class="internal" href="/fr/HTML/Element/script" title="fr/HTML/Element/script"><code>script</code></a></dt> + <dd>Cet attribut indique au navigateur qu'il <em>peut</em> décider de continuer d'analyser et d'afficher la page sans attendre que le script ait terminé son exécution.</dd> +</dl> + +<h3 id="Autres_améliorations">Autres améliorations</h3> + +<ul> + <li>La propriété <code><a class="internal" href="/fr/DOM/Text.wholeText" rel="internal">wholeText</a></code> et la méthode <code><a class="internal" href="/fr/DOM/Text.replaceWholeText" rel="internal">replaceWholeText()</a></code> ont été ajoutées aux nœuds texte.</li> + <li>La propriété <code><a class="internal" href="/fr/DOM/Element.children" rel="internal">element.children</a></code> a été ajoutée. Elle renvoie une <em>collection</em> d'éléments enfants de l'élément donné.</li> + <li>L'API Element Traversal est à présent gérée par l'objet DOM <a class="internal" href="/fr/DOM/element" rel="internal">Element</a>.</li> + <li>Les nœuds HTML document peuvent à présent être clonés à l'aide de <a class="internal" href="/fr/DOM/Node.cloneNode" title="fr/DOM/Node.cloneNode"><code>cloneNode()</code></a>.</li> + <li>La méthode DOM non-standard <code>getBoxObjectFor()</code> a été supprimée. Utilisez plutôt <a class="internal" href="/fr/DOM/element.getBoundingClientRect" title="fr/DOM/Element.getBoundingClientRect"><code>getBoundingClientRect()</code></a>.</li> + <li>Les éléments DOM dispatchés peuvent être redispatchés. Ceci permet à Firefox 3.5 de passer le test 30 d'Acid 3.</li> + <li>Des améliorations ont été apportés à la gestion de DOM 2 Range.</li> + <li>Dans un contexte non-chrome, les objets catchés dans les exceptions sont à présent les objets rejetés tels quels plutôt qu'une enveloppe <a class="internal" href="/fr/XPConnect" title="fr/XPConnect">XPConnect</a> contenant ces objets.</li> + <li>Les références ID dans SVG sont à présent directes.</li> + <li>Les filtres SVG fonctionnent à présent avec <code>foreignObject</code>.</li> + <li>La méthode <code>GetSVGDocument()</code> a été ajoutée aux éléments <a class="internal" href="/fr/HTML/Element/object" title="fr/HTML/Element/Object"><code>object</code></a> et <a class="internal" href="/fr/HTML/Element/iframe" title="fr/HTML/Element/Iframe"><code>iframe</code></a> pour assurer une meilleure compatibilité.</li> + <li>La définition implicite de propriétés dans des initialiseurs d'objets et de tableaux n'exécute plus les mutateurs en JavaScript. Consultez le billet <a class="internal" href="/web-tech/2009/04/29/object-and-array-initializers-should-not-invoke-setters-when-evaluated" title="web-tech/2009/04/29/object-and-array-initializers-should-not-invoke-setters-when-evaluated">Object and array initializers should not invoke setters when evaluated</a> pour plus de détails.</li> + <li>La variable <code>gDownloadLastDir.path</code> a été renommée en <code>gDownloadLastDir.file</code> étant donné qu'elle fait référence à un objet {{ interface("nsIFile") }} et non à un chemin.</li> + <li>La variable <code>gDownloadLastDirPath</code> a été renommée en <code>gDownloadLastDirFile</code> étant donné qu'elle fait référence à un objet {{ interface("nsIFile") }} et non à un chemin.</li> + <li>À partir de Firefox 3.5, il devient impossible d'utiliser des liaisons <code>data:</code> dans les paquets chrome qui bénéficient de l'automatisation <code>XPCNativeWrapper</code>.</li> +</ul> + +<h2 id="Pour_les_d.C3.A9veloppeurs_XUL_et_d.C3.A9veloppeurs_d.27applications" name="Pour_les_d.C3.A9veloppeurs_XUL_et_d.C3.A9veloppeurs_d.27applications">Pour les développeurs XUL et développeurs d'applications</h2> + +<p>Si vous développez des extensions, vous devriez tout d'abord lire <a class="internal" href="/fr/Mise_à_jour_des_extensions_pour_Firefox_3.5" title="fr/Mise à jour des extensions pour Firefox 3.5">Mise à jour des extensions pour Firefox 3.5</a> qui fournit un aperçu pratique des changements qui pourraient affecter vos extensions.</p> + +<h4 id="Nouveaux_composants_et_nouvelles_fonctionnalités">Nouveaux composants et nouvelles fonctionnalités</h4> + +<dl> + <dt><a class="internal" href="/fr/Gestion_du_mode_de_navigation_privée" title="fr/Gestion du mode de navigation privée">Gestion du mode de navigation privée</a></dt> + <dd>Firefox 3.5 offre un mode de navigation privée, qui n'enregistre pas les activités de l'utilisateur. Les extensions peuvent gérer la navigation privée en suivant les conseils donnés dans cet article.</dd> + <dt><a class="internal" href="/fr/Changements_liés_à_la_sécurité_dans_Firefox_3.5" title="fr/Changements liés à la sécurité dans Firefox 3.5">Changements liés à la sécurité dans Firefox 3.5</a></dt> + <dd>Cet article détaille les changements liés à la sécurité dans Firefox 3.5.</dd> + <dt><a class="internal" href="/fr/Changements_dans_les_thèmes_pour_Firefox_3.5" title="fr/Changements dans les thèmes pour Firefox 3.5">Changements dans les thèmes pour Firefox 3.5</a></dt> + <dd>Cet article détaille les changements liés aux thèmes dans Firefox 3.5.</dd> + <dt><a class="internal" href="/fr/Surveillance_des_points_d'accès_WiFi" title="fr/Surveillance des points d'accès WiFi">Surveillance des points d'accès WiFi</a></dt> + <dd>Le code disposant des privilèges UniversalXPConnect peut à présent surveiller la liste des points d'accès disponibles, et obtenir des informations concernant leurs SSID, adresses MAC et force du signal. Ceci peut être utilisé couplé avec la géolocalisaiton pour fournir des services locaux basés sur la présence d'un WiFi.</dd> +</dl> + +<h4 id="Changements_et_améliorations_notables">Changements et améliorations notables</h4> + +<ul> + <li>Le widget XUL <code><a class="internal" href="/fr/XUL/textbox" rel="internal">textbox</a></code> offre à présent un type <code><a class="internal" href="/fr/XUL/Attribute/textbox.type" rel="internal">search</a></code>, pour être utilisé en tant que champ de recherche.</li> + <li>Afin de gérer le glisser et déposer d'onglets entre les fenêtres, le widget <a class="internal" href="/fr/XUL/browser" title="fr/XUL/Browser"><code>browser</code></a> dispose à présent d'une méthode <a class="internal" href="/fr/XUL/Méthodes/SwapDocShells" title="fr/XUL/Méthodes/SwapDocShells"><code>swapDocShells()</code></a>.</li> + <li>Ajout de l'attribut <a class="internal" href="/fr/XUL/Attributs/Panel.level" title="fr/XUL/Attributs/panel.level"><code>level</code></a> à l'élément <a class="internal" href="/fr/XUL/panel" title="fr/XUL/Panel"><code>panel</code></a> ; celui-ci indique si le panel apparait par dessus les autres applications, ou uniquement au-dessus de la fenêtre contenant le panel.</li> + <li>Les éléments XUL gèrent à présent les propriétés <code>clientHeight</code>, <code>clientWidth</code>, <code>scrollHeight</code> et <code>scrollWidth</code>.</li> + <li>Les éléments <a class="internal" href="/fr/XUL/keyset" title="fr/XUL/Keyset"><code>keyset</code></a> disposent à présent d'un attribut <code>disabled</code>.</li> + <li>De plus, les <code>keyset</code>s peuvent être supprimés à l'aide de la méthode <a class="internal" href="/fr/DOM/Node.removeChild" title="fr/DOM/Node.removeChild"><code>removeChild()</code></a> du nœud.</li> + <li><code><a href="/fr/mozIStorageStatement" rel="internal">mozIStorageStatement</a></code> a vu sa méthode <code>initialize()</code> supprimée ; ses utilisateurs doivent utiliser la méthode <code><a href="/fr/mozIStorageConnection#createStatement()" rel="internal">createStatement()</a></code> à la place pour obtenir un nouvel objet statement.</li> + <li>L'API <a class="internal" href="/fr/Storage" title="fr/Storage">Storage</a> permet à présent d'effectuer des requêtes asynchrones.</li> + <li>L'interface <a class="internal" href="/fr/nsICookie2" title="fr/NsICookie2"><code>nsICookie2</code></a> expose à présent l'heure à laquelle les cookies ont été créés dans son nouvel attribut <code>creationTime</code>.</li> + <li>Un flag a été ajouté à <code><a class="internal" href="/fr/nsIProtocolHandler" rel="internal">nsIProtocolHandler</a></code> (<code>URI_IS_LOCAL_RESOURCE</code>) qui est vérifié au cours d'un enregistrement chrome pour s'assurer qu'un protocole a le droit d'être enregistré.</li> + <li>Firefox recherche à présent des plugins dans <code>/usr/lib/mozilla/plugins</code> sous Linux, outre les emplacements précédemment consultés.</li> + <li>L'API des plugins a été mise à jour pour gérer le mode de navigation privée ; vous pouvez à présent utiliser <a class="internal" href="/fr/NPN_GetValue" title="fr/NPN GetValue"><code>NPN_GetValue()</code></a> pour connaître l'état du mode de navigation privée à l'aide de la variable <code>NPNVprivateModeBool</code>.</li> +</ul> + +<h2 id="Nouvelles_fonctionnalités_pour_les_utilisateurs">Nouvelles fonctionnalités pour les utilisateurs</h2> + +<h3 id="Interface">Interface</h3> + +<dl> + <dt>Navigation en fonction de sa localisation</dt> + <dd>Si vous le désirez, vous pouvez permettre à Firefox 3.5 de partager des informations concernant votre localisation géographique avec des sites web. Firefox 3.5 peut utiliser des informations sur le réseau auquel votre machine est connectée pour partager votre localisation. Bien évidemment, votre permission sera demandée au préalable afin de préserver votre vie privée.</dd> + <dt>Gestion de la vidéo et de l'audio ouverts</dt> + <dd>Firefox 3.5 gère l'intégration de vidéos et d'extraits audio à l'aide du format ouvert Ogg, ainsi qu'au format WAV pour l'audio. Aucun plugin nécessaire, pas de messages d'erreurs incompréhensibles vous demandant d'installer quelque chose qui n'est en fait pas disponible sur votre plateforme.</dd> + <dt>Stockage local de données</dt> + <dd>Les applications web peuvent à présent utiliser les possibilités de stockage local pour conserver des données sur votre ordinateur. Cela peut servir pour conserver des préférences ou d'autres données plus complexes.</dd> +</dl> + +<h3 id="Sécurité_et_vie_privée">Sécurité et vie privée</h3> + +<dl> + <dt>Navigation privée</dt> + <dd>Besoin d'utiliser l'ordinateur de quelqu'un d'autre ? Activez la navigation privée et rien ne sera enregistré concernant votre session, ni cookies, ni historique, ni aucune autre information privée.</dd> + <dt>Meilleurs contrôles sur la vie privée</dt> + <dd>Le panneau de préférences Vie privée a été complètement revu pour disposer d'un meilleur contrôle sur vos informations privées. Les utilisateurs peuvent choisir de conserver ou d'effacer tout ce qui concerne l'historique, les cookies, les téléchargements et les informations de formulaire enregistrées. De plus, il est possible d'indiquer si l'historique et/ou les marque-pages doivent faire partie des suggestions automatiques de la Barre d'adresse, afin d'empêcher des adresses privées d'apparaître par inadvertance en saisissant des informations dans la Barre d'adresse.</dd> +</dl> + +<h3 id="Performances">Performances</h3> + +<dl> + <dt>Du JavaScript plus rapide</dt> + <dd>Le code JavaScript est exécuté nettement plus rapidement dans Firefox 3.5 grâce à son nouveau moteur TraceMonkey. Les applications web sont ainsi beaucoup plus rapides que dans Firefox 3.</dd> + <dt>Rendu plus rapide des pages</dt> + <dd>Le contenu web est affiché plus rapidement dans Firefox 3.5, grâce à des technologies telles que l'« analyse spéculative ». Vos utilisateurs n'ont pas besoin de savoir de quoi il s'agit, simplement que ça rend les choses plus rapides.</dd> +</dl> + +<h2 id="Voir_.C3.A9galement" name="Voir_.C3.A9galement">Voir également</h2> + +<p>{{Firefox_for_developers('3')}}</p> diff --git a/files/fr/mozilla/firefox/versions/3.6/index.html b/files/fr/mozilla/firefox/versions/3.6/index.html new file mode 100644 index 0000000000..6e27affe9d --- /dev/null +++ b/files/fr/mozilla/firefox/versions/3.6/index.html @@ -0,0 +1,297 @@ +--- +title: Firefox 3.6 pour les développeurs +slug: Mozilla/Firefox/Versions/3.6 +tags: + - Firefox + - Firefox 3.6 +translation_of: Mozilla/Firefox/Releases/3.6 +--- +<div><section class="Quick_links" id="Quick_Links"> + <ol> + <li class="toggle"> + <details> + <summary>Notes de versions pour développeurs</summary> + <ol> + <li><a href="/fr/docs/Mozilla/Firefox/Releases">Notes de versions pour développeurs</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Modules complémentaires</summary> + <ol> + <li><a href="/fr/Add-ons/WebExtensions">WebExtensions</a></li> + <li><a href="/fr/Add-ons/Themes">Thèmes</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Fonctionnement interne de Firefox</summary> + <ol> + <li><a href="/fr/docs/Mozilla/">Le projet Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Gecko">Gecko</a></li> + <li><a href="/fr/docs/Mozilla/Firefox/Headless_mode">Mode « headless »</a></li> + <li><a href="/fr/docs/Mozilla/JavaScript_code_modules">Modules de code Javascript</a></li> + <li><a href="/fr/docs/Mozilla/js-ctypes">JS-ctypes</a></li> + <li><a href="/fr/docs/Mozilla/MathML_Project">Le projet MathML</a></li> + <li><a href="/fr/docs/Mozilla/MFBT">MFBT</a></li> + <li><a href="/fr/docs/Mozilla/Projects">Les projets Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Preferences">Le système de préférences</a></li> + <li><a href="/fr/docs/Mozilla/WebIDL_bindings">Connexions WebIDL</a></li> + <li><a href="/fr/docs/Mozilla/Tech/XPCOM">XPCOM</a></li> + <li><a href="/fr/docs/Mozilla/Tech/XUL">XUL</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Développer et contribuer</summary> + <ol> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions">Instructions de compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions/Configuring_Build_Options">Configuration des options de compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions/How_Mozilla_s_build_system_works">Fonctionnement de la compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Code source de Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Localization">Localisation</a></li> + <li><a href="/fr/docs/Mozilla/Mercurial">Mercurial</a></li> + <li><a href="/fr/docs/Mozilla/QA">Assurance qualité</a></li> + <li><a href="/fr/docs/Mozilla/Using_Mozilla_code_in_other_projects">Utilisation de code Mozilla dans d'autres projets</a></li> + </ol> + </details> + </li> + </ol> +</section></div><p>Firefox 3.6 (nom de code <a class="external" href="https://wiki.mozilla.org/Firefox/Namoroka" title="https://wiki.mozilla.org/Firefox/Namoroka">Namoroka</a>) est sorti le 21 janvier 2010 et est basé sur Gecko 1.9.2. Cette page fournit des liens vers des articles qui décrivent les nouvelles fonctionnalités de Firefox 3.6.</p> + +<h2 id="Pour_les_développeurs_de_sites_et_dapplications_Web">Pour les développeurs de sites et d'applications Web</h2> + +<h3 id="CSS">CSS</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/fr/docs/CSS/Using_CSS_gradients" title="Utilisation de dégradés">Utilisation de dégradés</a></dt> + <dd>Firefox 3.6 ajoute le support de <a href="/fr/docs/Web/CSS/-moz-linear-gradient" title="La fonction CSS linear-gradient() créée une <image> qui représente un dégradé linéaire de couleurs. Le résultat de cette fonction est un objet CSS du type <gradient>. Comme tout autre dégradé, un dégradé linéaire CSS n'est pas une <color> CSS mais une image sans dimensions intrinsèques ; en d'autres termes, elle n'a pas de taille naturelle ou préférée, ni de proportions préférées. Sa taille s'adapte à l'élément auquel il est appliqué."><code>-moz-linear-gradient</code></a> et <a href="/fr/docs/Web/CSS/-moz-radial-gradient" title="La fonction CSS radial-gradient() créée une <image> qui représente un dégradé de couleur rayonnant depuis une origine. Le résultat de cette fonction est un objet du type CSS <gradient>. Les dégradé radiaux sont définis par leur origine, l'angle, l'orientation, et leur type, circle ou ellipse."><code>-moz-radial-gradient</code></a> pour la propriété <a href="/fr/docs/Web/CSS/background" title="La propriété background est une propriété raccourcie qui permet de définir les différentes valeurs des propriétés liées à la gestion des arrière-plans d'un élément (couleur, image, origine, taille, répétition, etc.)."><code>background</code></a>.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/fr/docs/CSS/Fonds_multiples" title="CSS/Fonds multiples">Fonds multiples</a></dt> + <dd>La propriété <a href="/fr/docs/Web/CSS/background" title="La propriété background est une propriété raccourcie qui permet de définir les différentes valeurs des propriétés liées à la gestion des arrière-plans d'un élément (couleur, image, origine, taille, répétition, etc.)."><code>background</code></a> (ainsi que <a href="/fr/docs/Web/CSS/background-attachment" title="La propriété background-attachment définit si la position de l'image d'arrière-plan est fixée dans la zone d'affichage (viewport) ou si celle-ci défile avec le bloc englobant."><code>background-attachment</code></a><a href="/fr/docs/Web/CSS/background-color" title="La propriété background-color permet de définir la couleur utilisée pour l'arrière-plan d'un élément (celle-ci peut être une couleur transparente)."><code>background-color</code></a>, <a href="/fr/docs/Web/CSS/background-image" title="La propriété background-image permet de définir une ou plusieurs images comme arrière(s)-plan(s) pour un élément."><code>background-image</code></a>, <a href="/fr/docs/Web/CSS/background-position" title="La propriété background-position permet de définir la position initiale, relative à l'origine définie par background-origin, pour chaque image d'arrière-plan."><code>background-position</code></a> et <a href="/fr/docs/Web/CSS/background-repeat" title="La propriété background-repeat définit la façon dont les images utilisées en arrière-plan sont répétées. Une image d'arrière-plan pourra ainsi être répétée sur l'axe horizontal, l'axe vertical ou bien ne pas être répétée."><code>background-repeat</code></a>) peuvent gérer des fonds multiples. Ceux-ci seront affichés par couches, les uns au dessus des autres.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/fr/docs/CSS/Media_queries#Fonctionnalit.C3.A9s_de_m.C3.A9dias_sp.C3.A9cifiques_.C3.A0_Mozilla" title="CSS/Mediaqueries#Fonctionnalités de médias spécifiques à Mozilla">Fonctionnalités de médias spécifiques à Mozilla</a></dt> + <dd>Des fonctionnalités de médias ont été ajoutées pour des mesures spécifiques à Mozilla, afin de pouvoir utiliser des <a class="external" href="https://developer.mozilla.org/fr/docs/CSS/Media_queries" title="CSS/Media queries">media queries</a> pour vérifier plus aisément la disponibilité de fonctionnalités comme un écran tactile.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/Scaling_background_images" title="CSS/Scaling background images">Redimensionnement d'images de fond</a></dt> + <dd>La propriété <code>background-size</code> du <a class="external" href="http://dev.w3.org/csswg/css3-background/" title="http://dev.w3.org/csswg/css3-background/#the-background-size-property">brouillon CSS 3 Backgrounds and Borders</a> est gérée sous le nom de <a href="/fr/docs/Web/CSS/-moz-background-size" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-background-size</code></a>.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/WOFF" title="https://developer.mozilla.org/en-US/docs/WOFF">Support des polices WOFF</a></dt> + <dd><a href="/fr/docs/Web/CSS/@font-face" title="La règle @ @font-face permet de définir les polices d'écriture à utiliser pour afficher le texte de pages web. Cette police peut être chargée depuis un serveur distant ou depuis l'ordinateur de l'utilisateur. Si la fonction local() est utilisée, elle indique à l'agent utilisateur de prendre en compte une police présente sur le poste de l'utilisateur."><code>@font-face</code></a> supporte désormais le format de polices Web téléchargeables WOFF</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/CSS/pointer-events" title="https://developer.mozilla.org/en-US/docs/CSS/pointer-events">Evènements pointeurs</a></dt> + <dd>La propriété <a href="/fr/docs/Web/CSS/pointer-events" title="La propriété CSS pointer-events permet aux auteurs de contrôler les circonstances dans lesquelles un élément graphique peut recevoir des événements de la souris, du pointeur ou du doigt."><code>pointer-events</code></a> si le contenu d'un élément peut être ou non la cible d'évènements pointeur avec la souris.</dd> +</dl> + +<h4 id="Autres_changements_CSS">Autres changements CSS</h4> + +<ul> + <li>L'unité de longueur <a class="internal" href="https://developer.mozilla.org/fr/docs/CSS/longueur" title="CSS/longueur"><code>rem</code></a> de <a class="external" href="http://www.w3.org/TR/css3-values/#lengths" title="http://www.w3.org/TR/css3-values/#lengths">CSS3 Values and Units</a> est maintenant supportée. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=472195" title="FIXED: support css3 root em ('rem' or 're') units">bug 472195</a>.</li> + <li><a href="/fr/docs/Web/CSS/image-rendering" title="La propriété image-rendering fournit une indication au navigateur à propos de l'algorithme qui devrait être utilisé pour redimensionner les images. Elle s'applique à l'élément visé, aux images fournies via les autres propriétés CSS et aux éléments fils."><code>image-rendering</code></a> est gérée pour les images, images de fond, vidéos et canvas. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=423756" title="FIXED: Request: Switch for authors to turn on/off bilinear filtering when enlarging images">bug 423756</a>.</li> + <li><a href="/fr/docs/Web/CSS/text-align" title="La propriété text-align définit la façon dont un texte en ligne (inline) est alignée dans le bloc de son élément parent. Cette propriété fonctionne comme vertical-align mais dans le sens horizontal."><code>text-align</code></a>:end est maintenant supportée. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=299837" title="FIXED: [FIX]add support for text-align: end">bug 299837</a>.</li> + <li>Les changements DOM sur des éléments utilisant les types de <a href="/fr/docs/Web/CSS/display" title="La propriété display définit le type d'affichage utilisée pour le rendu d'un élément. Ce type d'affichage possède deux composantes : le type d'affichage extérieur qui définit comment la boîte participe au flux et le type d'affichage intérieur qui définit l'organisation des éléments enfants."><code>display</code></a> table fonctionnent beaucoup mieux.</li> + <li>Ajout de <a href="/fr/docs/Web/CSS/:-moz-locale-dir(ltr)" title="La pseudo-classe :-moz-locale-dir(ltr) correspond à un élément si l'interface utilisateur est affichée de gauche à droite. Ceci est déterminé par la préférence intl.uidirection.locale (où locale est le language courant) qui est fixé à "ltr"."><code>:-moz-locale-dir(ltr)</code></a> et <a href="/fr/docs/Web/CSS/:-moz-locale-dir(rtl)" title="La pseudo-classe CSS :-moz-locale-dir(rtl) correspond à un élément si l'interface utilisateur est affichée de droite à gauche. Elle est déterminée par la préférence intl.uidirection.locale (où locale est la langue courante) qui est fixée à "rtl"."><code>:-moz-locale-dir(rtl)</code></a> pour faciliter la personnalisation de mise en page selon l'orientation de l'interface dépendant de la locale (gauche à droite ou droite à gauche). Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=478416" title="FIXED: Replace chromedir with something more sane">bug 478416</a>.</li> + <li>Ajout de la pseudo-classe <a href="/fr/docs/Web/CSS/:indeterminate" title="La pseudo-classe :indeterminate permet de cibler un élément de formulaire dont l'état est indéterminé."><code>:indeterminate</code></a> correspondant aux éléments <a href="/fr/docs/Web/HTML/Element/input" title="L'élément HTML <input> est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément <input> dépend fortement de la valeur indiquée dans son attribut type."><code><input></code></a> <code>checkbox</code> dont l'attribut <code>indeterminate</code> est <code>true</code>.</li> + <li>Les plugins fenêtrés ne sont plus affichés par la propriété CSS tranforms, car ils ne peuvent pas être correctement tranformés par le compositeur.</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<dl> + <dt><a href="https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications" title="https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications">Utilisation de fichiers à partir d'applications Web</a></dt> + <dd>Le support de la nouvelle API de fichier HTML5 a été ajouté à Gecko, ce qui permet à des applications Web d'accéder à des fichiers locaux sélectionnés par l'utilisateur.</dd> + <dt>Support des affiches pour les vidéos HTML5</dt> + <dd>L'attribut <code>poster</code> est pris en charge pour l'élément <a href="/fr/docs/Web/HTML/Element/video" title="L'élément HTML <video> intègre un contenu vidéo dans un document."><code><video></code></a>, ce qui permet au contenu de choisir une image à afficher tant que la vidéo n'a pas commencée.</dd> + <dt>Support de la propriété <code>indeterminate</code> pour les cases à cocher et boutons radio</dt> + <dd>Les éléments HTML <a href="/fr/docs/Web/HTML/Element/input" title="L'élément HTML <input> est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément <input> dépend fortement de la valeur indiquée dans son attribut type."><code><input></code></a> des types <code>checkbox</code> et <code>radio</code> supportent désormais la propriété indeterminate qui permet d'avoir un troisième état « indéterminé ».</dd> + <dt>Contrôle du lissage d'images dans canvas</dt> + <dd>La nouvelle propriété <a class="internal" href="https://developer.mozilla.org/en-US/docs/Canvas_tutorial/Using_images#Controlling_image_scaling_behavior" title="Tutoriel canvas/Utilisation d%27images"><code>mozImageSmoothingEnabled</code></a> peut être utilisée pour activer et désactiver le lissage lors d'un redimensionnement dans les éléments <a href="/fr/docs/Web/HTML/Element/canvas" title="L'élément <canvas> permet de modifier une zone graphique via un script (habituellement en JavaScript ou grâce à WebGL). Il peut par exemple être utilisé afin de dessiner des graphiques, manipuler des images ou jouer des animations."><code><canvas></code></a>.</dd> + <dt>Exécution d'un script asynchrone</dt> + <dd>En définissant l'attribut <code>async</code> sur un élément <a href="/fr/docs/Web/HTML/Element/script" title="L'élément HTML <script> est utilisé pour intégrer ou faire référence à un script exécutable. Cela fait généralement référence à du code JavaScript mais ce peut également être un autre type de script (par exemple WebGL)."><code><script></code></a>, le <code>script</code> ne bloquera pas le chargement ou l'affichage du reste de la page. En revanche, le <code>script</code> s'exécutera dès qu'il sera téléchargé.</dd> +</dl> + +<h3 id="JavaScript">JavaScript</h3> + +<p>Gecko 1.9.2 introduit JavaScript 1.8.2, qui ajoute un certain nombre de fonctionnalités de langage de la norme ECMAScript 5 :</p> + +<ul> + <li><code>Date.parse()</code> peut analyser des dates ISO 8601 au format YYYY-MM-DD (année-mois-jour).</li> + <li>La propriété <code>prototype</code> d'instances de fonctions n'est plus énumérable.</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<dl> + <dt>Terminaison des web workers par eux-mêmes</dt> + <dd>Les web <a href="https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers" title="https://developer.mozilla.org/en-US/docs/DOM/Using_web_workers">workers</a> prennent désormais en charge la méthode <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIWorkerScope#close()">nsIWorkerScope.close()</a></code>, qui leur permet de se terminer d'eux-mêmes.</dd> + <dt>Glisser-déposer de fichiers</dt> + <dd>L'objet <a href="https://developer.mozilla.org/en-US/docs/DragDrop/DataTransfer" title="https://developer.mozilla.org/en-US/docs/DragDrop/DataTransfer"><code>DataTransfer</code></a> fournit à présent aux observateurs de glisser-déposer une liste des fichiers glissés.</dd> + <dt>Vérification pour voir si un élément correspond à un sélecteur CSS</dt> + <dd>La nouvelle méthode <code>element.mozMatchesSelector</code> permet de déterminer si un élément correspond bien à un sélecteur CSS. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=518003" title="FIXED: implement function to check whether element matches a CSS selector">bug 518003</a>.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/Detecting_device_orientation" title="https://developer.mozilla.org/en-US/docs/Detecting_device_orientation">Dispositf de détection de l'orientation</a></dt> + <dd>Le contenu peut à présent détecter l'orientation de l'appareil s'il dispose d'un accéléromètre, à l'aide de l'évènement <code>MozOrientation</code>. Firefox 3.6 gère notamment l'accéléromètre des ordinateurs portables Mac.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/MozScrolledAreaChanged" title="https://developer.mozilla.org/en-US/docs/Mozilla_event_reference/MozScrolledAreaChanged">Détection des changements de largeur et hauteur d'un document</a></dt> + <dd>Le nouvel évènement <code>MozScrollAreaChanged</code> est déclenché lorsqu'une des propriétés <code>scrollWidth</code> ou <code>scrollHeight</code> d'un document change.</dd> +</dl> + +<ul> + <li>La méthode <code>getBoxObjectFor()</code> a été <strong>supprimée</strong>, car elle n'était pas standard et exposait d'autres fonctionnalités non standard. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=340571" title="FIXED: getBoxObjectFor leaking-onto-the-Web disaster">bug 340571</a>. La bibliothèque <a class="external" href="http://mootools.net/" title="http://mootools.net/">MooTools</a> qui utilisait cet appel pour la détection de Gecko est affectée ; cela a été corrigé dans la dernière version de MooTools, assurez-vous donc d'être à jour.</li> + <li>Les nouvelles propriétés <a href="https://developer.mozilla.org/en-US/docs/DOM/window.mozInnerScreenX" title="https://developer.mozilla.org/en-US/docs/DOM/window.mozInnerScreenX"><code>mozInnerScreenX</code></a> et <a href="https://developer.mozilla.org/en-US/docs/DOM/window.mozInnerScreenY" title="https://developer.mozilla.org/en-US/docs/DOM/window.mozInnerScreenY"><code>mozInnerScreenY</code></a> sur les objets DOM window on été ajoutés ; ils renvoient les coordonnées à l'écran du coin supérieur gauche de la zone de visualisation de la fenêtre.</li> + <li>La nouvelle propriété <code>mozScreenPixelsPerCSSPixel</code> de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowUtils" title="">nsIDOMWindowUtils</a></code> uniquement accessible depuis le chrome, fournit un facteur de conversion entre les pixels CSS et les pixels à l'écran ; cette valeur peut varier selon le niveau de zoom du contenu.</li> + <li>Lorsque l'identifiant de fragment de document de l'URL de la page change (la partie après le caractère « # » (dièse)), un nouvel évènement <code>hashchange</code> est envoyé à la page. Consultez <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange" title="DOM/window.onhashchange">window.onhashchange</a> pour plus d'informations. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=385434" title="FIXED: Add support for HTML5 onhashchange (event for named anchor changes)">bug 385434</a></li> + <li>L'attribut <a href="https://developer.mozilla.org/en-US/docs/DOM/document.readyState" title="https://developer.mozilla.org/en-US/docs/DOM/document.readyState"><code>document.readyState</code></a> est désormais supporté. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=347174" title='FIXED: Implement document.readystate == "complete"'>bug 347174</a></li> + <li>Gestion de l'attribut HTML5 <a href="https://developer.mozilla.org/en-US/docs/DOM/element.classList" title="https://developer.mozilla.org/en-US/docs/DOM/element.classList"><code>element.classList</code></a> pour permettre une gestion plus aisée de l'attribut class. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=501257" title="FIXED: Implement HTML 5's HTMLElement.classList property">bug 501257</a></li> + <li><code>localName</code> et <code>namespaceURI</code> dans les documents HTML se comportent à présent comme dans les documents XHTML : <code>localName</code> est renvoyé en minuscules et la propriété <code>namespaceURI</code> pour les éléments HTML est <code>"<a href="http://www.w3.org/1999/xhtml" title="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>"</code>.</li> + <li><a class="internal" href="https://developer.mozilla.org/fr/docs/DOM/element.getElementsByTagNameNS" title="DOM/element.getElementsByTagNameNS"><code>element.getElementsByTagNameNS</code></a> son argument n'est plus en minuscules, alors en lettres majuscules ASCII dans l'argument établit des chaînes contre des éléments HTML échouent. Cela est vrai aussi pour <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/document.getElementsByTagNameNS" title="DOM/document.getElementsByTagNameNS"><code>document.getElementsByTagNameNS</code></a>.</li> + <li>Ajout de la gestion des adresses dans la géolocalisation via l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMGeoPositionAddress" title="">nsIDOMGeoPositionAddress</a></code> et d'un nouveau champ dans <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMGeoPosition" title="">nsIDOMGeoPosition</a></code>.</li> + <li>La fonction <a href="/fr/docs/Web/API/Window/getComputedStyle" title="La méthode window.getComputedStyle() donne la valeur calculée finale de toutes les propriétés CSS sur un élément."><code>window.getComputedStyle</code></a> renvoie à présent les guillemets autour des valeurs url().</li> +</ul> + +<h3 id="XPath">XPath</h3> + +<dl> + <dt>Gestion de la méthode XPath choose()</dt> + <dd>La méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/XPath/Functions/choose" title="XPath/Functions/choose"><code>choose()</code></a> est à présent gérée par notre implémentation de <a class="internal" href="https://developer.mozilla.org/fr/docs/XPath" title="XPath">XPath</a>.</dd> +</dl> + +<h2 id="Pour_les_développeurs_XUL_et_les_développeurs_dextensions">Pour les développeurs XUL et les développeurs d'extensions</h2> + +<p>Si vous êtes un développeur d'extensions, vous devriez commencer par lire <a class="internal" href="https://developer.mozilla.org/en-US/docs/Updating_extensions_for_Firefox_3.6" title="Updating extensions for Firefox 3.6">Updating extensions for Firefox 3.6</a>, qui offre une vue d'ensemble sur les changements qui pourraient affecter vos extensions. Les développeurs de Plug-in devraient lire <a class="internal" href="https://developer.mozilla.org/en-US/docs/Updating_plug-ins_for_Firefox_3.6" title="Updating plug-ins for Firefox 3.6">Updating plug-ins for Firefox 3.6</a>.</p> + +<h3 id="Nouvelles_fonctionnalités">Nouvelles fonctionnalités</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Detecting_device_orientation" title="Detecting device orientation">Détection de l'orientation de l'appareil</a></dt> + <dd>Le contenu peut maintenant détecter l'orientation de l'appareil si il possède un accéléromètre, en utilisant l'évènement <a href="https://developer.mozilla.org/en-US/docs/DOM/MozOrientation" title="DOM/MozOrientation"><code>MozOrientation</code></a>. Firefox 3.6 supporte l'accéléromètre des ordinateurs portables Mac.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Monitoring_HTTP_activity" title="en/Monitoring HTTP activity">Surveillance de l'activité HTTP</a></dt> + <dd>Vous pouvez maintenant surveiller en temps réel les données HTTP demandées et reçues.</dd> + <dt><span class="internal">Intégration à la Barre des tâches de Windows</span></dt> + <dd>Il est maintenant possible de personnaliser l'apparence des fenêtres dans la barre des tâches sous Windows 7 ou plus récent. <em>C'est désactivé par défaut dans Firefox 3.6.</em></dd> +</dl> + +<h3 id="Places">Places</h3> + +<ul> + <li>Les requêtes peuvent maintenant utiliser l'attribut <code>redirectsMode</code> de l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryQueryOptions" title="">nsINavHistoryQueryOptions</a></code> pour spécifier si il faut inclure ou non les pages redirigées dans les résultats.</li> + <li>Ajout de la nouvelle méthode <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIFaviconService#expireAllFavicons()">nsIFaviconService.expireAllFavicons()</a></code> à l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFaviconService" title="">nsIFaviconService</a></code>.</li> +</ul> + +<h3 id="Storage">Storage</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Storage#Collation_(sorting)" title="Storage#Collation (sorting)">Tri des données locales avec l'API Storage</a></dt> + <dd>Gecko 1.9.2 ajoute plusieurs nouvelles méthodes pour offrir une collecte (tri) optimisée des résulats en utilisant les techniques de localisation.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/mozIStorageStatementParams#Enumeration_of_properties" title="mozIStorageStatementParams#Enumeration_of_properties">Énumération des propriétés d'une requête</a></dt> + <dd>Vous pouvez maintenant utiliser <a class="internal" href="https://developer.mozilla.org/fr/docs/Guide_JavaScript_1.5/Instructions_de_manipulation_d%27objets#L%27instruction_for...in" title="Guide JavaScript 1.5/Instructions de manipulation d%27objets#L%27instruction for...in"><code>for...in</code></a> pour énumérer toutes les propriétés d'une déclaration.</dd> + <dt>mozIStorageStatement's getParameterIndex a changé de comportement entre Firefox 3.5 et 3.6.</dt> + <dd>Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=528166" title="mozIStorageStatement getParameterIndex causes NS_ERROR_ILLEGAL_VALUE">bug 528166</a> pour plus de détails.</dd> + <dt>Liaison asynchrone de plusieurs ensembles de paramètres pour exécution d'une requête.</dt> + <dd>Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490085" title="FIXED: Add ability to bind multiple sets of parameters and execute asynchronously">bug 490085</a> pour plus de détails.</dd> +</dl> + +<h3 id="Préférences">Préférences</h3> + +<ul> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefService" title="">nsIContentPrefService</a></code> a deux nouvelles méthodes : <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIContentPrefService#getPrefsByName()">nsIContentPrefService.getPrefsByName()</a></code> et <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIContentPrefService#removePrefsByName()">nsIContentPrefService.removePrefsByName()</a></code>.</li> +</ul> + +<h3 id="Thèmes">Thèmes</h3> + +<p>Voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Updating_themes_for_Firefox_3.6" title="Updating themes for Firefox 3.6">Updating themes for Firefox 3.6</a> pour la liste des changements liés aux thèmes.</p> + +<dl> + <dt><a href="https://developer.mozilla.org/en-US/docs/Themes/Lightweight_themes" title="Themes/Lightweight themes">Thèmes légers</a></dt> + <dd>Firefox 3.6 supporte les thèmes légers ; ce sont des thèmes faciles à créer et qui sont simplement appliqué sur le fond de la fenêtre du navigateur, en haut (barre d'adresses et boutons) et en bas (barre d'état). Il s'agit d'une intégration de l'architecture de thèmes <a class="external" href="http://www.getpersonas.com/" title="http://www.getpersonas.com/">Personas</a> dans Firefox.</dd> +</dl> + +<h3 id="Divers">Divers</h3> + +<ul> + <li>Firefox n'a plus la charge des modules tiers installé dans son répertoire des modules internes. Cela contribue à assurer la stabilité en empêchant des composants tiers buggés d'être exécuté. Les développeurs qui installent des composants de cette façon doivent <a class="internal" href="https://developer.mozilla.org/en-US/docs/Migrating_raw_components_to_add-ons" title="Migrating raw components to add-ons">refaire leurs modules sous forme de paquets XPI</a> afin qu'ils puissent être installés normalement.</li> + <li><code>contents.rdf</code> n'est plus pris en charge pour l'enregistrement chrome dans les extensions. Vous devez maintenant utiliser le fichier <a class="internal" href="https://developer.mozilla.org/en-US/docs/Install_Manifests" title="Install manifests"><code>chrome.manifest</code></a>. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=492008" title="FIXED: Drop support for contents.rdf chrome registrations">bug 492008</a>.</li> + <li>La barre de menu peut être cachée automatiquement. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=477256" title="FIXED: Implement menubar auto-hiding in toolkit">bug 477256</a>.</li> + <li>Ajout du support de l'attribut <code>container-live-role</code> aux objets. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=391829" title="FIXED: Add support for container-live-role to object attributes">bug 391829</a>.</li> + <li>Suppression de la liaison <code>tabs-closebutton</code>. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=500971" title="FIXED: Remove obsolete tabs-closebutton binding">bug 500971</a>.</li> + <li>Ajout du support de <span class="internal"><code>nsISound</code></span> pour jouer des sons en fonction des évènements qui ont eu lieu. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=502799" title="FIXED: add new nsISound method for the event sounds">bug 502799</a>.</li> + <li>La syntaxe pour les méthodes de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsITreeView" title="">nsITreeView</a></code> : <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsITreeView#canDrop()">nsITreeView.canDrop()</a></code> et <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsITreeView#drop()">nsITreeView.drop()</a></code>, a changé pour supporter la nouvelle API glisser & déposer introduite dans Gecko 1.9. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=455590" title="FIXED: Allow new dnd api with tree views">bug 455590</a>.</li> + <li>Ajout du support pour aligner le curseur de la souris sur le bouton par défaut de la boîte de dialogue ou l'assistant de Windows, voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=76053" title='FIXED: Windows mouse integration: "Snap to default button in dialog boxes"'>bug 76053</a>. Cela est traitée automatiquement par la boîte de dialogue et l'assistant. Mais si une application XUL crée une fenêtre en utilisant l'élément <code>window</code> et qu'il a un bouton par défaut, il doit appeler <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIDOMChromeWindow#notifyDefaultButtonLoaded()">nsIDOMChromeWindow.notifyDefaultButtonLoaded()</a></code> dans le gestionnaire d'événements onload de la fenêtre.</li> + <li>Pour l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsILocalFileMac" title="">nsILocalFileMac</a></code>, deux méthodes ont étés retirées : <code>setFileTypeAndCreatorFromMIMEType()</code> and <code>setFileTypeAndCreatorFromExtension()</code>.</li> + <li>Le nouveau module de code <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/NetUtil.jsm" title="JavaScript code modules/NetUtil.jsm"><code>NetUtils.jsm</code></a> apporte une méthode facile à utiliser pour copier les données de manière asynchrone à partir d'un flux d'entrée vers un flux de sortie.</li> + <li>Le nouveau module de code <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/openLocationLastURL.jsm" title="JavaScript code modules/openLocationLastURL.jsm"><code>openLocationLastURL.jsm</code></a>, facilite la lecture et la modification de la valeur de l'URL gardée en mémoire de la boîte de dialogue "Ouvrir le fichier", tout en prenant bien en compte le mode de navigation privée.</li> + <li>Dans Windows, l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIScreen" title="">nsIScreen</a></code> reporte maintenant 24 bits par pixel pour la profondeur des couleurs lorsque le pilote graphique demande 32 bits, plus précisement 24 représente le nombre réel de pixels de couleurs en utilisation.</li> + <li>Les barres de menu peuvent maintenant être cachées sous Windows, en utilisant le nouvel attribut <code id="a-autohide"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/autohide">autohide</a></code> sur l'élément XUL <code><a href="/fr/docs/Mozilla/Tech/XUL/toolbar" title="toolbar">toolbar</a></code>.</li> + <li>Les méthodes <span id="m-loadOneTab"><code><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Méthodes/loadOneTab">loadOneTab</a></code></span> et <span id="m-addTab"><code><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Méthodes/addTab">addTab</a></code></span> acceptent maintenant le nouveau paramètre <code>relatedToCurrent</code> et, en outre, permet à des paramètres d'être définit par un nom, puisque presque tous les paramètres sont optionnels.</li> + <li>La propriété "<a href="https://developer.mozilla.org/en-US/docs/Install_Manifests#hidden" title="https://developer.mozilla.org/en-US/docs/Install_Manifests#hidden">hidden</a>" n'est plus supportée dans les manisfestes d'installation ; il n'est plus possible d'empêcher l'utilisateur de voir des modules complémentaires dans la fenêtre du gestionnaire de module.</li> + <li>Le composant <code>@mozilla.org/webshell;1</code> n'existe plus ; vous devez utilisez <code>@mozilla.org/docshell;1</code> à la place.</li> + <li>Vous pouvez désormais enregistrer avec la catégorie update-timer pour programmer la synchronisation des événements sans avoir à instancier l'objet que le minuteur va éventuellement remettre, il sera plutôt instancié lorsque c'est nécessaire. Voir <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIUpdateTimerManager#registerTimer()">nsIUpdateTimerManager.registerTimer()</a></code> pour plus de détails.</li> + <li>La fonction <a class="internal" href="https://developer.mozilla.org/en-US/docs/NPN_GetValue" title="NPN_GetValue"><code>NPN_GetValue</code></a> ne donne plus accès à travers XPCOM aux valeurs de variables <code>NPNVserviceManager</code>, <code>NPNVDOMelement</code>, et <code>NPNVDOMWindow</code>. Cela fait partie des travaux pour que les plugins s'exécutent dans des processus séparés dans une future version de Gecko.</li> + <li>Les plugins ne sont plus scriptables à travers l'interface XPCOM (IDL), <a href="https://developer.mozilla.org/en-US/docs/Gecko_Plugin_API_Reference/Scripting_plugins" title="https://developer.mozilla.org/en-US/docs/Gecko_Plugin_API_Reference/Scripting_plugins">NPRuntime</a> est l'API à utiliser pour coder des plugins et <a class="internal" href="https://developer.mozilla.org/en-US/docs/NPP_GetValue" title="NPP_GetValue"><code>NPP_GetValue()</code></a> n'est plus appelé avec la valeur <code>NPPVpluginScriptableInstance</code> ou <code>NPPVpluginScriptableIID</code>. Cela fait partie des travaux pour que les plugins s'exécutent dans des processus séparés dans une future version de Gecko.</li> +</ul> + +<h2 id="Pours_les_développeurs_de_FirefoxGecko">Pours les développeurs de Firefox/Gecko</h2> + +<p>Certains changements sont vraiment intéressant si vous travaillez sur le fonctionnement interne de Firefox.</p> + +<h3 id="Interfaces_fusionnées">Interfaces fusionnées</h3> + +<p>Les interfaces suivantes ont été fusionnées :</p> + +<ul> + <li><code>nsIPluginTagInfo2</code> a été fusionnée avec <code>nsIPluginTagInfo</code>.</li> + <li><code>nsIPluginInstanceInternal</code>, <code>nsIPPluginInstancePeer</code>, <code>nsIPluginInstancePeer1</code>, <code>nsIPluginInstancePeer2</code> et <code>nsIPluginInstancePeer3</code> ont toutes été fusionnées avec <code>nsIPluginInstance</code>.</li> + <li><code>nsIWindowlessPlugInstPeer</code> a été fusionnée avec <code>nsIPluginInstance</code>.</li> + <li><code>nsIPluginManager</code> et <code>nsIPluginManager2</code> ont été fusionnées avec <code>nsIPluginHost</code></li> +</ul> + +<h3 id="Interfaces_supprimées">Interfaces supprimées</h3> + +<p>Les interfaces suivantes ont été entièrement supprimées car elles étaient inutilisées, non implémentées ou obsolètes :</p> + +<ul> + <li><code>nsIFullScreen</code></li> + <li><code>nsIDOMSVGListener</code></li> + <li><code>nsIDOMSVGZoomListener</code></li> + <li><code>nsIInternetConfigService</code></li> + <li><code>nsIDKey</code></li> + <li><code>nsIEventHandler</code></li> + <li><code>nsIJRILiveConnectPIPeer</code></li> + <li><code>nsIJRILiveConnectPlugin</code></li> + <li><code>nsIScriptablePlugin</code></li> + <li><code>nsIClassicPluginFactory</code></li> + <li><code>nsIFileUtilities</code></li> +</ul> + +<h3 id="Interfaces_déplacées">Interfaces déplacées</h3> + +<p>Les interfaces suivantes ont été déplacées de leurs précédents fichiers IDL vers leurs nouveaux :</p> + +<ul> + <li><code>nsIDOMNSCSS2Properties</code> est maintenant située dans son propre fichier IDL (<code>dom/interfaces/css/nsIDOMCSS2Properties.idl</code>).</li> + <li><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIUpdateTimerManager" title="">nsIUpdateTimerManager</a></code> est maintenant située dans son propre fichier IDL.</li> +</ul> + +<p>Un grand nombre d'interfaces ont été déplacées. Voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Interfaces_moved_in_Firefox_3.6" title="Interfaces moved in Firefox 3.6">Interfaces moved in Firefox 3.6</a> pour la liste complète.</p> + +<h3 id="Autres_changements_dans_les_interfaces">Autres changements dans les interfaces</h3> + +<p>Les modifications suivantes ont été faites :</p> + +<ul> + <li>L'interface <code>nsIPlugin</code> hérite maintenant de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> à la place de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFactory" title="">nsIFactory</a></code>.</li> + <li>L'interface <code>nsIPluginHost</code> hérite maintenant de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> à la place de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFactory" title="">nsIFactory</a></code>.</li> + <li>L'interface <code>nsIFrame</code> hérite maintenant de <code>nsQueryFrame</code> à la place de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code>.</li> + <li>La méthode <code>getPaletteInfo()</code> de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDeviceContext" title="">nsIDeviceContext</a></code> a été supprimée, car elle n'a jamais été appliquée.</li> + <li>La méthode <code>reportPendingException()</code> de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIScriptContext" title="">nsIScriptContext</a></code> a été supprimée, car elle n'été plus utilisée.</li> +</ul> + +<h3 id="Changements_dans_laccessibilitée_du_code">Changements dans l'accessibilitée du code</h3> + +<ul> + <li>L'<a class="internal" href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIAccessibleEvent" title="XPCOM Interface Reference/nsIAccessibleEvent">évènement d'accessibilité</a> <code>EVENT_REORDER</code> est maintenant envoyé quand les enfants de <code>frames</code> et d'<code>iframes</code> changent, ainsi que lors de la modification du document principal des enfants. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=420845" title="FIXED: Fire event_reorder on any embedded frames/iframes whos document has just loaded.">bug 420845</a>.</li> + <li>Désormais toute sélection en cours est correctement supprimée avant de sélectionner une ligne spécifique.</li> +</ul> + +<h2 id="Voir_également">Voir également</h2> + +<div class="multiColumnList"> +<ul> +<li><a href="/fr/docs/Mozilla/Firefox/Versions/3.5">Firefox 3.5 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3">Firefox 3 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/2">Firefox 2 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/1.5">Firefox 1.5 pour les développeurs</a></li></ul> +</div> diff --git a/files/fr/mozilla/firefox/versions/3/index.html b/files/fr/mozilla/firefox/versions/3/index.html new file mode 100644 index 0000000000..79519fa181 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/3/index.html @@ -0,0 +1,272 @@ +--- +title: Firefox 3 pour les développeurs +slug: Mozilla/Firefox/Versions/3 +tags: + - Firefox + - Firefox 3 +translation_of: Mozilla/Firefox/Releases/3 +--- +<div>{{FirefoxSidebar}}</div><p>Pour les développeurs qui désirent prendre connaissance de toutes les nouvelles fonctionnalités de Firefox 3, c'est ici qu'il convient de commencer. Cet article fournit la liste des nouveaux articles couvrant les fonctionnalités qui ont été ajoutées à Firefox 3. Même s'il ne couvre pas nécessairement chaque petite modification, il vous aidera à découvrir les améliorations majeures.</p> + +<h2 id="Nouvelles_fonctionnalit.C3.A9s_pour_les_d.C3.A9veloppeurs_dans_Firefox_3" name="Nouvelles_fonctionnalit.C3.A9s_pour_les_d.C3.A9veloppeurs_dans_Firefox_3">Nouvelles fonctionnalités pour les développeurs dans Firefox 3</h2> + +<h3 id="Pour_les_d.C3.A9veloppeurs_de_sites_et_d.27applications_Web" name="Pour_les_d.C3.A9veloppeurs_de_sites_et_d.27applications_Web">Pour les développeurs de sites et d'applications Web</h3> + +<dl> + <dt><a href="/fr/Mise_%C3%A0_jour_des_applications_Web_pour_Firefox_3" title="fr/Mise_à_jour_des_applications_Web_pour_Firefox_3">Mise à jour des applications Web pour Firefox 3</a></dt> + <dd>Fournit des informations concernant les changements que vous devrez éventuellement prendre en compte pour permettre à votre site ou application Web de profiter des nouvelles fonctionnalités de Firefox 3.</dd> +</dl> + +<dl> + <dt><a href="/fr/%C3%89v%C3%A8nements_online_et_offline" title="fr/Évènements_online_et_offline">Évènements online et offline</a></dt> + <dd>Firefox 3 gère les évènements online et offline définis par le WHATWG, qui permettent aux applications et extensions de détecter si une connexion Internet active est disponible, ainsi que de détecter l'activation et la désactivation de la connexion.</dd> +</dl> + +<dl> + <dt><a href="/fr/Gestionnaires_de_protocoles_web" title="fr/Gestionnaires_de_protocoles_web">Gestionnaires de protocoles web</a></dt> + <dd>Il est à présent possible d'enregistrer des applications Web en tant que gestionnaires de protocoles à l'aide de la méthode <code>navigator.registerProtocolHandler()</code>.</dd> +</dl> + +<dl> + <dt><a href="/fr/Dessin_de_texte_avec_canvas" title="fr/Dessin_de_texte_avec_canvas">Dessin de texte avec canvas</a></dt> + <dd>Il est possible de dessiner du texte dans un élément canvas dans Firefox 3 avec une API non normalisée.</dd> +</dl> + +<dl> + <dt><a href="/fr/Tutoriel_canvas/Transformations#Transformations" title="fr/Tutoriel_canvas/Transformations#Transformations">Support des transformations pour canvas</a></dt> + <dd>Firefox gère à présent les méthodes <code>transform()</code> et <code>setTransform()</code> sur les éléments canvas.</dd> +</dl> + +<dl> + <dt><a href="/fr/Utilisation_de_microformats" title="fr/Utilisation_de_microformats">Utilisation de microformats</a></dt> + <dd>Firefox dispose à présent d'API permettant de travailler avec des microformats.</dd> +</dl> + +<dl> + <dt><a href="/fr/%C3%89v%C3%A8nements_de_glisser-d%C3%A9poser" title="fr/Évènements_de_glisser-déposer">Évènements de glisser-déposer</a></dt> + <dd>Firefox 3 gère de nouveaux évènements envoyés au nœud source d'une opération de glisser-déposer lorsque le glisser débute et se termine.</dd> +</dl> + +<dl> + <dt><a href="/fr/Gestion_du_focus_en_HTML" title="fr/Gestion_du_focus_en_HTML">Gestion du focus en HTML</a></dt> + <dd>Les nouveaux attributs <code>activeElement</code> et <code>hasFocus</code> de HTML 5 sont gérés.</dd> +</dl> + +<dl> + <dt><a href="/fr/Ressources_hors_ligne_dans_Firefox" title="fr/Ressources_hors_ligne_dans_Firefox">Ressources hors ligne dans Firefox</a></dt> + <dd>Firefox permet applications Web de demander que des ressources soient mises en cache pour permettre leur utilisation en mode hors ligne.</dd> +</dl> + +<dl> + <dt><a href="/fr/Am%C3%A9liorations_CSS_dans_Firefox_3" title="fr/Améliorations_CSS_dans_Firefox_3">Améliorations CSS dans Firefox 3</a></dt> + <dd>Firefox 3 propose un certain nombre d'améliorations dans son support CSS.</dd> +</dl> + +<dl> + <dt><a href="/fr/Am%C3%A9liorations_DOM_dans_Firefox_3" title="fr/Améliorations_DOM_dans_Firefox_3">Améliorations DOM dans Firefox 3</a></dt> + <dd>Firefox 3 propose un certain nombre de nouvelles fonctionnalités dans son implémentation DOM, comme la gestion de plusieurs extensions d'Internet Explorer au DOM.</dd> +</dl> + +<dl> + <dt><a href="/fr/Nouveaut%C3%A9s_dans_JavaScript_1.8" title="fr/Nouveautés_dans_JavaScript_1.8">Support de JavaScript 1.8</a></dt> + <dd>JavaScript 1.8 est fourni avec Firefox 3.</dd> +</dl> + +<dl> + <dt><a href="/fr/EXSLT" title="fr/EXSLT">Support d'EXSLT</a></dt> + <dd>Firefox 3 permet d'utiliser une partie importante des extensions <a href="/fr/EXSLT" title="fr/EXSLT">EXSLT</a> à <a href="/fr/XSLT" title="fr/XSLT">XSLT</a>.</dd> +</dl> + +<dl> + <dt><a href="/fr/Am%C3%A9liorations_SVG_dans_Firefox_3" title="fr/Améliorations_SVG_dans_Firefox_3">Améliorations SVG dans Firefox 3</a></dt> + <dd>La gestion du SVG dans Firefox 3 a été mise à jour de manière substantielle, avec plus d'une vingtaine de nouveaux filtres, plusieurs nouveaux éléments et attributs, et quelques autres améliorations.</dd> +</dl> + +<dl> + <dt><a href="/fr/Images_PNG_anim%C3%A9es" title="fr/Images_PNG_animées">Images PNG animées</a></dt> + <dd>Firefox 3 gère le format d'images PNG animées (APNG).</dd> +</dl> + +<h3 id="Pour_les_d.C3.A9veloppeurs_XUL_et_d.27extensions" name="Pour_les_d.C3.A9veloppeurs_XUL_et_d.27extensions">Pour les développeurs XUL et d'extensions</h3> + +<h4 id="Am.C3.A9liorations_et_modifications_notables" name="Am.C3.A9liorations_et_modifications_notables">Améliorations et modifications notables</h4> + +<dl> + <dt><a href="/fr/Mise_%C3%A0_jour_des_extensions_pour_Firefox_3" title="fr/Mise_à_jour_des_extensions_pour_Firefox_3">Mise à jour des extensions pour Firefox 3</a></dt> + <dd>Un guide fournissant tout ce qu'il faut savoir pour mettre à jour une extension afin de la faire fonctionner avec Firefox 3.</dd> +</dl> + +<dl> + <dt><a href="/fr/Am%C3%A9liorations_XUL_dans_Firefox_3" title="fr/Améliorations_XUL_dans_Firefox_3">Améliorations XUL dans Firefox 3</a></dt> + <dd>Firefox 3 offre un certain nombre de nouveaux éléments XUL, dont de nouvelles échelles coulissantes, des sélecteurs de date et d'heure, et des boîtes d'incrément (spin buttons).</dd> +</dl> + +<dl> + <dt><a href="/fr/Templates_dans_Firefox_3" title="fr/Templates_dans_Firefox_3">Templates dans Firefox 3</a></dt> + <dd>Les templates ont été notablement améliorés dans Firefox 3. Le plus remarquable est la possibilité d'utiliser des processeur de requêtes personnalisés permettant d'utiliser d'autres sources de données que RDF.</dd> +</dl> + +<dl> + <dt><a href="/fr/Versions_d'une_extension,_mise_%C3%A0_jour_et_compatibilit%C3%A9#Mises_.C3.A0_jour_s.C3.A9curis.C3.A9es" title="fr/Versions_d'une_extension,_mise_à_jour_et_compatibilité#Mises_.C3.A0_jour_s.C3.A9curis.C3.A9es">Mises à jour sécurisées</a></dt> + <dd>Afin que le processus de mise à jour soit plus sûr pour les utilisateurs, les modules complémentaires doivent à présent fournir une méthode sécurisée de distribution des mises à jour avant de pouvoir être installés. Les modules hébergés sur <a class="external" href="http://addons.mozilla.org">AMO</a> fournissent ceci automatiquement. Tout module installé ne fournissant pas une méthode de mise à jour sécurisée lorsque l'utilisateur migrera vers Firefox 3 sera désactivé automatiquement. Firefox continuera cependant à vérifier si des mises à jour sont disponibles au travers du chemin non sécurisé et essayera d'installer toute mise à jour proposée (l'installation échouera si la mise à jour ne propose pas non plus de méthode de mise à jour sécurisée).</dd> +</dl> + +<dl> + <dt><a href="/fr/Guide_de_migration_vers_Places" title="fr/Guide_de_migration_vers_Places">Guide de migration vers Places</a></dt> + <dd>Un article concernant la migration d'une application existante pour utiliser l'API Places.</dd> +</dl> + +<dl> + <dt><a href="/fr/Am%C3%A9liorations_du_gestionnaire_de_t%C3%A9l%C3%A9chargement_dans_Firefox_3" title="fr/Améliorations_du_gestionnaire_de_téléchargement_dans_Firefox_3">Améliorations du gestionnaire de téléchargement dans Firefox 3</a></dt> + <dd>Le gestionnaire de téléchargement de Firefox 3 comprend de nouvelles API et d'autres améliorations, comme la gestion de plusieurs écouteurs de progression.</dd> +</dl> + +<dl> + <dt><a href="/fr/Utilisation_de_nsILoginManager" title="fr/Utilisation_de_nsILoginManager">Utilisation de nsILoginManager</a></dt> + <dd>Le gestionnaire de mots de passe a été remplacé par le nouveau gestionnaire d'identification.</dd> +</dl> + +<dl> + <dt><a href="/fr/XBL/R%C3%A9f%C3%A9rence_XBL_1.0/%C3%89l%C3%A9ments#binding" title="fr/XBL/Référence_XBL_1.0/Éléments#binding">Intégration de liaisons XBL</a></dt> + <dd>Il est à présent possible d'utiliser le schéma d'URL <code>data:</code> depuis du code chrome pour intégrer des liaisons XBL directement au lieu de devoir les placer dans des fichiers XML séparés.</dd> +</dl> + +<dl> + <dt><a href="/fr/Localisation_des_descriptions_d'extensions" title="fr/Localisation_des_descriptions_d'extensions">Localisation des descriptions d'extensions</a></dt> + <dd>Firefox 3 propose une nouvelle méthode de localisation des métadonnées des modules complémentaires. Ceci permet de disposer des détails localisés dès le téléchargement du module, et même s'il est désactivé.</dd> +</dl> + +<dl> + <dt><a href="/fr/Localisation_et_pluriels" title="fr/Localisation_et_pluriels">Localisation et pluriels</a></dt> + <dd>Firefox 3 ajout un nouveau module PluralForm fournissant des outils pour aider à mettre des mots correctement au pluriel dans diverses localisations.</dd> +</dl> + +<dl> + <dt><a href="/fr/Changements_dans_les_th%C3%A8mes_pour_Firefox_3" title="fr/Changements_dans_les_thèmes_pour_Firefox_3">Changements dans les thèmes pour Firefox 3</a></dt> + <dd>Notes et informations pour ceux qui voudraient créer des thèmes pour Firefox 3.</dd> +</dl> + +<h4 id="Nouveaux_composants_et_fonctionnalit.C3.A9s" name="Nouveaux_composants_et_fonctionnalit.C3.A9s">Nouveaux composants et fonctionnalités</h4> + +<dl> + <dt><a href="/fr/FUEL" title="fr/FUEL">Bibliothèque FUEL</a></dt> + <dd>FUEL sert à améliorer la productivité des développeurs d'extensions en minimisant certaines des formalités XPCOM et en ajoutant certaines idées « modernes » de JavaScript.</dd> +</dl> + +<dl> + <dt><a href="/fr/Places" title="fr/Places">Places</a></dt> + <dd>Les API d'historique et de marque-pages ont été entièrement remplacés par la nouvelle API <a href="/fr/Places" title="fr/Places">Places</a>.</dd> +</dl> + +<dl> + <dt><a href="/fr/nsIIdleService" title="fr/nsIIdleService">Service Idle</a></dt> + <dd>Firefox 3 propose une nouvelle interface {{ Interface("nsIIdleService") }} qui permet aux extensions de savoir depuis quand l'utilisateur n'a plus appuyé sur une touche ou déplacé la souris.</dd> +</dl> + +<dl> + <dt><a href="/fr/NsIZipWriter" title="fr/NsIZipWriter">ZIP writer</a></dt> + <dd>La nouvelle interface {{ Interface("nsIZipWriter") }} permet aux extensions de pouvoir créer des archives ZIP.</dd> +</dl> + +<dl> + <dt><a href="/fr/Zoom_pleine_page" title="fr/Zoom_pleine_page">Zoom pleine page</a></dt> + <dd>Firefox 3 améliore l'expérience utilisateur en offrant un zoom complet des pages en plus du simple zoom de texte.</dd> +</dl> + +<dl> + <dt><a href="/fr/Interfa%C3%A7age_avec_le_collecteur_de_cycles_XPCOM" title="fr/Interfaçage_avec_le_collecteur_de_cycles_XPCOM">Interfaçage avec le collecteur de cycles XPCOM</a></dt> + <dd>XPCOM peut à présent bénéficier du collecteur de cycles, qui permet de s'assurer que la mémoire inutilisée est libérée et d'éviter les fuites mémoire.</dd> +</dl> + +<dl> + <dt><a href="/fr/Le_gestionnaire_de_threads" title="fr/Le_gestionnaire_de_threads">Le gestionnaire de threads</a></dt> + <dd>Firefox 3 propose une nouvelle interface {{ Interface("nsIThreadManager") }}, accompagnée de nouvelles interfaces pour les threads et les évènements liés, qui offre une manière pratique de créer et gérer des threads dans votre code.</dd> +</dl> + +<dl> + <dt><a href="/fr/Modules_JavaScript" title="fr/Modules_JavaScript">Modules JavaScript</a></dt> + <dd>Firefox 3 offre un mécanisme de modules de code partagés permettant de créer facilement des modules en JavaScript qui pourront être chargés par des extensions et applications, de manière similaire à des bibliothèques partagées.</dd> +</dl> + +<dl> + <dt><a href="/fr/NsIJSON" title="fr/NsIJSON">L'interface <code>nsIJSON</code></a></dt> + <dd>Firefox 3 propose la nouvelle interface {{ Interface("nsIJSON") }}, qui offre des chaînes de caractères <a href="/fr/JSON" title="fr/JSON">JSON</a> de codage et décodage en haute performance.</dd> +</dl> + +<dl> + <dt><a href="/fr/NsIParentalControlsService" title="fr/NsIParentalControlsService">L'interface nsIParentalControlsService</a></dt> + <dd>Firefox 3 gère à présent la fonctionnalité de contrôle parental de Microsoft Windows Vista, et permet au code d'interagir directement avec elle.</dd> +</dl> + +<dl> + <dt><a href="/fr/Utilisation_des_pr%C3%A9f%C3%A9rences_de_contenu" title="fr/Utilisation_des_préférences_de_contenu">Utilisation des préférences de contenu</a></dt> + <dd>Firefox 3 fournit un nouveau service permettant de définir et de lire des préférences particulières à un site, que des extensions ou le programme peuvent utiliser pour conserver des informations sur les préférences de l'utilisateur concernant certains sites.</dd> +</dl> + +<dl> + <dt><a href="/fr/Surveillance_des_plugins" title="fr/Surveillance_des_plugins">Surveillance des plugins</a></dt> + <dd>Un nouveau composant du système de plugins est à présent disponible pour mesurer le temps mis par les plugins (par exemple Macromedia Flash) pour exécuter leurs appels.</dd> +</dl> + +<h4 id="Bugs_corrig.C3.A9s" name="Bugs_corrig.C3.A9s">Bugs corrigés</h4> + +<dl> + <dt><a href="/fr/Bugs_importants_corrig%C3%A9s_dans_Firefox_3" title="fr/Bugs_importants_corrigés_dans_Firefox_3">Bugs importants corrigés dans Firefox 3</a></dt> + <dd>Cet article fournit des informations concernant les bugs corrigés dans Firefox 3.</dd> +</dl> + +<h2 id="Nouvelles_fonctionnalit.C3.A9s_pour_les_utilisateurs" name="Nouvelles_fonctionnalit.C3.A9s_pour_les_utilisateurs">Nouvelles fonctionnalités pour les utilisateurs</h2> + +<h3 id="Exp.C3.A9rience_utilisateur" name="Exp.C3.A9rience_utilisateur">Expérience utilisateur</h3> + +<ul> + <li><strong>Gestion simplifiée des mots de passe.</strong> Une barre d'information apparaît en haut de la fenêtre du navigateur pour permettre d'enregistrer le mot de passe après une identification réussie.</li> + <li><strong>Installation de modules simplifiée.</strong> Il est à présent possible d'installer des extensions depuis des sites tiers en un nombre réduit de clics, grâce au retrait de la liste blanche des sites de téléchargement de modules.</li> + <li><strong>Nouveau gestionnaire de téléchargement.</strong> Le gestionnaire de téléchargement permet de retrouver plus facilement vos fichiers téléchargés.</li> + <li><strong>Reprise des téléchargements.</strong> Il est à présent possible de reprendre des téléchargements après le redémarrage du navigateur ou la réinitialisation de votre connexion au réseau.</li> + <li><strong>Zoom pleine page.</strong> Depuis le menu Affichage et à l'aide de raccourcis clavier, il est à présent possible d'agrandir et de réduire le contenu de pages entières — il ne s'agit plus simplement du texte mais également de la mise en page et des images.</li> + <li><strong>Défilement des onglets et menu rapide.</strong> Les onglets sont plus faciles à identifier avec le nouveau défilement des onglets et leur menu rapide.</li> + <li><strong>Enregistrement de votre session.</strong> Firefox 3 vous demande si vous désirez enregistrer vos onglets ouverts lorsque vous quittez Firefox.</li> + <li><strong>Comportement d'ouverture dans des onglets optimisé.</strong> L'ouverture d'un dossier de marque-pages dans des onglets ajoute une série de nouveaux onglets au lieu de remplacer les onglets existants.</li> + <li><strong>Barres d'adresse et de recherche plus faciles à redimensionner.</strong> Il est à présent aisé de redimensionner les barres d'adresse et de recherche grâce à une poignée de redimensionnement située entre les deux.</li> + <li><strong>Améliorations dans la sélection de texte.</strong> Il est à présent possible de sélectionner plusieurs sections de texte à l'aide de la touche Ctrl (Command sur Macintosh). Un double clic avec déplacement sélectionne en mode « mot à mot ». Un triple clic sélectionne tout le paragraphe.</li> + <li><strong>Barre de recherche.</strong> La barre de recherche dans la page s'ouvre avec le contenu de la sélection courante.</li> + <li><strong>Gestion des plugins.</strong> Les utilisateurs peuvent désactiver des plugins particuliers dans le gestionnaire de modules complémentaires.</li> + <li><strong>Intégration dans Windows Vista.</strong> Les menus de Firefox s'affichent à présent avec le thème natif de Vista.</li> + <li><strong>Intégration dans Mac OS X.</strong> Firefox utilise le correcteur orthographique de Mac OS X et gère <a class="external" href="http://growl.info/">Growl</a> pour les notifications de téléchargements terminés et de mises à jour disponibles.</li> + <li><strong>Bouton « Star ».</strong> Le nouveau bouton en forme d'étoile dans la Barre d'adresse permet d'ajouter rapidement un marque-page en un clic. Un second clic permet de ranger et de mettre des étiquettes sur le nouveau marque-page.</li> + <li><strong>Étiquettes.</strong> Vous pouvez associer des étiquettes à vos marque-pages pour les trier facilement par sujet.</li> + <li><strong>Barre d'adresse et autocomplétion.</strong> Entrez le titre ou l'étiquette d'une page dans la Barre d'adresse pour retrouver rapidement le site que vous cherchez dans votre historique et vos marque-pages. Des indicateurs reprenant l'icône du site, le marque-page et les étiquettes associés vous aident à savoir d'où viennent les résultats.</li> + <li><strong>Dossier de marque-pages intelligent.</strong> Le nouveau Classeur de Firefox permet d'accéder rapidement à vous pages récemment marquées et étiquetées, ainsi qu'aux pages que vous visitez fréquemment.</li> + <li><strong>Organiseur de marque-pages et d'historique.</strong> La nouvelle gestion unifiée des marque-pages et de l'historique vous permet d'y effectuer rapidement des recherches avec des vues multiples et des dossier dynamiques permettant de conserver vos recherches les plus fréquentes.</li> + <li><strong>Gestionnaire de protocoles Web.</strong> Des applications Web, comme les webmails, peuvent à présent être utilisées comme des applications de bureau pour gérer les liens <code>mailto:</code> venant d'autres sites. Une gestion similaire est fournie pour d'autres protocoles. (Notez que les applications Web doivent s'enregistrer elles-mêmes dans Firefox avant que cela fonctionne.)</li> + <li><strong>Actions de téléchargement faciles à utiliser.</strong> Un nouveau panneau de préférences d'applications fournit une interface améliorée pour la configuration de gestionnaires pour différents types de fichiers et de protocoles.</li> + <li><strong>Apparence visuelle améliorée.</strong> La gestion des images et des polices a été améliorée pour permettre aux sites d'être mieux rendus sur votre écran, avec un rendu des polices plus précis et une meilleure gestion des polices avec des ligatures et des écritures complexes. En outre, les utilisateurs de Mac et Linux (Gnome) remarqueront que Firefox se comporte plus que jamais comme une application native sur leur plateforme, avec une nouvelle apparence.</li> + <li><strong>Gestion des couleurs.</strong> En définissant la préférence <code>gfx.color_management.enabled</code> dans <code>{{ mediawiki.external('about:config') }}</code>, vous pouvez demander à Firefox d'utiliser les profils de couleur intégrés dans les images afin d'ajuster la représentation des couleurs à votre écran d'affichage.</li> + <li><strong>Fonctionnement hors ligne.</strong> Les applications Web peuvent bénéficier de nouvelles fonctionnalités leur permettant d'être utilisées même sans connexion Internet active.</li> +</ul> + +<h3 id="S.C3.A9curit.C3.A9_et_vie_priv.C3.A9e" name="S.C3.A9curit.C3.A9_et_vie_priv.C3.A9e">Sécurité et vie privée</h3> + +<ul> + <li><strong>Informations sur un site en un clic.</strong> Vous voulez en savoir plus sur le site affiché ? Cliquez sur son icône dans la Barre d'adresse pour en connaître le propriétaire. Les informations d'identité sont affichées plus clairement et plus faciles à comprendre.</li> + <li><strong>Protection contre les logiciels malveillants.</strong> Firefox 3 vous avertit si vous vous rendez sur un site connu pour installer des virus, spywares, troyens ou d'autres logiciels dangereux. Vous pouvez voir à quoi cet avertissement ressemble en <a class="link-https" href="https://www.mozilla.com/firefox/its-an-attack.html">visitant cette page</a>.</li> + <li><strong>Protection contre les sites contrefaits améliorée.</strong> Lorsque vous visitez une page suspectée d'être une contrefaçon, une page spéciale s'affiche au lieu du contenu de la page avec un avertissement. <a class="link-https" href="https://www.mozilla.com/firefox/its-a-trap.html">Visitez cette page</a> pour voir à quoi elle ressemble.</li> + <li><strong>Erreurs SSL plus faciles à comprendre.</strong> Les erreurs présentées lorsqu'un certificat SSL invalide est rencontré ont été clarifiées pour qu'il soit plus facile de comprendre la nature du problème.</li> + <li><strong>Protection contre les modules non à jour.</strong> Firefox 3 vérifie automatiquement les versions des modules et plugins et désactive les versions anciennes et non sûres.</li> + <li><strong>Mise à jour sécurisée des modules.</strong> La sécurité des mises à jour des modules a été améliorée en désactivant ceux qui ne fournissent pas un mécanisme de mise à jour sécurisé.</li> + <li><strong>Intégration des antivirus.</strong> Firefox 3 informe les logiciels antivirus lorsque des fichiers exécutables ont été téléchargés.</li> + <li><strong>Gestion du contrôle parental de Windows Vista.</strong> Firefox 3 prend en compte le paramètre système de contrôle parentale de Vista pour désactiver les téléchargements de fichiers.</li> +</ul> + +<h3 id="Performances" name="Performances">Performances</h3> + +<ul> + <li><strong>Fiabilité.</strong> Firefox 3 conserve à présent les marque-pages, l'historique, les cookies et les préférences dans une base de données sûre au niveau transactionnel. Cela signifie que vos données sont protégés contre la perte même si votre système se plante.</li> + <li><strong>Vitesse.</strong> Firefox 3 dispose d'une amélioration des performances grâce au remplacement de la partie s'occupant de l'affichage à l'écran, ainsi que la gestion de la disposition du contenu.</li> + <li><strong>Utilisation mémoire.</strong> Firefox 3 utilise la mémoire de manière plus efficiente avec plus de 300 bugs concernant des fuites mémoire corrigées et de nouvelles fonctionnalités aidant à identifier et libérer automatiquement les blocs mémoire qui ne sont plus utilisés.</li> +</ul> + +<h2 id="Voir_.C3.A9galement" name="Voir_.C3.A9galement">Voir également</h2> + +<p>{{Firefox_for_developers('2')}}</p> diff --git a/files/fr/mozilla/firefox/versions/35/index.html b/files/fr/mozilla/firefox/versions/35/index.html new file mode 100644 index 0000000000..12ed5c06b2 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/35/index.html @@ -0,0 +1,197 @@ +--- +title: Firefox 35 pour les développeurs +slug: Mozilla/Firefox/Versions/35 +tags: + - Firefox + - Guide + - Mozilla +translation_of: Mozilla/Firefox/Releases/35 +--- +<div><section class="Quick_links" id="Quick_Links"> + <ol> + <li class="toggle"> + <details> + <summary>Notes de versions pour développeurs</summary> + <ol> + <li><a href="/fr/docs/Mozilla/Firefox/Releases">Notes de versions pour développeurs</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Modules complémentaires</summary> + <ol> + <li><a href="/fr/Add-ons/WebExtensions">WebExtensions</a></li> + <li><a href="/fr/Add-ons/Themes">Thèmes</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Fonctionnement interne de Firefox</summary> + <ol> + <li><a href="/fr/docs/Mozilla/">Le projet Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Gecko">Gecko</a></li> + <li><a href="/fr/docs/Mozilla/Firefox/Headless_mode">Mode « headless »</a></li> + <li><a href="/fr/docs/Mozilla/JavaScript_code_modules">Modules de code Javascript</a></li> + <li><a href="/fr/docs/Mozilla/js-ctypes">JS-ctypes</a></li> + <li><a href="/fr/docs/Mozilla/MathML_Project">Le projet MathML</a></li> + <li><a href="/fr/docs/Mozilla/MFBT">MFBT</a></li> + <li><a href="/fr/docs/Mozilla/Projects">Les projets Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Preferences">Le système de préférences</a></li> + <li><a href="/fr/docs/Mozilla/WebIDL_bindings">Connexions WebIDL</a></li> + <li><a href="/fr/docs/Mozilla/Tech/XPCOM">XPCOM</a></li> + <li><a href="/fr/docs/Mozilla/Tech/XUL">XUL</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Développer et contribuer</summary> + <ol> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions">Instructions de compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions/Configuring_Build_Options">Configuration des options de compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions/How_Mozilla_s_build_system_works">Fonctionnement de la compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Code source de Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Localization">Localisation</a></li> + <li><a href="/fr/docs/Mozilla/Mercurial">Mercurial</a></li> + <li><a href="/fr/docs/Mozilla/QA">Assurance qualité</a></li> + <li><a href="/fr/docs/Mozilla/Using_Mozilla_code_in_other_projects">Utilisation de code Mozilla dans d'autres projets</a></li> + </ol> + </details> + </li> + </ol> +</section></div><h2 id="Changement_concernant_les_développeurs">Changement concernant les développeurs</h2> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<p>Liens:</p> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector#.3A.3Abefore_and_.3A.3Aafter">See ::before and ::after pseudo elements in the Page Inspector</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Style_Editor#Source_map_support">CSS source maps are now enabled by default</a></li> + <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector#Element_popup_menu_2">"Show DOM Properties" from the Page Inspector</a></li> +</ul> + +<p><a class="external-icon external" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&chfieldto=2014-10-13&chfield=resolution&query_format=advanced&chfieldfrom=2014-09-02&chfieldvalue=FIXED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Profiler&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Storage%20Inspector&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20Timeline&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20Web%20Audio%20Editor&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&component=Developer%20Tools%3A%20WebIDE&component=Simulator&product=Firefox&product=Firefox%20OS&list_id=11184176">Tous les bugs des outils de développement résolus entre Firefox 34 et Firefox 35</a>.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>La proprieté <a href="/fr/docs/Web/CSS/mask-type" title="La propriété mask-type définit si un masque sera utilisé comme un masque de luminance ou comme un masque de transparence (aussi appelé masque alpha). Cette propriété s'applique sur l'élément SVG <mask>. Le comportement de cette propriété peut être surchargée par la propriété mask-mode qui définit sur quel élément le masque est appliqué. De façon générale, les masques alpha sont appliqués plus rapidement que les masques de luminance."><code>mask-type</code></a> a été activée par défaut (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1058519" title="FIXED: Ship mask-type CSS property">bug 1058519</a>).</li> + <li>La propieté <a href="/fr/docs/Web/CSS/filter" title="La propriété filter permet d'appliquer des filtres et d'obtenir des effets graphiques de flou, de saturation, etc. Les filtres sont généralement utilisés pour ajuster le rendu d'une image, d'un arrière-plan ou des bordures."><code>filter</code></a> est maintenant activée par défaut (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1057180" title="FIXED: Turn on CSS Filters by default (by enabling about:config pref)">bug 1057180</a>).</li> + <li>La fonction <a href="/fr/docs/Web/CSS/@font-face" title="La règle @ @font-face permet de définir les polices d'écriture à utiliser pour afficher le texte de pages web. Cette police peut être chargée depuis un serveur distant ou depuis l'ordinateur de l'utilisateur. Si la fonction local() est utilisée, elle indique à l'agent utilisateur de prendre en compte une police présente sur le poste de l'utilisateur."><code>@font-face</code></a> est maintenant compatible avec les polices de type WOFF2 (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1064737" title="FIXED: support WOFF2 fonts via @font-face">bug 1064737</a>).</li> + <li>La notation fonctionnelle <a href="/fr/docs/Web/CSS/symbol()" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>symbol()</code></a> est maintenant supportée(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=966168" title="FIXED: Implement symbols() CSS function">bug 966168</a>).</li> + <li>L'API CSS Font Loading a été implémentée (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1028497" title="FIXED: implement the CSS Font Loading API">bug 1028497</a>).</li> + <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">En utilisant <a href="/fr/docs/Web/CSS/appearance" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-appearance</code></a> avec la valeur <code>none</code> sur un menu de type </span></span><code>select</code><span><span>, le bouton</span></span> déroulant est maintenant supprimé (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=649849" title="FIXED: Make -moz-appearance:none on a combobox remove the dropdown button">bug 649849</a>).</li> + <li>La propriété accessor <code>element.style["css-property-name"]</code> a maintenant été ajoutée pour correspondre aux autres navigateurs (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=958887" title='FIXED: Add support for element.style["css-property-name"] non-standard extension'>bug 958887</a>).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Les obsolètes <code>et non conformes bottommargin</code>, <code>leftmargin</code>, <code>rightmargin</code> and <code>topmargin</code> attributs de l'élement <code><a href="/fr/docs/Web/HTML/Element/body" title="L'élément <body> représente le contenu principal du document HTML. Il ne peut y avoir qu'un élément <body> par document."><code><body></code></a> </code> ont été activés en mode non-quirks (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=95530" title="FIXED: topmargin and leftmargin attributes on the BODY element should be honored in all modes (not just Quirks mode)">bug 95530</a>).</li> + <li>Les <a href="/en-US/docs/Web/Web_Components/HTML_Imports">imports HTML</a> sont maintenant supportés (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=877072" title="FIXED: Implement HTML Imports">bug 877072</a>).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>La "<a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone_and_errors_with_let">temporal dead zone</a>" pour les déclarations <a href="/en-US/docs/Web/JavaScript/Reference/Statements/let"><code>let</code></a> a été implementée. <span class="short_text" id="result_box" lang="fr"><span>En conformité</span></span> avec les sémantiques <code>let </code>ES6, les situations suivantes renvoyent des erreurs. Voir aussi cet<a href="https://groups.google.com/forum/#!topic/mozilla.dev.platform/tezdW299Zds"> annoncement de newsgroup </a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1001090" title='FIXED: Implement ES6 "temporal dead zone" for let'>bug 1001090</a>. + + <ul> + <li>Redéclarer des variables existantes ou arguments utilisant <code>let</code> sans la même portée dans le corps de fonctions est maintenant une erreur de syntaxe.</li> + <li>Utiliser une variable déclarée <span class="short_text" id="result_box" lang="fr"><span>en utilisant</span></span> <code>let</code> dans le corps de fonctions avant la déclaration de cette variable est maintenant une <span class="short_text" id="result_box" lang="fr"><span>erreur d'exécution</span></span>.</li> + </ul> + </li> + <li>ES6 <a href="/fr/docs/Web/JavaScript/Reference/Symbols" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>Symbols</code></a> (<span class="short_text" id="result_box" lang="fr"><span>disponible uniquement dans Nightly</span></span>) a été mis à jour pour être conforme avec les récents changements de spécification : + <ul> + <li><code>String(Symbol("1"))</code> ne renvoie maintenant une <a href="/fr/docs/Web/JavaScript/Reference/Objets_globaux/TypeError" title="L'objet TypeError représente une erreur qui intervient lorsque la valeur n'est pas du type attendu."><code>TypeError</code></a>; au lieu d'un string (<code>"Symbol(1)"</code>) (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1058396" title="FIXED: String(aSymbol) now returns the symbol’s description in ES6 draft rev 27">bug 1058396</a>).</li> + <li>Les divers <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects">constructeurs <em>TypedArray</em></a> ont maintenant comme <code>[[Prototype]]</code> une simple fonction, notée <code>%TypedArray%</code> en ES6 (m<span class="short_text" id="result_box" lang="fr"><span>ais pas directement exposé</span></span>). Chaque prototype de tableau typé hérite maintenant de <code>%TypedArray%.prototype</code>. (<code>%TypedArray%</code> et <code>%TypedArray%.prototype</code> hérite eux-mêmes de <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype"><code>Function.prototype</code></a> et <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype"><code>Object.prototype</code></a>, respectivement, ainsi ce constructeur et ces instances de tableau typé ont aussi les propriétés de ces objets.) Les propriétés des fonctions de tableau typés se trouvent maintenant sur <code>%TypedArray%.prototype</code> et fonctionnent sur tous les tableaux typés. Voir <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Description"><em>TypedArray</em></a> et <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=896116" title="FIXED: Implement ES6 %TypedArray% superclass that all ArrayBufferViews inherit from">bug 896116</a> pour plus d'information.</li> + </ul> + </li> + <li>Les semantiques ES6 pour les <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Prototype_mutation">mutations de prototype utilisant les <em>initialisateurs d'objet</em></a> ont été implémentées (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1061853" title="FIXED: Implement ES6 object-literal __proto__ restrictions/semantics">bug 1061853</a>). + <ul> + <li>Maintenant un seul membre noté <code>__proto__:value</code> peut changer <code>le [[Prototype]]</code> dans la syntaxe de l'initialisateur d'objet.</li> + <li>Les membres de méthode comme <code>__proto__() {}</code> ne réecrivent pas le <code>[[Prototype]]</code>.</li> + </ul> + </li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>L'interface <a href="/fr/docs/Web/API/NavigatorLanguage" title="NavigatorLanguage contains methods and properties related to the language of the navigator."><code>NavigatorLanguage</code></a> est maintenant disponible aux développeurs sur <a href="/fr/docs/Web/API/WorkerNavigator" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>WorkerNavigator</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=925849" title="FIXED: WorkerNavigator does not implement NavigatorLanguage">bug 925849</a>).</li> + <li>La méthode <a href="/fr/docs/Web/API/Element/closest" title="La méthode Element.closest() renvoie l'ancêtre le plus proche de l'élément courant (ou l'élément courant) qui correspond aux sélecteurs passés comme paramètres. S'il n'existe pas de tel ancêtre, la méthode renvoie null."><code>Element.closest</code></a> retourne <span class="short_text" id="result_box" lang="fr"><span>l'ancêtre le plus proche de l'élément utilisé</span></span> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1055533" title="FIXED: Implement Element.closest()">bug 1055533</a>).</li> + <li>Appui expérimental pour la propriété <a href="/fr/docs/Web/API/CanvasRenderingContext2D/filter" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>CanvasRenderingContext2D.filter</code></a> a été ajouté sous le nom <code>canvas.filters.enabled</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=927892" title="FIXED: Exposing the CSS/SVG Filters as Canvas APIs">bug 927892</a>).</li> + <li>Our experimental implementation of Web Animations progresses with the landing of the <a href="/fr/docs/Web/API/Animation/target" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>Animation.target</code></a> property. This always is behind the dom.animations-api.core.enabled pref, off by default (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1067701" title="FIXED: Implement Animation.target">bug 1067701</a>).</li> + <li>The <a href="/fr/docs/Web/API/Element/hasAttributes" title="La méthode Element.hasAttributes() renvoie une valeur booléenne indiquant si le nœud courant a au moins un attribut ou non."><code>hasAttributes()</code></a> method has been moved from <a href="/fr/docs/Web/API/Node" title="Un Node (nœud) est une interface de laquelle un nombre d'objets de type DOM API héritent ; il permet à ces différents types d'être traités de manière similaire, par exemple en héritant du même ensemble de méthodes, ou en étant testés de manière similaire."><code>Node</code></a> to <a href="/fr/docs/Web/API/Element" title="Element est la classe de base la plus générale à partir de laquelle tous les objets d'un Document héritent. Il n'a que des méthodes et des propriétés communes à tous les types d'éléments. Les classes plus spécifiques héritent d'Element. Par exemple, l'interface HTMLElement est l'interface de base pour les éléments HTML, tandis que l'interface SVGElement est la base de tous les éléments SVG. La plupart des fonctionnalités sont spécifiées plus bas dans la hiérarchie des classes."><code>Element</code></a> as required by the spec (<a href="/fr/docs/Web/API/1055773" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>1055773</code></a>).</li> + <li><a href="/en-US/docs/WebSockets">Websockets</a> can now be used in <a href="/en-US/docs/Web/Guide/Performance/Using_web_workers">Workers</a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=504553" title="FIXED: WebSocket in Workers">bug 504553</a>).</li> + <li>The <code>crossOrigin</code> reflected attribute of <a href="/fr/docs/Web/API/HTMLImageElement" title="L'interface HTMLImageElement fournit des propriétés et des méthodes spéciales pour manipuler la mise en page et la présentation des éléments <img> ."><code>HTMLImageElement</code></a>, <a href="/fr/docs/Web/API/HTMLLinkElement" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>HTMLLinkElement</code></a>, <a href="/fr/docs/Web/API/HTMLMediaElement" title="L'interface HTMLMediaElement ajoute à HTMLElement les propriétés et les méthodes nécessaires pour prendre en charge les fonctionnalités de base liées aux médias qui sont communes aux vidéos et aux documents audios. HTMLVideoElement et HTMLAudioElement héritent de cette interface."><code>HTMLMediaElement</code></a>, <a href="/fr/docs/Web/API/HTMLScriptElement" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>HTMLScriptElement</code></a>, and <a href="/fr/docs/Web/API/SVGScriptElement" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>SVGScriptElement</code></a> only accepts valid values, and <code>""</code> isn't, <code>null</code> has to be used instead (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=880997" title="FIXED: Reflect crossOrigin as a limited enumerated attribute">bug 880997</a>).</li> + <li>The Resource Timing API has been activated by default (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1002855" title="FIXED: Turn on Resource Timing">bug 1002855</a>).</li> + <li>To match the spec, the first argument of <a href="/fr/docs/Web/API/Selection/containsNode" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>Selection.containsNode()</code></a> cannot be <code>null</code> anymore (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1068058" title="FIXED: Update Selection.containsNode according to the spec">bug 1068058</a>).</li> + <li>The new <a href="/fr/docs/Web/API/ImageCapture" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>ImageCapture</code></a> API has been implemented: <a href="/fr/docs/Web/API/ImageCapture/takePhoto" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>ImageCapture.takePhoto()</code></a> is available (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=916643" title="FIXED: ImageCapture - Implement WebIDL and takePhoto()">bug 916643</a>).</li> + <li>Non-HTTP <a href="/fr/docs/Web/API/XMLHttpRequest" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>XHR</code></a> request now returns <code>200</code> in case of success (instead of the erroneous <code>0</code>) (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=716491" title="FIXED: Investigate the status code for non-HTTP XHR.">bug 716491</a>).</li> + <li>The internal, non-standard, <a href="/fr/docs/Web/API/File/mozFullPath" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>File.mozFullPath</code></a> property is no more visible from content (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1048293" title="FIXED: File::mozFullPath attribute should not be exposed to content.">bug 1048293</a>).</li> + <li>The constructor of <a href="/fr/docs/Web/API/File" title="L'objet File fournit un tableau contenant des informations sur l'accès au contenu du ou des fichiers selectionnés, des informations sur le type mime, la taille, le nom des fichiers ainsi que le nombre de fichiers selectionnés. Ils sont généralement extraits d'un objet FileList retourné comme résultat lors de la sélection des fichiers en utilisant un input de type file, ou à partir d'un objet DataTransfer lors d'un glisser-déposer."><code>File</code></a> has been extended to match the specification (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=10457483" title="ERROR: Bug 10457483 does not exist.">bug 10457483</a>).</li> + <li>An experimental implementation of <a href="/fr/docs/Web/API/AbortablePromise" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>AbortablePromise</code></a>, a promise that can be aborted by a different entity that the one who created it, has been added. It is prefixed with <code>Moz</code> and controlled by the <code>dom.abortablepromise.enabled </code>property, defaulting to <code>false</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1035060" title="FIXED: Implement AbortablePromise">bug 1035060</a>).</li> + <li>La propriété non standardisée <a href="/fr/docs/Web/API/Navigator/mozIsLocallyAvailable" title="Permet de déterminer si une ressource donnée est disponible."><code>Navigator.mozIsLocallyAvailable</code></a> a été supprimée (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1066826" title="FIXED: Remove Navigator::MozisLocallyAvailable API">bug 1066826</a>).</li> +</ul> + +<h3 id="MathML"> MathML</h3> + +<ul> + <li>La fonction <code>dtls</code> OpenType (via les CSS <a href="/fr/docs/Web/CSS/font-feature-settings" title="La propriété font-feature-settings permet de contrôler les fonctionnalités typographiques des polices OpenType."><code>font-feature-settings</code></a> sur la feuille de styles par défaut) est maintenant appliquée automatiquement aux éléments MathML lors du <span class="short_text" id="result_box" lang="fr"><span>positionnement</span></span> des scripts au-dessus (e.g. dotless i with mathematical hat).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>Aucun changement.</em></p> + +<h3 id="AudioVideo">Audio/Video</h3> + +<p><em>Aucun changement.</em></p> + +<h2 id="Réseau_Sécurité">Réseau & Sécurité</h2> + +<ul> + <li>L'<span class="short_text" id="result_box" lang="fr"><span>entête</span></span> HTTP/2 <code>alt-svc</code> est maintenant supportée (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1003448" title="FIXED: http/2 alt-svc support">bug 1003448</a>).</li> + <li>L'extension <a href="/en-US/docs/Web/Security/Public_Key_Pinning">Public Key Pinning</a> pour HTTP (HPKP) a été implementée (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=787133" title="FIXED: Implement Public Key Pinning Extension for HTTP (HPKP)">bug 787133</a>).</li> +</ul> + +<h2 id="Changements_pour_les_modules_et_les_développeurs_Mozilla">Changements pour les modules et les développeurs Mozilla</h2> + +<h3 id="XUL_Modules">XUL & Modules</h3> + +<ul> + <li>La méthode privée <code>_getTabForBrowser()</code> sur l'élement <code><a href="/fr/docs/Mozilla/Tech/XUL/tabbrowser" title="tabbrowser">tabbrowser</a></code> a été remplacée. <span class="short_text" id="result_box" lang="fr"><span>À</span></span> la place, nous avons ajouté une nouvelle méthode publique apellée <span id="m-getTabForBrowser"><code><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Méthodes/getTabForBrowser">getTabForBrowser</a></code></span>. Elle retourne assez prévisiblement l'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/tab" title="tab">tab</a></code> qui contient le spécifique <code><a href="/fr/docs/Mozilla/Tech/XUL/browser" title="browser">browser</a></code>.</li> + <li><code>Components.utils.now()</code>, correspondant à <a href="/fr/docs/Web/API/Performance/now" title="La méthode Performance.now() retourne un DOMHighResTimeStamp, mesuré en millisecondes, avec une précision de 5 millième de milliseconde (5 microsecondes)."><code>Performance.now()</code></a> a été implémenté pour les codes Chrome sans fenêtre ouverte (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=969490" title="FIXED: Implement Components.utils.now() to match Performance.now() for non-window chrome code">bug 969490</a>).</li> +</ul> + +<h3 id="Module_SDK">Module SDK</h3> + +<h4 id="Titres">Titres</h4> + +<ul> + <li>Ajout de <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item#Adding_an_access_key">clés d'accès pour le menu contextuel</a>.</li> + <li>Suppression de <code>isPrivateBrowsing</code> de <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/windows#BrowserWindow"><code>BrowserWindow</code></a>.</li> +</ul> + +<h4 id="Détails">Détails</h4> + +<p><a class="external external-icon" href="https://github.com/mozilla/addon-sdk/compare/firefox34...firefox35">Commits de GitHub effectués entre Firefox 34 et Firefox 35</a>. Ceci ne comprendra pas les évolutions après la sortie officielle.</p> + +<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&chfieldto=2014-10-13&chfield=resolution&query_format=advanced&chfieldfrom=2014-09-02&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&product=Add-on%20SDK&list_id=11562840">Bugs corrigés entre Firefox 34 et Firefox 35</a>. Ceci ne comprendra pas les évolutions après la sortie officielle.</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="/en-US/docs/Mozilla/Firefox/Releases/35/Site_Compatibility">Compatibilité web pour Firefox 35</a></li> +</ul> + +<h2 id="Anciennes_versions">Anciennes versions</h2> + +<div class="multiColumnList"> +<ul> +<li><a href="/fr/docs/Mozilla/Firefox/Versions/34">Firefox 34 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/33">Firefox 33 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/32">Firefox 32 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/31">Firefox 31 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/30">Firefox 30 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/29">Firefox 29 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/28">Firefox 28 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/27">Firefox 27 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/26">Firefox 26 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/25">Firefox 25 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/24">Firefox 24 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/23">Firefox 23 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/22">Firefox 22 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/21">Firefox 21 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/20">Firefox 20 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/19">Firefox 19 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/18">Firefox 18 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/17">Firefox 17 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/16">Firefox 16 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/15">Firefox 15 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/14">Firefox 14 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/13">Firefox 13 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/12">Firefox 12 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/11">Firefox 11 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/10">Firefox 10 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/9">Firefox 9 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/8">Firefox 8 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/7">Firefox 7 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/6">Firefox 6 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/5">Firefox 5 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/4">Firefox 4 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3.6">Firefox 3.6 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3.5">Firefox 3.5 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3">Firefox 3 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/2">Firefox 2 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/1.5">Firefox 1.5 pour les développeurs</a></li></ul> +</div> diff --git a/files/fr/mozilla/firefox/versions/35/site_compatibility/index.html b/files/fr/mozilla/firefox/versions/35/site_compatibility/index.html new file mode 100644 index 0000000000..326b53a4b0 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/35/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 35 +slug: Mozilla/Firefox/Versions/35/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 35 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/35/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/35/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/versions/4/index.html b/files/fr/mozilla/firefox/versions/4/index.html new file mode 100644 index 0000000000..050e4cfe06 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/4/index.html @@ -0,0 +1,640 @@ +--- +title: Firefox 4 pour les développeurs +slug: Mozilla/Firefox/Versions/4 +tags: + - Firefox + - Firefox 4 +translation_of: Mozilla/Firefox/Releases/4 +--- +<div><section class="Quick_links" id="Quick_Links"> + <ol> + <li class="toggle"> + <details> + <summary>Notes de versions pour développeurs</summary> + <ol> + <li><a href="/fr/docs/Mozilla/Firefox/Releases">Notes de versions pour développeurs</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Modules complémentaires</summary> + <ol> + <li><a href="/fr/Add-ons/WebExtensions">WebExtensions</a></li> + <li><a href="/fr/Add-ons/Themes">Thèmes</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Fonctionnement interne de Firefox</summary> + <ol> + <li><a href="/fr/docs/Mozilla/">Le projet Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Gecko">Gecko</a></li> + <li><a href="/fr/docs/Mozilla/Firefox/Headless_mode">Mode « headless »</a></li> + <li><a href="/fr/docs/Mozilla/JavaScript_code_modules">Modules de code Javascript</a></li> + <li><a href="/fr/docs/Mozilla/js-ctypes">JS-ctypes</a></li> + <li><a href="/fr/docs/Mozilla/MathML_Project">Le projet MathML</a></li> + <li><a href="/fr/docs/Mozilla/MFBT">MFBT</a></li> + <li><a href="/fr/docs/Mozilla/Projects">Les projets Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Preferences">Le système de préférences</a></li> + <li><a href="/fr/docs/Mozilla/WebIDL_bindings">Connexions WebIDL</a></li> + <li><a href="/fr/docs/Mozilla/Tech/XPCOM">XPCOM</a></li> + <li><a href="/fr/docs/Mozilla/Tech/XUL">XUL</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Développer et contribuer</summary> + <ol> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions">Instructions de compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions/Configuring_Build_Options">Configuration des options de compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions/How_Mozilla_s_build_system_works">Fonctionnement de la compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Code source de Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Localization">Localisation</a></li> + <li><a href="/fr/docs/Mozilla/Mercurial">Mercurial</a></li> + <li><a href="/fr/docs/Mozilla/QA">Assurance qualité</a></li> + <li><a href="/fr/docs/Mozilla/Using_Mozilla_code_in_other_projects">Utilisation de code Mozilla dans d'autres projets</a></li> + </ol> + </details> + </li> + </ol> +</section></div> + +<p>Firefox 4, est sorti le 22 mars 2011, améliore les performances, le support d'HTML5 et d'autres technologies du web et aussi la sécurité. Cet article fournit des informations sur cette version et sur les fonctionnalités qui sont disponibles pour les développeurs Web, les développeurs de modules complémentaires et les développeurs de la plate-forme Gecko.</p> + +<h2 id="Fonctionnalités_pour_les_développeurs_Web">Fonctionnalités pour les développeurs Web</h2> + +<p>Gecko utilise maintenant le parseur <a class="internal" href="https://developer.mozilla.org/fr/HTML/HTML5" title="HTML5">HTML5</a>, qui corrige des bugs, améliore l'interopérabilité et les performances. Il permet également d'intégrer du contenu <a class="internal" href="https://developer.mozilla.org/fr/SVG" title="SVG">SVG</a> et <a class="internal" href="https://developer.mozilla.org/fr/MathML" title="MathML">MathML</a> directement dans le code HTML.</p> + +<h3 id="HTML">HTML</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/HTML/HTML5/HTML5_Parser" title="HTML5/HTML5 Parser">Rencontrez le parseur HTML5</a></dt> + <dd>Un aperçu sur ce que le parseur HTML5 représente pour vous et comment intégrer du contenu SVG et MathML dans votre code.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/HTML/Forms_in_HTML" title="HTML/Forms in HTML5">Les formulaires en HTML5</a></dt> + <dd>Un aperçu de l'amélioration de formulaires Web en HTML5. Parmi les changements on ajoute les types d'entrée dans l'élément <a href="/fr/docs/Web/HTML/Element/input" title="L'élément HTML <input> est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément <input> dépend fortement de la valeur indiquée dans son attribut type."><code><input></code></a>, la validation des données et d'autres modifications.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Sections_and_Outlines_of_an_HTML5_document" title="Sections and Outlines of an HTML5 document">Sections HTML5</a></dt> + <dd>Gecko supporte à présent les nouveaux éléments HTML5 liés aux sections dans un document : <a href="/fr/docs/Web/HTML/Element/article" title="L'élément HTML <article> représente du contenu autonome dans un document, une page, une application, ou un site. Ceci peut être un message sur un forum, un article de journal ou de magazine, une parution sur un blog, un commentaire d'utilisateur, un widget ou gadget interactif, ou tout autre élément de contenu indépendant. Ce contenu est prévu pour être distribué ou réutilisé indépendamment (par exemple dans un flux de syndication)."><code><article></code></a>, <a href="/fr/docs/Web/HTML/Element/section" title="L'élément HTML <section> représente une section générique d'un document, par exemple un groupe de contenu thématique. Une section commence généralement avec un titre."><code><section></code></a>, <a href="/fr/docs/Web/HTML/Element/nav" title="L'élément HTML <nav> représente une section d'une page ayant des liens vers d'autres pages ou des fragments de cette page. Autrement dit, c'est une section destinée à la navigation dans un document (avec des menus, des tables des matières, des index, etc.)."><code><nav></code></a>, <a href="/fr/docs/Web/HTML/Element/aside" title="L'élément HTML <aside> (en anglais, "aparté") représente une partie d'un document dont le contenu n'a qu'un rapport indirect avec le contenu principal du document."><code><aside></code></a>, <a href="/fr/docs/Web/HTML/Element/hgroup" title="L'élément HTML <hgroup> représente un titre de plusieurs niveaux pour une section d'un document. Il regroupe un ensemble d'éléments <h1>–<h6>."><code><hgroup></code></a>, <a href="/fr/docs/Web/HTML/Element/header" title="L'élément HTML <header> représente un groupe de contenu introductif ou de contenu aidant à la navigation. Il peut contenir des éléments de titre, mais aussi d'autres éléments tels qu'un logo, un formulaire de recherche, etc."><code><header></code></a> et <a href="/fr/docs/Web/HTML/Element/footer" title="L'élément HTML <footer> représente le pied de page de la section ou de la racine de sectionnement la plus proche. Un pied de page ou de section contient habituellement des informations sur l'auteur de la section, les données relatives au droit d'auteur (copyright) ou les liens vers d'autres documents en relation."><code><footer></code></a>.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/fr/HTML/Global_attributes#hidden" title="HTML/Global attributes#hidden">Attribut HTML5 hidden</a></dt> + <dd>Cet attribut, commun à tous les éléments, est utilisé pour cacher le contenu d'une page Web qui n'est pas encore pertinent pour l'utilisateur.</dd> + <dt>Autres éléments HTML5</dt> + <dd>Gecko supporte les nouveaux éléments HTML5 suivants : <a href="/fr/docs/Web/HTML/Element/mark" title="L'élément HTML <mark> représente un texte marqué ou surligné à cause de sa pertinence dans le contexte. Il peut par exemple être utilisé afin d'indiquer les correspondances d'un mot-clé recherché au sein d'un document."><code><mark></code></a>, <a href="/fr/docs/Web/HTML/Element/figure" title="L'élément HTML <figure> représente une figure (un schéma), qui peut être accompagné d'une légende grâce à l'élément <figcaption>. Il est normalement référencé de manière unique. C'est souvent une image, une illustration, un diagramme, un fragment de code ou un schéma auquel il est fait référence dans le texte principal mais qui peut être utilisé sur une autre page ou dans une annexe sans que cela affecte le contenu principal."><code><figure></code></a>, et <a href="/fr/docs/Web/HTML/Element/figcaption" title="L'élément HTML <figcaption> (pour figure caption en anglais) permet d'indiquer un sous-titre, une légende, associé à une figure ou à une illustration (cette dernière étant représentée par l'élément <figure> qui est le parent direct de la légende). L'élément <figcaption> est optionnel ; s'il n'est pas présent, la figure n'aura pas de légende."><code><figcaption></code></a>.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/WebSockets" title="WebSockets">WebSockets</a></dt> + <dd>Un guide pour utiliser la nouvelle API WebSockets pour la communication entre une application web et un serveur en temps réel. A noter que WebSockets tel qu'implémenté dans Firefox 4 n'est pas compatible avec la norme finale, et ne devrait pas être utilisé.</dd> +</dl> + +<h4 id="Améliorations_de_Canvas">Améliorations de Canvas</h4> + +<p>Les modifications suivantes ont étés apportées à l'interface <a href="/fr/docs/Web/API/CanvasRenderingContext2D" title="L'interface CanvasRenderingContext2D est utilisée pour dessiner des rectangles, du texte, des images et d'autres objets sur l'élément canvas. Il fournit le contexte de rendu 2D pour la surface de dessin d'un élément <canvas>."><code>CanvasRenderingContext2D</code></a> pour permettre à l'implémentation de <a href="/fr/docs/Web/HTML/Element/canvas" title="L'élément <canvas> permet de modifier une zone graphique via un script (habituellement en JavaScript ou grâce à WebGL). Il peut par exemple être utilisé afin de dessiner des graphiques, manipuler des images ou jouer des animations."><code><canvas></code></a> d'être en conformité avec la spécification :</p> + +<ul> + <li>La spécification d'un rayon négatif lors de l'appel d'<code>arc()</code> lance désormais correctement l'exception <code>INDEX_SIZE_ERR</code>.</li> + <li>La spécification de valeurs non finies lors de l'appel de <code>createLinearGradient()</code> et <code>createRadialGradient()</code> lance désormais <code>NOT_SUPPORTED_ERR</code> au lieu de <code>SYNTAX_ERR</code>.</li> + <li>Le réglage de <code>miterLimit</code> pour une valeur négative ne lance plus une exception, mais ignore plutôt les valeurs non-positives.</li> + <li>Le réglage de <code>lineWidth</code> pour une valeur négative ne lance plus une exception, mais ignore plutôt les valeurs non-positives.</li> + <li>La méthode <code>putImageData()</code> supporte désormais les paramètres optionnels <code>dirtyX</code>, <code>dirtyY</code>, <code>dirtyWidth</code> et <code>dirtyHeight</code>.</li> +</ul> + +<dl> +</dl> + +<h4 id="Autres_changements_HTML">Autres changements HTML</h4> + +<ul> + <li>L'élément <a href="/fr/docs/Web/HTML/Element/textarea" title="L'élément HTML <textarea> représente un contrôle qui permet d'éditer du texte sur plusieurs lignes."><code><textarea></code></a> est maintenant redimensionnable par défaut ; pour le désactiver, vous pouvez utiliser la propriété CSS <a href="/fr/docs/Web/CSS/resize" title="La propriété resize permet de contrôler le caractère redimensionnable d'un élément et notamment la direction dans laquelle celui-ci peut être redimensionné."><code>resize</code></a>.</li> + <li><code>canvas.getContext</code> et <code>canvas.toDataURL</code> ne lancent plus d'exceptions lorsqu'ils sont appelés avec des arguments non reconnus.</li> + <li>L'élément <a href="/fr/docs/Web/HTML/Element/canvas" title="L'élément <canvas> permet de modifier une zone graphique via un script (habituellement en JavaScript ou grâce à WebGL). Il peut par exemple être utilisé afin de dessiner des graphiques, manipuler des images ou jouer des animations."><code><canvas></code></a> supporte maintenant la méthode spécifique à Mozilla, <code>mozGetAsFile()</code>, qui permet d'obtenir un fichier basé sur l'image d'un contenu canvas. Voir <a href="/fr/docs/Web/API/HTMLCanvasElement" title="L'interface HTMLCanvasElement fournit un ensemble de propriétés et de méthodes pour manipuler la disposition et la représentation des éléments canvas. L'interface HTMLCanvasElement hérite également des propriétés et des méthodes de l'interface HTMLElement."><code>HTMLCanvasElement</code></a> pour les détails.</li> + <li><code>canvas2dcontext.lineCap</code> et <code>canvas2dcontext.lineJoin</code> ne lancent plus d'exceptions lorsqu'ils sont réglés avec une valeur non reconnue.</li> + <li><code>canvas2dcontext.globalCompositeOperation</code> ne lance plus d'exception lorsqu'il est réglé avec une valeur non reconnue et ne supporte plus la valeur <code>darker</code>, qui n'est pas un standard.</li> + <li>Le support de l'élément obsolète <a href="/fr/docs/Web/HTML/Element/spacer" title="L'élément HTML <spacer> était utilisé pour insérer des blancs au sein d'une page web. Il a été créé par Netscape pour obtenir le même effet que celui qui était créé avec des images GIF d'un pixel, permettant d'ajouter des espaces blancs. Cependant, <spacer> n'est pas pris en charge par les principaux navigateurs principaux et il faut utiliser les règles CSS pour obtenir ces effets d'alignement. Firefox ne prend plus en charge cet élément depuis la version 4."><code><spacer></code></a>, était absent de tous les autres navigateurs, a été enlevé.</li> + <li>L'élément <a href="/fr/docs/Web/HTML/Element/isindex" title="L'élément HTML <isindex> est un élément obsolète qui permet de placer un champ sur une page afin d'effectuer des recherches dans le document. <isindex> devait permettre de saisir une ligne de texte pour une requête, à la suite de cette saisie, le serveur renvoyait une liste de pages qui correspondait à la requête. La prise en charge de cet élément dépendait du navigateur et du serveur."><code><isindex></code></a>, qui était crée par <a href="/fr/docs/Web/API/Document/createElement" title="Dans un document HTML, la méthode document.createElement() crée un élément HTML du type spécifié par tagName ou un HTMLUnknownElement si tagName n’est pas reconnu."><code>document.createElement()</code></a>, est maintenant crée comme un simple élément sans propriétés ou méthodes.</li> + <li>Gecko supporte maintenant l'appel <code>click()</code> sur l'élément <a href="/fr/docs/Web/HTML/Element/input" title="L'élément HTML <input> est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément <input> dépend fortement de la valeur indiquée dans son attribut type."><code><input></code></a> pour ouvrir le sélecteur de fichiers. Voir l'<a class="internal" href="https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications#Using_hidden_file_input_elements_using_the_click()_method" title="Using files from web applications#Using hidden file input elements using the click() method">exemple</a> dans l'article <a class="internal" href="https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications" title="Using files from web applications">Using files from web applications</a>.</li> + <li>L'élément <a href="/fr/docs/Web/HTML/Element/input" title="L'élément HTML <input> est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément <input> dépend fortement de la valeur indiquée dans son attribut type."><code><input></code></a> supporte un nouvel attribut <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTML/Element/Input#attr-mozactionhint" title="HTML/Element/Input#attr-mozactionhint"><code>mozactionhint</code></a>, qui permet de spécifier l'étiquette de la touche Entrée sur un clavier virtuel.</li> + <li>L'élément <a href="/fr/docs/Web/HTML/Element/script" title="L'élément HTML <script> est utilisé pour intégrer ou faire référence à un script exécutable. Cela fait généralement référence à du code JavaScript mais ce peut également être un autre type de script (par exemple WebGL)."><code><script></code></a> à l'intérieur des éléments <a href="/fr/docs/Web/HTML/Element/iframe" title="Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !"><code><iframe></code></a>, <a href="/fr/docs/Web/HTML/Element/noembed" title="L'élément <noembed> est une façon obsolète et non standardisée de fournir une alternative de contenu pour les navigateurs ne supportant pas l'élément <embed> ou des catégories de contenu qu'un auteur aimerait utiliser. + Cet élément a été rendu obsolète à partir de la version HTML 4.01 et a été remplacé par <object>. Le contenu alternatif doit être inséré entre la balise d'ouverture et celle de fermeture de <object>"><code><noembed></code></a> et <a href="/fr/docs/Web/HTML/Element/noframes" title="L'élément HTML obsolète <noframes> est utilisé par les navigateurs qui ne supportent pas les éléments <frame>, ou qui sont configurés afin de ne pas les supporter."><code><noframes></code></a> sont maintenant exécutés, contrairement aux versions précédentes de Firefox. Ceci est conforme à la spécification et correspond au comportement des autres navigateurs.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/CSS_transitions" title="CSS transitions">Transitions CSS</a></dt> + <dd>Le support des transitions CSS est disponible dans Firefox 4.</dd> + <dt>Les valeurs calculées en CSS</dt> + <dd>Le support de <a href="/fr/docs/Web/CSS/-moz-calc" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-calc</code></a> a été ajouté. Cela permet de spécifier des valeurs de <a href="/fr/docs/Web/CSS/length" title="Le type de données CSS <length> correspond à une mesure de distance."><code><length></code></a> comme des expressions mathématiques.</dd> + <dt>Groupement de sélecteurs</dt> + <dd>Le support de <a href="/fr/docs/Web/CSS/:-moz-any" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>:-moz-any</code></a> pour grouper les sélecteurs et factoriser des combinateurs.</dd> + <dt>Support subrectangle pour background-image</dt> + <dd>La propriété <a href="/fr/docs/Web/CSS/-moz-image-rect" title="La propriété -moz-image-rect permet d'utiliser une seule partie d'une image pour un arrière-plan (contrairement à background-image). On peut ainsi utiliser une image qui regroupe plusieurs sprites à différentes fins, ce qui permet de diminuer le nombre de transfert réseau."><code>-moz-image-rect</code></a> permet d'utiliser des subrectangles en tant que <a href="/fr/docs/Web/CSS/background-image" title="La propriété background-image permet de définir une ou plusieurs images comme arrière(s)-plan(s) pour un élément."><code>background-image</code></a>.</dd> + <dt>Propriétés CSS tactile</dt> + <dd>Le support des propriétés tactiles a été ajouté. Plus de détails plus tard.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/fr/docs/CSS/element" title="CSS/element">Utilisation arbitraires d'élements comme fond</a></dt> + <dd>Vou pouvez utiliser la fonction CSS <a href="/fr/docs/Web/CSS/-moz-element" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-element</code></a> et la fonction DOM <a href="/fr/docs/Web/API/Document/mozSetImageElement" title="Change l'élément utilisé comme arrière-plan CSS par un arrière-plan avec un ID d'élément d'arrière-plan donné."><code>document.mozSetImageElement()</code></a> pour une utilisation arbitraire des éléments HTML comme fond.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/Privacy_and_the_:visited_selector" title="CSS/Privacy and the :visited selector">Sélecteur :visited et confidentialité</a></dt> + <dd>Des modifications ont étés apportées sur les informations qui peuvent être obtenues sur le style des liens visités en utilisant les sélecteurs CSS. Certaines applications Web peuvent être affectées.</dd> +</dl> + +<h4 id="Nouvelles_propriétés_CSS">Nouvelles propriétés CSS</h4> + +<table class="standard-table"> + <tbody> + <tr> + <td class="header">Propriété</td> + <td class="header">Description</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/-moz-font-feature-settings" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-font-feature-settings</code></a></td> + <td>Permet de personnaliser les fonctionnalités avancées des polices OpenType.</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/-moz-tab-size" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-tab-size</code></a></td> + <td>Spécifie la largeur d'un espace de tabulation (U+0009) lors du rendu du texte.</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/resize" title="La propriété resize permet de contrôler le caractère redimensionnable d'un élément et notamment la direction dans laquelle celui-ci peut être redimensionné."><code>resize</code></a></td> + <td>Permet de modifier les dimensions d'un élément.</td> + </tr> + </tbody> +</table> + +<dl> +</dl> + +<h4 id="Nouvelles_pseudo-classes_CSS">Nouvelles pseudo-classes CSS</h4> + +<table class="standard-table"> + <tbody> + <tr> + <td class="header">Pseudo-class</td> + <td class="header">Description</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/:-moz-handler-crashed" title="La pseudo-classe :-moz-handler-crashed permet de cibler un élément qui ne peut pas être affiché car le plugin sensé le dessiner a planté."><code>:-moz-handler-crashed</code></a></td> + <td>Utilisé pour le style d'un élément dont le plugin a planté.</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/:-moz-placeholder" title="REDIRECT :placeholder-shown"><code>:-moz-placeholder</code></a></td> + <td>Appliquée à l'espace texte réservé dans les champs des formulaires.</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/:-moz-submit-invalid" title="La pseudo-classe CSS :-moz-submit-invalid représente tout bouton <input> de type submit présent sur un formulaire dont le contenu n'est pas valide compte-tenu de ses contraintes de validation."><code>:-moz-submit-invalid</code></a></td> + <td>Appliquée au bouton d'envoi des formulaires quand un ou plusieurs des champs ne sont pas valides.</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/:-moz-window-inactive" title="La pseudo-classe :-moz-window-inactive, spécifique à Mozilla, correspond à n'importe quel élément qui se trouve sur une fenêtre inactive."><code>:-moz-window-inactive</code></a></td> + <td>Appliquée aux éléments d'une fenêtre inactive.</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/:invalid" title="La pseudo-classe :invalid cible tout élément <input> pour lequel la validation du contenu échoue par rapport au type de donnée attendu. Ceci permet de mettre en forme les champs non valides pour aider l'utilisateur à identifier et à corriger les erreurs."><code>:invalid</code></a></td> + <td>Automatiquement appliquée aux champs <a href="/fr/docs/Web/HTML/Element/input" title="L'élément HTML <input> est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément <input> dépend fortement de la valeur indiquée dans son attribut type."><code><input></code></a> dont le contenu est invalide.</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/:optional" title="La pseudo-classe :optional permet de cibler les éléments <input> ou <textarea> pour lesquels l'attribut required n'est pas activé. Cela permet ainsi d'indiquer et de mettre en forme les champs facultatifs d'un formulaire."><code>:optional</code></a></td> + <td>Automatiquement appliquée aux champs <a href="/fr/docs/Web/HTML/Element/input" title="L'élément HTML <input> est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément <input> dépend fortement de la valeur indiquée dans son attribut type."><code><input></code></a> qui ne spécifient pas l'attribut <code>required</code>.</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/:required" title="La pseudo-classe :required permet de cibler un élément <input> pour lequel l'attribut required est activé. Cela permet de mettre en forme les éléments obligatoires pour remplir correctement un formulaire."><code>:required</code></a></td> + <td>Automatiquement appliquée aux champs <a href="/fr/docs/Web/HTML/Element/input" title="L'élément HTML <input> est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément <input> dépend fortement de la valeur indiquée dans son attribut type."><code><input></code></a> qui spécifient l'attribut <code>required</code>.</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/:valid" title="La pseudo-classe :valid permet de cibler tout élément <input> ou <form> dont la validation du contenu s'effectue correctement par rapport au type de donnée attendu. On peut ainsi facilement mettre en forme les champs correctement remplis par l'utilisateur."><code>:valid</code></a></td> + <td>Automatiquement appliquée aux champs <a href="/fr/docs/Web/HTML/Element/input" title="L'élément HTML <input> est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément <input> dépend fortement de la valeur indiquée dans son attribut type."><code><input></code></a> dont le contenu a été validé avec succès.</td> + </tr> + </tbody> +</table> + +<h4 id="Nouveaux_pseudo-selectors_CSS">Nouveaux pseudo-selectors CSS</h4> + +<table class="standard-table"> + <tbody> + <tr> + <td class="header">Pseudo-selector</td> + <td class="header">Description</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/:-moz-focusring" title="La pseudo-classe :-moz-focusring est similaire à la pseudo-classe :focus mais ne cible un élément que si celui-ci a le focus et qu'un indicateur doit être dessiné autour ou sur cet élément."><code>:-moz-focusring</code></a></td> + <td>Permet de spécifier l'apparence d'un élément lorsque Gecko estime que l'on doit se fixer dessus.</td> + </tr> + </tbody> +</table> + +<h4 id="Nouvelles_fonctions_CSS">Nouvelles fonctions CSS</h4> + +<table class="standard-table"> + <tbody> + <tr> + <td class="header">Fonction</td> + <td class="header">Description</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/:-moz-any" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>:-moz-any</code></a></td> + <td>Permet de grouper les sélecteurs et de factoriser les combinateurs.</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/-moz-calc" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-calc</code></a></td> + <td>Permet de spécifier des valeurs de <a href="/fr/docs/Web/CSS/length" title="Le type de données CSS <length> correspond à une mesure de distance."><code><length></code></a> comme des expressions mathématiques.</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/-moz-element" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-element</code></a></td> + <td>Permet d'utiliser un élément arbritaire de fond pour <a href="/fr/docs/Web/CSS/background-image" title="La propriété background-image permet de définir une ou plusieurs images comme arrière(s)-plan(s) pour un élément."><code>background-image</code></a> and <a href="/fr/docs/Web/CSS/background" title="La propriété CSS background est une propriété raccourcie qui permet de définir les différentes valeurs des propriétés liées à la gestion des arrière-plans d'un élément (couleur, image, origine, taille, répétition, etc.)."><code>background</code></a>.</td> + </tr> + <tr> + <td><a href="/fr/docs/Web/CSS/-moz-image-rect" title="La propriété -moz-image-rect permet d'utiliser une seule partie d'une image pour un arrière-plan (contrairement à background-image). On peut ainsi utiliser une image qui regroupe plusieurs sprites à différentes fins, ce qui permet de diminuer le nombre de transfert réseau."><code>-moz-image-rect</code></a></td> + <td>Permet d'utiliser un subrectangle d'une image comme <a href="/fr/docs/Web/CSS/background-image" title="La propriété background-image permet de définir une ou plusieurs images comme arrière(s)-plan(s) pour un élément."><code>background-image</code></a> or <a href="/fr/docs/Web/CSS/background" title="La propriété CSS background est une propriété raccourcie qui permet de définir les différentes valeurs des propriétés liées à la gestion des arrière-plans d'un élément (couleur, image, origine, taille, répétition, etc.)."><code>background</code></a>.</td> + </tr> + </tbody> +</table> + +<h4 id="Propriétés_CSS_renommées">Propriétés CSS renommées</h4> + +<table class="standard-table"> + <thead> + <tr> + <td class="header">Ancien nom</td> + <td class="header">Nouveau nom</td> + <td class="header">Notes</td> + </tr> + </thead> + <tbody> + <tr> + <td><code>-moz-background-size</code></td> + <td><a href="/fr/docs/Web/CSS/background-size" title="La propriété CSS background-size définit la taille des images d'arrière-plan pour l'élément. La taille de l'image peut être contrainte, complètement ou partiellement afin de conserver ses proportions."><code>background-size</code></a></td> + <td>Le nom <code>-moz-background-size</code> n'est plus supporté.</td> + </tr> + <tr> + <td><code>-moz-border-radius</code></td> + <td><a href="/fr/docs/Web/CSS/border-radius" title="La propriété border-radius permet de définir des coins arrondis pour la bordure d'un élément. La courbure de chaque coin est définie avec un ou deux rayons de courbures qui permettent de définir un arc de cercle ou un arc d'ellipse."><code>border-radius</code></a></td> + <td>L'ancien nom est encore pris en charge pour une durée limitée, le temps de mettre vos sites à jour. Le changement du rendu a été fait pour correspondre à la dernière version de la spécification.</td> + </tr> + <tr> + <td><code>-moz-box-shadow</code></td> + <td><a href="/fr/docs/Web/CSS/box-shadow" title="La propriété CSS box-shadow ajoute des ombres à la boîte d'un élément via une liste d'ombres séparées par des virgules. Une boîte d'ombre est définie avec des décalages horizontal et vertical par rapport à l'élément, avec des rayons de flou et d'étalement et avec une couleur."><code>box-shadow</code></a></td> + <td></td> + </tr> + </tbody> +</table> + +<h4 id="Divers_changements_CSS">Divers changements CSS</h4> + +<ul> + <li>La propriété <a href="/fr/docs/Web/CSS/text-shadow" title="La propriété text-shadow ajoute des ombres au texte. Elle accepte une liste d'ombres à appliquer au texte et aux décorations de l'élément. Chaque ombre est décrite par une certaine combinaison de décalages X et Y de l'élément, de rayon de flou et de couleur."><code>text-shadow</code></a> plafonne désormais son rayon de flou à 300px, pour des raisons de bon sens et de performances.</li> + <li>La propriété <a href="/fr/docs/Web/CSS/overflow" title="La propriété CSS overflow est une propriété raccourcie qui définit comment gérer le dépassement du contenu d'un élément dans son bloc. Elle définit les valeurs des propriétés overflow-x et overflow-y."><code>overflow</code></a> ne s'applique plus au groupe d'éléments de tableaux (<code><thead></code>, <code><tbody></code>, and <code><tfoot></code>).</li> + <li>La propriété <a href="/fr/docs/Web/CSS/-moz-appearance" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-appearance</code></a> supporte désormais la valeur <code>-moz-win-borderless-glass</code>, qui s'applique à un élément Aero sans bordure.</li> + <li>La fonctionnalité de média <code><a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/Media_queries#-moz-device-pixel-ratio" title="Media queries#-moz-device-pixel-ratio">-moz-device-pixel-ratio</a></code> a été ajoutée, permettant l'utilisation de pixels de l'appareil par ratio de pixels CSS qui sera utilisé dans les <a class="internal" href="https://developer.mozilla.org/fr/CSS/Media_queries" title="Media queries">Media Queries</a>.</li> + <li>La manipulation des <a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS-2_Quick_Reference/Units" title="CSS-2 Quick Reference/Units">unités CSS</a> dans Gecko a été révisé pour mieux correspondre à d'autres navigateurs, et plus précisément de traduire dans des longueurs absolues le nombre de pixels à l'écran basé sur le dispositif de la DPI.</li> +</ul> + +<h3 id="Graphisme_et_vidéo">Graphisme et vidéo</h3> + +<dl> + <dt></dt> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/WebGL" title="WebGL">WebGL</a></dt> + <dd>La norme WebGL (encore en développement) est maintenant supportée par Firefox.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Optimizing_graphics_performance" title="Optimizing graphics performance">Optimisation des performances graphique</a></dt> + <dd>Trucs et astuces pour profiter le maximum des performances graphiques et vidéo dans Firefox 4.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-Us/docs/Media_formats_supported_by_the_audio_and_video_elements#WebM" title="Media formats supported by the audio and video elements#WebM">Support de WebM</a></dt> + <dd>Le nouveau format vidéo ouvert <a class="external" href="http://www.webmproject.org/" title="http://www.webmproject.org/">WebM</a> est supporté par Gecko 2.0.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/SVG/SVG_animation_with_SMIL" title="SVG animation with SMIL">Animation SVG avec SMIL</a></dt> + <dd>Les animations SVG avec SMIL sont désomais supportées.</dd> + <dt>Utilisation de SVG comme image ou arrière-plan CSS</dt> + <dd>Vous pouvez maintenant utilisez SVG avec l'élément <a href="/fr/docs/Web/HTML/Element/img" title="L'élément HTML <img> permet de représenter une image dans un document. Cet élément est un élément remplacé."><code><img></code></a>, ainsi qu'avec CSS <a href="/fr/docs/Web/CSS/background-image" title="La propriété background-image permet de définir une ou plusieurs images comme arrière(s)-plan(s) pour un élément."><code>background-image</code></a>.</dd> + <dt>Attribut Media <code>buffered</code></dt> + <dd>L'attribut <code>buffered</code> sur les éléments <a href="/fr/docs/Web/HTML/Element/video" title="L'élément HTML <video> intègre un contenu vidéo dans un document."><code><video></code></a> and <a href="/fr/docs/Web/HTML/Element/audio" title="L'élément HTML <audio> est utilisé afin d'intégrer un contenu sonore dans un document. Il peut contenir une ou plusieurs sources audio représentées avec l'attribut src ou l'élément <source>. S'il y a plusieurs sources, l'agent utilisateur choisira celle qui convient le mieux."><code><audio></code></a> est maintenant supporté, vous permettant de déterminer quel fichier multimédia a été tamponné. L'interface DOM <a href="/fr/docs/Web/API/TimeRanges" title="L'interface TimeRanges est utilisée pour représenter un ensemble de plages de temps, principalement dans le but de savoir quelles portions du média ont été mises en mémoire tampon lors du chargement avec les éléments <audio> et <video>."><code>TimeRanges</code></a> a été mise en place pour ce support.</dd> + <dt>Attribut Media <code>preload</code></dt> + <dd>L'attribut <code>preload</code> de la spécification HTML5 a été implémenté, remplaçant l'attribut <code>autobuffer</code> précédemment mis en place (et qui n'est plus pris en charge). Cela affecte les éléments <a href="/fr/docs/Web/HTML/Element/video" title="L'élément HTML <video> intègre un contenu vidéo dans un document."><code><video></code></a> et <a href="/fr/docs/Web/HTML/Element/audio" title="L'élément HTML <audio> est utilisé afin d'intégrer un contenu sonore dans un document. Il peut contenir une ou plusieurs sources audio représentées avec l'attribut src ou l'élément <source>. S'il y a plusieurs sources, l'agent utilisateur choisira celle qui convient le mieux."><code><audio></code></a> ainsi que l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMHTMLMediaElement" title="">nsIDOMHTMLMediaElement</a></code>.</dd> + <dt>Amélioration du positionnement du texte SVG</dt> + <dd>Vous pouvez maintenant spécifier des listes des valeurs pour les propriétés <code>x</code>, <code>y</code>, <code>dx</code>, and <code>dy</code> sur les éléments SVG <a href="/fr/docs/Web/SVG/Element/text" title="L'élément SVG text définit un élément graphique contenant du texte. Notez qu'il est possible d'y appliquer un dégradé, un motif, un tracé spécifique (clipping path), un masque ou un filtre."><code><text></code></a> et <a href="/fr/docs/Web/SVG/Element/tspan" title="A l'intérieur d'un élément <text>, les propriétés du texte et des polices, ainsi que la position actuelle du texte, peuvent être ajustées de façon absolue ou relative à partir des coodonnées précisées dans un élément tspan."><code><tspan></code></a>. Cela vous permet de contrôler le positionnement de chaque caractère d'une chaîne, individuellement.</dd> +</dl> + +<h3 id="DOM">DOM</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_typed_arrays" title="JavaScript typed arrays">Tableaux JavaScript typés</a></dt> + <dd>Ajout du support pour les tableaux JavaScript typés, cela vous permet de manipuler des tampons contenant des données brutes en utilisant des types de données natives. Plusieurs API utilisent ça, y compris <a href="https://developer.mozilla.org/fr/docs/DOM/File" title="DOM/File">l'API File</a>, <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebGL" title="WebGL">WebGL</a> et <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebSockets" title="WebSockets">WebSockets</a>.</dd> + <dt>Obtention des limites des rectangles limites</dt> + <dd>L'objet <a href="/fr/docs/Web/API/Range" title="L'objet Range (littéralement : "étendue" ou "portée", ici : "segment") représente un fragment de document qui peut contenir des nœuds et des parties de nœuds texte dans un document donné."><code>Range</code></a> a désormais les méthodes <a href="/fr/docs/Web/API/Range/getClientRects" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>range.getClientRects()</code></a> et <a href="/fr/docs/Web/API/Range/getBoundingClientRect" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>range.getBoundingClientRect()</code></a>.</dd> + <dt>Capture des évènements de la souris sur des éléments quelconques</dt> + <dd>Ajout du support des APIs <code>setCapture()</code> et <code>releaseCapture()</code> originaires d'Internet Explorer. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=503943" title="FIXED: Need a way to grab mouse events on arbitrary elements (implement setCapture/releaseCapture)">bug 503943</a>.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history" title="DOM/Manipulating the browser history">Manipulation de l'historique du navigateur</a></dt> + <dd>L'objet de l'historique déjà existant et disponible via l'objet <a href="/fr/docs/Web/API/Window/history" title="La propriété en lecture seule Window.history renvoie une référence à l'objet History, qui offre la possibilité de manipuler l'historique de session du navigateur (pages visitées dans l'onglet ou le cadre dans lesquels la page courante est chargée)."><code>window.history</code></a>, supporte maintenant les nouvelles méthodes HTML5 <code>pushState()</code> et <code>replaceState()</code>.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Animations_using_MozBeforePaint" title="DOM/Animations using MozBeforePaint">Animations utilisant MozBeforePaint</a></dt> + <dd>Un nouvel évènement a été ajouté, qui, avec l'aide de la méthode <a href="/fr/docs/Web/API/Window/mozRequestAnimationFrame" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>window.mozRequestAnimationFrame()</code></a> et de la propriété <a href="/fr/docs/Web/API/Window/mozAnimationStartTime" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>window.mozAnimationStartTime</code></a>, offre un moyen de créer des animations qui sont synchronisées avec les autres.</dd> + <dt>Evènements touch et multi-touch</dt> + <dd>Ajout du support des évènements touch et multi-touch.</dd> +</dl> + +<h4 id="Changement_des_interfaces_DOM_déléments_HTML">Changement des interfaces DOM d'éléments HTML</h4> + +<p>Plusieurs éléments HTML ont vu leur interface DOM modifier, conformément à la spécification HTML5.</p> + +<table class="standard-table"> + <thead> + <tr> + <td class="header">Interface dans Firefox 3.6</td> + <td class="header">Interface dans Firefox 4</td> + <td class="header">Elements HTML</td> + </tr> + </thead> + <tbody> + <tr> + <td><code><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLSpanElement" title="DOM/HTMLSpanElement">HTMLSpanElement</a></code></td> + <td><code><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLElement" title="DOM/HTMLElement">HTMLElement</a></code></td> + <td><a href="/fr/docs/Web/HTML/Element/abbr" title="L'élément <abbr> représente une abréviation ou un acronyme et permet, de façon optionnelle, d'en fournir une description complète. S'il est présent, l'attribut title doit contenir cette même description complète et rien d'autre."><code><abbr></code></a>, <a href="/fr/docs/Web/HTML/Element/acronym" title="L'élément HTML <acronym>, pour les acronymes, permet aux auteurs de pages d'indiquer une suite de caractères composant un acronyme ou l'abréviation d'un mot."><code><acronym></code></a>, <a href="/fr/docs/Web/HTML/Element/address" title="L'élément HTML <address> indique des informations de contact pour une personne, un groupe de personnes ou une organisation."><code><address></code></a>, <a href="/fr/docs/Web/HTML/Element/b" title="L'élément <b> permet d'attirer l'attention du lecteur sur le contenu d'un élément sans que ce contenu revêt une importance particulière. Anciennement utilisé pour mettre le texte en gras. Cet élément ne doit pas être utilisé pour mettre en forme des éléments, c'est la propriété CSS font-weight qu'il faut utiliser. Si l'élément est d'une importance particulière, on utilisera l'élément HTML <strong>."><code><b></code></a>, <a href="/fr/docs/Web/HTML/Element/bdo" title="Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !"><code><bdo></code></a>, <a href="/fr/docs/Web/HTML/Element/big" title="L'élément <big> (gros) augmente d'une taille la police du texte de l'élément (il permet par exemple de passer de small à medium, ou de large à x-large) jusqu'à atteindre la taille maximale du navigateur."><code><big></code></a>, <a href="/fr/docs/Web/HTML/Element/blink" title="Cet élément n'est pas pris en charge et implémente donc l'interface HTMLUnknownElement."><code><blink></code></a>, <a href="/fr/docs/Web/HTML/Element/center" title="L’élément HTML <center> est un élément de type bloc qui contient des paragraphes et d'autres éléments de type bloc ou en ligne. Le contenu entier de cet élément est centré horizontalement au sein de son conteneur parent (généralement l'élément <body>)."><code><center></code></a>, <a href="/fr/docs/Web/HTML/Element/cite" title="L'élément HTML <cite> contient le titre d'une œuvre telle qu'un livre, une chanson, un film, une sculpture… Cet élément doit inclure le titre de l'œuvre. Cette référence peut-être abrégée en accord avec les conventions d'usages pour l'ajout des métadonnées de citations."><code><cite></code></a>, <a href="/fr/docs/Web/HTML/Element/code" title="L'élément HTML <code> représente un fragment de code machine. Par défaut, l'agent utilisateur utilise une police à chasse fixe (monospace) afin d'afficher le texte contenu dans cet élément."><code><code></code></a>, <a href="/fr/docs/Web/HTML/Element/dd" title="L'élément HTML <dd> (pour definition description) indique la définition d'un terme au sein d'une liste de définitions (élément (<dl>). Cet élément ne peut apparaître qu'en tant qu'élément appartenant à une liste de définitions et doit être précédé d'un élément <dt>."><code><dd></code></a>, <a href="/fr/docs/Web/HTML/Element/dfn" title="L'élément HTML <dfn> est utilisé afin d'indiquer le terme qui est en train d'être défini dans une phrase ou un paragraphe (sa définition est écrite dans son parent <p> ou <dt>/<dd> ou <section> le plus proche)."><code><dfn></code></a>, <a href="/fr/docs/Web/HTML/Element/dt" title="L'élément HTML <dt> identifie un terme dans une liste de définitions ou de descriptions. Cet élément n'apparaît qu'en tant qu'élément enfant d'un élément <dl> et est généralement suivi d'un élément <dd>."><code><dt></code></a>, <a href="/fr/docs/Web/HTML/Element/em" title="L'élément HTML <em> (pour emphase) est utilisé afin de marquer un texte sur lequel on veut insister. Les éléments <em> peuvent être imbriqués, chaque degré d'imbrication indiquant un degré d'insistance plus élevé."><code><em></code></a>, <a href="/fr/docs/Web/HTML/Element/i" title="L'élément HTML <i> représente un morceau de texte qui se différencie du texte principal. Cela peut par exemple être le cas pour des termes techniques, des phrases dans une langue étrangère ou encore l'expression des pensées d'un personnage. Le contenu de cet élément est généralement affiché en italique."><code><i></code></a>, <a href="/fr/docs/Web/HTML/Element/kbd" title="L'élément HTML <kbd> représente une plage de texte en ligne indiquant la saisie de texte par l'utilisateur à partir d'un clavier, d'une saisie vocale ou de tout autre dispositif de saisie de texte. Par convention, le rend par défaut le contenu d'un élément <kbd> en utilisant sa police monospace, bien que cela ne soit pas requis par le standard HTML."><code><kbd></code></a>, <a href="/fr/docs/Web/HTML/Element/listing" title="L'élément HTML <listing> affiche le texte compris entre les balises d'ouverture et de fermeture sans interpréter le HTML contenu, et en utilisant une police à chasse fixe. Le standard HTML 2 recommande de ne pas casser les lignes si elles ne sont pas plus grandes que 132 caractères."><code><listing></code></a>, <a href="/fr/docs/Web/HTML/Element/nobr" title="L'élément HTML <nobr> évite qu'un texte soit coupé par un retour à la ligne automatique ; il est donc affiché sur une seule ligne. Il peut être alors nécessaire d'utiliser les barres de défilement pour lire le texte en intégralité."><code><nobr></code></a>, <a href="/fr/docs/Web/HTML/Element/plaintext" title="L'élément HTML <plaintext> permet d'afficher du texte qui n'est pas interprété comme du HTML. Il ne possède pas de balise de fermeture, car tout ce qui suit n'est plus considéré comme du HTML."><code><plaintext></code></a>, <a href="/fr/docs/Web/HTML/Element/s" title="L'élément HTML <s> permet d'afficher du texte qui est barré car il n'est plus pertinent ou car il est obsolète. <s> ne doit pas être employé pour indiquer des éditions dans un document (on utilisera alors <del> et <ins>)."><code><s></code></a>, <a href="/fr/docs/Web/HTML/Element/samp" title="L'élément HTML <samp> est un élément qui permet de représenter un résultat produit par un programme informatique. Il est généralement affiché avec la police à chasse fixe du navigateur (par exemple en Courier ou en Lucida Console)."><code><samp></code></a>, <a href="/fr/docs/Web/HTML/Element/small" title="L'élément HTML <small> permet de représenter des commentaires ou des textes à écrire en petits caractères (des termes d'un contrat, des mentions relatives au droit d'auteur, etc.) quelle que soit la présentation."><code><small></code></a>, <a href="/fr/docs/Web/HTML/Element/strike" title="L'élément HTML <strike> permet de représenter du texte barré ou avec une ligne le traversant."><code><strike></code></a>, <a href="/fr/docs/Web/HTML/Element/strong" title="L'élément HTML <strong> indique que le texte a une importance particulière ou un certain sérieux voire un caractère urgent. Cela se traduit généralement par un affichage en gras."><code><strong></code></a>, <a href="/fr/docs/Web/HTML/Element/sub" title="L'élément HTML <sub> est utilisé, pour des raisons typographiques, afin d'afficher du texte souscrit (ou en indice) (plus bas et généralement plus petit) par rapport au bloc de texte environnant."><code><sub></code></a>, <a href="/fr/docs/Web/HTML/Element/sup" title="L'élément HTML <sup> est utilisé, pour des raisons typographiques, afin d'afficher du texte en exposant (plus haut et généralement plus petit) par rapport au bloc de texte environnant."><code><sup></code></a>, , <a href="/fr/docs/Web/HTML/Element/tt" title="L'élément HTML <tt> (pour Teletype Text) crée un élément en ligne, écrit dans la police à chasse fixe par défaut du navigateur. Cet élément a été conçu pour mettre en forme du texte comme s'il apparaissait sur un affichage à largeur fixe tel qu'un téléscripteur."><code><tt></code></a>, <a href="/fr/docs/Web/HTML/Element/u" title="L'élément HTML <u> permet d'afficher un fragment de texte qui est annoté avec des éléments non textuels. Par défaut, le contenu de l'élément est souligné. Cela pourra par exemple être le cas pour marquer un texte comme étant un nom propre chinois, ou pour marquer un texte qui a été mal orthographié."><code><u></code></a>, <a href="/fr/docs/Web/HTML/Element/var" title="L'élément HTML <var> représente une variable dans une expression mathématique ou un texte lié à la programmation. Son contenu est généralement représenté avec une version italique de la police environnante utilisée, toutefois, ce comportement peut dépendre du navigateur utilisé."><code><var></code></a>, <a href="/fr/docs/Web/HTML/Element/xmp" title="L'élément HTML <xmp> (pour example) affiche le texte entre les balises d'ouverture et de fermeture sans interpréter le HTML qu'il contient et en utilisant une police à chasse fixe. La spécification HTML 2 recommande un affichage suffisamment large pour contenir 80 caractères par ligne."><code><xmp></code></a></td> + </tr> + <tr> + <td><code><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLDivElement" title="DOM/HTMLDivElement">HTMLDivElement</a></code></td> + <td><code><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLElement" title="DOM/HTMLElement">HTMLElement</a></code></td> + <td><a href="/fr/docs/Web/HTML/Element/noembed" title="L'élément <noembed> est une façon obsolète et non standardisée de fournir une alternative de contenu pour les navigateurs ne supportant pas l'élément <embed> ou des catégories de contenu qu'un auteur aimerait utiliser. + Cet élément a été rendu obsolète à partir de la version HTML 4.01 et a été remplacé par <object>. Le contenu alternatif doit être inséré entre la balise d'ouverture et celle de fermeture de <object>"><code><noembed></code></a>, <a href="/fr/docs/Web/HTML/Element/noframes" title="L'élément HTML obsolète <noframes> est utilisé par les navigateurs qui ne supportent pas les éléments <frame>, ou qui sont configurés afin de ne pas les supporter."><code><noframes></code></a>, <a href="/fr/docs/Web/HTML/Element/noscript" title="L'élément HTML <noscript> définit un fragment HTML qui doit être affiché si les fonctionnalités de script ne sont pas prises en charge ou si elles sont désactivées."><code><noscript></code></a></td> + </tr> + <tr> + <td><code><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLWBRElement" title="DOM/HTMLWBRElement">HTMLWBRElement</a></code></td> + <td><code><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/HTMLElement" title="DOM/HTMLElement">HTMLElement</a></code></td> + <td><a href="/fr/docs/Web/HTML/Element/wbr" title="L'élément HTML <wbr> permet de représenter un emplacement où casser la ligne si nécessaire. Le navigateur pourra alors utiliser cet emplacement pour effectuer un saut de ligne si le texte est trop long et qu'en temps normal, une règle empêche le saut de ligne."><code><wbr></code></a></td> + </tr> + </tbody> +</table> + +<dl> +</dl> + +<h4 id="Divers_changements_DOM">Divers changements DOM</h4> + +<ul> + <li>L'enveloppement d'un élément <a href="/fr/docs/Web/HTML/Element/textarea" title="L'élément HTML <textarea> représente un contrôle qui permet d'éditer du texte sur plusieurs lignes."><code><textarea></code></a> peut maintenant être commandé via l'attribut DOM <code>wrap</code>. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=41464" title="FIXED: textarea.wrap not exposed through DOM (IE compatability)">bug 41464</a></li> + <li>Les éléments <a href="/fr/docs/Web/HTML/Element/script" title="L'élément HTML <script> est utilisé pour intégrer ou faire référence à un script exécutable. Cela fait généralement référence à du code JavaScript mais ce peut également être un autre type de script (par exemple WebGL)."><code><script></code></a> crées avec <a href="/fr/docs/Web/API/Document/createElement" title="Dans un document HTML, la méthode document.createElement() crée un élément HTML du type spécifié par tagName ou un HTMLUnknownElement si tagName n’est pas reconnu."><code>document.createElement()</code></a> et insérés dans un document, se comportent désormais conformément à la spécification HTML5. Les scripts avec l'attribut <code>src</code> s'exécute dès que possible (sasn maintenir la commande) et les scripts sans l'attribut <code>src</code> s'exécute de manière simultanée. Pour faire des scripts d'insertion de scripts qui ont l'attribut <code>src</code> qui exécute l'ensemble dans l'ordre d'insertion, pour eux <code>.async=false</code>.</li> + <li>Les objets DOM <a href="/fr/docs/Web/API/File" title="L’interface File fournit des informations sur des fichiers et permet au code JavaScript d’une une page web d’accéder à leurs contenus."><code>file</code></a> proposent désormais la propriété <code>url</code>.</li> + <li>Support de <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Using_FormData_objects" title="XMLHttpRequest/Using XMLHttpRequest#Using FormData objects">FormData</a> pour XMLHttpRequest.</li> + <li>La propriété <a href="/fr/docs/Web/API/Element/isContentEditable" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>element.isContentEditable</code></a> a été implémentée.</li> + <li>La propriété <a href="/fr/docs/Web/API/Document/currentScript" title="Retourne l'élément <script> dont le script est en cours de traitement."><code>document.currentScript</code></a> vous permet de déterminer quel script de l'élément <a href="/fr/docs/Web/HTML/Element/script" title="L'élément HTML <script> est utilisé pour intégrer ou faire référence à un script exécutable. Cela fait généralement référence à du code JavaScript mais ce peut également être un autre type de script (par exemple WebGL)."><code><script></code></a> est en cours d'exécution. les nouveaux évènements <a href="/fr/docs/Web/API/Element/onbeforescriptexecute" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>element.onbeforescriptexecute</code></a> et <a href="/fr/docs/Web/API/Element/onafterscriptexecute" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>element.onafterscriptexecute</code></a> sont déclenchés avant et après l'éxécution d'un élément script.</li> + <li>Ajout de la propriété <a class="internal" href="https://developer.mozilla.org/en-US/docs/DragDrop/DataTransfer#mozSourceNode" title="DragDrop/DataTransfer#mozSourceNode"><code>mozSourceNode</code></a> à l'objet <a class="internal" href="https://developer.mozilla.org/en-US/docs/DragDrop/DataTransfer" title="DragDrop/DataTransfer"><code>DragTransfer</code></a>.</li> + <li>Ajout de la méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Selection/modify" title="DOM/selection/modify"><code>selection.modify()</code></a> à l'objet <a href="/fr/docs/Web/API/Selection" title="La classe de l'objet retourné par window.getSelection(), document.getSelection() et d'autres méthodes."><code>Selection</code></a>, ce qui vous permet de facilement modifier la sélection de texte courant ou la position du curseur dans une fenêtre de navigateur.</li> + <li>Le support de l'objet <code>window.directories</code> et de la fonctionnalité <code>directories</code> pour <a href="/fr/docs/Web/API/Window/open" title="Crée une nouvelle fenêtre de navigation secondaire et y charge la ressource référencée."><code>window.open</code></a>, qui ne sont plus supportés dans les autres navigateurs, ont été enlevés. Utiliser <code>personalbar</code> à la place. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=474058" title="FIXED: Drop support for window.directories">bug 474058</a></li> + <li>La propriété <a href="/fr/docs/Web/API/Event/mozInputSource" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>event.mozInputSource</code></a> a été ajoutée à l'interface utilisateur des évènements DOM, cette propriété non-standard vous permet de déterminer le type de l'appareil qui a généré un évènement.</li> + <li>L'évènement <a href="/fr/docs/Web/API/Document/onreadystatechange" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>document.onreadystatechange</code></a> a été implémenté.</li> + <li>La méthode <a href="/fr/docs/Web/API/Document/createElement" title="Dans un document HTML, la méthode document.createElement() crée un élément HTML du type spécifié par tagName ou un HTMLUnknownElement si tagName n’est pas reconnu."><code>document.createElement</code></a> n'accepte plus <code><</code> et <code>></code> autour du nom de balise en mode quirks.</li> + <li>Les méthodes <a href="/fr/docs/Web/API/Element/setCapture" title="Appelez cette méthode pendant la gestion d'un évènement de la souris pour recibler tous les évènements de la souris sur cet élément jusqu'à ce que le bouton de la souris soit relâché ou que soit appelée document.releaseCapture()."><code>element.setCapture()</code></a> et <a href="/fr/docs/Web/API/Document/releaseCapture" title="Libère la capture de la souris si elle est actuellement activée (bouton gauche enfoncé) sur un élément de ce document. L'activation de la capture de la souris sur un élément se fait en appelant element.setCapture()."><code>document.releaseCapture()</code></a> ont été ajoutées, permettant à des éléments de poursuivre des évènements de la souris, même lorsqu'elle est en dehors de leur zone de suivi normal après que l'évènement <code>mousedown</code> soit survenu.</li> + <li>La propriété <a href="/fr/docs/Web/API/Window/mozPaintCount" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>window.mozPaintCount</code></a> a été ajoutée, elle vous permet de déterminer le nombre de fois q'un document a été peint. Cela est particulièrement utile lors des tests de performance de votre application web.</li> + <li>Le signe de la langue a été supprimé de <a href="/fr/docs/Web/API/Window/navigator/appVersion" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>window.navigator.appVersion</code></a> et <a href="/fr/docs/Web/API/Window/navigator/userAgent" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>window.navigator.userAgent</code></a>. Utilisez <a href="/fr/docs/Web/API/Window/navigator/language" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>window.navigator.language</code></a> ou <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTTP/Content_negotiation" title="Content negotiation">l'en-tête Accept-Language</a> à la place. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=572656" title="FIXED: Remove the UI language from the UA string and navigator.appVersion">bug 572656</a></li> + <li>L'objet <a href="https://developer.mozilla.org/fr/docs/XMLHttpRequest" title="XMLHttpRequest">XMLHttpRequest</a> expose maintenant la réponse comme un tableau JavaScript typé et aussi comme une chaîne, en utilisant la propriété, spécifique de Gecko, <code>mozResponseArrayBuffer</code>.</li> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/MouseEvent" title="DOM/MouseEvent">Mouse events</a> inclut maintenant une propriété <code>mozPressure</code> indiquant le niveau de pression supporté sur les périphériques d'entrée sensibles à la pression.</li> + <li>Les méthodes <a href="/fr/docs/Web/API/Window/URL/createObjectURL" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>window.URL.createObjectURL()</code></a> et <a href="/fr/docs/Web/API/Window/URL/revokeObjectURL" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>window.URL.revokeObjectURL()</code></a> vous permettent de créer des URLs d'objet qui renvoient à des fichiers locaux.</li> + <li>La méthode <a href="/fr/docs/Web/API/DOMImplementation/createHTMLDocument" title="La méthode DOMImplementation.createHTMLDocument() crée un nouveau Document HTML."><code>DOMImplementation.createHTMLDocument()</code></a> vous permet de créer un nouveau document HTML.</li> + <li><a href="/fr/docs/Web/API/Node/mozMatchesSelector" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>Node.mozMatchesSelector()</code></a> retourne maintenant l'exception <code>SYNTAX_ERR</code>si la chaîne de sélection spécifiée est invalide, au lieu de retourner <code>false</code>.</li> + <li>Vous pouvez maintenant définir les valeurs des propriétés d'un élement SVG en utilisant une syntaxe abrégée même avec CSS. Par exemple : <code>element.style.fill = 'lime'</code>. Voir <a href="/fr/docs/Web/API/Element/style" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>element.style</code></a> pour plus de détails.</li> + <li>Le document racine a maintenant un attribut <a class="internal" href="https://developer.mozilla.org/en-US/docs/Supporting_private_browsing_mode#Detecting_whether_private_browsing_mode_is_permanent" title="Supporting private browsing mode#Detecting whether private browsing mode is permanent"><code>privatebrowsingmode</code></a> qui décrit l'état du mode de navigation privée, en indiquant notamment si la session de navigation privée est temporaire ou permanente.</li> + <li>Le second paramètre de la méthode <a href="/fr/docs/Web/API/Window/getComputedStyle" title="La méthode window.getComputedStyle() donne la valeur calculée finale de toutes les propriétés CSS sur un élément."><code>window.getComputedStyle()</code></a> est maintenant optionnel, car elle l'est dans tous les autres navigateurs.</li> + <li>L'objet DOM <a href="https://developer.mozilla.org/en-US/docs/DOM/event/StorageEvent" title="DOM/event/StorageEvent"><code>StorageEvent</code></a> est maintenant conforme à la dernière version de la spécification.</li> + <li>Le délais minimum autorisé pour la méthode <a href="/fr/docs/Web/API/Window/setTimeout" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>window.setTimeout()</code></a> est maintenant la préférence <code>dom.min_timeout_value</code>.</li> + <li>L'évènement <a class="internal" href="https://developer.mozilla.org/en-US/docs/Gecko-Specific_DOM_Events#MozAfterPaint" title="Gecko-Specific DOM Events#MozAfterPaint"><code>MozAfterPaint</code></a> n'est plus envoyé par défaut, en raison d'un potentiel problème de sécurité. Il peut être réactivé en définissant une préférence.</li> +</ul> + +<h3 id="Securité">Securité</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Security/CSP" title="Security/CSP">Content Security Policy (CSP)</a></dt> + <dd>Content Security Policy (CSP) est une proposition de Mozilla, conçu pour aider les concepteurs de sites Web et les administrateurs de serveur en spécifiant comment le contenu sur leurs sites Web agit. L'objectif est d'aider à détecter et à atténuer les attaques incluant le cross-site scripting et des attaques par injection de données.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security" title="Security/HTTP Strict Transport Security">HTTP Strict Transport Security</a></dt> + <dd>HTTP Strict Transport Security est un dispositif de sécurité qui permet à un site web d'indiquer au navigateur d'utiliser une connexion sécurisée (HTTPS) à la place du protocole HTTP.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/The_X-FRAME-OPTIONS_response_header" title="The X-FRAME-OPTIONS response header">L'en-tête de réponse X-FRAME-OPTIONS</a></dt> + <dd>L'en-tête de réponse X-FRAME-OPTIONS HTTP introduite dans Internet Explorer 8 est désormais supportée par Firefox. Cela permet aux sites d'indiquer si leurs pages peuvent être utilisées dans des frames ou si l'utilisation de la page doit être restreint.</dd> + <dt>Changement de la <a class="internal" href="https://developer.mozilla.org/en-US/docs/Gecko_user_agent_string_reference" title="Gecko_user_agent_string_reference">chaîne de l'agent utilisateur</a></dt> + <dd>C'est un moyen de réduire la quantité et l'entropie des données envoyées dans les requêts HTPP (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=572650" title="[meta] Reduce the amount of data and entropy sent out in HTTP requests">bug 572650</a>), le niveau de cryptage et le signe de la langue ont été enlevés de la chaîne de l'agent utilisateur.</dd> +</dl> + +<h3 id="JavaScript">JavaScript</h3> + +<p>Pour un aperçu des changements effectués dans JavaScript 1.8.5, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/New_in_JavaScript/1.8.5" title="New in JavaScript 1.8.5">New in JavaScript 1.8.5</a>. Dans Firefox 4, JavaScript a un plus grand respect de la norme ECMAScript 5.</p> + +<h3 id="Outils_pour_les_développeurs">Outils pour les développeurs</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Using_the_Web_Console" title="Using the Web Console">Utilisation de la Console Web</a></dt> + <dd>La Console Web est un outil qui aide le débogage.</dd> +</dl> + +<div class="geckoVersionNote"> +<div class="geckoVersionHeading"> +Gecko 2.0 note +<div style="font-size: 9px; line-height: 1; font-style: italic;">(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)</div> +</div> + +<p>A partir de Firefox 4, la Console d'erreurs est désactivée par défaut. Vous pouvez la ré-activer en modifiant la préférence <code>devtools.errorconsole.enabled</code> à <code>true</code> et en redémarrant le navigateur.</p> +</div> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<p>Pour des conseils utiles sur la mise à jour des extensions existantes pour Firefox 4, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Extensions/Updating_extensions_for_Firefox_4" title="Extensions/Updating extensions for Firefox 4">Updating extensions for Firefox 4</a>. Il y a plusieurs changements importants qui cassent la compatibilité avec les add-ons, donc n'oubliez pas de lire cet article.</p> + +<p>Si vous développez des thèmes, vous devez lire <a class="internal" href="https://developer.mozilla.org/en-US/docs/Theme_changes_in_Firefox_4" title="Theme changes in Firefox 4">Theme changes in Firefox 4</a> afin de connaître certains changements importants.</p> + +<h3 id="Modules_de_code_JavaScript">Modules de code JavaScript</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/Services.jsm" title="JavaScript code modules/Services.jsm">Services.jsm</a></dt> + <dd>Le module de code <code>Services.jsm</code> fournit des accesseurs qui font qu'il est facile d'obtenir des références sur les services couramment utilisés, tels que le service de préférences ou le médiateur fenêtre.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/js-ctypes" title="JavaScript code modules/ctypes.jsm">API JS-ctypes</a></dt> + <dd>L'API JS-ctypes permet d'appeler une bibliothèque de fonctions étrangère C-compatible sans utiliser XPCOM.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Addons/Add-on_Manager" title="Addons/Add-on Manager">Gestionnaire de modules complémentaires</a></dt> + <dd>Le nouveau gestionnaire de modules complémentaires fournit des informations sur les modules, permet la modifications des options, l'installation et la suppression des modules.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/PopupNotifications.jsm" title="JavaScript code modules/PopupNotifications.jsm">PopupNotifications.jsm</a></dt> + <dd>Le nouveau module des notifications popup facilite la présentation des notifications non-modales. Vous pouvez voir comment utiliser cette API dans <a href="https://developer.mozilla.org/en-US/docs/Using_popup_notifications" title="Using popup notifications">Using popup notifications</a>.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/Using#Locating_the_code_module" title="JavaScript code modules/Using JavaScript code modules#Locating the code module">Chargement des modules de code à partir des URLs chrome:</a></dt> + <dd>Vous pouvez maintenant charger des modules de code à partir d'URLs <strong>chrome:</strong>, même à l'intérieur de fichiers JAR.</dd> + <dt>DownloadLastDir.jsm</dt> + <dd>Le module de code <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/DownloadLastDir.jsm" title="JavaScript/Code modules/DownloadLastDir.jsm"><code>DownloadLastDir.jsm</code></a> fournit la variable <code>gDownloadLastDir</code> qui contient une chaîne qui permet de connaître le chemin du répertoire dans lequel le dernier téléchargement s'est produit. Ce module gère les questions liées à la navigation privée.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Performance/Measuring_performance_using_the_PerfMeasurement.jsm_code_module" title="Performance/Measuring performance using the PerfMeasurement.jsm code module">Mesurer les performances en utilisant le module de code PerfMeasurement.jsm code module</a></dt> + <dd>Le module de code <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/PerfMeasurement.jsm" title="JavaScript code modules/PerfMeasurement.jsm"><code>PerfMeasurement.jsm</code></a> propose une API qui mesure les performances au niveau du CPU dans du code JavaScript.</dd> +</dl> + +<h4 id="Divers_changements_dans_les_modules_de_code">Divers changements dans les modules de code</h4> + +<ul> + <li>Le module de code <code>NetUtil.jsm</code> offre maintenant la méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/NetUtil.jsm#readInputStreamToString()" title="JavaScript/Code modules/NetUtil.jsm#readInputStreamToString()"><code>readInputStreamToString()</code></a>, qui permet de lire des octets arbitraires à partir d'un flux dans une chaîne, même si le flux inclut des zéros.</li> + <li>Vous pouvez maintenant <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/Using_workers_in_JavaScript_code_modules" title="JavaScript code modules/Using workers in JavaScript code modules">utiliser les travailleurs dans les modules de code JavaScript</a>.</li> +</ul> + +<div id="livemargins_control" style="position: absolute; display: none;"></div> + +<h3 id="Changements_DOM">Changements DOM</h3> + +<dl> + <dt><a href="/fr/docs/Web/API/ChromeWorker" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>ChromeWorker</code></a></dt> + <dd>Un nouveau type de travailleur pour du code privilégié, ce qui permet l'utilisation de choses comme <a class="internal" href="https://developer.mozilla.org/en-US/docs/js-ctypes" title="js-ctypes">js-ctypes</a> à partir des travailleurs dans les extensions et le code d'une application.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Touch_events" title="DOM/Touch events">Evènements tactile</a></dt> + <dd>Ajout du support de l'évènement tactile (non-standard), cela permet de pouvoir suivre plusieurs doigts qui se déplacent en même temps sur un écran tactile.</dd> +</dl> + +<h4 id="Autres_changements_DOM">Autres changements DOM</h4> + +<ul> + <li>La nouvelle notification <a class="internal" href="https://developer.mozilla.org/en-US/docs/Observer_Notifications#Documents" title="Observer Notifications#Documents">"document-element-inserted"</a> est envoyée quand un élément racine d'un document est crée, mais tous les scripts sont exécutés avant.</li> +</ul> + +<dl> +</dl> + +<h3 id="XUL">XUL</h3> + +<h4 id="Changements_pour_lélément_tabbrowser">Changements pour l'élément tabbrowser</h4> + +<p>Plusieurs changements ont été apportés à l'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/tabbrowser"><xul:tabbrowser></a></code> ce qui impacte les extensions qui interagissent avec les onglets. En plus du support de app tabs, ces changements on aussi modifiés la barre d'onglet en une barre d'outils standard, ce qui permet à l'utilisateur de faire glisser les boutons dans la barre d'outils.</p> + +<ul> + <li>Les évènements <code>TabClose</code>, <code>TabSelect</code> et <code>TabOpen</code> non plus de bulle jusqu'à l'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/tabbrowser"><xul:tabbrowser></a></code> (<code>gBrowser</code>). Les récepteurs d'évènements pour ces évènements doivent être ajoutés à <code>gBrowser.tabContainer</code> plutôt qu'à <code>gBrowser</code> directement.</li> + <li>Le menu contextuel d'un onglet n'est plus un enfant anonyme de <code><a href="/fr/docs/Mozilla/Tech/XUL/tabbrowser"><xul:tabbrowser></a></code>. Il peut donc être surposé directement avec <a class="internal" href="https://developer.mozilla.org/fr/docs/Overlays_XUL" title="Overlays XUL">overlays XUL</a>. On peut également y accéder directement depuis JavaScript via <code>gBrowser.tabContextMenu</code>. Voir cet <a class="external" href="http://www.gavinsharp.com/blog/2010/03/31/accessingmodifying-the-firefox-tab-context-menu-from-extensions/" title="http://www.gavinsharp.com/blog/2010/03/31/accessingmodifying-the-firefox-tab-context-menu-from-extensions/">article</a> pour plus de détails.</li> + <li>La nouvelle propriété <code><span><a href="https://developer.mozilla.org/fr/docs/XUL/Propriétés/visibleTabs">visibleTabs</a></span></code> a été ajoutée pour vous permettre de faire un tableau des onglets visibles, cela vous permet de déterminer quels onglets seront visibles dans l'ensemble de l'onglet courant. Par exemple, par Firefox Panorama l'utilise.</li> + <li>La nouvelle méthode <span id="m-showOnlyTheseTabs"><code><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Méthodes/showOnlyTheseTabs">showOnlyTheseTabs</a></code></span> a été ajoutée, elle est utilisée Firefox Panorama.</li> + <li>Ajout de la nouvelle méthode <span id="m-showOnlyTheseTabs"><code><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Méthodes/showOnlyTheseTabs">showOnlyTheseTabs</a></code></span>, qui est utilisée par Firefox Panorama.</li> + <li>Ajout de la nouvelle méthode <span id="m-getIcon"><code><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Méthodes/getIcon">getIcon</a></code></span>, qui vous permet d'obtenir le favicon d'un onglet sans avoir besoin de le remonter de l'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/browser"><xul:browser></a></code>.</li> + <li>Ajout de la nouvelle propriété <code><span><a href="https://developer.mozilla.org/fr/docs/XUL/Propriétés/tabbrowser.tabs">tabbrowser.tabs</a></span></code>, qui vous permet d'obtenir facilement une liste des onglets dans l'élement <code><a href="/fr/docs/Mozilla/Tech/XUL/tabbrowser"><xul:tabbrowser></a></code>.</li> + <li>Les nouvelles méthodes <span id="m-pinTab"><code><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Méthodes/pinTab">pinTab</a></code></span> et <span id="m-unpinTab"><code><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Méthodes/unpinTab">unpinTab</a></code></span> vous permettent d'épingler et de relâcher des onglets (pour faire la différence entre les onglets normaux et ceux utilisés régulièrement).</li> + <li>Ajout de la méthode <span id="m-getTabModalPromptBox"><code><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Méthodes/getTabModalPromptBox">getTabModalPromptBox</a></code></span> et de l'attribut <code id="a-tabmodalPromptShowing"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/tabmodalPromptShowing">tabmodalPromptShowing</a></code> à <code><a href="/fr/docs/Mozilla/Tech/XUL/tabbrowser"><xul:tabbrowser></a></code> pour le support des alertes majeures des onglets.</li> +</ul> + +<h4 id="Changements_pour_les_popups">Changements pour les popups</h4> + +<ul> + <li>L'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/popup"><xul:popup></a></code> n'est plus supporté, vous devez utilisez <code><a href="/fr/docs/Mozilla/Tech/XUL/menupopup"><xul:menupopup></a></code> à la place. (Si vous continuez à utiliser <code>popup</code>, vous allez rencontrer des problèmes, car l'élément n'a plus de signification particulière. par exemple, <code><a href="/fr/docs/Mozilla/Tech/XUL/menuseparator"><xul:menuseparator></a></code> peut apparaître transparent lorsqu'il est utilisé avec <code><a href="/fr/docs/Mozilla/Tech/XUL/popup"><xul:popup></a></code>.)</li> + <li>L'élément XUL <code><a href="/fr/docs/Mozilla/Tech/XUL/menupopup"><xul:menupopup></a></code> a maintenant une propriété <code><span><a href="https://developer.mozilla.org/fr/docs/XUL/Propriétés/triggerNode">triggerNode</a></span></code>, qui indique le noeud sur lequel l'évènement s'est produit et qui a causé l'ouverture de la popup. Cela a aussi nécessité l'ajout d'un paramètre de l'événement déclencheur de la méthode <span id="m-openPopup"><code><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Méthodes/openPopup">openPopup</a></code></span>. En plus de ça, la propriété <code><span><a href="https://developer.mozilla.org/fr/docs/XUL/Propriétés/anchorNode">anchorNode</a></span></code> a été ajoutée, elle renvoie l'ancre spécifiée lorsque la popup a été créé.</li> + <li>L'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/panel"><xul:panel></a></code> propose maintenant les attributs <code id="a-panel.fade"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/panel.fade">panel.fade</a></code> et <code id="a-panel.flip"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/panel.flip">panel.flip</a></code>, qui sont utilisés pour configurer le comportement de la nouvelle "flèche" des panneaux de notification de style.</li> +</ul> + +<h4 id="Suppression_du_support_à_distance_de_XUL">Suppression du support à distance de XUL</h4> + +<p>Le support à distance de XUL n'est plus supporté, cela affecte les documents XUL qui étaient servis par HTTP, en outre, vous ne pouvez plus charger des documents XUL en utilisant l'URL <span class="plain"><code>file://</code></span> sauf en créant une préférence <code>dom.allow_XUL_XBL_for_file</code> avec la valeur <code>true</code>. Cependant, il y a une fonctionnalité de liste blanche qui peut être utilisée pour permettre à des domaines spécifiques de charger XUL à distance. L'extension <a class="external" href="https://addons.mozilla.org/en-US/firefox/addon/235281/" title="https://addons.mozilla.org/en-US/firefox/addon/235281/">Remote XUL Manager</a> vous permet de gérer cette liste blanche.</p> + +<h4 id="Divers_changements_XUL">Divers changements XUL</h4> + +<ul> + <li>L'attribut <code>readonly</code> fonctionne désormais correctement pour les <a class="internal" href="https://developer.mozilla.org/en-US/docs/XBL/XBL_1.0_Reference/Elements#field" title="XBL/XBL_1.0_Reference/Elements#field">champs XBL</a>.</li> + <li>L'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/resizer"><xul:resizer></a></code> vous permet désormais d'utiliser l'attribut <code id="a-element"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/element">element</a></code> pour spécifier l'élément à redimensionner, au lieu de redimensionner la fenêtre.</li> + <li>L'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/resizer"><xul:resizer></a></code> a maintenant un attribut <code id="a-resizer.type"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/resizer.type">type</a></code> qui vous permet de spécifier que le redimensionnement est pour la fenêtre au lieu d'un élément, pour également empêcher de redimensionner deux fois une fenêtre en cours de préparation.</li> + <li>L'attribut "active" n'est plus accessible sur les fenêtres XUL actives. A la place, vous pouvez utilisez la nouvelle pseudo-classe <a href="/fr/docs/Web/CSS/:-moz-window-inactive" title="La pseudo-classe :-moz-window-inactive, spécifique à Mozilla, correspond à n'importe quel élément qui se trouve sur une fenêtre inactive."><code>:-moz-window-inactive</code></a> afin d'attribuer différents styles aux fenêtres en arrière-plan.</li> + <li>L'attribut <code id="a-emptytext"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/emptytext">emptytext</a></code> est désormais obsolète, vous devez utiliez <code id="a-placeholder"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/placeholder">placeholder</a></code> à la place.</li> + <li>L'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/window"><xul:window></a></code> propose maintenant un attribut <code id="a-accelerated"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/accelerated">accelerated</a></code> ; quand il est vrai, le gestionnaire de la couche matérielle est autorisé à accélérer la fenêtre.</li> + <li>L'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/stack"><xul:stack></a></code> supporte maintenant les attributs <code id="a-bottom"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/bottom">bottom</a></code> et <code id="a-right"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/right">right</a></code>.</li> + <li>Les évènements sont maintenant tirés lors de la personnalisation de <code><a href="/fr/docs/Mozilla/Tech/XUL/toolbox"><xul:toolbox></a></code>, vous permettant de <a class="internal" href="https://developer.mozilla.org/en-US/docs/XUL/Toolbars/Toolbar_customization_events" title="XUL/Toolbars/Toolbar customization events">détecter les changements sur les barres d'outils</a>.</li> + <li>L'attribut <code id="a-alternatingbackground"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/alternatingbackground">alternatingbackground</a></code> pour l'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/tree"><xul:tree></a></code>n'est plus supporté, à la place, vous pouvez utiliser la pseudo-classe <a href="/fr/docs/Web/CSS/:-moz-tree-row" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>:-moz-tree-row</code></a>.</li> + <li>Le dépassement du bouton de la barre d'outils des Favoris avec anonid chevronPopup n'est plus anonyme, il a l'ID "PlacesChevron".</li> + <li>L'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/tabs"><xul:tabs></a></code> a maintenant la propriété <code><span><a href="https://developer.mozilla.org/fr/docs/XUL/Propriétés/tabbox">tabbox</a></span></code>, en remplacement de l'ancienne propriété <code>_tabbox</code>, qui a été abandonnée (et n'a jamais été documentée).</li> + <li>Les éléments XUL <code><a href="/fr/docs/Mozilla/Tech/XUL/window"><xul:window></a></code> ont maintenant l'attribut <code id="a-drawintitlebar"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/drawintitlebar">drawintitlebar</a></code>, si il a la valeur <code>true</code>, la zone de contenu de la fenêtre qui comprend la barre de titre, permet de dessiner dans la barre de titre.</li> + <li>De nouveaux évènements sont disponibles : <code>TabPinned</code> et <code>TabUnpinned</code>, vous permettant de détecter <a class="internal" href="https://developer.mozilla.org/en-US/docs/Code_snippets/Tabbed_browser#Notification_when_a_tab_is_pinned_or_unpinned" title="Code_snippets/Tabbed_browser#Notification_when_a_tab_is_pinned_or_unpinned">quand des onglets sont épinglés ou relâchés</a>.</li> + <li>le nouvel évènement <a class="internal" href="https://developer.mozilla.org/en-US/docs/Code_snippets/Tabbed_browser#Notification_when_a_tab%27s_attributes_change" title="Code_snippets/Tabbed_browser#Notification_when_a_tab%27s_attributes_change"><code>TabAttrModified</code> event</a> est envoyé lorsque l'un des attributs (<code id="a-label"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/label">label</a></code>, <code id="a-crop"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/crop">crop</a></code>, <code id="a-busy"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/busy">busy</a></code>, <code id="a-image"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/image">image</a></code>, ou <code id="a-selected"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/selected">selected</a></code>) d'un onglet change.</li> + <li>Les éléments <code><a href="/fr/docs/Mozilla/Tech/XUL/tab"><xul:tab></a></code> ont maintenant l'attribut <code id="a-pinned"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/pinned">pinned</a></code>, qui vous permet de savoir si un onglet est actuellement épinglé.</li> + <li>La classe <code>setDirectionIndicator</code> sur les éléments <code><a href="/fr/docs/Mozilla/Tech/XUL/tree"><xul:tree></a></code> n'a rien fait depuis un certain temps et maintenant elle n'est plus du tout utilisée.</li> + <li>L'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/window"><xul:window></a></code> possède maintenant l'attribut <code id="a-chromemargin"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/chromemargin">chromemargin</a></code> qui vous permet de définir la marge entre le chrome et le contenu de chaque côté d'une fenêtre.</li> + <li>L'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/window"><xul:window></a></code> possède maintenant l'attribut <code id="a-disablechrome"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/disablechrome">disablechrome</a></code>, il est utilisé pour cacher la plupart du chrome dans une fenêtre, comme pour <code>about:addons</code>.</li> + <li>L'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/window"><xul:window></a></code> possède maintenant l'attribut <code id="a-disablefastfind"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/disablefastfind">disablefastfind</a></code>, qui vous permet de désactiver la barre de recherche dans une fenêtre lorsque le contenu ne le supporte pas. Il est par exemple utilisé par le panneau de gestion des modules complémentaires.</li> + <li>Les barres d'outils peuvent maintenant être externe aux boîtes à outils, tout en restant considérée comme un membre de <code><a href="/fr/docs/Mozilla/Tech/XUL/toolbox"><xul:toolbox></a></code>, en configurant la propriété <code><span><a href="https://developer.mozilla.org/fr/docs/XUL/Propriétés/toolboxid">toolboxid</a></span></code> de <code><a href="/fr/docs/Mozilla/Tech/XUL/toolbar"><xul:toolbar></a></code>. De plus, l'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/toolbox"><xul:toolbox></a></code> a maintenant une propriété <code><span><a href="https://developer.mozilla.org/fr/docs/XUL/Propriétés/externalToolbars">externalToolbars</a></span></code>, qui liste toutes les barres d'outils qui sont considérées comme des membres de la boîte à outils.</li> + <li>Ajout du support pour <a class="internal" href="https://developer.mozilla.org/en-US/docs/XUL/Template_Guide/Template_Logging" title="XUL/Template Guide/Template Logging">la connexion de templates XUL</a> pour permettre un débogage .</li> +</ul> + +<h3 id="Changements_dans_lUI_affectant_les_développeurs">Changements dans l'UI affectant les développeurs</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/The_add-on_bar" title="The add-on bar">La barre d'add-on</a></dt> + <dd>La barre d'état a été supprimée en faveur de la nouvelle barre d'add-on. Vous devrez mettre à jour votre extension l'utiliser cette option si vous aviez ajouté l'UI de la barre d'état avant.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Hiding_browser_chrome" title="Hiding browser chrome">Cacher le chrome du navigateur</a></dt> + <dd>Vous pouvez désormais cacher le chrome du navigateur quand il est souhaitable de le faire, par exemple, <code>about:addons</code> le fait.</dd> +</dl> + +<h3 id="Storage">Storage</h3> + +<h4 id="Divers_changement_dans_lAPI_Storage">Divers changement dans l'API Storage</h4> + +<ul> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageBindingParamsArray" title="">mozIStorageBindingParamsArray</a></code>a maintenant un attribut de longueur indiquant le nombre d'objets <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageBindingParams" title="">mozIStorageBindingParams</a></code> dans le tableau.</li> + <li><code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/mozIStorageStatement#bindParameters()">mozIStorageStatement.bindParameters()</a></code> retourne maintenant une erreur si l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageBindingParamsArray" title="">mozIStorageBindingParamsArray</a></code> spécifiée est vide.</li> + <li>Ajout de la méthode <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/mozIStorageConnection#clone()">mozIStorageConnection.clone()</a></code>, qui vous permet de cloner une connexion à une base de données déjà existante.</li> + <li>Ajout de la méthode <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/mozIStorageConnection#asyncClose()">mozIStorageConnection.asyncClose()</a></code>, qui vous permet de fermer une connexion à une base de données de manière asynchrone, vous spécifiez un rappel pour être averti quand l'opération est terminée.</li> + <li>Ajout de la méthode <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/mozIStorageConnection#setGrowthIncrement()">mozIStorageConnection.setGrowthIncrement()</a></code>, qui vous permet de spécifier le nombre de fichiers ajoutés à la fois dans une base de données, pour aider à réduire la fragmentation de SQLite.</li> + <li>L'erreur <code>SQLITE_CONSTRAINT</code> est maintenant reportée comme <code>NS_ERROR_STORAGE_CONSTRAINT</code> au lieu de <code>NS_ERROR_FAILURE</code>.</li> +</ul> + +<h3 id="XPCOM">XPCOM</h3> + +<p>En plus des changements spécifiques référencés ci-dessous, il est important de noter qu'il n'y a plus aucune interfaces gelées. Elles sont toutes dégelées maintenant, indépendamment de ce que peut indiquer la documentation. Nous mettrons à jour la documentation au fil du temps.</p> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/XPCOM/XPCOM_changes_in_Gecko_2.0" title="XPCOM/XPCOM changes in Gecko 2.0">Changements d'XPCOM dans Gecko 2.0</a></dt> + <dd>Détails sur les modifications d'XPCOM qui impactent la compatibilité dans Firefox 4.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/fr/docs/Components.utils.getGlobalForObject" title="Components.utils.getGlobalForObject">Components.utils.getGlobalForObject()</a></dt> + <dd>Cette nouvelle méthode retourne l'objet global avec lequel un objet est associé, ce qui remplace un cas d'utilisation commun de <code>__parent__</code> qui est désormais retiré.</dd> +</dl> + +<h3 id="Places">Places</h3> + +<ul> + <li>Les résultats de la requête peuvent maintenant être observés par plusieurs observateurs, et les requêtes peuvent être exécutées de manière asynchrone. Cela signifie qu'il y a eu des changements dans les interfaces <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryResult" title="">nsINavHistoryResult</a></code>, <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryQueryOptions" title="">nsINavHistoryQueryOptions</a></code> et <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryContainerResultNode" title="">nsINavHistoryContainerResultNode</a></code>. De plus, l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryResultViewer" title="">nsINavHistoryResultViewer</a></code> a été renommée en <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryResultObserver" title="">nsINavHistoryResultObserver</a></code>.</li> + <li>De <a class="internal" href="https://developer.mozilla.org/en-US/docs/Observer_Notifications#Places" title="Observer Notifications#Places">nouvelles notifications</a> ont été ajoutées pour permettre au navigateur de suivre la procédure d'arrêt du service Places de manière plus fiable. Parmi celles-ci, la plupart sont pour un usage interne uniquement, mais la notification <code>places-connection-closed</code> est disponible pour savoir quand le service Places a terminé sont processus d'arrêt.</li> + <li>Le paramètre de sortie de la taille d'un tableau sur plusieurs méthodes Places est désormais optionnel.</li> + <li>Le support de <code><menupopup type="places"></code> a été supprimé. A la place, vous devez créer et remplir un menu avec ds informations Places manuellement, plutôt que de l'avoir fait pour vous. Voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Displaying_Places_information_using_views#Menu_view" title="Displaying Places information using views#Menu view">Displaying Places information using views: Menu view</a> pour plus de détails.</li> +</ul> + +<h3 id="Changements_dans_les_interfaces">Changements dans les interfaces</h3> + +<ul> + <li>Les interfaces <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocShell" title="">nsIDocShell</a></code> et <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebBrowser" title="">nsIWebBrowser</a></code> ont maintenant un nouvel attribut <code>isActive</code>, qui est utilisé pour optimiser les chemins de code pour les documents qui ne sont pas visibles.</li> + <li>La méthode <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIMemory#isLowMemory()">nsIMemory.isLowMemory()</a></code> est obsolète. A la place, vous devez utilisez <a class="internal" href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIMemory#Low_memory_notifications" title="XPCOM Interface Reference/nsIMemory#Low memory notifications">les notifications "memory-pressure"</a> pour surveiller les situations où la mémoire est insuffisante.</li> + <li>L'API pour la manipulation des redirections HTTP sur les canaux a changé pour qu'elles puissent être traitées de manière asynchrone. N'importe quel code qui implémente la manipulation des redirections à l'aide de <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIChannelEventSink#onChannelRedirect()">nsIChannelEventSink.onChannelRedirect()</a></code> doit être mis à jour pour qu'il utilise <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIChannelEventSink#asyncOnChannelRedirect()">nsIChannelEventSink.asyncOnChannelRedirect()</a></code> à la place. Cela accepte un gestionnaire de rappel qui doit être appelé quand une redirection est réussie.</li> + <li>La méthode <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsINavHistoryResultObserver#batching()">nsINavHistoryResultObserver.batching()</a></code> a été ajoutée, fournissant un moyen de grouper des opérations Places par lots, ce qui réduit le nombre de notifications de mise à jour délivrées, qui peut améliorer les performances quand les observateurs doivent effectuer certaines tâches (telles que des rafraîchissement de pages).</li> + <li>L'interface obsolète <code>nsIPref</code> a finalement été supprimée. Si vous n'êtes pas encore passé à <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIPrefService" title="">nsIPrefService</a></code>, il est temps de le faire.</li> + <li>Les interfaces <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISessionStore" title="">nsISessionStore</a></code> et <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISessionStartup" title="">nsISessionStartup</a></code> ont reçues des changements pour la restauration des sessions. Voir la méthode <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsISessionStore#restoreLastSession()">nsISessionStore.restoreLastSession()</a></code>.</li> + <li>Les méthodes <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIPrincipal#subsumes()">nsIPrincipal.subsumes()</a></code> et <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIPrincipal#checkMayLoad()">nsIPrincipal.checkMayLoad()</a></code>, et les attributs <code>origin</code>, <code>csp</code> et <code>URI</code>, sont maintenant disponibles à partir d'un script ; avant ils n'étaient disponibles qu'à partir du code natif.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIPrompt" title="">nsIPrompt</a></code> supporte maintenant les alertes des onglets modaux, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Using_tab-modal_prompts" title="Using tab-modal prompts">Using tab-modal prompts</a> pour plus de détails.</li> + <li>La méthode <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIEffectiveTLDService#getPublicSuffixFromHost()">nsIEffectiveTLDService.getPublicSuffixFromHost()</a></code> rejette maintenant correctement le nom des hôtes qui commencent par un point (".").</li> + <li>La méthode <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/mozIJSSubScriptLoader#loadSubScript()">mozIJSSubScriptLoader.loadSubScript()</a></code> a maintenant un argument optionnel qui vous permet de définir le jeu de caractère du script, si il n'est pas fourni, on suppose que c'est le format ASCII (comme cela a toujours été précédemment).</li> + <li>L'interface <code>nsIAccessProxy</code> a été supprimée. C'était un élément qui n'avait plus d'utilité.</li> + <li>Les interfaces <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentView" title="">nsIContentView</a></code> et <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentViewManager" title="">nsIContentViewManager</a></code> ont été ajoutées pour Firefox Mobile. Ils représentent une vue déroulant le contenu dont le contenu est actuellement utilisé par un processus séparé.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDiskCacheStreamInternal" title="">nsIDiskCacheStreamInternal</a></code> a été ajoutée.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIExternalURLHandlerService" title="">nsIExternalURLHandlerService</a></code> a été ajoutée.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISyncJPAKE" title="">nsISyncJPAKE</a></code> a été ajoutée. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=601645" title="FIXED: JavaScript API for NSS J-PAKE">bug 601645</a>.</li> +</ul> + +<h3 id="Gestion_de_la_mémoire">Gestion de la mémoire</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Infallible_memory_allocation" title="Infallible memory allocation">Allocation infaillible de la mémoire</a></dt> + <dd>Mozilla propose désormais des répartiteur de mémoire infaillible qui sont garantis de ne pas retouner null. Vous devriez lire cet article pour connaitre leur fonctionnement et savoir comment demander l'allocation de la mémoire.</dd> +</dl> + +<h3 id="Autres_changements">Autres changements</h3> + +<ul> + <li>La plupart des ressources que Firefox contient ont été combinées dans une seule archive JAR (<code>omni.jar</code>), ce qui améliore les performances au démarrage en réduisant l'I/O. Pour plus de détails, lisez <a class="internal" href="https://developer.mozilla.org/en-US/docs/About_omni.jar" title="About omni.jar">About omni.jar</a>.</li> + <li>La préférence <code>accessibility.disablecache</code> n'est plus supportée, elle a seulement été utilisée à des fins de débogage et n'est plus employée.</li> + <li>Les extensions dont le GUID change d'une version à une autre peuvent maintenant être mise à jour correctement.</li> + <li>As a side effect of the removal of platform-specific directories in add-on bundles, you can no longer provide different default preferences for each platform.</li> + <li>Par défaut, <a class="external" href="http://blog.mozilla.com/mwu/2010/09/10/extensions-now-installed-packed/" title="http://blog.mozilla.com/mwu/2010/09/10/extensions-now-installed-packed/">les extensions ne sont plus décompressées quand elles sont installées</a>, mais sont plutôt exécutées directement à partir du fichier XPI. Les extensions peuvent utiliser la propriété <a class="internal" href="https://developer.mozilla.org/en-US/docs/Install_Manifests#unpack" title="Install_Manifests#unpack">unpack</a> dans le <a class="internal" href="https://developer.mozilla.org/fr/docs/Manifestes_d'installation" title="Manifestes_d'installation">manifeste d'installation</a> pour choisir l'ancien comportement. Les extensions qui utilisent des composants binaires, des DLLs chargées avec <a class="internal" href="https://developer.mozilla.org/en-US/docs/js-ctypes" title="js-ctypes">js-ctypes</a>, des <a class="internal" href="https://developer.mozilla.org/fr/docs/Création_de_plugins_OpenSearch_pour_Firefox" title="Création_de_plugins_OpenSearch_pour_Firefox">plugins de recherche</a>, des dictionnaires et une fenêtre d'icônes doivent préciser ce dont elles ont besoin pour être décompressées. Les extensions qui <a class="internal" href="https://developer.mozilla.org/en-US/docs/XUL_School/Local_Storage#SQLite" title="XUL_School/Local_Storage#SQLite">créent des bases de données SQLite</a>, ou font des copies de fichiers du système relatifs au répertoire de l'extension, peuvent aussi avoir besoin de modifier leur code.</li> + <li>You may now include extensions that <a href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Customizing_Firefox#Including_extensions_with_your_distribution_of_Firefox" title="Developer Guide/Customizing Firefox#Including extensions with your distribution of Firefox">automatically get installed at application startup</a> within a customized Firefox.</li> +</ul> + +<h2 id="Autres_changements_2">Autres changements</h2> + +<dl> + <dt>Seul le fichier chrome.manifest racine est chargé</dt> + <dd>maintenant seul le fichier <code>chrome.manifest</code> racine est chargé ; si vous avez besoin de fichiers manifestes secondaires à charger, vous pouvez utilisez la commande <a class="internal" href="https://developer.mozilla.org/en-US/docs/Chrome_Registration#manifest" title="Chrome Registration#manifest"><code>manifest</code></a> dans votre fichier <code>chrome.manifest</code> racine pour les charger.</dd> + <dt>Suppression du support de Gopher</dt> + <dd>Le protocole Gopher n'est plus supporté nativement. L'extension <a class="external" href="https://addons.mozilla.org/addon/7685/">OverbiteFF</a> permet de continuer à le supporter.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/The_message_manager" title="Content process event handling">Gestion des évènement du processus Content</a></dt> + <dd>Pour le support des plugins hors du processus et les multiples processus caractéristiques, une nouvelle API a été mise en place pour permettre l'envoi de messages dans les processus.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Extensions/Bootstrapped_extensions" title="Extensions/Bootstrappable extensions">Bootstrap des extensions</a></dt> + <dd>Vous pouvez désormais créer des extensions qui peuvent être installées, désinstallées et mises à jour sans nécessiter le redémarrage du navigateur.</dd> + <dt>Suppression des plugins par défaut</dt> + <dd>The default plugin has been removed. The application plugins folder has also been removed by default, however support for installing plugins via this folder still exists. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=533891" title="FIXED: remove default plugins">bug 533891</a>.</dd> + <dt>Extension Manager remplacé par Addon Manager</dt> + <dd><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIExtensionManager" title="">nsIExtensionManager</a></code> a été remplacée par <a class="internal" href="https://developer.mozilla.org/en-US/docs/Addons/Add-on_Manager/AddonManager" title="Addons/Add-on_Manager/AddonManager">AddonManager</a>.</dd> + <dt>Child HWNDs n'est plus utilisé</dt> + <dd>Firefox ne créé plus de child HWNDs pour son usage interne sous Windows. Si vous avez codé une extension qui utilise du code natif pour manipuler ces HWNDs, votre extensions ne fonctionnera pas dans Firefox 4. Soit vous devez arrêter l'utilisation de HWND ou soit mettre votre code reposant sur HWND dans un plugin <a class="internal" href="https://developer.mozilla.org/en-US/docs/Gecko_Plugin_API_Reference" title="Gecko Plugin API Reference">NPAPI</a>. C'est un gros travail, alors si vous pouviez éviter d'utiliser HWND directement.</dd> + <dt>Changements dans les gestes</dt> + <dd>Les gestes par défaut ont été changés, en faisant glisser trois doigts de haut en bas sur le trackpad cela ouvrira ou fermera Firefox Panorama. Pour modifier les éléments précédents, afin d'avoir les commandes de défilement haut et défilement bas, ouvrez about:config et mettez <code>cmd_scrollBottom</code> pour <code>browser.gesture.swipe.down</code> et <code>cmd_scrollTop</code> pour <code>browser.gesture.swipe.up</code>.</dd> +</dl> + +<h2 id="Voir_également">Voir également</h2> + +<div class="multiColumnList"> +<ul> +<li><a href="/fr/docs/Mozilla/Firefox/Versions/3.6">Firefox 3.6 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3.5">Firefox 3.5 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3">Firefox 3 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/2">Firefox 2 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/1.5">Firefox 1.5 pour les développeurs</a></li></ul> +</div> diff --git a/files/fr/mozilla/firefox/versions/40/index.html b/files/fr/mozilla/firefox/versions/40/index.html new file mode 100644 index 0000000000..82eb7fa6a7 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/40/index.html @@ -0,0 +1,198 @@ +--- +title: Firefox 40 pour développeurs +slug: Mozilla/Firefox/Versions/40 +translation_of: Mozilla/Firefox/Releases/40 +--- +<div>{{FirefoxSidebar}}</div><div class="column-container zone-callout"><a href="https://www.mozilla.org/firefox/developer/" style="float: right; margin-bottom: 20px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">To test the latest developer features of Firefox,<br> +install Firefox Developer Edition</a> Firefox 40 was released on August 11, 2015. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.</div> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="Outils_pour_Développeurs">Outils pour Développeurs</h3> + +<p>Nouveautés:</p> + +<ul> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Work_with_animations#Firefox_40">Amélioration des vues Animation</a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Get_help_for_CSS_properties">Obtenir de l'aide MDN pour la syntaxe des propriétés CSS </a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Edit_CSS_filters">Editer les filtres depuis la page Inspecteur</a></li> + <li><a href="/en-US/docs/Tools/Web_Console#console_API_messages">Affichage dans la Console Web des messages workers</a></li> + <li><a href="/en-US/docs/Tools/Network_Monitor#Filtering_by_URL">Filtrer les requetes par URL dans le moniteur réseau </a></li> + <li><a href="/en-US/docs/Tools/Network_Monitor#Context_menu">Nouvelles options dans le menu contextuel du moniteur réseau</a></li> + <li><a href="/en-US/docs/Tools/Network_Monitor#Network_request_fields">Montrer quand les ressources réseau sont récupérées du cache du navigateur </a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Filtering_rules">Filtrer les règles dans la page Inspecteur</a></li> +</ul> + +<p>More:</p> + +<ul> + <li><a href="/en-US/docs/Tools/Debugger/UI_Tour#Source_list_pane">Point d'arret au niveau debugger ; expressions dans l'évaluation des sources non nommés </a></li> + <li><a href="/en-US/docs/Tools/Debugger/UI_Tour#Source_list_pane">Copy URL/Open in New Tab context menu items for Debugger source list pane</a></li> + <li><a href="/en-US/docs/Tools/Web_Console#Log_messages">Support de console.dirxml dans la Console Web</a></li> + <li><a href="/en-US/docs/Tools/Style_Editor#The_style_sheet_pane">Editeur de Style : "Ouverture d'un lien dans un nouvel onglet" item added to stylesheet list</a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_the_box_model#The_Box_Model_view">La recherche par sélecteur dans l'Inspecteur inclus dorénavant dans les résultats le class/id meme si celui ci n'a pas de préfix css </a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Inspect_and_select_colors">Indication de quelle règle CSS est a l'origine du Tooltips dans le modèle de vue 'boite' </a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Element_popup_menu">Basculement entre les format de couleur dans l'inspecteur en utilisant Shift+click </a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Element_popup_menu">Implement "Scroll Into View" menu item for the Inspector</a></li> + <li><a href="/en-US/docs/Tools/Network_Monitor#Network_request_fields">transformer un attribut url/id/resource en lien dans l'inspecteur </a></li> + <li><a href="/en-US/docs/Tools/Network_Monitor#Network_request_fields">Infobulle de l'adresse IP dans le moniteur réseau</a></li> +</ul> + +<p>Autres: <a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Client%20Software&chfieldto=2015-05-11&query_format=advanced&chfield=resolution&chfieldfrom=2015-03-31&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Storage%20Inspector&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20Web%20Audio%20Editor&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&component=Developer%20Tools%3A%20WebIDE&product=Firefox&list_id=12283503">Tous les bugs devtools corrigés depuis Firefox 39 et Firefox 40</a>.</p> + +<p> </p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Règles de préfixe (<code>-moz-</code>) pour {{cssxref("text-decoration-color")}}, {{cssxref("text-decoration-line")}}, et {{cssxref("text-decoration-style")}} ont été supprimé ({{bug(1097922)}}).</li> + <li>La propriété {{cssxref("text-align")}} supporte dorénavant la valeur <code>match-parent</code> bug(645642)}}).</li> + <li>Dans le mode Quirks, {{cssxref("empty-cells")}} a pour valeur par défaut <code>show</code>, comme dans le mode standard ({{bug(1020400)}}).</li> + <li>La propriété non standard {{cssxref("-moz-orient")}}, utilisée pour faire un rendu sur les éléments {{HTMLElement('meter')}} et {{HTMLElement('progress')}} a été adaptée pour les modes d'écriture verticales: la valeur <code>auto</code> a été supprimée et les valeurs <code>inline</code> et <code>block</code> ajoutées, avec <code>inline</code> comme nouvelle valeur par défaut {{bug(1028716)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<p><em>pas de changement.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Unreachable code after {{jsxref("Statements/return", "return")}} statement (including unreachable expression after {{jsxref("Statements/return", "semicolon-less return statements", "#Automatic_semicolon_insertion", 1)}}) will now show a warning in the console ({{bug(1005110)}}, {{bug(1151931)}}).</li> + <li>{{jsxref("Symbol.match")}} a été ajouté ({{bug(1054755)}}).</li> + <li>Passing an object which has a property named {{jsxref("Symbol.match")}} with a {{Glossary("truthy")}} value to {{jsxref("String.prototype.startsWith")}}, {{jsxref("String.prototype.endsWith")}}, and {{jsxref("String.prototype.contains")}} now throws a {{jsxref("TypeError")}} ({{bug(1054755)}}).</li> + <li>{{jsxref("RegExp")}} function returns pattern itself if called without {{jsxref("Operators/new", "new")}} and pattern object has a property named {{jsxref("Symbol.match")}} with a {{Glossary("truthy")}} value, and the pattern object's <code>constructor</code> property equals to {{jsxref("RegExp")}} function. ({{bug(1147817)}}).</li> + <li>Support for the non-standard JS1.7 destructuring for-in has been dropped ({{bug(1083498)}}).</li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...in#Firefox-specific_notes">Les initialiseurs d'expression non-standard </a>dans les boucles <a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a> sont dorénavant ignorés et seront indiqués par un avertissement dans la console. ({{bug(748550)}} et {{bug(1164741)}}).</li> + <li><code><a href="/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Unicode_code_point_escapes">\u{xxxxxx}</a></code> Unicode code point escapes have been added ({{bug(320500)}}).</li> + <li>{{jsxref("String.prototype.includes", "String.prototype.contains", "#String.prototype.contains")}} has been replaced with {{jsxref("String.prototype.includes")}}, <code>String.prototype.contains</code> is kept as an alias ({{bug(1102219)}}).</li> + <li>If the {{jsxref("DataView")}} constructor is called as a function without the {{ jsxref("Operators/new", "new") }} operator, a {{jsxref("TypeError")}} is now thrown as per the ES6 specification.</li> + <li>An issue regressed in Firefox 21, where proxyfied arrays without the <code>get</code> trap were not working properly, has been fixed. If the <code>get</code> trap in a {{jsxref("Proxy")}} was not defined, {{jsxref("Array.length")}} returned <code>0</code> and the <code>set</code> trap didn't get called. A workaround was to add the <code>get</code> trap even if was not necessary in your code. This issue has been fixed now ({{bug(895223)}}).</li> + <li>{{jsxref("WeakMap.prototype")}} and {{jsxref("WeakSet.prototype")}} have been updated to be just ordinary objects, per ES6 specification ({{bug(1055473)}}).</li> + <li>The {{jsxref("RegExp.prototype.source")}} property is now prototype accessor property rather than own data property of <code>RegExp</code> instances ({{bug(1120169)}}, {{bug(1150297)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<h4 id="Nouvelles_APIs">Nouvelles APIs</h4> + +<ul> + <li>Implementation de <a href="/en-US/docs/Web/API/Push_API">l'API Push </a>({{bug(1038811)}}).</li> +</ul> + +<h4 id="Web_Animations_API">Web Animations API</h4> + +<p>Amélioration de notre implémentation des animations Web expérimentales, principalement mostley to match latest spec changes:</p> + +<ul> + <li>{{domxref("AnimationPlayer.currentTime")}} now can also be set ({{bug(1072037)}}).</li> + <li><code>Animatable.getAnimationPlayers()</code>, available on {{domxref("Element")}} has been renamed to {{domxref("Element.getAnimations()")}} ({{bug(1145246)}}).</li> + <li><code>Animation</code> and <code>AnimationEffect</code> have been merged into the newly created {{domxref("KeyframeEffectReadOnly")}} ({{bug(1153734)}}).</li> + <li><code>AnimationPlayer</code> has been renamed to {{domxref("Animation")}} ({{bug(1154615)}}).</li> + <li>{{domxref("AnimationTimeline")}} is now an abstract class, with {{domxref("DocumentTimeline")}} its only implementation ({{bug(1152171)}}).</li> +</ul> + +<h4 id="CSSOM">CSSOM</h4> + +<ul> + <li>The CSS Font Loading API is now enabled by default in Nightly and Developer Edition releases ({{bug(1088437)}}). It is still deactivated by default in Beta and Release browsers.</li> + <li>The <code>CSSCharsetRule</code> interface has been removed and such objects are no longer available in CSSOM ({{bug(1148694)}}). This matches the spec (recently adapted) and Chrome behavior.</li> +</ul> + +<h4 id="WebRTC">WebRTC</h4> + +<ul> + <li>WebRTC: the {{event("negotiationneeded")}} event is now also sent for initial negotiations, not only for re-negotiations ({{bug(1149838)}}).</li> +</ul> + +<h4 id="DOM_HTML_DOM">DOM & HTML DOM</h4> + +<ul> + <li>When unable to parse the {{htmlattrxref("srcset", "image")}}, the {{domxref("HTMLImageElement.currentSrc")}} method doesn't return <code>null</code> anymore but <code>""</code>, as requested by the latest specification ({{bug(1139560)}}).</li> + <li>Like for images, Firefox now throttle {{domxref("Window.requestAnimationFrame()")}} for non-visible {{HTMLElement("iframe")}} ({{bug(1145439)}}).</li> + <li>{{domxref("Navigator.taintEnabled")}} is no longer available for Web workers ({{bug(1154878)}}).</li> + <li>The read-only properties {{domxref("MouseEvent.offsetX")}} and {{domxref("MouseEvent.offsetY")}} have been implemented {{bug("69787")}}.</li> +</ul> + +<h4 id="Web_Audio_API">Web Audio API</h4> + +<p>Nouvelles extensions pour l'<a href="/en-US/docs/Web/API/Web_Audio_API">API Web Audio</a>:</p> + +<ul> + <li>The {{domxref("AudioContext.state")}} and {{domxref("AudioContext.onstatechange")}} properties as well as the methods {{domxref("AudioContext.suspend()")}}, {{domxref("AudioContext.resume()")}}, and {{domxref("AudioContext.close()")}} have been added ({{bug(1094764)}}).</li> + <li>{{domxref("AudioBufferSourceNode")}} now implements the {{domxref("AudioBufferSourceNode.detune")}} <a href="/fr/docs/DOM/AudioParam#k-rate">k-rate</a> attribute ({{bug(1153783)}}).</li> +</ul> + +<h4 id="Web_Workers">Web Workers</h4> + +<ul> + <li>Légère amélioration dans notre <a href="/en-US/docs/Web/API/ServiceWorker_API">API Service Worker </a>: la méthode {{domxref("ServiceWorkerRegistration.update()", "update()")}} a été changée de {{domxref("ServiceWorkerGlobalScope")}} vers {{domxref("ServiceWorkerRegistration")}} ({{bug(1131350)}}).</li> + <li>{{domxref("ServiceWorkerRegistration")}} est maintenant disponible dans les Web workers ({{bug("1131327")}}).</li> + <li>{{domxref("DataStore")}} est maintenant disponible dans les Web workers ({{bug(916196)}}).</li> +</ul> + +<h4 id="IndexedDB">IndexedDB</h4> + +<ul> + <li>{{domxref("IDBTransaction")}} sont maintenant temporaire par default. bug(1112702)}}). Cela privilegie les performances par rapport <span class="ellipsis_text" dir="ltr" id="1_LT">a la fiabilité et est en phase les autres navigateurs</span>. Pour plus d'information, lire notre <a href="/en-US/docs/Web/API/IndexedDB_API/Basic_Concepts_Behind_IndexedDB#durable">durability definition</a>.</li> +</ul> + +<h4 id="Dev_Tools">Dev Tools</h4> + +<ul> + <li>La propriété {{domxref("Console.timeStamp")}} a été ajoutée ({{bug(922221)}}).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<p><em>pas de changement.</em></p> + +<h3 id="SVG">SVG</h3> + +<p><em>pas de changement.</em></p> + +<h3 id="AudioVideo">Audio/Video</h3> + +<p><em>pas de changement.</em></p> + +<h2 id="Networking">Networking</h2> + +<p><em>pas de changement.</em></p> + +<h2 id="Security">Security</h2> + +<ul> + <li>L'utilisation d'un asterisk (<code>*</code>) dans {{Glossary("CSP")}} n'inclus plus le schema <code>data:</code>, <code>blob:</code> or <code>:filesystem</code> lors de la comparaison des expressions sources. Ces schemas doivent dorénavant etre définis explicitement dans l'entete concernée afin de correspondre au CSP ({{bug(1086999)}}).</li> +</ul> + +<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2> + +<h3 id="XUL">XUL</h3> + +<p><em>pas de changement.</em></p> + +<h3 id="JavaScript_code_modules">JavaScript code modules</h3> + +<ul> + <li>Dict.jsm a été supprimé {{bug(1123309)}}. Veuillez utiliser {{jsxref("Map")}} en remplacement.</li> +</ul> + +<h3 id="XPCOM">XPCOM</h3> + +<p><em>No change.</em></p> + +<h3 id="Other">Other</h3> + +<ul> + <li>Places Keywords API has been deprecated and will be removed soon ({{bug(1140395)}}).</li> +</ul> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Mozilla/Firefox/Releases/40/Site_Compatibility">Site Compatibility for Firefox 40</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers('39')}}</p> diff --git a/files/fr/mozilla/firefox/versions/40/site_compatibility/index.html b/files/fr/mozilla/firefox/versions/40/site_compatibility/index.html new file mode 100644 index 0000000000..cbe82d4b21 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/40/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 40 +slug: Mozilla/Firefox/Versions/40/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 40 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/40/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/40/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/versions/41/index.html b/files/fr/mozilla/firefox/versions/41/index.html new file mode 100644 index 0000000000..8ad0302211 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/41/index.html @@ -0,0 +1,198 @@ +--- +title: Firefox 41 pour développeurs +slug: Mozilla/Firefox/Versions/41 +tags: + - Firefox + - Versions +translation_of: Mozilla/Firefox/Releases/41 +--- +<div>{{FirefoxSidebar}}</div><div class="column-container zone-callout"><a href="https://www.mozilla.org/firefox/developer/" style="float: right; margin-bottom: 20px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">To test the latest developer features of Firefox,<br> +install Firefox Developer Edition</a> Firefox 41 was released on September 22, 2015. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.</div> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="Outils_pour_Développeurs">Outils pour Développeurs</h3> + +<p>Nouveautés:</p> + +<ul> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Element_popup_menu">Take a screenshot of a DOM node</a></li> + <li><a href="/en-US/docs/Tools/Network_Monitor#CopySave_All_As_HAR">Copy as HAR/save as HAR</a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Add_rules">"Add Rule" button in the Rules view</a></li> + <li><a href="/en-US/docs/Tools/View_source">View source in a tab</a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Copy_rules">More options to copy CSS rules</a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/How_to/View_background_images">Copy image as data: URI in the Rules view</a></li> +</ul> + +<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&classification=Client%20Software&chfieldto=2015-06-29&query_format=advanced&chfield=resolution&chfieldfrom=2015-05-11&chfieldvalue=FIXED&bug_status=RESOLVED&bug_status=VERIFIED&component=Developer%20Tools&component=Developer%20Tools%3A%203D%20View&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&component=Developer%20Tools%3A%20Responsive%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Storage%20Inspector&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20Web%20Audio%20Editor&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&component=Developer%20Tools%3A%20WebIDE&product=Firefox&list_id=12283503">All devtools bugs fixed between Firefox 40 and Firefox 41</a>: note that many of these bugs, especially those relating to the performance tools, were uplifted to Firefox 40.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Support for laying out vertical scripts has been activated by default ({{bug(1138384)}}). That means that the following CSS properties are now available: + <ul> + <li>Choosing the direction of writing: {{cssxref("writing-mode")}}.</li> + <li>Controlling orientation of characters: {{cssxref("text-orientation")}}.</li> + <li>Direction-independent equivalents of {{cssxref("width")}} and {{cssxref("height")}}: {{cssxref("block-size")}} and {{cssxref("inline-size")}}.</li> + <li>Direction-independent equivalents of {{cssxref("min-width")}} and {{cssxref("min-height")}}: {{cssxref("min-block-size")}} and {{cssxref("min-inline-size")}}.</li> + <li>Direction-independent equivalents of {{cssxref("max-width")}} and {{cssxref("max-height")}}: {{cssxref("max-block-size")}} and {{cssxref("max-block-size")}}.</li> + <li>Direction-independent equivalents of {{cssxref("margin-top")}}, {{cssxref("margin-right")}}, {{cssxref("margin-bottom")}} and {{cssxref("margin-left")}}: {{cssxref("margin-block-start")}}, {{cssxref("margin-block-end")}}, {{cssxref("margin-inline-start")}} and {{cssxref("margin-inline-end")}}.</li> + <li>Direction-independent equivalents of {{cssxref("padding-top")}}, {{cssxref("padding-right")}}, {{cssxref("padding-bottom")}} and {{cssxref("padding-left")}}: {{cssxref("padding-block-start")}}, {{cssxref("padding-block-end")}}, {{cssxref("padding-inline-start")}} and {{cssxref("padding-inline-end")}}.</li> + <li>Direction-independent equivalents of {{cssxref("border-top")}}, {{cssxref("border-right")}}, {{cssxref("border-bottom")}} and {{cssxref("border-left")}} and their longhands for width, style and color: {{cssxref("border-block-start")}}, {{cssxref("border-block-start-width")}}, {{cssxref("border-block-start-style")}}, {{cssxref("border-block-start-color")}}, {{cssxref("border-block-end")}}, {{cssxref("border-block-end-width")}}, {{cssxref("border-block-end-style")}}, {{cssxref("border-block-end-color")}}, {{cssxref("border-inline-start")}}, {{cssxref("border-inline-start-width")}}, {{cssxref("border-inline-start-style")}}, {{cssxref("border-inline-start-color")}}, {{cssxref("border-inline-end")}}, {{cssxref("border-inline-end-width")}}, {{cssxref("border-inline-end-style")}} and {{cssxref("border-inline-end-color")}}.</li> + <li>Direction-independent equivalents of {{cssxref("top")}}, {{cssxref("right")}}, {{cssxref("bottom")}} and {{cssxref("left")}}: {{cssxref("offset-block-start")}}, {{cssxref("offset-block-end")}}, {{cssxref("offset-inline-start")}} and {{cssxref("offset-inline-end")}}.</li> + </ul> + </li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>{{HTMLElement("a")}} without an <code>href</code> attribute is no longer classified as interactive content. Clicking it inside {{HTMLElement("label")}} will activate labelled content ({{bug(1167816)}}).</li> + <li>SVG icons are now supported for site icons, that is favicons and shortcut icons ({{bug(366324)}}).</li> + <li>The {{htmlattrxref('crossorigin', 'link')}} attribute is now supported for <a href="/en-US/docs/Web/HTML/Element/link"><link rel='preconnect'></a> ({{bug(1174152)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>{{jsxref("Date.prototype")}} is now an ordinary object, not a {{jsxref("Date")}} instance anymore ({{bug(861219)}}).</li> + <li>{{jsxref("Date.prototype.toString")}} is now a generic method ({{bug(861219)}}).</li> + <li>{{jsxref("Symbol.species")}} has been added ({{bug(1131043)}}).</li> + <li>{{jsxref("Map.@@species", "Map[@@species]")}} and {{jsxref("Set.@@species", "Set[@@species]")}} getters have been added ({{bug(1131043)}}).</li> + <li>Non-standard {{jsxref("Statements/let", "let expression", "#let_expressions", 1)}} support has been dropped ({{bug(1023609)}}).</li> + <li>{{jsxref("Functions/Default_parameters", "Destructured parameters with default value assignment", "#Destructured_parameter_with_default_value_assignment", 1)}} are now supported ({{bug(1018628)}}).</li> + <li>Per ES6, curly braces are required for <a href="/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions">method definitions</a>. Syntax without them will fail from now on ({{bug(1150855)}}).</li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions">Method definitions</a> (except for generator methods) are not constructable anymore ({{bug(1059908)}} and {{bug(1166950)}}).</li> + <li>As part of ES6 specification compliance, parenthesized <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">destructuring</a> patterns, like <code>([a, b]) = [1, 2]</code> or <code>({a, b}) = { a: 1, b: 2 }</code>, are now considered invalid and will throw a {{jsxref("SyntaxError")}}. See <a href="http://whereswalden.com/2015/06/20/new-changes-to-make-spidermonkeys-and-firefoxs-parsing-of-destructuring-patterns-more-spec-compliant/">Jeff Walden's blog post</a> for more details.</li> + <li>The <code><a href="/en-US/docs/Web/JavaScript/Reference/Operators/new.target">new.target</a></code> syntax has been added ({{bug(1141865)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<h4 id="HTML_Editing_API">HTML Editing API</h4> + +<ul> + <li>Cut, copy and paste commands handling has been revamped and now allow programmatic copying and cutting from JS for Web content: + <ul> + <li>With the <code>'paste'</code> command as argument, {{domxref("Document.queryCommandSupported()")}} now returns <code>false</code> if has insufficient privileges to actually perform the action ({{bug(1161721)}}).</li> + <li>With the <code>'cut'</code> or <code>'copy'</code> command as argument, {{domxref("Document.queryCommandSupported()")}} now returns <code>true</code> if called within the context of a user-initiated or privileged code ({{bug(1162952)}}).</li> + <li>With the <code>'cut'</code> or <code>'copy'</code> command as argument, {{domxref("Document.execCommand()")}} now works, but only within the context of user-initiated or privileged code ({{bug(1012662)}}).</li> + </ul> + </li> +</ul> + +<h4 id="Events">Events</h4> + +<ul> + <li>The non-standard {{domxref("CloseEvent.initCloseEvent()")}} method and the ability to create a {{domxref("CloseEvent")}} using the {{domxref("Event.createEvent", "Event.createEvent('CloseEvent')")}} method has been removed; use the standard constructor, {{domxref("CloseEvent.CloseEvent", "CloseEvent()")}} instead ({{bug(1161950)}}).</li> + <li>On Desktop, {{domxref("PointerEvent")}} is now activated by default in Nightly; it is not activated in Developer Edition, Beta or Release and won't be for at least some versions ({{bug(1166347)}}).</li> + <li>The unprefixed version of {{domxref("MouseEvent.movementX")}} and {{domxref("MouseEvent.movementY")}}}} have been added; the prefixed versions are deprecated and will be removed at some point in the future ({{bug(1164981)}}).</li> +</ul> + +<h4 id="Web_Crypto">Web Crypto</h4> + +<ul> + <li>{{domxref("SubtleCrypto.importKey()")}} and {{domxref("SubtleCrypto.exportKey()")}} now supports <code>ECDH</code> keys ({{bug(1050175)}}).</li> +</ul> + +<h4 id="Canvas_API">Canvas API</h4> + +<ul> + <li>{{domxref("HTMLCanvasElement.captureStream()")}} and {{domxref("CanvasCaptureMediaStream")}} have been added and allow to stream the display of a {{HTMLElement("canvas")}} in real-time ({{bug(1032848)}}).</li> + <li>{{domxref("MediaStream.id")}} now returns the unique id of a stream ({{bug(1089798)}}).</li> + <li>The initial value of {{domxref("CanvasRenderingContext2D.filter")}} is now correctly set to <code>none</code> ({{bug(1163124)}}).</li> +</ul> + +<h4 id="Service_Workers">Service Workers</h4> + +<ul> + <li>Improvement to our experimental <a href="/en-US/docs/Web/API/ServiceWorker_API">Service Worker</a> implementation: + + <ul> + <li>{{domxref("ServiceWorkerGlobalScope.skipWaiting()")}} has been implemented ({{bug(1131352)}}).</li> + <li>{{domxref("Clients.claim()")}} has been added ({{bug(1130684)}}).</li> + <li>The other functional events of Service Workers have been made to inherit from {{domxref("ExtendableEvent")}}, giving them access to the {{domxref("ExtendableEvent.waitUntil","waitUntil()")}} method ({{bug("1160527")}}).</li> + </ul> + </li> + <li>The {{domxref("CacheStorage")}} and {{domxref("Cache")}} interfaces are now supported ({{bug("1110144")}}).</li> +</ul> + +<h4 id="Miscellaneous">Miscellaneous</h4> + +<ul> + <li>On OS X and Windows, {{domxref("NavigatorOnLine.onLine", "Navigator.onLine")}} now changes regarding network connectivity (it always returned <code>true</code>, , unless "Work offline" mode was selected) before ({{bug(654579)}}).</li> + <li>{{domxref("MessagePort")}} and {{domxref("MessageChannel")}} now available in <a href="/en-US/docs/Web/API/Web_Workers_API">Web workers</a>, and are enabled by default in all contexts ({{bug(952139)}}) and ({{bug(911972)}}).</li> + <li>The User Timing API is now available in <a href="/en-US/docs/Web/API/Web_Workers_API">Web workers</a> ({{bug(1155761)}}).</li> + <li>The <a href="/en-US/docs/Web/API/Notifications_API">Notifications API</a> is now available in <a href="/en-US/docs/Web/API/Web_Workers_API">Web workers</a> ({{bug(916893)}}).</li> + <li>{{domxref("DOMRequest")}} and {{domxref("DOMCursor")}} are now available in <a href="/en-US/docs/Web/API/Web_Workers_API">Web workers</a> ({{bug(1167650)}}).</li> + <li>The <a href="/en-US/docs/Web/API/CSSFontLoading_API">CSS Font Loading API</a> is now enabled by default ({{bug(1149381)}}).</li> + <li>Shared workers can no longer be shared between private (i.e. browsing in a private window) and non-private documents (see {{bug(1177621)}}).</li> + <li>The {{domxref("URLUtilsSearchParams.searchParams")}} property is now read-only ({{bug(1174731)}}).</li> + <li> + <p>The {{domxref('URLUtils.hash')}} property no longer decodes URL fragment ({{bug(1093611)}}).</p> + </li> +</ul> + +<h3 id="MathML">MathML</h3> + +<h4 id="New_default_and_fallback_font_handling">New default and fallback font handling</h4> + +<p>Mathematical formulas require special fonts. So far, these fonts were hard-coded in the <code>mathml.css</code> user agent stylesheet (which sets the font-family on {{MathMLElement("math")}} tag) and in the preference option <code>font.mathfont-family</code> (which sets the fallback fonts to use for stretchy and large operators). Firefox 41 introduces, an internal <code>x-math</code> language that is automatically set on the <code><math></code> tag as well as corresponding preference options (e.g. <code>font.name.serif.x-math</code>). The user agent stylesheet now sets font-family to serif on the <code><math></code> tag and the preference option <code>font.mathfont-family</code> is replaced with <code>font.name.serif.x-math</code>. All platforms now essentially use the same list of fallback fonts, with "Latin Modern Math" as first one. The default/fallback fonts can be configured from the standard per-language font preference menu. For more details, see {{bug(947654)}} and {{bug(1160456)}}.</p> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>Site icons (favicons, shortcut icons) now support SVG ({{bug(366324)}}).</li> +</ul> + +<h3 id="AudioVideo">Audio/Video</h3> + +<ul> + <li>The <code>media.autoplay.enabled</code> preference now also apply to untrusted {{domxref("HTMLMediaElement.play()")}} invocations too, that is calls from non-users activated scripts ({{bug(659285)}}).</li> +</ul> + +<h2 id="HTTP">HTTP</h2> + +<ul> + <li>The <code>X-Content-Duration</code> header is no longer supported ({{Bug(1160695)}}).</li> +</ul> + +<h2 id="Networking">Networking</h2> + +<p><em>pas de changement.</em></p> + +<h2 id="Security">Security</h2> + +<ul> + <li>The <a href="https://developer.mozilla.org/en-US/docs/Web/Security/CSP">CSP</a> 1.1 <code>manifest-src</code> <a href="https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives">directive</a> is now supported ({{bug(1089255)}}).</li> +</ul> + +<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2> + +<h3 id="XUL">XUL</h3> + +<p><em>pas de changement.</em></p> + +<h3 id="JavaScript_code_modules">JavaScript code modules</h3> + +<p><em>pas de changement.</em></p> + +<h3 id="XPCOM">XPCOM</h3> + +<h3 id="Interfaces">Interfaces</h3> + +<p><em>pas de changement.</em></p> + +<h3 id="Other">Other</h3> + +<p><em>pas de changement.</em></p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Mozilla/Firefox/Releases/41/Site_Compatibility">Site Compatibility for Firefox 41</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers('40')}}</p> diff --git a/files/fr/mozilla/firefox/versions/41/site_compatibility/index.html b/files/fr/mozilla/firefox/versions/41/site_compatibility/index.html new file mode 100644 index 0000000000..2c89135474 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/41/site_compatibility/index.html @@ -0,0 +1,13 @@ +--- +title: Compatibilité des sites avec Firefox 41 +slug: Mozilla/Firefox/Versions/41/Site_Compatibility +tags: + - Compatibilité + - Développement Web + - Firefox + - Firefox 41 + - FxSiteCompat + - Guide +translation_of: Mozilla/Firefox/Releases/41/Site_Compatibility +--- +<div>{{FirefoxSidebar}}</div><p>Cette page a été déplacée vers <a href="https://www.fxsitecompat.com/en-US/versions/41/" class="redirect">FxSiteCompat.com</a>.</p> diff --git a/files/fr/mozilla/firefox/versions/5/index.html b/files/fr/mozilla/firefox/versions/5/index.html new file mode 100644 index 0000000000..18020bc53e --- /dev/null +++ b/files/fr/mozilla/firefox/versions/5/index.html @@ -0,0 +1,168 @@ +--- +title: Firefox 5 pour les développeurs +slug: Mozilla/Firefox/Versions/5 +tags: + - Firefox + - Firefox 5 +translation_of: Mozilla/Firefox/Releases/5 +--- +<div>{{FirefoxSidebar}}</div> + +<p>Firefox 5, basé sur Gecko 5.0, est sorti le 21 juin 2011. Cet article fournit des informations à propos des changements qui affectent les développeurs dans cette version.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Tous les éléments HTML ont maintenant l'attribut {{domxref("element.accessKey", "accessKey")}}, ainsi que les méthodes {{domxref("element.blur()", "blur()")}}, {{domxref("element.click()", "click()")}} et {{domxref("element.focus()", "focus()")}}. Elles sont spécifiées dans l'interface {{domxref("HTMLElement")}}.</li> + <li>Afin d'être conforme à la spécification HTML5, le support des <a class="internal" href="https://developer.mozilla.org/en-US/docs/Character_Sets_Supported_by_Gecko" title="Character Sets Supported by Gecko">jeux de caractères</a> UTF-7 et UTF-32 a été retiré.</li> + <li>Lorsque l'on est en mode quirks, les {{HTMLElement("map")}} vides ne sont plus ignorées en faveur des non-vides quand elles correspondent. Pour plus de détails, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTML/Element/map#Gecko_notes" title="HTML/Element/map#Gecko notes">les notes de Gecko</a> sur l'élément {{HTMLElement("map")}}.</li> + <li>Firefox mobile pour Android supporte désormais les polices WOFF pour {{cssxref("@font-face")}}.</li> + <li>WebGL <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebGL/Cross-Domain_Textures" title="WebGL/Cross-Domain Textures">ne charge plus les textures provenant d'autres domaines que celui d'origine</a>, par mesure de sécurité. Le support <a class="internal" href="https://developer.mozilla.org/en-US/HTTP_access_control" title="HTTP access control">du contrôle d'accès d'HTTP</a> devrait arriver dans le futur pour que le chargement des textures se fasse en toute sécurité.</li> +</ul> + +<h4 id="Améliorations_de_Canvas">Améliorations de Canvas</h4> + +<ul> + <li>L'environnement de dessin 2D {{HTMLElement("canvas")}} supporte désormais la spécification d'un objet <code>ImageData</code> en entrée de la méthode <code>createImageData()</code> ; cela <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTML/Canvas/Pixel_manipulation_with_canvas#Creating_an_ImageData_object" title="HTML/Canvas/Pixel manipulation with canvas#Creating an ImageData object">créé un nouvel objet <code>ImageData</code></a> qui est initialisé avec les mêmes dimensions que l'objet spécifié, mais tous les pixels sont toujours prédéfinis en noir transparent. ceci a été documenté comme déjà mis en oeuvre alors que ça ne l'était pas.</li> + <li>Spécifier des valeurs non finies lors de l'ajout de couleur arrête l'ajout via un appel à <code>addColorStop()</code> de la méthode {{domxref("CanvasGradient")}} en renvoyant désormais <code>INDEX_SIZE_ERR</code> à la place de <code>SYNTAX_ERR</code>.</li> + <li>La méthode {{domxref("HTMLCanvasElement")}} <code>toDataURL()</code> now correctly lower-cases the specified MIME type before matching.</li> + <li><code>getImageData()</code> accepte maintenant correctement les rectangles qui vont au-delà des limites de la zone, les pixels qui sont en dehors de la zone sont mis en noir transparent.</li> + <li><code>drawImage()</code> et <code>createImageData()</code> traitent désormais les arguments négatifs conformément à la spécification, en retournant le rectangle autour de l'axe approprié. <strong>Nous avons besoin d'un article sur <a class="external" href="http://dev.w3.org/csswg/css3-images/#default-sizing" title="http://dev.w3.org/csswg/css3-images/#default-sizing">CSS sizing</a> et son fonctionnement.</strong></li> + <li>La spécification de valeurs non-finies lors de l'appel de <code>createImageData()</code> renvoi maintenant l'exception <code>NOT_SUPPORTED_ERR</code>.</li> + <li><code>createImageData()</code> et <code>getImageData()</code> retournent maintenant correctement une valeur d'un pixel en données d'image si un rectangle plus petit qu'un petit qu'un pixel est spécifié.</li> + <li>La spécification d'un angle négatif lors de l'appel de <code>createRadialGradient()</code> renvoi désormais <code>INDEX_SIZE_ERR</code>.</li> + <li>La spécification d'une image <code>null</code> ou <code>undefined</code> lors de l'appel de <code>createPattern()</code> ou <code>drawImage()</code> renvoi désormais l'exception <code>TYPE_MISMATCH_ERR</code>.</li> + <li>La spécification de valeurs incorrectes pour <code>globalAlpha</code> ne renvoie plus l'exception <code>SYNTAX_ERR</code>, cela est désormais ignoré silencieusement.</li> + <li>La spécification de valeurs incorrectes lors de l'appel de <code>translate()</code>, <code>transform()</code>, <code>rect()</code>, <code>clearRect()</code>, <code>fillRect()</code>, <code>strokeRect()</code>, <code>lineTo()</code>, <code>moveTo()</code>, <code>quadraticCurveTo()</code> ou <code>arc()</code> ne renvoie plus une exception ; ces appels sont désormais ingorés silencieusement.</li> + <li>Le réglage de la valeur de <code>shadowOffsetX</code>, <code>shadowOffsetY</code> ou <code>shadowBlur</code> avec une valeur incorrecte est désormais ignoré silencieusement.</li> + <li>Le réglage de la valeur de <code>rotate</code> ou <code>scale</code> avec une valeur incorrecte est désormais ignoré silencieusement.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/fr/docs/CSS/Animations_CSS" title="CSS/Animations CSS">Animations CSS</a></dt> + <dd>Le support pour les animations CSS a été ajouté, pour l'instant il faut utilisé le préfixe <code>-moz-</code>.</dd> +</dl> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>L'objet {{domxref("selection")}} de la méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Selection/modify" title="DOM/Selection/modify"><code>modify()</code></a> a été modifiée afin que la sélection de la granularité "mot" ne contienne plus les espaces à la fin, ce qui est plus cohérent et correspond au comportement de WebKit.</li> + <li>La méthode {{domxref("window.setTimeout()")}} veille maintenant à ne plus envoyer de délai d'attente dans les onglets inactifs. En plus, le délai est imbriqué à la valeur minimale autorisée par la spécification HTML5 : 4 ms (au lieu de 10 ms qui sert à fixer).</li> + <li>De même, la méthode {{domxref("window.setInterval()")}} ne serre pas plus d'un intervalle par seconde dans les onglets inactifs.</li> + <li><a class="internal" href="https://developer.mozilla.org/fr/docs/XMLHttpRequest" title="XMLHttpRequest"><code>XMLHttpRequest</code></a> supporte maintenant <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Detecting_any_load_end_condition" title="XMLHttpRequest/Using XMLHttpRequest#Detecting any load end condition">l'évènement <code>loadend</code></a>. C'est envoyé après qu'un transfert soit terminé (c'est-à-dire après l'évènement <code>abort</code>, <code>error</code> ou <code>load</code>). Vous pouvez utiliser cette fonction pour gérer les tâches qui doivent être exécutées indépendamment de la réussite ou l'échec d'un transfert.</li> + <li>{{domxref("Blob")}} et, par extension, les objets de {{domxref("File")}} de la méthode <code>slice()</code> ont été supprimés et remplacés par une nouvelle, avec une syntaxe qui la rend mieux compatible avec les méthodes <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/slice" title="JavaScript/Reference/Global Objects/Array/slice"><code>Array.slice()</code></a> et <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/slice" title="JavaScript/Reference/Global Objects/String/slice"><code>String.slice()</code></a> dans JavaScript. Cette méthode s'appelle pour l'instant <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Blob#mozSlice()" title="DOM/Blob#mozSlice()"><code>mozSlice()</code></a>.</li> + <li>La valeur de {{domxref("window.navigator.language")}} est maintenant déterminée en examinant la valeur de <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTTP/Headers" title="HTTP/Headers">l'en-tête HTTP</a> <code>Accept-Language</code>.</li> + <li>La propriété {{domxref("Node.prefix")}} est maintenant en lecture seule, comme l'exige la spécification DOM.</li> + <li>{{domxref("HTMLVideoElement")}} supporte maintenant des propriétés expérimentales qui permettent d'obtenir des informations sur les statistiques des vidéos comme le nombres d'images par seconde.</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Les expressions régulières ne sont plus appelable comme si il s'agissait de fonctions, ce changement a été fait de concert avec l'équipe de WebKit afin d'assurer la compatibilité (voir {{WebkitBug(28285)}}. Cette fonctionnalité existait depuis longtemps déjà mais n'a jamais été documentée (du moins, pas sur MDN).</li> + <li>La méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/isGenerator" title="JavaScript/Reference/Global Objects/Function/isGenerator"><code>Function.prototype.isGenerator()</code></a> est désormais supportée, ce qui vous permet de déterminer si une fonction est <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Iterators_and_Generators#Generators.3a_a_better_way_to_build_Iterators" title="Core JavaScript 1.5 Guide/Iterators and Generators#Generators.3a a better way to build Iterators">génératrice</a>.</li> + <li>Les <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Reserved_Words" title="JavaScript/Reference/Reserved Words">mots suivants ont été réservés</a> : <code>class</code>, <code>enum</code>, <code>export</code>, <code>extends</code>, <code>import</code> et <code>super</code>. Auparavant, ils étaient uniquement considérés comme réservés en mode strict.</li> + <li>Les documents DOM crées dans le chrome ne peuvent plus être exposés à des scripts en sandbox.</li> + <li>Le parser JSON a été ré-écrit pour améliorer la vitesse et la conformité. Ce qui inclut un correctif pour le {{bug("572279")}}.</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>L'attribut SVG {{SVGAttr("class")}} peut maintenant être animé.</li> + <li>Les interfaces SVG suivantes sont liées à des interfaces DOM représentant les listes d'objets qui sont maintenant indexables et peuvent être consultées comme des tableaux ; en outre, ils ont une propriété <code>length</code> indiquant le nombre d'éléments dans les listes : {{domxref("SVGLengthList")}}, {{domxref("SVGNumberList")}}, {{domxref("SVGPathSegList")}} et {{domxref("SVGPointList")}}.</li> +</ul> + +<h3 id="HTTP">HTTP</h3> + +<ul> + <li>Firefox n'envoi plus l'en-tête HTTP <code>Keep-Alive</code>, nous n'avons pas pu le formater correctement et il était redondant car on retrouve la valeur "keep-alive" dans l'en-tête {{httpheader("Connection")}} ou {{httpheader("Proxy-Connection")}}.</li> + <li>Le modèle de transaction HTTP a été mis à jour pour être plus intelligent sur la réutilisation des connexions dans le pool de connexions persistantes, au lieu de traiter le pool pool comme une file d'attente {{interwiki("wikipedia", "FIFO")}}, Necko tente maintenant de trier le pool avec des connexions avec la fenêtre qui a le plus de {{interwiki("wikipedia", "congestion window")}} (CWND) en premier. Cela peut réduire le temps d'aller-retour (RTT) des transactions HTTP en évitant la nécessité de développer des connexions fenêtres dans de nombreux cas.</li> + <li>Firefox gère désormais l'en-tête de réponse HTTP <code>Content-Disposition</code> plus efficacement si les deux paramètres <code>filename</code> et <code>filename*</code> sont fournis, il regarde à travers tous les noms fournis, en utilisant le paramètre <code>filename*</code> si il est disponible, même si un paramètre <code>filename</code> est inclus en premier. Auparavant, le premier paramètre correspondant était utilisé, ce qui empêchait l'utilisation d'un nom plus approprié. Voir {{bug(588781)}}.</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>Support des <a class="external" href="http://www.w3.org/TR/MathML3/chapter3.html#id.3.2.5.7.3" title="http://www.w3.org/TR/MathML3/chapter3.html#id.3.2.5.7.3">opérateurs embellis</a></li> +</ul> + +<h3 id="Outils_pour_les_développeurs">Outils pour les développeurs</h3> + +<ul> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console#The_console_object" title="Using the Web Console#The console object">L'objet <code>Console</code> de la Console Web</a> a maintenant une méthode <code>debug()</code>, qui est un alias pour la méthode <code>log()</code>, cela améliore la compatibilité avec certains sites.</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<p>Pour des conseils utiles sur la mise à jour des extensions pour Firefox 5, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Firefox/Updating_add-ons_for_Firefox_5" title="Firefox/Updating add-ons for Firefox 5">Updating add-ons for Firefox 5</a>.</p> + +<div class="note"><strong>Note :</strong> Firefox 5 requiert que les composants binaires soient recompilés, comme pour toutes les versions majeures de Firefox. Pour plus de détails, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Interface_Compatibility#Binary_Interfaces" title="Developer Guide/Interface Compatibility#Binary Interfaces">Interfaces Binaires</a>.</div> + +<h3 id="Changements_dans_les_modules_de_code_JavaScript">Changements dans les modules de code JavaScript</h3> + +<h4 id="Nouveau_module_de_code_JavaScript">Nouveau module de code JavaScript</h4> + +<ul> + <li>Le module de code <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/Dict.jsm" title="JavaScript code modules/Dict.jsm"><code>Dict.jsm</code></a> a été ajouté, il fournit une API pour les dictionnaires de paires clé/valeur.</li> +</ul> + +<h4 id="NetUtil.jsm">NetUtil.jsm</h4> + +<ul> + <li>La méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/NetUtil.jsm#asyncFetch()" title="JavaScript code modules/NetUtil.jsm#asyncFetch()"><code>asyncFetch()</code></a> supporte désormais la spécification de la source en tant que {{interface("nsIInputStream")}}.</li> +</ul> + +<h3 id="Changements_dans_les_interfaces">Changements dans les interfaces</h3> + +<ul> + <li>L'interface {{interface("nsIHttpChannelInternal")}} a maintenant de nouveaux attributs donnant accès à des informations sur les points finaux des canaux des adresses et des ports. Ces informations sont fournies principalement à des fins de débogage.</li> + <li>Les attribut {{htmlattrxref("width", "canvas")}} et {{htmlattrxref("height", "canvas")}} de l'élément {{HTMLElement("canvas")}} sont désormais inclus dans IDL comme des entiers non signés au lieu d'être signés (voir <a class="internal" href="https://developer.mozilla.org/en/DOM/HTMLCanvasElement" title="en/DOM/HTMLCanvasElement"><code>HTMLCanvasElement</code></a>).</li> + <li>Les interfaces <code>nsIAppStartup2</code> et {{interface("nsIAppStartup_MOZILLA_2_0")}} ont été fusionnées avec l'interface {{interface("nsIAppStartup")}}.</li> + <li>L'interface <code>nsIDocShell_MOZILLA_2_0_BRANCH</code> a été fusionnée avec l'interface {{interface("nsIDocShell")}}.</li> + <li>L'interface <code>nsIFocusManager_MOZILLA_2_0_BRANCH</code> a été fusionnée avec l'interface {{interface("nsIFocusManager")}}.</li> + <li>L'interface <code>nsIHTMLEditor_MOZILLA_2_0_BRANCH</code> a été fusionnée avec l'interface {{interface("nsIHTMLEditor")}}.</li> +</ul> + +<h4 id="Nouvelle_interface">Nouvelle interface</h4> + +<ul> + <li>Ajout de <code>nsIDOMAnimationEvent</code>. {{domxref("AnimationEvent")}}</li> +</ul> + +<h4 id="Interfaces_supprimées">Interfaces supprimées</h4> + +<p>Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :</p> + +<ul> + <li><code>nsICiter</code> (voir {{bug(633066)}})</li> + <li><code>nsIDOM3Document</code> (voir {{bug(639849)}})</li> + <li><code>nsIFIXptrEvaluator</code></li> + <li><code>nsISelectElement</code> (voir {{bug(619996)}})</li> +</ul> + +<h3 id="Aide_au_débogage">Aide au débogage</h3> + +<ul> + <li>La nouvelle aide <a class="internal" href="https://developer.mozilla.org/en-US/docs/Namespace/Mozilla/DebugOnly%3CT%3E" title="Namespace/Mozilla/DebugOnly<T>"><code>DebugOnly<T></code></a> permet de déclarer des variables seulement pour les versions <code>DEBUG</code>.</li> +</ul> + +<h3 id="API_JavaScript_(SpiderMonkey)">API JavaScript (SpiderMonkey)</h3> + +<ul> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_DoubleToInt32" title="SpiderMonkey/JSAPI Reference/JS DoubleToInt32"><code>JS_DoubleToInt32()</code></a> et <a class="internal" href="https://developer.mozilla.org/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_DoubleToInt32" title="SpiderMonkey/JSAPI Reference/JS DoubleToInt32"><code>JS_DoubleToUint32()</code></a> ont été ajoutés, pour convertir des valeurs <a class="internal" href="https://developer.mozilla.org/en-US/docs/SpiderMonkey/JSAPI_Reference/jsdouble" title="jsdouble"><code>jsdouble</code></a> en nombres entiers de type C et en entiers non-signés.</li> +</ul> + +<h3 id="Changement_dans_le_système_de_compilation">Changement dans le système de compilation</h3> + +<ul> + <li>Vous pouvez désormais compiler Firefox sans le fichier <code>mozconfig</code>, <a class="internal" href="https://developer.mozilla.org/en-US/docs/Configuring_Build_Options#Choose_an_application" title="Configuring Build Options#Choose an application"><code>l'option --enable-application</code></a> paramètre par défaut à "browser". Après avoir extrait ou téléchargé le code, vous pouvez tout simplement faire <code>configure && make</code> (ou <code>make -f client.mk</code>) pour compiler Firefox.</li> +</ul> + +<h2 id="Voir_également">Voir également</h2> + +<p>{{Firefox_for_developers('4')}}</p> diff --git a/files/fr/mozilla/firefox/versions/50/index.html b/files/fr/mozilla/firefox/versions/50/index.html new file mode 100644 index 0000000000..557addb508 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/50/index.html @@ -0,0 +1,198 @@ +--- +title: Firefox 50 for developers +slug: Mozilla/Firefox/Versions/50 +translation_of: Mozilla/Firefox/Releases/50 +--- +<div>{{FirefoxSidebar}}</div><p><a href="https://www.mozilla.org/firefox/developer/" style="float: right; margin-bottom: 20px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Pour tester les dernières fonctionnalités développeur de Firefox,<br> + installez Firefox Edition Developpeur</a>Firefox 50 a été publié le 15 November 2016. Cet article relate les changements clés utiles non seulement aux développeurs web mais aussi aux développeurs travaillant sur Firefox et Gecko, ainsi que pour les développeurs d'extensions.</p> + +<h2 id="Changes_pour_les_développeurs_Web">Changes pour les développeurs Web</h2> + +<ul> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Le style par defaut style de {{HTMLElement("bdo")}} assigne à présent {{cssxref("unicode-bidi")}} avec la valeur <code>isolate-override</code> ({{bug(1249497)}}).</li> + <li>Assigner l'attribut {{htmlattrxref("src", "track")}} de l'élément {{HTMLElement("track")}} fonctionne à présent correctement ({{bug(1281418)}}).</li> + <li>The <code>referrerpolicy</code> attribute on {{HTMLElement("area")}}, {{HTMLElement("a")}}, {{HTMLElement("img")}}, {{HTMLElement("iframe")}} and {{HTMLElement("link")}} elements is now available by default ({{bug(1223838)}}, {{bug(1264165)}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Border-radiused corners with dashed and dotted styles are now rendered with the specified style instead of a solid style ({{bug(382721)}}).</li> + <li>The non-standard {{cssxref(":-moz-full-screen-ancestor")}} pseudo-class selector has been removed ({{bug(1199529)}}).</li> + <li>The {{cssxref("box-sizing")}}<code>: padding-box</code> has been removed, since it’s no longer a part of the spec and Firefox was the only major browser implementing it ({{bug(1166728)}}).</li> + <li>The three values <code>isolate</code>, <code>isolate-override</code>, and <code>plaintext</code> of the {{cssxref("unicode-bidi")}} property have been unprefixed ({{bug(1141895)}}).</li> + <li>In quirks mode, the bullet of a list item now inherits the size of the list, like in standards mode ({{bug(648331)}}).</li> + <li>The {{cssxref(":in-range")}} and {{cssxref(":out-of-range")}} pseudo-classes have changed behavior to not match disabled or read-only inputs ({{bug(1264157)}}).</li> + <li>The {{cssxref(":any-link")}} pseudo-class is now unprefixed ({{bug(843579)}}).</li> + <li>The <code>space</code> value for {{cssxref("border-image-repeat")}} has been implemented ({{bug(720531)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>The ES2015 {{jsxref("Symbol.hasInstance")}} property has been implemented ({{bug(1054906)}}).</li> + <li>The ES2017 {{jsxref("Object.getOwnPropertyDescriptors()")}} method has been implemented ({{bug(1245024)}}).</li> + <li>The behavior of \W in {{jsxref("RegExp")}} with unicode and ignoreCase flags is changed to match recent draft spec. Now it doesn't match to K, S, k, s, and KELVIN SIGN (U+212A), and LATIN SMALL LETTER LONG S (U+017F) ({{bug(1281739)}}).</li> +</ul> + +<h3 id="Developer_Tools">Developer Tools</h3> + +<ul> + <li><a href="/en-US/docs/Tools/Web_Console/Console_messages#Source_maps">The Web Console now understands source maps.</a></li> + <li><a href="/en-US/docs/Tools/Storage_Inspector#IndexedDB">The Storage Inspector now lets you delete individual items from IndexedDB object stores.</a></li> + <li><a href="/en-US/docs/Tools/Memory">The Memory tool is enabled by default.</a></li> + <li><a href="/en-US/docs/Tools/Page_Inspector/UI_Tour#Computed_view">The Box model view is moved into the Computed view.</a></li> + <li><a href="/en-US/docs/Tools/Web_Console/Console_messages#Viewing_network_request_details">The Web Console now displays stack traces for XHR or Fetch() network requests.</a></li> +</ul> + +<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?list_id=13263766&chfield=resolution&chfieldfrom=2016-06-06&chfieldvalue=FIXED&resolution=FIXED&classification=Client%20Software&chfieldto=2016-08-01&query_format=advanced&bug_status=RESOLVED&bug_status=VERIFIED&component=Developer%20Tools&component=Developer%20Tools%3A%20about%3Adebugging&component=Developer%20Tools%3A%20Animation%20Inspector&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Computed%20Styles%20Inspector&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20CSS%20Rules%20Inspector&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20DOM&component=Developer%20Tools%3A%20Font%20Inspector&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20JSON%20Viewer&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&component=Developer%20Tools%3A%20Responsive%20Design%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Shared%20Components&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Storage%20Inspector&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20Web%20Audio%20Editor&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&component=Developer%20Tools%3A%20WebIDE&product=Firefox">All devtools bugs fixed between Firefox 49 and Firefox 50</a>.</p> + +<h3 id="HTTP">HTTP</h3> + +<ul> + <li>The experimental (and deprecated) <a href="https://en.wikipedia.org/wiki/SPDY">SPDY</a> 3.1 is now disabled by default {{bug(1287132)}}.</li> + <li>Support for {{HTTPHeader("X-Content-Type-Options")}} has been added ({{bug(471020)}}).</li> + <li>The cookie prefixes <strong><code>__Host-</code></strong> and <strong><code>__Secure-</code></strong> have been implemented. See {{HTTPHeader("Set-Cookie")}} and {{bug(1283368)}}.</li> + <li>The {{HTTPHeader("Referrer-Policy")}} header has been implemented {{bug(1264164)}}.</li> +</ul> + +<h3 id="Security">Security</h3> + +<ul> + <li>The {{htmlattrxref("ping", "a")}} attribute of {{htmlelement("a")}} element now abides by the <code><a href="https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives#connect-src">connect-src</a></code> <a href="https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives">CSP 1.1 policy directive</a> ({{bug(1100181)}}).</li> + <li>Support for the <code><a href="https://developer.mozilla.org/en-US/docs/Web/Security/CSP/CSP_policy_directives#sandbox">sandbox</a></code> <a href="/en-US/docs/Web/Security/CSP">CSP</a> directive has been added ({{bug(671389)}}).</li> + <li>It's now possible to set a <a href="/en-US/docs/Web/API/Web_Workers_API/Using_web_workers#Content_security_policy">content security policy for workers</a> ({{bug (959388)}}).</li> + <li>The {{domxref("Navigator.sendBeacon()")}} method no longer throws an exception if the beacon data couldn't be sent due to a <a href="/en-US/docs/Web/Security/CSP">Content Security Policy</a> restriction; instead, it returns <code>false</code> as expected ({{bug(1234813)}}).</li> +</ul> + +<h3 id="Networking">Networking</h3> + +<ul> + <li>When a error has happened during an asynchronous {{domxref("XMLHttpRequest")}}, the {{domxref("XMLHttpRequest.getAllResponseHeaders()")}} method now returns an empty string ({{bug(1286744)}}).</li> + <li>Instead of returning a <code>NetworkError</code>, asynchronous {{domxref("XMLHttpRequest")}} that fails for CORS or other network constraints now raises an {{event("error")}} that can be catched like any other error ({{bug(709991)}}).</li> + <li>{{domxref("XMLHttpRequest.getResponseHeader()")}} and {{domxref("XMLHttpRequest.getAllResponseHeaders()")}} now also return empty headers by default. This can be controlled via the preference <code>network.http.keep_empty_response_headers_as_empty_string</code> ({{bug(918721)}}).</li> + <li>The <code>only-if-cached</code> option has been added to <code><a href="/en-US/docs/Web/API/Request/cache">Request.cache</a></code> ({{bug(1272436)}}).</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>The <code>once</code> option for {{domxref("EventTarget.addEventListener()")}} is now supported ({{bug(1287706)}}).</li> + <li>The interface {{domxref("NodeList")}} are now iterable and the methods {{domxref("NodeList.forEach()", "forEach()")}}, {{domxref("NodeList.values()", "values()")}}, {{domxref("NodeList.entries()")}} and {{domxref("NodeList.keys()")}} are now available ({{bug(1290636)}}).</li> + <li>The interface {{domxref("DOMTokenList")}} are now iterable and the methods {{domxref("DOMTokenList.forEach()", "forEach()")}}, {{domxref("DOMTokenList.values()", "values()")}}, {{domxref("DOMTokenList.entries()")}} and {{domxref("DOMTokenList.keys()")}} are now available ({{bug(1290636)}}).</li> + <li>The methods {{domxref("Document.createElement()")}} and {{domxref("Document.createElementNS()")}} now have an optional <code>options</code> parameter for creating <a href="/en-US/docs/Web/Web_Components/Custom_Elements">custom elements</a> ({{bug(1276579)}}).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>The <code>allowReorder</code> attribute has been dropped and the behavior it was setting is now the default for SVG {{SVGElement("switch")}} elements ({{bug(1279690)}}).</li> + <li>The <code>defer</code> keyword for the {{SVGAttr("preserveAspectRatio")}} attribute on SVG {{SVGElement("image")}} elements has been removed to follow the latest SVG2 specification ({{bug(1280425)}}).</li> +</ul> + +<h3 id="Drag_and_Drop_API">Drag and Drop API</h3> + +<ul> + <li>The {{domxref("DataTransfer.items")}} property has been implemented, allowing access to multiple items being dragged and dropped using the HTML Drag and Drop API. To allow this, the {{domxref("DataTransferItem")}} and {{domxref("DataTransferItemList")}} interfaces are now supported as well ({{bug(906420)}}). This is enabled by default.</li> + <li>The old, obsolete Firefox specific drag and drop API events <code>dragdrop</code> and <code>draggesture</code> are no longer supported. Be sure to update any code still using them to use the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">HTML drag and drop API</a> ({{bug(1162050)}}.</li> +</ul> + +<h3 id="Pointer_Lock_API">Pointer Lock API</h3> + +<ul> + <li>The <a href="/en-US/docs/Web/API/Pointer_Lock_API">Pointer Lock API</a> is now unprefixed ({{bug(991899)}}).</li> + <li>Before Firefox 50, <code><a href="/en-US/docs/Web/API/Element/requestPointerLock">requestPointerLock()</a></code> asked for permission using a doorhanger, and pointer lock would not be enabled until the user granted permission. From Firefox 50, pointer lock is like the <a href="/en-US/docs/Web/API/Fullscreen_API">fullscreen API</a>: it's granted immediately, but a notification is displayed explaining to the user how to exit ({{bug(1273351)}}).</li> +</ul> + +<h3 id="IndexedDB">IndexedDB</h3> + +<ul> + <li>A {{event("close")}} event is now sent to the {{domxref("IDBDatabase")}} object when the corresponding database is unexpectedly closed ({{bug(1151017)}}).</li> +</ul> + +<h3 id="Service_Workers">Service Workers</h3> + +<ul> + <li>The {{domxref("WindowClient.navigate()")}} method has been implemented. This method lets you open a specified URL into a client window which is being controlled by the service worker ({{bug(1218148)}}).</li> +</ul> + +<h3 id="WebGL">WebGL</h3> + +<ul> + <li>The {{domxref("EXT_shader_texture_lod")}} WebGL extension has been implemented ({{bug(1111689)}}).</li> + <li>The texImage methods have been updated for <a href="/en-US/docs/Web/API/WebGL2RenderingContext">WebGL 2</a> to implement PBOs (<code>PIXEL_UNPACK_BUFFER</code>) ({{bug(1280499)}}).</li> +</ul> + +<h3 id="WebRTC">WebRTC</h3> + +<ul> + <li>Adding a track to a {{domxref("MediaStream")}} now generates the {{event("addtrack")}} event as described in the specification. The event is of type {{domxref("MediaStreamTrackEvent")}} and is fired on the stream to which the track was added. You can use either {{domxref("EventTarget.addEventListener", "MediaStream.addEventListener('addtrack', ...)")}} or the {{domxref("MediaStream.onaddtrack")}} property to handle <code>"addtrack"</code> events.</li> + <li>The {{domxref("MediaStreamTrack")}} interface now supports the {{event("ended")}} event and the {{domxref("MediaStreamTrack.onended")}} event handler.</li> + <li>Firefox now supports the {{domxref("MediaStreamTrack.readyState")}} property, which indicates whether the track is live or permanently ended.</li> + <li>The {{domxref("MediaStreamTrack")}} methods {{domxref("MediaStreamTrack.getConstraints", "getConstraints()")}} and {{domxref("MediaStreamTrack.getSettings", "getSettings()")}} have been implemented; these let you get the most recently applied set of customized property constraints and the actual values of all of the track's constrainable properties, respectively. The accompanying data types have been documented as well.</li> + <li>The {{domxref("RTCDataChannel.stream")}} property has been removed. This was replaced with {{domxref("RTCDataChannel.id")}} in <a href="/en-US/docs/Mozilla/Firefox/Releases/24">Firefox 24</a>, but was supported for backward compatibility. Please be sure to update your code to use the <code>id</code> property if you haven't done so yet.</li> +</ul> + +<h3 id="Web_Audio_API">Web Audio API</h3> + +<ul> + <li>The {{domxref("PannerNode")}} interface now supports the 3D Cartesian space properties for the position ({{domxref("PannerNode.positionX")}}, {{domxref("PannerNode.positionY")}}, and {{domxref("PannerNode.positionZ")}}) and directionality ({{domxref("PannerNode.orientationX")}}, {{domxref("PannerNode.orientationY")}}, {{domxref("PannerNode.orientationZ")}}) of an audio source.</li> + <li>The interface {{domxref("IIRFilterNode")}}, which implements a general {{interwiki("wikipedia", "infinite impulse response")}} (IIR) filter, has been implemented.</li> + <li>Throttling in background tabs of timers created by {{domxref("WindowTimers.setInterval", "Window.setInterval()")}} and {{domxref("WindowTimers.setTimeout", "Window.setTimeout()")}} no longer occurs if a <a href="/en-US/docs/Web/API/Web_Audio_API">Web Audio API</a> {{domxref("AudioContext")}} is actively playing sound. This should help prevent issues with timing-sensitive audio playback (such as music players generating individual notes using timers) in the background ({{bug(1181073)}}).</li> +</ul> + +<h3 id="AudioVideo">Audio/Video</h3> + +<ul> + <li>The <code>AlignSetting</code> enum (representing possible values for {{domxref("VTTCue.align")}}) incorrectly previously included the value <code>"middle"</code> instead of <code>"center"</code>. This has been corrected ({{bug(1276130)}}).</li> + <li>The non-standard and experimental method {{domxref("HTMLMediaElement.seekToNextFrame()")}} now seeks to the next frame in the media asynchronously, rather than synchronously, and returns a {{jsxref("Promise")}} which resolves once the seek is complete.</li> + <li>The implementation of {{domxref("HTMLTrackElement")}} has been corrected to allow {{HTMLElement("track")}} elements to load resources even if not in a document ({{bug(871747)}}).</li> +</ul> + +<h3 id="Battery_API">Battery API</h3> + +<ul> + <li>The {{domxref("navigator.battery")}} property, which has been deprecated since Firefox 43, is now obsolete and has been removed. Use the {{domxref("navigator.getBattery()")}} method instead to get a battery {{jsxref("Promise")}}, which will resolve when the {{domxref("BatteryManager")}} is available for use; the {{domxref("BatteryManager")}} is passed into the fulfillment handler for the promise ({{bug(12593355)}}).</li> +</ul> + +<h3 id="Files_and_directories">Files and directories</h3> + +<ul> + <li>A subset of the <a href="/en-US/docs/Web/API/File_and_Directory_Entries_API">File and Directory Entries API</a> has been implemented, to improve compatibility with sites that were previously only compatible with Google Chrome ({{bug(1265767)}}). + + <ul> + <li>The asynchronous API interfaces have been implemented, with the caveat that only reading of files is supported; for example, the {{domxref("FileSystemFileEntry.createWriter()")}} method is a no-op.</li> + <li>These interfaces have been implemented: + <ul> + <li>{{domxref("FileSystem")}}</li> + <li>{{domxref("FileSystemEntry")}} (properties only; the methods have not been implemented)</li> + <li>{{domxref("FileSystemFileEntry")}} (except for {{domxref("FileSystemFileEntry.createWriter", "createWriter()")}})</li> + <li>{{domxref("FileSystemDirectoryEntry")}} (except for {{domxref("FileSystemDirectoryEntry.removeRecursively", "removeRecursively()")}})</li> + <li>{{domxref("FileSystemDirectoryReader")}}</li> + </ul> + </li> + <li>{{domxref("HTMLInputElement.webkitdirectory")}} as well as the {{HTMLattrxref("webkitdirectory", "input")}} attribute of the {{HTMLElement("input")}} element have been implemented; this lets you configure a file input to accept directories instead of files ({{bug(1258489)}}).</li> + <li>{{domxref("HTMLInputElement.webkitEntries")}} has been implemented; this returns an array of {{domxref("FileSystemEntry")}}-based objects representing the selected items.</li> + <li>{{domxref("File.webkitRelativePath")}} has been implemented; this contains the path of the file relative to the root of the containing {{domxref("FileSystemDirectoryEntry")}} that was among the items in the list returned by {{domxref("HTMLInputElement.webkitGetEntries()")}}.</li> + <li>See <a href="/en-US/docs/Web/API/File_and_Directory_Entries_API/Firefox_support">File and Directory Entries API support in Firefox</a> for details about what we do and do not support in this API.</li> + <li>These APIs are now enabled by default; some were previously available but only behind a preference ({{bug(1288683)}}).</li> + </ul> + </li> + <li>We've implemented {{domxref("DataTransferItem.webkitGetAsEntry()")}} as part of the <a href="/en-US/docs/Web/API/File_and_Directory_Entries_API">File and Directory Entries API</a>; this lets you obtain a {{domxref("FileSystemEntry")}} representing a dropped file ({{bug(1289255)}}). This is enabled by default.</li> + <li>The <code>HTMLInputElement.directory</code> property, part of the <a href="https://wicg.github.io/directory-upload/proposal.html">Directory Upload API</a> proposal, has been renamed to <code>allowdirs</code> ({{bug(1288681)}}). This property is hidden behind a preference.</li> +</ul> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/50">Site Compatibility for Firefox 50</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers(49)}}</p> diff --git a/files/fr/mozilla/firefox/versions/59/index.html b/files/fr/mozilla/firefox/versions/59/index.html new file mode 100644 index 0000000000..715432166e --- /dev/null +++ b/files/fr/mozilla/firefox/versions/59/index.html @@ -0,0 +1,204 @@ +--- +title: Firefox 59 for developers +slug: Mozilla/Firefox/Versions/59 +translation_of: Mozilla/Firefox/Releases/59 +--- +<div>{{FirefoxSidebar}}</div><p class="summary">This article provides information about the changes in Firefox 59 that will affect developers. Firefox 59 was released on March 13, 2018.</p> + +<h2 id="Changes_for_web_developers">Changes for web developers</h2> + +<h3 id="Developer_tools">Developer tools</h3> + +<ul> + <li>The <a href="/en-US/docs/Tools/Network_Monitor">Network Monitor</a> Response tab now shows a <a href="/en-US/docs/Tools/Network_Monitor#HTML_preview">preview of the rendered HTML</a> — if the response is HTML ({{bug(1353319)}}).</li> + <li>Cookie information shown in the Storage Inspector (see <a href="/en-US/docs/Tools/Storage_Inspector#Cookies">Cookies</a>) now includes a <em>sameSite</em> column showing what the same-site status of each cookie is ({{bug(1298370)}}).</li> + <li>The <a href="/en-US/docs/Tools/Rulers">Rulers</a> tool now includes a readout showing the current dimensions of the viewport ({{bug(1402633)}}).</li> + <li>In <a href="/en-US/docs/Tools/Responsive_Design_Mode">Responsive Design Mode</a>, you can now set the screen dimensions using the cursor keys ({{bug(1421663)}}). See the <a href="/en-US/docs/Tools/Responsive_Design_Mode#Setting_screen_size">Setting screen size</a> section for more details.</li> + <li>The <em>Raw headers</em> display in the <a href="/en-US/docs/Tools/Network_Monitor">Network Monitor</a> <em>Headers</em> tab now includes the response's status code ({{bug(1419401)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<p>The {{HTMLElement("textarea")}} element's {{htmlattrxref("autocomplete", "textarea")}} attribute has been implemented. This lets you enable or disable form auto-fill for the element.</p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>The {{cssxref("overscroll-behavior")}} property and its associated longhand properties — {{cssxref("overscroll-behavior-x")}} and {{cssxref("overscroll-behavior-y")}} — have been implemented ({{bug(951793)}}), and it has been enabled by default on all releases ({{bug(1428879)}}).</li> + <li>The behavior of "unusual elements" (elements that aren’t rendered purely by CSS box concepts such as replaced elements) when given a {{cssxref("display")}} value of <code>contents</code> has been updated as per spec ({{bug(1427292)}}). See <a href="https://drafts.csswg.org/css-display/#unbox">Appendix B: Effects of display: contents on Unusual Elements</a> for exactly what the specced behaviors are.</li> + <li>{{cssxref("position")}} <code>sticky</code> is now supported on appropriate <a href="/en-US/docs/Learn/HTML/Tables">HTML table</a> parts (e.g. {{htmlelement("th")}} elements) ({{bug(975644)}}).</li> + <li>{{cssxref("calc()")}} is now supported in {{cssxref("<color>")}} values — <code>rgb()</code>, <code>rgba()</code>, <code>hsl()</code>, and <code>hsla()</code> ({{bug(984021)}}).</li> + <li>{{cssxref("calc()")}} in <a href="/en-US/docs/Web/CSS/Media_Queries">media query</a> values is now supported {{bug(1396057)}}.</li> + <li>The {{cssxref("@document")}} at-rule has been limited to use only in user and UA sheets ({{bug(1035091)}}).</li> + <li>Implement the {{cssxref("font-optical-sizing")}} property ({{bug(1435692)}}).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>No changes.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<p><em>No changes.</em></p> + +<h3 id="APIs">APIs</h3> + +<h4 id="New_APIs">New APIs</h4> + +<p>{{domxref("PointerEvent","PointerEvents")}} have been enabled in Firefox Desktop ({{bug(1411467)}}).</p> + +<h4 id="DOM">DOM</h4> + +<ul> + <li>The {{domxref("EventTarget.EventTarget()","EventTarget()")}} constructor has been implemented ({{bug(1379688)}}).</li> + <li>The {{domxref("Response.Response()","Response()")}} constructor can now accept a <code>null</code> value for its <code>body</code> parameter, as per spec ({{bug(1303025)}}).</li> +</ul> + +<h4 id="DOM_events">DOM events</h4> + +<p>The {{domxref("Event.composedPath()")}} method has been implemented ({{bug(1412775)}}).</p> + +<h4 id="Service_workers">Service workers</h4> + +<ul> + <li>The service worker <a href="/en-US/docs/Web/API/Clients">Clients API</a> can now find and communicate with windows in a separate browser process ({{bug(1293277)}}) .</li> + <li>Nested about:blank and about:srcdoc iframes will now inherit their parent's controlling service worker. Fixed in ({{bug(1293277)}}) and ({{bug(1426979)}}).</li> + <li>When a service worker provides a {{domxref("Response")}} to {{domxref("FetchEvent.respondWith()")}}, the {{domxref("Response.url")}} value will not be propagated to the intercepted network request as the final resolved URL. In the past the {{domxref("Request.url","FetchEvent.request.url")}} was used for this instead. This means, for example, if a service worker intercepts a stylesheet or worker script, then the provided <code>Response.url</code> will be used to resolve any relative {{cssxref("@import")}} or {{domxref("WorkerGlobalScope.importScripts()","importScripts()")}} subresource loads ({{bug(1222008)}}).</li> + <li><code>FetchEvent.respondWith()</code> will now trigger a network error if the {{domxref("Request.mode","FetchEvent.request.mode")}} is <code>"same-origin"</code> and the provided {{domxref("Response.type")}} is <code>"cors"</code>. ({{bug(1222008)}})</li> +</ul> + +<h4 id="Media_and_WebRTC">Media and WebRTC</h4> + +<ul> + <li>The {{domxref("MediaStreamTrack")}} property {{domxref("MediaStreamTrack.muted")}}, along with the events {{event("mute")}} and {{event("unmute")}} and the corresponding event handlers, {{domxref("MediaStreamTrack.onmute", "onmute")}} and {{domxref("MediaStreamTrack.onmute", "onunmute")}}, have been implemented. A track's <code>muted</code> state indicates that the track is not currently able to provide media data. + + <div class="note"><strong>Note:</strong> The <code>muted</code> state of a track isn't useful for what's typically thought of as muting and unmuting a track. Instead, use the {{domxref("MediaStreamTrack.enabled", "enabled")}} property; setting <code>enabled</code> to <code>false</code> causes the track to output only empty frames.</div> + </li> + <li>The {{domxref("RTCRtpReceiver")}} methods {{domxref("RTCRtpReceiver.getContributingSources", "getContributingSources()")}} and {{domxref("RTCRtpReceiver.getSynchronizationSources", "getSynchronizationSources()")}} have been implemented to provide information about the sources of each RTP stream. However, a specification change occurred before release and we have disabled these by default behind the preference <code>media.peerconnection.rtpsourcesapi.enable</code> ({{bug(1363667)}}, {{bug(1430213)}}, and {{bug(1433236)}}.</li> + <li>The {{domxref("RTCRtpTransceiver")}} interface has now been implemented, since the Firefox implementation of WebRTC now supports transceivers, with <code>RTCPeerConnection</code> and other interfaces updated to use them per the latest specification.</li> + <li>The {{domxref("RTCPeerConnection.addTransceiver()")}} method has been added. In addition, the behavior of {{domxref("RTCPeerConnection.addTrack", "addTrack()")}} has been updated to create a transceiver as required.</li> + <li>Support for <a href="/en-US/docs/Web/API/WebVTT_API">WebVTT</a> regions was implemented in Firefox 58 but disabled by default. They're now available by default ({{bug(1415805)}}).</li> + <li>Firefox now supports WebVTT <code>REGION</code> definition blocks whose settings list has one setting per line instead of all of the settings being on the same line of the WebVTT file ({{bug(1415821)}}.</li> +</ul> + +<h4 id="Canvas_and_WebGL">Canvas and WebGL</h4> + +<p><em>No changes.</em></p> + +<h3 id="CSSOM">CSSOM</h3> + +<p>The {{domxref("CSSNamespaceRule")}} interface and its <code>namespaceURL</code> and <code>prefix</code> properties have been implemented ({{bug(1326514)}}).</p> + +<h3 id="HTTP">HTTP</h3> + +<p><em>No changes.</em></p> + +<h3 id="Security">Security</h3> + +<ul> + <li>Top-level navigation to <code>data:</code> URIs has been blocked {{bug(1401895)}}. See <a href="https://blog.mozilla.org/security/2017/11/27/blocking-top-level-navigations-data-urls-firefox-59/">Blocking Top-Level Navigations to data URLs for Firefox 59</a> for more details.</li> + <li>The <code>SAMEORIGIN</code> directive of the {{httpheader("X-Frame-Options")}} header has been changed so that it checks not only the top-level IFrame is in the same origin, but all its ancestors as well ({{bug(725490)}}).</li> + <li>Image resources loaded from different origins to the current document are no longer able to trigger HTTP authentication dialogs ({{bug(1423146)}}). See <a href="https://www.fxsitecompat.com/en-CA/docs/2017/http-auth-dialog-can-no-longer-be-triggered-by-cross-origin-images/">HTTP auth dialog can no longer be triggered by cross-origin images</a> for more details.</li> + <li>HTTP authentication now uses <code>utf-8</code> encoding for usernames and passwords (rather than <code>ISO-8859-1</code>) for parity with other browsers, and to avoid potential problems as described in {{bug(1419658)}}.</li> + <li>Everyday the <a href="https://searchfox.org/mozilla-central/source/security/manager/ssl/nsSTSPreloadList.inc">HSTS preload list</a> is updated from Google. Normally this doesn't warrant a note, but in this release new TLDs were included, notably <code>.app</code> and <code>.dev</code>. While they are new TLDs developers might have used them for local development and be surprised by this change. Note that <a href="https://tools.ietf.org/html/rfc2606">reserved TLDs</a> should be used for local development instead.</li> +</ul> + +<h3 id="Plugins">Plugins</h3> + +<p><em>No changes.</em></p> + +<h3 id="Other">Other</h3> + +<p><em>No changes.</em></p> + +<h2 id="Removals_from_the_web_platform">Removals from the web platform</h2> + +<h3 id="HTML_2">HTML</h3> + +<p>The non-standard <code>version</code> parameter of the {{htmlelement("script")}} element's {{htmlattrxref("type","script")}} attribute (e.g. <code>type="application/javascript;version=1.8"</code>) has been removed ({{bug(1428745)}}).</p> + +<h3 id="CSS_2">CSS</h3> + +<ul> + <li>The proprietary <code>mozmm</code> {{cssxref("<length>")}} unit has been removed ({{bug(1416564)}}).</li> + <li>The proprietary {{cssxref("-moz-border-top-colors")}}, {{cssxref("-moz-border-right-colors")}}, {{cssxref("-moz-border-bottom-colors")}}, and {{cssxref("-moz-border-left-colors")}} properties have been limited to usage in chrome code only ({{bug(1417200)}}).</li> +</ul> + +<h3 id="JavaScript_2">JavaScript</h3> + +<ul> + <li>Non-standard <a href="/en-US/docs/Web/JavaScript/Reference/Statements/try...catch#Conditional_catch_clauses">conditional catch clauses</a> have been removed ({{bug(1228841)}}).</li> +</ul> + +<h3 id="APIs_2">APIs</h3> + +<ul> + <li>The non-standard method <code>Event.getPreventDefault()</code> has been removed. You should instead use the {{domxref("Event.defaultPrevented")}} property to determine whether or not {{domxref("Event.preventDefault", "preventDefault()")}} was called on the {{domxref("Event")}}.</li> + <li>The propretary <code><a href="/en-US/docs/Archive/API/Navigator/mozNotification">Navigator.mozNotification</a></code> property and <code>DesktopNotification</code> interface have been removed, in favor of the standard <a href="/en-US/docs/Web/API/Notifications_API">Notifications API</a> ({{bug(952453)}}).</li> + <li>The proprietary <code>window.external.addSearchEngine()</code> method has been removed ({{bug("862147")}}). Also see {{domxref("Window.sidebar")}} for more details.</li> + <li>The non-standard Firefox-only {{domxref("HTMLMediaElement")}} property <code>mozAutoplayEnabled</code> has been removed.</li> +</ul> + +<h3 id="SVG_2">SVG</h3> + +<p>Support for SMIL's <code>accessKey</code> feature has been removed ({{bug(1423098)}}).</p> + +<h3 id="Other_2">Other</h3> + +<p>Support for the non-standard <code>pcast:</code> and <code>feed:</code> protocols has been removed from Firefox ({{bug(1420622)}}).</p> + +<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2> + +<h3 id="WebExtensions">WebExtensions</h3> + +<ul> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/theme">Theme</a> updates: + + <ul> + <li>new properties: <code>colors.background_tab_text</code>, <code>colors.toolbar_field_border</code></li> + <li>all color properties now support both Chrome-style arrays and CSS color values.</li> + </ul> + </li> + <li>New <a href="/en-US/Add-ons/WebExtensions/API/browserSettings">browser settings</a>: + <ul> + <li><a href="https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/contextMenuShowEvent"><code>contextMenuShowEvent</code></a></li> + <li><a href="https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/openBookmarksInNewTabs"><code>openBookmarksInNewTabs</code></a></li> + <li><a href="https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/openSearchResultsInNewTabs"><code>openSearchResultsInNewTabs</code></a></li> + <li><a href="https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/proxyConfig"><code>proxyConfig</code></a></li> + </ul> + </li> + <li>New <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs">tabs</a></code> APIs: + <ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/captureTab">tabs.captureTab()</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/hide">tabs.hide()</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/show">tabs.show()</a></code></li> + </ul> + </li> + <li>The <code><a href="/en-US/docs/Archive/Add-ons/Legacy_Firefox_for_Android/API/NativeWindow/contextmenus">contextMenus</a></code> API now supports a <a href="/en-US/Add-ons/WebExtensions/API/menus/ContextType">"bookmark" context</a>.</li> + <li>New <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contentScripts">contentScripts</a></code> API enables runtime registration of content scripts.</li> + <li>New <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction">pageAction</a></code>, <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">browserAction</a></code>, <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction">SidebarAction</a></code> APIs: + <ul> + <li><code>browserAction/pageAction/sidebarAction.set*</code> functions now accept <code>null</code> to undo changes.</li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserAction/isEnabled">browserAction.isEnabled()</a></code>, <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction/isShown">pageAction.isShown()</a></code> , <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction/isOpen">sidebarAction.isOpen()</a></code> functions.</li> + </ul> + </li> + <li>New option in <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code> to show page actions by default.</li> + <li>New values for <code>protocol_handers</code>: + <ul> + <li>"ssb" for Secure Scuttlebutt communications</li> + <li>"dat" for DATproject</li> + <li>"ipfs", "ipns", "dweb" for IPFS</li> + </ul> + </li> + <li>New <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/privacy/websites">privacy.websites</a></code> setting "cookieConfig".</li> + <li>Support in <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies">cookies</a></code> API for <a href="/en-US/Add-ons/WebExtensions/API/cookies#First-party_isolation">first-party isolation</a>.</li> + <li>New option <code>upgradeToSecure</code> in <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a></code>.</li> +</ul> + +<h2 id="See_also">See also</h2> + +<p><a href="https://www.fxsitecompat.com/en-CA/versions/59/">Site compatibility for Firefox 59</a></p> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers(58)}}</p> diff --git a/files/fr/mozilla/firefox/versions/6/index.html b/files/fr/mozilla/firefox/versions/6/index.html new file mode 100644 index 0000000000..2ee16dc40b --- /dev/null +++ b/files/fr/mozilla/firefox/versions/6/index.html @@ -0,0 +1,290 @@ +--- +title: Firefox 6 pour les développeurs +slug: Mozilla/Firefox/Versions/6 +tags: + - Firefox + - Firefox 6 +translation_of: Mozilla/Firefox/Releases/6 +--- +<div><section class="Quick_links" id="Quick_Links"> + <ol> + <li class="toggle"> + <details> + <summary>Notes de versions pour développeurs</summary> + <ol> + <li><a href="/fr/docs/Mozilla/Firefox/Releases">Notes de versions pour développeurs</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Modules complémentaires</summary> + <ol> + <li><a href="/fr/Add-ons/WebExtensions">WebExtensions</a></li> + <li><a href="/fr/Add-ons/Themes">Thèmes</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Fonctionnement interne de Firefox</summary> + <ol> + <li><a href="/fr/docs/Mozilla/">Le projet Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Gecko">Gecko</a></li> + <li><a href="/fr/docs/Mozilla/Firefox/Headless_mode">Mode « headless »</a></li> + <li><a href="/fr/docs/Mozilla/JavaScript_code_modules">Modules de code Javascript</a></li> + <li><a href="/fr/docs/Mozilla/js-ctypes">JS-ctypes</a></li> + <li><a href="/fr/docs/Mozilla/MathML_Project">Le projet MathML</a></li> + <li><a href="/fr/docs/Mozilla/MFBT">MFBT</a></li> + <li><a href="/fr/docs/Mozilla/Projects">Les projets Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Preferences">Le système de préférences</a></li> + <li><a href="/fr/docs/Mozilla/WebIDL_bindings">Connexions WebIDL</a></li> + <li><a href="/fr/docs/Mozilla/Tech/XPCOM">XPCOM</a></li> + <li><a href="/fr/docs/Mozilla/Tech/XUL">XUL</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Développer et contribuer</summary> + <ol> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions">Instructions de compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions/Configuring_Build_Options">Configuration des options de compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions/How_Mozilla_s_build_system_works">Fonctionnement de la compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Code source de Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Localization">Localisation</a></li> + <li><a href="/fr/docs/Mozilla/Mercurial">Mercurial</a></li> + <li><a href="/fr/docs/Mozilla/QA">Assurance qualité</a></li> + <li><a href="/fr/docs/Mozilla/Using_Mozilla_code_in_other_projects">Utilisation de code Mozilla dans d'autres projets</a></li> + </ol> + </details> + </li> + </ol> +</section></div><p>Firefox 6, basé sur Gecko 6.0, est sorti le 16 août 2011. Cet article fournit des informations à propos des changements qui affectent les développeurs dans cette version.</p> + +<h2 id="Changements_pour_les_développeurs_web">Changements pour les développeurs web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>L'élément HTML5 <a href="/fr/docs/Web/HTML/Element/progress" title="L'élément HTML <progress> indique l'état de complétion d'une tâche et est généralement représenté par une barre de progression."><code><progress></code></a>, qui vous permet de créer une barre de progression, est maintenant supporté.</li> + <li>L'analyse syntaxique de l'élément HTML5 <a href="/fr/docs/Web/HTML/Element/track" title="L'élément HTML <track> est utilisé comme élément fils d'un élément <audio> ou <video> et permet de fournir une piste texte pour le média (par exemple afin de gérer automatiquement les sous-titres). Les pistes texte utilisées avec cet élément sont formatées selon le format WebVTT (ce sont des fichiers .vtt) (WebVTT pour Web Video Text Tracks) ou selon le format Timed Text Markup Language (TTML)."><code><track></code></a>, qui spécifie les pistes de texte pour les éléments multimédias, est désormais supporté. Cet élément devrait apparaître dans les DOM, si son comportement n'est pas encore implémenté.</li> + <li>L'élément <a href="/fr/docs/Web/HTML/Element/iframe" title="Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !"><code><iframe></code></a> est désormais correctement coupé par son conteneur lorsque les coins du conteneur ont été arrondis à l'aide de la propriété <a href="/fr/docs/Web/CSS/border-radius" title="La propriété border-radius permet de définir des coins arrondis pour la bordure d'un élément. La courbure de chaque coin est définie avec un ou deux rayons de courbures qui permettent de définir un arc de cercle ou un arc d'ellipse."><code>border-radius</code></a>.</li> + <li>Les champs <a href="/fr/docs/Web/HTML/Element/input" title="L'élément HTML <input> est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément <input> dépend fortement de la valeur indiquée dans son attribut type."><code><input></code></a> des éléments <a href="/fr/docs/Web/HTML/Element/form" title="L'élément HTML <form> représente une section d'un document qui contient des contrôles interactifs permettant à un utilisateur d'envoyer des données à un serveur web."><code><form></code></a> ne sont plus supportés par la propriété XUL <code><span><a href="https://developer.mozilla.org/fr/docs/XUL/Propriétés/maxwidth">maxwidth</a></span></code>, cela n'a jamais été volontaire, et est contraire à la spécification HTML. Vous devriez plutôt utiliser l'attribut <code><a href="/fr/docs/Web/HTML/Element/input#attr-size">size</a></code> pour définir la largeur maximum de champs de saisie.</li> + <li>Les propriétés <code>fillStyle</code> et <code>strokeStyle</code> de <a href="/fr/docs/Web/API/CanvasRenderingContext2d" title="L'interface CanvasRenderingContext2D est utilisée pour dessiner des rectangles, du texte, des images et d'autres objets sur l'élément canvas. Il fournit le contexte de rendu 2D pour la surface de dessin d'un élément <canvas>."><code>CanvasRenderingContext2d</code></a> (<a href="/fr/docs/Web/HTML/Element/canvas" title="L'élément <canvas> permet de modifier une zone graphique via un script (habituellement en JavaScript ou grâce à WebGL). Il peut par exemple être utilisé afin de dessiner des graphiques, manipuler des images ou jouer des animations."><code><canvas></code></a>) utilisées pour ignorer les déchets inclus après la définition d'une couleur valide, maintenant c'est traité comme une erreur. Par exemple, "rouge bleu" est une couleur utilisée pour être traitée comme du "rouge", alors qu'elle aurait dû être ignorée.</li> + <li>La largeur et la hauteur des éléments <a href="/fr/docs/Web/HTML/Element/canvas" title="L'élément <canvas> permet de modifier une zone graphique via un script (habituellement en JavaScript ou grâce à WebGL). Il peut par exemple être utilisé afin de dessiner des graphiques, manipuler des images ou jouer des animations."><code><canvas></code></a> peuvent être correctement mis à 0px ; avant, lorsque vous essayez de le faire, elles se fixaient à 300px.</li> + <li>le support de l'attribut HTML <a class="internal" href="https://developer.mozilla.org/fr/docs/HTML/Global_attributes#attr-data-*" title="/HTML/Global_attributes#attr-data-*">des données personnalisées</a> (data-*) a été ajouté. La propriété DOM <a href="/fr/docs/Web/API/Element/dataset" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>element.dataset</code></a> permet d'y accéder.</li> + <li>Quand un élément <a href="/fr/docs/Web/HTML/Element/textarea" title="L'élément HTML <textarea> représente un contrôle qui permet d'éditer du texte sur plusieurs lignes."><code><textarea></code></a> reçoit le focus, le point d'insertion de texte est désormais placé, par défaut, au début du texte plutôt qu'à la fin. Le comportement de Firefox est ainsi conforme avec les autres navigateurs.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<dl> + <dt><a href="/fr/docs/Web/CSS/text-decoration-color" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-text-decoration-color</code></a></dt> + <dd>Cette nouvelle propriété vous permet de définir la couleur utilisée par les décorations du texte, comme le soulignement, le surlignement et le texte barré.</dd> + <dt><a href="/fr/docs/Web/CSS/text-decoration-line" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-text-decoration-line</code></a></dt> + <dd>Cette nouvelle propriété vous permet de définir le type de décorations du texte ajoutée à un élément.</dd> + <dt><a href="/fr/docs/Web/CSS/text-decoration-style" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-text-decoration-style</code></a></dt> + <dd>Cette nouvelle propriété vous permet de définir le style de décorations du texte, comme le soulignement, le surlignement et le texte barré. Les styles incluent les simples lignes, les lignes doubles, les lignes ondulées, les lignes pointillées, etc.</dd> + <dt><a href="/fr/docs/Web/CSS/hyphens" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-hyphens</code></a></dt> + <dd>Cette nouvelle propriété vous permet de contrôler la façon dont la césure des mots lors de retours à la ligne est gérée.</dd> + <dt><a href="/fr/docs/Web/CSS/orient" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-orient</code></a></dt> + <dd>Une nouvelle propriété (pour l'instant spécifique à Mozilla) qui vous permet de contrôler l'orientation verticale ou horizontale de certains éléments (en particulier <a href="/fr/docs/Web/HTML/Element/progress" title="L'élément HTML <progress> indique l'état de complétion d'une tâche et est généralement représenté par une barre de progression."><code><progress></code></a>).</dd> + <dt><a href="/fr/docs/Web/CSS/::-moz-progress-bar" title="Le pseudo-élément ::-moz-progress-bar s'appliquant à la zone d'élément HTML <progress> représente la valeur de la progression effectuée jusqu'à présent. Vous pourrez par exemple, modifier la couleur de la barre de progression."><code>::-moz-progress-bar</code></a></dt> + <dd>Un pseudo-élément spécifique à Mozilla qui vous permet de définir le style de la zone d'un élément <a href="/fr/docs/Web/HTML/Element/progress" title="L'élément HTML <progress> indique l'état de complétion d'une tâche et est généralement représenté par une barre de progression."><code><progress></code></a> représentant la fraction d'une tâche.</dd> +</dl> + +<h4 id="Autres_changements">Autres changements</h4> + +<ul> + <li>La propriété <a href="/fr/docs/Web/CSS/@-moz-document" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>@-moz-document</code></a> a une nouvelle fonction <code>regexp()</code>, qui vous permet d'adapter l'URL du document à une <a class="internal" href="https://developer.mozilla.org/fr/Guide_JavaScript_1.5/Expressions_rationnelles" title="fr/Guide_JavaScript_1.5/Expressions_rationnelles">regular expression</a>.</li> + <li>La propriété CSS <a href="/fr/docs/Web/CSS/azimuth" title="Utilisée avec la propriété elevation, azimuth permet de positionner différentes sources audio dans l'espace pour une présentation auditive. Cela permet de séparer les voix de façons naturelles, qui pourront donc provenir de différents emplacements. Une sortie stereo permettra d'obtenir un son avec des sources situées sur deux dimensions, des écouteurs binauriculaires permettent d'obtenir un son tri-dimensionnel."><code>azimuth</code></a> n'est plus supportée, comme nous avons enlevé le peu de code que nous avions pour le groupe média <code>aural</code>. Il n'a jamais été implémenté de manière significative, donc il était plus logique de supprimer cette implémentation crufty pour le moment, au lieu d'essayer de le rafistoler.</li> + <li>Avant, la pseudo-classe <a href="/fr/docs/Web/CSS/:hover" title="La pseudo-classe :hover permet de spécifier l'apparence d'un élément au moment où l'utilisateur le survole avec le pointeur, sans nécessairement l'activer."><code>:hover</code></a> n'était pas appliquée aux sélecteurs de classe quand on était en mode quirks, par exemple, <code>.someclass:hover</code> ne fonctionne pas. Cette bizarrerie a été enlevée.</li> + <li>La pseudo-classe <a href="/fr/docs/Web/CSS/:indeterminate" title="La pseudo-classe :indeterminate permet de cibler un élément de formulaire dont l'état est indéterminé."><code>:indeterminate</code></a> peut être appliquée à l'élément <a href="/fr/docs/Web/HTML/Element/progress" title="L'élément HTML <progress> indique l'état de complétion d'une tâche et est généralement représenté par une barre de progression."><code><progress></code></a>. Cela n'est pas un standard, mais nous espérons que ce soit adopté par les autres navigateurs car c'est utile.</li> + <li>La valeur <code>-moz-win-exclude-glass</code> a été ajoutée à la propriété CSS <a href="/fr/docs/Web/CSS/-moz-appearance" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>-moz-appearance</code></a> afin d'exclure des zones opaques dans les effets d'Aero Glass sur les systèmes Windows.</li> + <li>Le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=658949" title="FIXED: data URL with hash - content doesn't match location.">bug 658949</a> change la façon dont le symbole dièse (#) est traité dans les données URI qui peut briser les feuilles de style CSS qui contiennent un tel symbole.</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/Using_media_queries_from_code" title="en/CSS/Using media queries from code">Utilisation de media queries à partir de code</a></dt> + <dd>Vous pouvez désormais tester le résultat d'une chaîne media query en programmant la méthode <a href="/fr/docs/Web/API/Window/matchMedia" title="Retourne un nouvel objet MediaQueryList contenant les résultats de la chaîne de caractères media query spécifiée."><code>window.matchMedia()</code></a> et l'interface <a href="/fr/docs/Web/API/MediaQueryList" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>MediaQueryList</code></a>.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Touch_events" title="en/DOM/Touch events">Evènements tactile</a></dt> + <dd>Firefox 6 ajout le support du standard W3C sur les évènements tactile, cela facilite l'interprétation d'une ou plusieurs touches à la fois sur les surfaces tactiles comme les écrans tactiles et pavés tactiles.</dd> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Server-sent_events" title="en/Server-sent events">Evènements server-sent</a></dt> + <dd>Les évènements server-sent permettent à une application Web de demander à un serveur pour envoyer des événements comme n'importe quel événement DOM localement créé.</dd> +</dl> + +<ul> + <li><code>navigator.securityPolicy</code>, qui a depuis longtemps retourné une chaîne vide, a simplement été supprimé.</li> + <li><a href="/fr/docs/Web/API/BlobBuilder" title="L'interface BlobBuilder fournit une manière simple de construire des objets Blob. Il suffit de créer un BlobBuilder et de lui ajouter des données en appellant la méthode append(). Une fois finalisé, l'appel à la méthode getBlob() permet de récupérer un Blob contenant les données envoyées au constructeur dudit Blob."><code>BlobBuilder</code></a> est maintenant implémenté, même si pour l'instant il est préfixé (vous devez utiliser <code>MozBlobBuilder</code>).</li> + <li><a href="/fr/docs/Web/API/Document/height" title="Retourne la hauteur de l'objet document. Dans la plupart des cas, ceci est égal à l'élément <body> du document courant."><code>document.height</code></a> et <a href="/fr/docs/Web/API/Document/width" title="Renvoie la largeur de l'élément <body> du document courrent en pixels."><code>document.width</code></a> ont été supprimées. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=585877" title="FIXED: remove document.height / document.width">bug 585877</a></li> + <li>Les propriétés <code>entities</code> et <code>notations</code> de l'objet <a href="/fr/docs/Web/API/DocumentType" title="L'interface DocumentType représente un nœud (Node) contenant un doctype."><code>DocumentType</code></a>, qui n'ont jamais été implémentées et renvoyées toujours <code>null</code>, ont été retirées, car elles ont également été enlevées de la spécification.</li> + <li>L'interface <code>DOMConfiguration</code> et la propriété <code>document.domConfig</code> qu'elle utilisait ont été supprimées, elles n'ont jamais été supportées et ont depuis été retirées de la spécification DOM.</li> + <li>L'évènement <code>hashchange</code> comprend désormais <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange#The_hashchange_event" title="en/DOM/window.onhashchange#The hashchange event">les champs <code>newURL</code> et <code>oldURL</code></a>.</li> + <li>La méthode <code>abort()</code> de l'interface <a href="/fr/docs/Web/API/FileReader" title="L'objet FileReader permet à des applications web de lire le contenu de fichiers (ou de tampons de mémoire brute) de façon asynchrone. On peut ainsi lire le contenu des objets File ou Blob (qui représentent respectivement un fichier ou des données)."><code>FileReader</code></a> retourne maintenant une exception si aucun fichier n'est en cours de lecture lorqu'elle est utilisée.</li> + <li>La méthode <a href="/fr/docs/Web/API/Window/postMessage" title="La méthode window.postMessage permet une communication inter-domaine en toute sécurité. Normalement, les scripts de différentes pages sont autorisés à accéder les uns aux autres si et seulement si les pages depuis lesquelles ils sont exécutés ont des URL de même origine, c'est-à-dire avec le même protocole (généralement http ou https), le même numéro de port (80 étant le port par défaut pour http), et le même nom d'hôte (à condition que document.domain soit initialisé à la même valeur par les deux pages). window.postMessage fournit un mécanisme contrôlé pour contourner cette restriction d'une manière sécurisée si bien utilisée."><code>window.postMessage()</code></a> utilise maintenant <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/The_structured_clone_algorithm" title="en/DOM/The structured clone algorithm">l'algorithme de clonage structuré</a> pour vous permettre de transmettre d'une fenêtre à une autre des objets JavaScript au lieu de chaînes.</li> + <li>L'API <a href="/fr/docs/Web/API/Window/history" title="La propriété en lecture seule Window.history renvoie une référence à l'objet History, qui offre la possibilité de manipuler l'historique de session du navigateur (pages visitées dans l'onglet ou le cadre dans lesquels la page courante est chargée)."><code>window.history</code></a> utilise désormais <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/The_structured_clone_algorithm" title="en/DOM/The structured clone algorithm">l'algorithme de clonage structuré</a> pour sérialiser des objets que vous passez avec les méthodes <code>pushState()</code> et <code>replaceState()</code>, ce qui vous permet d'utiliser des objets plus complexes (y compris ceux qui contiennent des références de graphes cycliques).</li> + <li>Vous pouvez désormais <a class="internal" href="https://developer.mozilla.org/en-Us/docs/Printing#Detecting_print_requests" title="en/Printing#Detecting_print_requests">détecter lorsqu'une impression a été lancée et a été achevée</a> grâce aux nouveaux évènements <code>beforeprint</code> et <code>afterprint</code>.</li> + <li>La propriété <code>document.strictErrorChecking</code> a été supprimée, car elle n'a jamais été implémentée et a été retiré de la spécification DOM.</li> + <li>La propriété standard <a href="/fr/docs/Web/API/Event/defaultPrevented" title="Retourne un booléen indiquant si event.preventDefault() a été appelée sur l'évènement ou non."><code>event.defaultPrevented</code></a> est maintenant supportée, vous devriez utiliser à la place la méthode non-standard <code>getPreventDefault()</code> pour détecter si <a href="/fr/docs/Web/API/Event/preventDefault" title="La méthode preventDefault() de l 'interface Event indique à l'agent utilisateur que si l'événement n'est pas traité explicitement, son action par défaut ne doit pas être prise en compte comme elle le serait normalement. L'événement continue à se propager comme d'habitude, sauf si l'un de ses écouteurs appelle stopPropagation() ou stopImmediatePropagation() , dont l'un ou l'autre termine la propagation."><code>event.preventDefault()</code></a> a été appelée sur l'événement.</li> + <li>La propriété <a href="/fr/docs/Web/API/Window/top" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>window.top</code></a> est désormais en lecture seule.</li> + <li>DOM views, which we never documented, have been removed. This was a bit of implementation detail that was unnecessarily complicating things, so we got rid of it. If you notice this change, you're probably doing something wrong.</li> + <li>La fonction <code>EventTarget</code> de la méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIDOMEventTarget" title="en/XPCOM Interface Reference/nsIDOMEventTarget"><code>addEventListener()</code></a> est désormais facultative, car ça l'est dans WebKit (et aussi dans la dernière version de la spécification).</li> + <li>La propriété <code>mozResponseArrayBuffer</code> de l'objet <a class="internal" href="https://developer.mozilla.org/fr/docs/XMLHttpRequest" title="fr/XMLHttpRequest"><code>XMLHttpRequest</code></a> a été remplacé par les propriétés <code>responseType</code> et <code>response</code>.</li> + <li>La propriété <a href="/fr/docs/Web/API/Element/dataset" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>element.dataset</code></a> a été ajoutée à l'interface <a class="internal" href="https://developer.mozilla.org/fr/docs/DOM/HTMLElement" title="fr/DOM/HTMLElement"><code>HTMLElement</code></a> permettant d'accéder aux attributs globaux <a class="internal" href="https://developer.mozilla.org/fr/docs/HTML/Global_attributes#attr-data-*" title="fr/HTML/Global_attributes#attr-data-*"><code>data-*</code> global attributes</a> d'un élément.</li> + <li>L'interface <a href="/fr/docs/Web/API/CustomEvent" title="Les interfaces CustomEvent DOM sont des évènements initialisés par une application pour n'importe quel usage."><code>CustomEvent</code></a> a été implémentée. (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=427537" title="FIXED: Implement CustomEvent DOM3 specification">bug 427537</a>)</li> + <li>Pour des raisons de sécurité, les URIs <code>data:</code> et <code>javascript:</code> n'héritent plus de l'environnment de sécurité de la page active lorsque l'utilisateur les saisit dans la barre d'adresse, mais un nouvel environnment de sécurité vide est créé. Par exemple, le script chargé en entrant l'URI <code>javascript:</code> dans la barre d'adresse n'a plus accès aux méthodes DOM et similaires. Ces URIs continueront à travailler comme avant lorsqu'elles sont utilisées par le script.</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Avant, il était possible d'utiliser l'opérateur <code>new</code> sur plusieurs fonctions natives (eval, parseInt, Date.parse, etc) ce qui, conformément à la spécification, n'était pas autorisé. Désormais ce comportement n'est plus supporté. Cette façon d'utiliser l'opérateur <code>new</code> n'a jamais été officiellement supportée et était peu utilisée, donc il est peu probable que ce changement vous affecte.</li> + <li>ECMAScript Harmony <a class="internal" href="https://developer.mozilla.org/fr/docs/JavaScript/Référence_JavaScript/Objets_globaux/WeakMap" title="fr/docs/JavaScript/Référence_JavaScript/Objets_globaux/WeakMap">WeakMaps</a> a été ajouté en tant que prototype.</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>L'attribut <code><a href="/fr/docs/Web/SVG/Attributs/pathLength">pathLength</a></code> est désormais supporté.</li> + <li>Les modèles SVG, les dégradés et les filtres fonctionnent désormais correctement lorsqu'ils sont chargés à partir de <a class="internal" href="https://developer.mozilla.org/en/data_URIs" title="data_URIs"><code>data:</code> URLs</a>.</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>L'implémentation de <code><a href="/fr/docs/Web/MathML/Element/mstyle" title="<mstyle>"><mstyle></a></code> a été corrigée.</li> +</ul> + +<h3 id="Accessibilité_ARIA">Accessibilité (ARIA)</h3> + +<ul> + <li>Un événement de changement d'état est à présent correctement envoyé lors d'un changement de la valeur de <code>aria-busy</code>.</li> + <li>Un événement de changement d'attribut est à présent correctement envoyé lorsque survient <code>aria-sort</code>.</li> +</ul> + +<h3 id="Réseau">Réseau</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/WebSockets" title="WebSockets">WebSockets</a></dt> + <dd>Pour Firefox 6, WebSockets a été mis à jour à la version 07 du protocole. De plus, l'objet <code>WebSocket</code> a été renommé en <code>MozWebSocket</code> pour l'empêcher d'être utilisé de façon incorrecte pour détecter la disponibilité des WebSockets sans préfixe.</dd> +</dl> + +<ul> + <li>L'analyse de l'en-tête <code>Content-Disposition</code> a été fixée afin d'interpréter correctement les antislashs des caractères ASCII. Auparavant, il été remplacé par le caractère underscore ("_").</li> + <li>La valeur du champ du chemin de l'en-tête <code>Set-Cookie</code> est désormais correctement interprétée lors de l'utilisation de guillements, auparavant, ils étaient considérés comme faisant partie de la chaîne du chemin d'accès à la place d'être des délimiteurs. <strong>Ce changement peut affecter la compatibilité avec certains sites web</strong>, les auteurs doivent vérifier leur code.</li> + <li>L'en-tête de la requête <a class="external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.42" title="www.w3.org/Protocols/rfc2616/rfc2616-sec14.html"><code>Upgrade</code></a> est désormais supporté, vous pouvez demander la mise à niveau d'un canal vers un autre protocole HTTP en appelant <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIHttpChannelInternal#HTTPUpgrade()">nsIHttpChannelInternal.HTTPUpgrade()</a></code>.</li> +</ul> + +<h3 id="Autres_changements_2">Autres changements</h3> + +<ul> + <li>Le support des microrésumés a été enlevé, ils n'ont jamais été très utilisés, n'étaient pas très détectable et continuer leur support été d'apporter des améliorations à Places (favoris et historique) à l'architecture difficile.</li> + <li>WebGL supporte maintenant l'extension <a class="external" href="http://www.khronos.org/registry/gles/extensions/OES/OES_texture_float.txt" title="http://www.khronos.org/registry/gles/extensions/OES/OES_texture_float.txt"><code>OES_texture_float</code></a>.</li> + <li>Le nouvel outil <a class="internal" href="https://developer.mozilla.org/fr/docs/Outils/Ardoise" title="Outils/Ardoise">Ardoise</a> offre un endroit pratique pour expérimenter du code JavaScript.</li> + <li>La méthode <code>console.trace()</code> a été ajouté à <a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console" title="Using_the_Web_Console">ConsoleAPI</a> (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=585956" title="FIXED: Implement console.trace() in web console">bug 585956</a>).</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<p>Pour des conseils utiles sur la mise à jour des extensions pour Firefox 6, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Firefox/Updating_add-ons_for_Firefox_6" title="Updating add-ons for Firefox 6">Updating add-ons for Firefox 6</a>.</p> + +<div class="note"><strong>Note:</strong> Firefox 6 requiert que les composants binaires soient recompilés, comme pour toutes les versions majeures de Firefox. Pour plus de détails, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Interface_Compatibility#Binary_Interfaces" title="Developer Guide/Interface Compatibility#Binary Interfaces">Interfaces Binaires</a>.</div> + +<h3 id="Modules_de_code_JavaScript">Modules de code JavaScript</h3> + +<h4 id="FileUtils.jsm">FileUtils.jsm</h4> + +<ul> + <li>La méthode <code>openSafeFileOutputStream()</code> ouvre maintenant les fichiers avec <a class="internal" href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIFileOutputStream#Behavior_flag_constants" title="en/XPCOM Interface Reference/nsIFileOutputStream#Behavior flag constants">l'indicateur de comportement</a> <code>DEFER_OPEN</code> au lieu d'essayer de les ouvrir immédiatement.</li> +</ul> + +<h4 id="XPCOMUtils.jsm">XPCOMUtils.jsm</h4> + +<ul> + <li>La nouvelle méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/XPCOMUtils.jsm#importRelative()" title="en/JavaScript code modules/XPCOMUtils.jsm#importRelative()"><code>importRelative()</code></a> vous permet de charger un module de code JavaScript depuis un chemin relatif au chemin d'un autre module de code JavaScript. Cela rend plus facile la construction de modules qui dépendent les uns des autres.</li> +</ul> + +<h3 id="XPCOM">XPCOM</h3> + +<ul> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/XPCOM_array_guide#nsCOMArray.3cT.3e" title="en/XPCOM array guide#nsCOMArray.3cT.3e"><code>nsCOMArray<T></code></a> dispose désormais d'une méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/XPCOM_array_guide#Deleting_objects" title="en/XPCOM array guide#Deleting objects"><code>RemoveObjectsAt()</code></a> pour enlever plusieurs objets à la fois à partir d'un tableau.</li> +</ul> + +<h3 id="Utilisation_du_DOM_depuis_le_chrome">Utilisation du DOM depuis le chrome</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Extensions/Using_the_DOM_File_API_in_chrome_code" title="en/Extensions/Using the DOM File API in chrome code">Utilisation de l'API DOM File dans du code chrome</a></dt> + <dd>Bien que vous avez toujours pu utiliser l'API DOM File à partir du code chrome, le constructeur <a href="/fr/docs/Web/API/File" title="L'objet File fournit un tableau contenant des informations sur l'accès au contenu du ou des fichiers selectionnés, des informations sur le type mime, la taille, le nom des fichiers ainsi que le nombre de fichiers selectionnés. Ils sont généralement extraits d'un objet FileList retourné comme résultat lors de la sélection des fichiers en utilisant un input de type file, ou à partir d'un objet DataTransfer lors d'un glisser-déposer."><code>File</code></a> supporte désormais la spécification d'un chemin d'accès local lorsqu'il est utilisé depuis le chrome. De plus, vous pouvez également spécifier le fichier pour accéder à l'aide de l'API DOM File en utilisant un objet <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code>.</dd> +</dl> + +<h3 id="Changements_dans_les_interfaces">Changements dans les interfaces</h3> + +<ul> + <li><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryQueryOptions" title="">nsINavHistoryQueryOptions</a></code> supporte désormais le tri par orde de frecency à l'aide des nouvelles constantes <code>SORT_BY_FRECENCY_ASCENDING</code> et <code>SORT_BY_FRECENCY_DESCENDING</code>.</li> + <li><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFilePicker" title="">nsIFilePicker</a></code> a un nouvel attribut <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIFilePicker#addToRecentDocs">nsIFilePicker.addToRecentDocs</a></code>, qui vous permet d'indiquer que le fichier sélectionné doit être ajoutée à la liste "documents récents" de l'utilisateur si il y en a une. Cet attribut n'a aucun effet en mode navigation privée.</li> + <li>Les méthodes de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavBookmarkObserver" title="">nsINavBookmarkObserver</a></code> avec les paramètres ID d'un élément exigent désormais un GUID.</li> + <li><code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIPrefBranch#clearUserPref()">nsIPrefBranch.clearUserPref()</a></code> ne génère plus d'exception si la préférence spécifié n'existe pas ou n'a pas de valeur définie par l'utilisateur. Désormais, il ne fait rien.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMemoryReporter" title="">nsIMemoryReporter</a></code> prend désormais en charge l'indication du type de mémoire qui est décrite (mappée, heap, ou autre).</li> + <li>L'attribut <code>stateData</code> de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISHEntry" title="">nsISHEntry</a></code> renvoi désormais à <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIStructuredCloneContainer" title="">nsIStructuredCloneContainer</a></code>.</li> + <li><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> a un nouvel attribut <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIURI#ref">nsIURI.ref</a></code>, qui renvoie la partie de référence (la partie après le "#") de l'URI. Il y a également de nouvelles méthodes <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIURI#cloneIgnoringRef()">nsIURI.cloneIgnoringRef()</a></code> qui clone <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> sans l'élément ref et <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIURI#equalsExceptRef()">nsIURI.equalsExceptRef()</a></code> qui se compare à un autre <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> en ignorant l'élément ref.</li> +</ul> + +<h4 id="Nouvelles_interfaces">Nouvelles interfaces</h4> + +<dl> + <dt><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIAsyncFavicons" title="">mozIAsyncFavicons</a></code></dt> + <dd>Un nouveau service qui vous permet d'accéder au service favicon de façon asynchrone.</dd> + <dt><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIEventSource" title="">nsIEventSource</a></code></dt> + <dd><em>Détails à venir.</em></dd> + <dt><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIGSettingsCollection" title="">nsIGSettingsCollection</a></code></dt> + <dd><em>Détails à venir.</em></dd> + <dt><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIGSettingsService" title="">nsIGSettingsService</a></code></dt> + <dd><em>Détails à venir.</em></dd> + <dt><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpUpgradeListener" title="">nsIHttpUpgradeListener</a></code></dt> + <dd>L'interface de rappel pour le traitement des demandes de mise à niveau HTTP via la méthode <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIHttpChannelInternal#HTTPUpgrade()">nsIHttpChannelInternal.HTTPUpgrade()</a></code>.</dd> + <dt><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIStructuredCloneContainer" title="">nsIStructuredCloneContainer</a></code></dt> + <dd>Un conteneur pour les objets qui ont été sérialisé à l'aide de <a class="internal" href="https://developer.mozilla.org/en/HTML/Structured_clones" title="en/HTML/Structured clones">l'algorithme de clonage structuré</a>.</dd> + <dt><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsITelemetry" title="">nsITelemetry</a></code></dt> + <dd>Implémentation du support de la télémétrie permettant d'enregistrer des données de télémétrie pour être utilisé pour présenter des histogrammes à des fins de suivi des performances. Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=649502" title="FIXED: Expose histograms to JS">bug 649502</a> et <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=585196" title="FIXED: telemetry infrastructure">bug 585196</a>.</dd> + <dt><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsITimedChannel" title="">nsITimedChannel</a></code></dt> + <dd>Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=576006" title="FIXED: Implement timing interface for channels">bug 576006</a>.</dd> + <dt><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebSocketListener" title="">nsIWebSocketListener</a></code></dt> + <dd>Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=640003" title="FIXED: WebSockets - upgrade to ietf-07">bug 640003</a>.</dd> + <dt><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebSocketProtocol" title="">nsIWebSocketProtocol</a></code></dt> + <dd>Voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=640003" title="FIXED: WebSockets - upgrade to ietf-07">bug 640003</a>.</dd> +</dl> + +<h4 id="Interfaces_supprimées">Interfaces supprimées</h4> + +<p>Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :</p> + +<ul> + <li><code>nsIDOMDocumentEvent</code> (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=655517" title="FIXED: Remove nsIDOMDocumentEvent">bug 655517</a>)</li> + <li><code>nsIDOMDocumentTraversal</code> (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=655514" title="FIXED: Remove nsIDOMDocumentTraversal">bug 655514</a>)</li> + <li><code>nsIDOMDocumentRange</code> (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=655513" title="FIXED: Remove nsIDOMDocumentRange">bug 655513</a>)</li> + <li><code>IWeaveCrypto</code> (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=651596" title="FIXED: Eliminate IWeaveCrypto">bug 651596</a>)</li> + <li><code>nsIDOM3DocumentEvent</code> (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=481863" title="FIXED: Remove nsIDOM3DocumentEvent">bug 481863</a>)</li> + <li><code>nsIDOMAbstractView</code></li> + <li><code>nsILiveTitleNotificationSubject</code></li> + <li><code>nsIPlugin</code> (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=637253" title="FIXED: decomtamination: remove nsIPlugin and nsIPluginInstance">bug 637253</a>)</li> + <li><code>nsIPluginInstance</code> (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=637253" title="FIXED: decomtamination: remove nsIPlugin and nsIPluginInstance">bug 637253</a>)</li> + <li><code>nsIHTMLEditRules</code> (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=633750" title="FIXED: deCOM nsIHTMLEditRules">bug 633750</a>)</li> + <li><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIXSLTProcessorObsolete" title="">nsIXSLTProcessorObsolete</a></code> (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=649534" title="FIXED: Remove nsIXSLTProcessorObsolete">bug 649534</a>)</li> +</ul> + +<h3 id="Autres_changements_3">Autres changements</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/Mozilla/Preferences/Using_preferences_from_application_code" title="en/Preferences/Using preferences from application code">Utilisation des préférences à partir du code d'application</a></dt> + <dd>Une nouvelle API statique est disponible pour accéder facilement aux préférences, ce n'est disponible que pour le code d'application et ne peut pas être utilisé par les modules complémentaires.</dd> +</dl> + +<h2 id="Voir_également">Voir également</h2> + +<div class="multiColumnList"> +<ul> +<li><a href="/fr/docs/Mozilla/Firefox/Versions/5">Firefox 5 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/4">Firefox 4 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3.6">Firefox 3.6 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3.5">Firefox 3.5 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3">Firefox 3 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/2">Firefox 2 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/1.5">Firefox 1.5 pour les développeurs</a></li></ul> +</div> diff --git a/files/fr/mozilla/firefox/versions/63/index.html b/files/fr/mozilla/firefox/versions/63/index.html new file mode 100644 index 0000000000..06ad714a2a --- /dev/null +++ b/files/fr/mozilla/firefox/versions/63/index.html @@ -0,0 +1,275 @@ +--- +title: Firefox 63 for developers +slug: Mozilla/Firefox/Versions/63 +tags: + - '63' + - Firefox + - Mise à jour + - Mozilla +translation_of: Mozilla/Firefox/Releases/63 +--- +<div>{{FirefoxSidebar}}</div> + +<p class="summary">Cet article fournit des informations à propos des changements dans Firefox 63 qui affecteront les développeurs. Firefox 63 a été publié le 23 octobre 2018.</p> + +<h2 id="Changements_pour_les_développeurs_web">Changements pour les développeurs web</h2> + +<h3 id="Outils_de_développeurs">Outils de développeurs</h3> + +<ul> + <li>L'onglet Polices dans la page de l<a href="/en-US/docs/Tools/Page_Inspector">'Inspecteur</a> inclus maintenant un éditeur facilitant la visualisation et l'édition des paramètres des polices sur votre page. Voir <a href="/en-US/docs/Tools/Page_Inspector/How_to/Edit_fonts">l'édition des polices</a> pour plus d'informations.</li> + <li>L'<a href="/en-US/docs/Tools/Accessibility_inspector">Inspecteur d'Accessibilité</a> est maintenant activé par défaut ({{bug(1482454)}}).</li> + <li>Lorsque vous survolez un objet dans l'<a href="/en-US/docs/Tools/Accessibility_inspector">Inspecteur d'Accessibilité</a>, <a href="/en-US/docs/Tools/Accessibility_inspector#Highlighting_of_UI_items">l'élément est mis en évidence</a> et son rôle et nom seront affichés dans une barre d'information dans la page ({{bug(1473030)}}).</li> + <li>La ligne de commande dans la <a href="/en-US/docs/Tools/Web_Console">Console Web</a> est maintenant immédiatement affichée après le flux de sortie de la console ({{bug(1136299)}}).</li> + <li>Une nouvelle icône a été ajouté au contenu dans le <a href="/en-US/docs/Tools/Network_Monitor">Moniteur Réseau</a> indiquant si une URL appartient à un trackeur connu — voir les <a href="/en-US/docs/Tools/Network_Monitor/request_list#Security_icons">Icônes de Sécurité</a> ({{bug(1333994)}}).</li> + <li>La valeur par défaut de <code>devtools.aboutdebugging.showSystemAddons</code> est maintenant <code>false</code>, ce qui signifie que le système d'add-ons ne sera plus listé dans la page <code>about:debugging</code>. Vous pouvez changer les paramètres en vous rendant sur la page <code>about:config</code> ({{bug(1425347)}}).</li> + <li>La barre d'outils du <a href="/en-US/docs/Tools/Responsive_Design_Mode">Mode Responsive Design</a> a été simplifiée, et nous avons ajouté une option pour aligner la vue à gauche.</li> + <li>L'Inspecteur inclus un <a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Custom_element_definition">lien vers la définition de la classe</a> pour un élément personnalisé. ({{bug(1443923)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Ajout du support pour l'attribut <code>decoding</code> de l'élément {{HTMLElement("img")}} ({{bug(1416328)}}); Voir aussi {{DOMxRef("HTMLImageElement.decoding")}}.</li> +</ul> + +<h4 id="Suppressions">Suppressions</h4> + +<ul> + <li>Le lien de type <code>sidebar</code> (<code>rel="sidebar"</code>) n'est plus supporté. Si une ancre contient cet attribut, elle sera ignorée ({{bug(1452645)}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Support for the {{CSSxRef(":defined")}} pseudo-class has been added ({{bug(1331334)}}).</li> + <li>Support for {{CSSxRef("row-gap")}}, {{CSSxRef("column-gap")}} and {{CSSxRef("gap")}} has been added in <a href="/en-US/docs/Web/CSS/CSS_Box_Alignment/Box_Alignment_in_Flexbox#The_gap_properties">Flexbox layout</a> ({{bug(1398483)}}).</li> + <li>Re-enabled support for <a href="/en-US/docs/Web/CSS/@media/-webkit-device-pixel-ratio">webkit-prefixed pixel-density @media queries</a> ({{bug(1444139)}}).</li> + <li>Support added for the <a href="/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout">CSS Flexible Box Layout</a> (Flexbox) properties {{CSSxRef("align-self")}}, {{CSSxRef("align-content")}}, and {{CSSxRef("align-items")}} as well as the {{CSSxRef("justify-content")}} property ({{bug(1472843)}}).</li> + <li>Implemented the <code>path()</code> function for {{CSSxRef("offset-path")}} ({{bug(1429298)}}).</li> + <li>Implemented <a href="/en-US/docs/Web/CSS/Media_Queries/Using_media_queries#Syntax_improvements_in_Level_4">syntax improvements from the Media Queries Level 4 specification</a> ({{bug(1472843)}}).</li> + <li>Renamed <code>offset-*</code> properties to {{CSSxRef("inset-block-start")}}, {{CSSxRef("inset-block-end")}}, {{CSSxRef("inset-inline-start")}}, and {{CSSxRef("inset-inline-end")}} ({{bug(1464782)}}).</li> + <li>Added support for the <a href="/en-US/docs/Web/CSS/@media/prefers-reduced-motion">prefers-reduced-motion</a> media feature ({{bug(1365045)}}, {{bug(1475462)}}).</li> + <li>Added flow relative values (<code>block</code>, <code>inline</code>) for the {{CSSxRef("resize")}} property ({{bug(1464786)}}).</li> + <li>Implemented flexbox layout for <code>safe</code> & <code>unsafe</code> values in {{CSSxRef("align-self")}}, {{CSSxRef("align-content")}}, and {{CSSxRef("justify-content")}} ({{bug(1297774)}}).</li> + <li>The <a href="/en-US/docs/Web/CSS/CSS_Logical_Properties">logical properties</a> (where appropriate) are now animatable ({{bug(1309752)}}).</li> +</ul> + +<h4 id="Suppressions_2">Suppressions</h4> + +<ul> + <li>Removed <code>offset-block-start</code>, <code>offset-block-end</code>, <code>offset-inline-start</code> and <code>offset-inline-end</code>; these have been renamed to <code>inset-*</code>, as described above ({{bug(1464782)}}).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>Aucun changement.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>The {{JSxRef("Symbol.prototype.description")}} property has been implemented ({{bug(1472170)}}).</li> + <li>The {{JSxRef("Object.fromEntries()")}} method has been added ({{bug(1469019)}}).</li> + <li>When you try to access a property of an undefined object, the error message is now much improved. Considering the case where <code>x</code> is undefined and you try to access <code>x.y</code>, instead of <code>TypeError: x is undefined</code> the console now returns the more descriptive <code><a href="/en-US/docs/Web/JavaScript/Reference/Errors/cant_access_property">x is undefined; can't access its "y" property</a></code> ({{bug(1259822)}}).</li> +</ul> + +<h4 id="Suppressions_3">Suppressions</h4> + +<ul> + <li>Experimental WebAssembly Module IndexedDB serialization support has been removed ({{bug(1469395)}}).</li> +</ul> + +<h3 id="APIs">APIs</h3> + +<h4 id="Nouvelles_APIs">Nouvelles APIs</h4> + +<ul> + <li>The Shadow DOM ({{bug(1471947)}}) and Custom Elements ({{bug(1471948)}}) APIs have been enabled by default; See <a href="/en-US/docs/Web/Web_Components">Web components</a> for more details.</li> + <li>The {{domxref("Media_Capabilities_API", "Media Capabilities API", "", "1")}} been implemented ({{bug(1409664)}}).</li> + <li>The {{domxref("Clipboard", "Async Clipboard API", "", "1")}} has been implemented and enabled by default for all channels ({{bug(1461465)}}). As is the case with Chrome, Firefox currently implements only the {{domxref("Clipboard.writeText", "writeText()")}} and {{domxref("Clipboard.readText", "readText()")}} methods; however, unlike Chrome, <code>readText()</code> is only available in <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions">browser extensions</a>.</li> + <li>The {{DOMxRef("SecurityPolicyViolationEvent")}} interface is now supported. It allows sending events when the {{HTTPHeader("Content-Security-Policy")}} is violated ({{bug(1472661)}}).</li> +</ul> + +<h4 id="DOM">DOM</h4> + +<ul> + <li>The following portions of the {{domxref("Web_Animations_API", "Web Animations API", "", "1")}} have been enabled by default (see {{bug(1476158)}}): + <ul> + <li>The {{DOMxRef("Animation")}} properties {{DOMxRef("Animation.ready", "ready")}} and {{DOMxRef("Animation.finished", "finished")}}, specifying the <code>Animation</code> object's <code>ready</code> and <code>finished</code> {{JSxRef("Promise")}}s.</li> + <li>The {{DOMxRef("Animation")}} object's {{DOMxRef("Animation.effect", "effect")}} property.</li> + <li>The interfaces {{DOMxRef("KeyframeEffect")}} and {{DOMxRef("AnimationEffect")}}.</li> + </ul> + </li> + <li>The {{DOMxRef("Element.toggleAttribute()")}} method has been implemented ({{bug(1469592)}}).</li> + <li>The historical, previously non-standard, {{DOMxRef("Event.returnValue")}} property is now supported for compatibility purposes ({{bug(1452569)}}).</li> + <li>We implemented the {{DOMxRef("Window.event")}} property to improve web compatibility, now that it's become standard ({{bug(218415)}}).</li> + <li>To bring Firefox into alignment with Edge and Chrome, the {{DOMxRef("NavigatorID.platform", "navigator.platform")}} property now returns <code>"Win32"</code> even when running on 64-bit Windows ({{bug(1472618)}}).</li> + <li>Prior to Firefox 63, links that open new windows that had <code>rel="noopener"</code>, as well as calls to {{DOMxRef("Window.open()")}} with the <code><a href="/en-US/docs/Web/API/Window/open#noopener">noopener</a></code> window feature enabled would default to having all window features disabled, so that you had to explicitly re-enable any standard features you wanted. Now these windows have the same set of features enabled as any other window, and you need to explicitly turn off any you don't want ({{bug(1419960)}}).</li> +</ul> + +<h4 id="Evénements_du_DOM">Evénements du DOM</h4> + +<ul> + <li>Handling of the <kbd>Alt</kbd> key <em>on the right side</em> of the keyboard has been improved on Windows. If the user's current keyboard layout maps the <kbd>Alt</kbd> key to the <kbd>AltGr</kbd> modifier key, the value of {{DOMxRef("KeyboardEvent.key")}} is now reported as <code>"AltGraph"</code>. This behavior matches the behavior recently introduced in Chrome ({{bug(900750)}}).</li> +</ul> + +<h4 id="Media_Web_Audio_et_WebRTC">Media, Web Audio, et WebRTC</h4> + +<ul> + <li>Microphone access now works simultaneously in multiple tabs, even within the same content process ({{bug(1404977)}}).</li> + <li>{{DOMxRef("RTCDataChannel")}} has been updated to support the sctp-sdp-21 data format for the data, in addition to the older sctp-sdp-05 format previously supported.</li> + <li>The {{DOMxRef("ConstantSourceNode")}} node type for Web Audio API now has a default channel count of 2 rather than 1, in order to match the specification ({{bug(1413283)}}).</li> + <li>The {{domxref("Web_Audio_API", "Web Audio API", "", "1")}} interface {{DOMxRef("AudioScheduledSourceNode")}} (and by extension, all the other node types based on it) now throw the correct exception when a negative value is specified for the node start time. That error is <code>RangeError</code> ({{bug(1413284)}}).</li> + <li>The minimum and maximum permitted values for an {{DOMxRef("AudioParam")}} object's {{DOMxRef("AudioParam.value", "value")}} have been changed to the minimum negative single-precision floating-point value (-340,282,346,638,528,859,811,704,183,484,516,925,440) and the maximum positive single-precision floating-point value (+340,282,346,638,528,859,811,704,183,484,516,925,440) respectively ({{bug(1476695)}}).</li> + <li>The {{DOMxRef("SourceBuffer.changeType")}} method, which allows you to change codecs during an active stream, has been enabled by default. This is part of the {{domxref("Media_Source_Extensions_API", "Media Source Extensions API", "", "1")}} ({{bug(1481166)}}).</li> + <li>The {{DOMxRef("AudioParam.setValueCurveAtTime()")}} method has been updated to correctly accept an array of floating-point values to indicate the parameter's values to change to over time. Previously, it required a {{DOMxRef("Float32Array")}} ({{bug(1421091)}}).</li> + <li>{{DOMxRef("AudioParam.setValueCurveAtTime()")}} has also been updated to correctly return a proper <code>TypeError</code> when a non-finite value is found in the <code>values</code> array ({{bug(1472095)}}).</li> + <li>In addition, <code>setValueCurveAtTime()</code> has been updated to ensure that, when the parameter finishes following the specified value curve after the duration elapses, the value of the parameter is set to the last value in the list of values to curve through ({{bug(1308436)}}).</li> + <li>The <code>RTCRTPStreamStats</code> dictionary has been renamed to {{DOMxRef("RTCRtpStreamStats")}} for consistency with other WebRTC dictionaries and the specification ({{bug(1480498)}}).</li> + <li>Support for the <code>RTCRtpStreamStats</code> dictionary's {{DOMxRef("RTCRtpStreamStats.kind", "kind")}} property has been added ({{bug(1481851)}}).</li> + <li>The {{DOMxRef("RTCRtpStreamStats")}} dictionary's {{DOMxRef("RTCRtpStreamStats.isRemote", "isRemote")}} property is deprecated and will be removed in Firefox 65. A warning is now output to console when this property is accessed. See <a href="https://blog.mozilla.org/webrtc/getstats-isremote-65/">this blog post on the Advancing WebRTC blog</a> for details ({{bug(1393306)}}).</li> +</ul> + +<h4 id="Canvas_et_WebGL">Canvas et WebGL</h4> + +<ul> + <li>A new <code>powerPreference</code> context attribute has been added to {{DOMxRef("HTMLCanvasElement.getContext()")}}. On macOS this allows WebGL non-performance-critical applications and applets to request the low-power GPU instead of the high-power GPU in multi-GPU systems ({{bug(1349799)}}).</li> +</ul> + +<h4 id="Suppressions_4">Suppressions</h4> + +<ul> + <li>The obsolete and non-standard Firefox-only methods {{DOMxRef("Window.back()")}} and {{DOMxRef("Window.forward()")}} have been removed. Please use the {{DOMxRef("History.back", "window.history.back()")}} and {{DOMxRef("History.forward", "window.history.forward()")}} methods instead ({{bug(1479486)}}).</li> + <li>The {{DOMxRef("URL.createObjectURL", "createObjectURL()")}} and {{DOMxRef("URL.revokeObjectURL", "revokeObjectURL()")}} methods are no longer available on {{DOMxRef("ServiceWorker")}} instances due to the potential they introduced for memory leaks to occur ({{bug(1264182)}}).</li> + <li>Since it was deprecated in the specification anyway, the limited support for Doppler effects on {{DOMxRef("PannerNode")}} has been removed from the Web Audio API. The {{DOMxRef("AudioListener")}} properties {{DOMxRef("AudioListener.dopplerFactor", "dopplerFactor")}} and {{DOMxRef("AudioListener.speedOfSound", "speedOfSound")}} have been removed, along with the <code>PannerNode</code> method {{DOMxRef("PannerNode.setVelocity", "setVelocity()")}} ({{bug(1148354)}}).</li> +</ul> + +<h3 id="CSSOM">CSSOM</h3> + +<p><em>Aucun changement.</em></p> + +<h3 id="HTTP">HTTP</h3> + +<ul> + <li>The {{HTTPHeader("Clear-Site-Data")}} header is implemented and no longer behind a preference ({{bug(1470111)}}).</li> +</ul> + +<h3 id="Sécurité">Sécurité</h3> + +<ul> + <li>Site favicons are now subject to <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a>, if one is configured for the site ({{bug(1297156)}}).</li> + <li>CSP <code>script-src</code> directive's <code>'report-sample'</code> expression now recognized when generating violation reports. This directive indicates that a short sample of where the violation occurred should be included in the report. Previously, Firefox always included this sample ({{bug(1473218)}}).</li> + <li>Firefox now uses NSS 3.39 ({{bug(1470914)}}).</li> +</ul> + +<h3 id="Plugins">Plugins</h3> + +<p><em>Aucun changement.</em></p> + +<h3 id="Conformités_WebDriver_(Marionette)">Conformités WebDriver (Marionette)</h3> + +<h4 id="Nouvelles_fonctionnalités">Nouvelles fonctionnalités</h4> + +<ul> + <li>Marionette now returns a <code>setWindowRect</code> <a href="/en-US/docs/Web/WebDriver/Capabilities">capability</a> in the <code>WebDriver:NewSession</code> response that is true if the browser window can be repositioned and resized, which e.g. is the case for Firefox but not any mobile applications ({{bug(1470659)}}).</li> + <li>Added support for the <code>unhandledPromptBehavior</code> capability, which allows to define a specific <a href="https://w3c.github.io/webdriver/#dfn-user-prompt-handler">prompt behavior</a> of the WebDriver specification ({{bug(1264259)}}).</li> + <li>Handling of user prompts has been added to the <code>WebDriver:ExecuteScript</code> and <code>WebDriver:ExecuteAsyncScript</code> commands ({{bug(1439995)}}).</li> +</ul> + +<h4 id="Changements_API">Changements API</h4> + +<ul> + <li>Deprecated command end-points without the <code>WebDriver:</code> prefix have been removed ({{bug(1451725)}}).</li> + <li>The <code>WebDriver:NewSession</code> command returns recommended strings (<code>linux</code>, <code>mac</code>, <code>windows</code>) for <code>platformName</code> as defined in the WebDriver specification ({{bug(1470646)}}).</li> +</ul> + +<h4 id="Corrections_de_bugs">Corrections de bugs</h4> + +<ul> + <li>Focus related events were missing on element interaction when Firefox was not running as the top-most application ({{bug(1398111)}}).</li> + <li>Performing a <code>pointerDown</code> and <code>pointerUp</code> action in a subsequent action sequence could trigger a double click because <code>WebDriver:ReleaseActions</code> didn't reset the double click tracker ({{bug(1422583)}}).</li> + <li>Executing <code>pause</code> actions repeatedly could cause an infinite hang ({{bug(1447449)}}).</li> + <li>Fixed a bug where returning an element collection from <code>WebDriver:ExecuteScript</code> and <code>WebDriver:ExecuteAsyncScript</code> would cause a cyclic reference error ({{bug(1447977)}}).</li> + <li>To prevent a race condition both the <code>WebDriver:AcceptAlert</code> and <code>WebDriver:DismissAlert</code> commands now wait until the user prompt has been closed ({{bug(1479368)}}).</li> + <li>Log entries as emitted by the frame script were no longer limited by <code>MarionettePrefs.logLevel</code> but logged everything ({{bug(1482829)}}).</li> + <li><code>WebDriver:TakeScreenshot</code> raised an error when taking a screenshot of a window larger than 32767 pixels in width or height ({{bug(1485730)}}).</li> + <li><code>WebDriver:SendAlertText</code> didn't replace default user prompt value if text to send is an empty string ({{bug(1486485)}}).</li> +</ul> + +<h3 id="Autre">Autre</h3> + +<ul> + <li>Corrected the behavior of {{DOMxRef("PerformanceObserver.observe()")}} to simply do nothing if no valid entry types are found in the specified array of entry types to observe, or if the array is empty or missing. Previously, Firefox was incorrectly throwing a <code>TypeError</code> ({{bug(1403027)}}).</li> + <li>In <a href="/en-US/docs/Web/OpenSearch">OpenSearch</a>, Firefox now accepts <code>application/json</code> as a search URL type, as an alias of <code>application/x-suggestions+json</code> ({{bug(1425827)}}).</li> +</ul> + +<h2 id="Changements_des_add-on_développeurs">Changements des add-on développeurs</h2> + +<h3 id="Changements_API_2">Changements API</h3> + +<h4 id="Thèmes">Thèmes</h4> + +<ul> + <li>The default text color for {{WebExtAPIRef("browserAction")}} badges is now automatically set to black or white, to maximise contrast with the background ({{bug(1474110)}}).</li> + <li>The <code>accentcolor</code> and <code>textcolor</code> properties of the <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></code> manifest key are now optional ({{bug(1413144)}}).</li> + <li>{{WebExtAPIRef("browserAction.getBadgeTextColor()")}} and {{WebExtAPIRef("browserAction.setBadgeTextColor()")}} enable you to get and set the text color of browser action badges ({{bug(1424620)}}).</li> + <li>The theme <code>colors</code> key in <code>manifest.json</code> now supports the <code>ntp_text</code> property to set the text color in a new tab, and the <code>ntp_background</code> property to set the color of a new tab ({{bug(1347204)}}).</li> + <li>Themes can now define the colors for sidebars, such as the bookmarks sidebar ({{bug(1418602)}}). The relevant properties include: + <ul> + <li><code>sidebar</code>: The background color for sidebars.</li> + <li><code>sidebar_text</code>: The text color for sidebars.</li> + <li><code>sidebar_highlight</code>: The background color of a selected item in a sidebar.</li> + <li><code>sidebar_highlight_text</code>: The text color of a selected item in a sidebar.</li> + </ul> + </li> + <li>The method {{WebExtAPIRef("management.install()")}} allows web extensions to install and enable signed browser themes ({{bug(1369209)}}).</li> +</ul> + +<h4 id="Recherche">Recherche</h4> + +<ul> + <li>The new {{WebExtAPIRef("search")}} AP<a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/search">I</a> enables you to retrieve the list of installed search engines and perform searches with them ({{bug(1352598)}}).</li> + <li>{{WebExtAPIRef("topSites.get()")}} now takes an <code>options</code> parameter enabling you to set various options for the list of sites returned ({{bug(1445836)}}).</li> +</ul> + +<h4 id="Onglets">Onglets</h4> + +<ul> + <li>{{WebExtAPIRef("tabs.onHighlighted")}} now supports multi-select ({{bug(1474440)}}).</li> + <li>{{WebExtAPIRef("tabs.highlight")}} now includes an optional field in the <code>highlightInfo</code> object — <code>populate</code> — which defaults to <code>true</code>. Setting it to <code>false</code> prevents the returned <code>windows.Window</code> object from being populated with a list of tabs, to improve performance ({{bug(1489814)}}).</li> + <li>{{WebExtAPIRef("tabs.update")}} now supports changing the selection status of a tab by including <code>highlighted: true</code> in the <code>updateProperties</code> parameter ({{bug(1479129)}}).</li> + <li>{{WebExtAPIRef("tabs.update")}} supports changing the selection status of a tab without changing the focused tab ({{bug(1486050)}}) by including both <code>highlighted: true</code> and <code>active: false</code> in the <code>updateProperties</code> parameter.</li> + <li>{{WebExtAPIRef("tabs.query")}} now returns an array of {{WebExtAPIRef("tabs.Tab")}} objects if multiple tabs are selected ({{bug(1465170)}}).</li> + <li>The {{WebExtAPIRef("tabs.Tab")}} property now properly reflects which tabs in a browser window are selected (highlighted) and {{WebExtAPIRef("tabs.highlight")}} supports changing the highlighted status of multiple tabs ({{bug(1464862)}}).</li> + <li>The <code>isarticle</code> property in the <code>extraParameters</code> object passed into {{WebExtAPIRef("tabs.onUpdated")}} has been renamed to <code>isArticle</code>. The old name is retained but deprecated. This change was uplifted to Firefox 62 ({{bug(1461695)}}).</li> + <li>The {{WebExtAPIRef('tabs.onUpdated')}} event can be used to track when a tab is drawing the user's attention with <code>attention</code> property of the <code>changeInfo</code> object ({{bug(1396684)}}).</li> +</ul> + +<h4 id="Menus">Menus</h4> + +<ul> + <li>Added {{WebExtApiRef("menus.getTargetElement()")}} to the {{WebExtApiRef("menus")}} API. The method returns the clicked on element referenced by the <code>targetElementId</code> parameter ({{bug(1325814)}}).</li> + <li>{{WebExtAPIRef("menus.create()")}} now enables you to create invisible menu items, and {{WebExtAPIRef("menus.update()")}} enables you to toggle menu item visibility ({{bug(1482529)}}).</li> + <li>Items created using the {{WebExtAPIRef("menus")}} API now support access keys ({{bug(1320462)}}).</li> + <li>The <code>targetUrlPatterns</code> parameter of {{WebExtApiRef("menus.create()")}} and {{WebExtApiRef("menus.update()")}} now supports any URL scheme, even those that are usually not allowed in a match pattern ({{bug(1280370)}}).</li> +</ul> + +<h4 id="Autre_2">Autre</h4> + +<ul> + <li>{{WebExtAPIRef("commands.onCommand")}} is now treated as <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/User_actions">user input</a> ({{bug(1408129)}}).</li> + <li>The {{WebExtAPIRef("webRequest")}} API now enables you to filter for speculative connections ({{bug(1479565)}}).</li> + <li>{{WebExtAPIRef("webRequest.SecurityInfo")}} adds two new properties, <code>keaGroupName</code> and <code>signatureSchemeName</code>. This change was uplifted to Firefox 62 ({{bug(1471959)}}).</li> + <li>{{WebExtAPIRef("cookies.Cookie")}} now includes a property indicating the SameSite state of the cookie. The {{WebExtAPIRef("cookies.SameSiteStatus")}} enumeration defines SameSite state values ({{bug(1351663)}}).</li> + <li>Match patterns for URLs now explicitly match the "data" URL scheme ({{bug(1280370)}}).</li> +</ul> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-CA/versions/63/">Compatibilité dees sites pour Firefox 63</a></li> +</ul> + +<h2 id="Anciennes_versions">Anciennes versions</h2> + +<p>{{Firefox_for_developers(62)}}</p> diff --git a/files/fr/mozilla/firefox/versions/65/index.html b/files/fr/mozilla/firefox/versions/65/index.html new file mode 100644 index 0000000000..98979a74b9 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/65/index.html @@ -0,0 +1,249 @@ +--- +title: Firefox 65 pour développeurs +slug: Mozilla/Firefox/Versions/65 +translation_of: Mozilla/Firefox/Releases/65 +--- +<div>{{FirefoxSidebar}}</div> + +<p>Cet article fournit des informations au sujet de changements introduits dans Firefox 65 qui vont concerner les développeurs. Firefox 65 a été publié le 29 janvier 2019.</p> + +<h2 id="Changes_for_web_developers">Changes for web developers</h2> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<ul> + <li>L'<a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_Flexbox_layouts">Inspecteur Flexbox</a> est activé par défaut.</li> + <li>Le support des Breakpoints XHR a été ajouté au <a href="/en-US/docs/Tools/Debugger">JavaScript Debugger</a> ({{bug(821610)}}).</li> + <li>Clic-droit sur un objet de l'arbre d'accessibilité à partir de la vue d'Accessibilité pour <a href="/en-US/docs/Tools/Accessibility_inspector#Print_accessibility_tree_to_json">Imprimer en tant que Json</a> dans la vue JSON.</li> + <li>The <a href="/en-US/docs/Tools/Accessibility_inspector#Color_Contrast">color contrast</a> display of the Accessibility Picker has been updated so that if a text's background is complex (e.g. a gradient or complex image), it shows a range of color contrast values.</li> + <li>The Headers tab of the <a href="/en-US/docs/Tools/Network_Monitor">Network Monitor</a> now displays the Referrer Policy for the selected request ({{bug(1496742)}}).</li> + <li>When displaying stack traces (e.g. in console logs or the JavaScript debugger), calls to framework methods are identified and collapsed by default, making it easier to home in on your code.</li> + <li>In the same fashion as native terminals, you can now use reverse search to find entries in your JavaScript console history (<kbd>F9</kbd> on Windows/Linux or <kbd>Ctrl</kbd> + <kbd>R</kbd> on macOS, then type a search term, followed by <kbd>Ctrl</kbd> + <kbd>R</kbd>/<kbd>Ctrl</kbd> + <kbd>S</kbd> to toggle through results).</li> + <li>The JavaScript console's <code>$0</code> shortcut (references the currently inspected element on the page) now has autocomplete available, so for example you could type <code>$0.te</code> to get autocomplete suggestions for properties like <code>$0.textContent</code>.</li> + <li>The edits you make in the Rules view of the Inspector are now listed in the Changes panel ({{bug(1503920)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Events are now dispatched on disabled HTML elements, i.e. {{htmlelement("button")}}, {{htmlelement("fieldset")}}, {{htmlelement("input")}}, {{htmlelement("select")}}, and {{htmlelement("textarea")}} elements with <code>disabled</code> attributes set on them ({{bug(329509)}}).</li> + <li>Removing the <code>src</code> attribute of an {{htmlelement("iframe")}} element now causes <code>about:blank</code> to be loaded into it, giving it parity with Chrome and Safari ({{bug(1507842)}}). Previously removing <code>src</code> had no effect on the <code>iframe</code> content.</li> + <li>We have added support for the {{htmlattrxref("referrerpolicy", "script")}} attribute on {{htmlelement("script")}} elements ({{bug(1460920)}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>The {{cssxref("image-rendering")}} property's <code>crisp-edges</code> value has now been unprefixed ({{bug(1496617)}}).</li> + <li>A {{cssxref("scrollbar-color")}} value of <code>auto</code> now resolves to <code>auto</code>, rather than two colors ({{bug(1501418)}}).</li> + <li>The <code>break-*</code> properties have been implemented, and the legacy <code>page-break-*</code> properties have been aliased to them ({{bug(775618)}}): + <ul> + <li>{{cssxref("break-before")}} is now an alias for {{cssxref("page-break-before")}}.</li> + <li>{{cssxref("break-after")}} is now an alias for {{cssxref("page-break-after")}}.</li> + <li>{{cssxref("break-inside")}} is now an alias for {{cssxref("page-break-inside")}}.</li> + </ul> + </li> + <li>The {{cssxref("overflow-wrap")}} property's <code>anywhere</code> value has been implemented ({{bug(1505786)}}).</li> + <li>The new step position keywords <code>jump-start</code>, <code>jump-end</code>, <code>jump-none</code>, and <code>jump-both</code> — usable inside the <a href="/en-US/docs/Web/CSS/single-transition-timing-function#The_steps()_class_of_timing_functions"><code>steps()</code> timing function</a> — have been implemented ({{bug(1496619)}}). This also coincides with the removal of the <code>frames()</code> timing function, which was the previous way of implementing such functionality, now deprecated.</li> + <li>Some new {{cssxref("appearance", "-webkit-appearance")}} values have been added, for compatibility with other browsers. In particular: + <ul> + <li><code>meter</code>, which is now used as the default value for {{htmlelement("meter")}} elements in UA stylesheets. the existing value <code>meterbar</code> is now an alias for <code>meter</code> ({{bug(1501483)}}).</li> + <li><code>progress-bar</code>, which is now used as the default value for {{htmlelement("progress")}} elements in UA stylesheets. the existing value <code>progressbar</code> is now an alias for <code>progress-bar</code> ({{bug(1501506)}}).</li> + <li><code>textarea</code>, which is now used as the default value for {{htmlelement("textarea")}} elements in UA stylesheets. the existing value <code>textfield-multiline</code> is now an alias for <code>textarea</code> ({{bug(1507905)}})</li> + </ul> + </li> + <li>The behavior of {{cssxref("user-select")}} has been changed to make it align more with other browsers ({{bug(1506547)}}). Specifically: + <ul> + <li><code>user-select: all</code> set on an element no longer overrides other values of <code>user-select</code> set on children of that element. So for example in the following snippet: + <pre class="brush: html"><div style="-webkit-user-select: all">All + <div style="-webkit-user-select: none">None</div> +</div></pre> + The <code><div></code> with <code>none</code> set on it is now non-selectable. Previously this value would have been overriden by the <code>all</code> value set on the parent element.</li> + <li>non-<code>contenteditable</code> elements nested inside <code>contenteditable</code> elements are now selectable.</li> + <li><code>user-select</code> now behaves consistently inside and outside shadow DOM.</li> + <li>The proprietary <code>-moz-text</code> value has been removed.</li> + </ul> + </li> + <li>CSS environment variables (the {{cssxref("env")}} function) have been implemented ({{bug(1462233)}}).</li> +</ul> + +<h4 id="Removals">Removals</h4> + +<ul> + <li>The <code>layout.css.shape-outside.enabled</code> pref has been removed; {{cssxref("shape-outside")}}, {{cssxref("shape-margin")}}, and {{cssxref("shape-image-threshold")}} can no longer be disabled in <code>about:config</code> ({{bug(1504387)}}).</li> + <li>Several Firefox-only values of the {{cssxref("user-select")}} property have been removed — <code>-moz-all</code>, <code>-moz-text</code>, <code>tri-state</code>, <code>element</code>, <code>elements</code>, and <code>toggle</code>. See {{bug(1492958)}} and {{bug(1506547)}}.</li> + <li>As mentioned above, the <code>frames()</code> timing function has been removed ({{bug(1496619)}}).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>No changes.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>{{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}} is now supported ({{bug(1504334)}}).</li> + <li>Strings now have a maximum {{jsxref("String/length","length","","1")}} of <code>2**30 - 2</code> (~1GB) instead of <code>2**28 - 1</code> (~256MB) ({{bug(1509542)}}).</li> + <li>The {{jsxref("globalThis")}} property, which always refers to the top-level global object, has been implemented ({{bug(1317422)}}).</li> +</ul> + +<h3 id="APIs">APIs</h3> + +<h4 id="New_APIs">New APIs</h4> + +<ul> + <li>{{domxref("Streams_API/Using_readable_streams", "Readable Streams", "", "1")}} have been enabled by default ({{bug(1505122)}}).</li> + <li>The {{domxref("Storage_Access_API", "Storage Access API", "", "1")}} has been enabled by default ({{bug(1513021)}}).</li> +</ul> + +<h4 id="DOM">DOM</h4> + +<ul> + <li>{{domxref("Performance.toJSON()")}} has been exposed to {{domxref("Web_Workers_API", "Web Workers", "", "1")}} ({{bug(1504958)}}).</li> + <li>{{domxref("XMLHttpRequest")}} requests will now throw a <code>NetworkError</code> if the requested content type is a <code>Blob</code>, and the request method is not <code>GET</code> ({{bug(1502599)}}).</li> + <li>The <code>-moz-</code> prefixed versions of many of the {{domxref("Fullscreen API", "", "", "1")}} features have been deprecated, and will now display deprecation warnings in the JavaScript console when encountered ({{bug(1504946)}}).</li> + <li>{{domxref("WindowOrWorkerGlobalScope.createImageBitmap", "createImageBitmap()")}} now supports SVG images ({{domxref("SVGImageElement")}}) as an image source ({{bug(1500768)}}).</li> +</ul> + +<h4 id="DOM_events">DOM events</h4> + +<ul> + <li>Going forward, only one {{domxref("Window.open()")}} call is allowed per event ({{bug(675574)}}).</li> + <li>The <code><a href="/en-US/docs/Web/Events/keyup">keyup</a></code> and <code><a href="/en-US/docs/Web/Events/keydown">keydown</a></code> events are now fired during IME composition, to improve cross-browser compatibility for CJKT users ({{bug(354358)}}, also see<br> + <a href="https://www.fxsitecompat.com/en-CA/docs/2018/keydown-and-keyup-events-are-now-fired-during-ime-composition/">keydown and keyup events are now fired during IME composition</a> for more useful details).</li> +</ul> + +<h4 id="Web_workers">Web workers</h4> + +<ul> + <li>{{domxref("SharedWorkerGlobalScope.onconnect")}}'s event object is a {{domxref("MessageEvent")}} instance — its <code>data</code> property is now an empty string value rather than <code>null</code> ({{bug(1508824)}}).</li> +</ul> + +<h4 id="Fetch_and_Service_workers">Fetch and Service workers</h4> + +<ul> + <li>The {{domxref("Response.redirect()")}} method now correctly throws a <code>TypeError</code> if a non-valid URL is specified as the first parameter ({{bug(1503276)}}).</li> + <li>The {{domxref("ServiceWorkerContainer.register()")}} and {{domxref("WorkerGlobalScope.importScripts()")}} (when used by a service worker) methods will now accept any files with a valid <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#textjavascript">JavaScript MIME type</a> ({{bug(1354577)}}).</li> + <li>The {{domxref("FetchEvent.replacesClientId")}} and {{domxref("FetchEvent.resultingClientId")}} properties are now supported ({{bug(1264177)}}).</li> + <li>The {{domxref("ServiceWorkerGlobalScope.onmessageerror")}} and {{domxref("ServiceWorkerContainer.onmessageerror")}} handler properties have been implemented ({{bug(1399446)}}).</li> + <li>The {{httpheader("Origin")}} header is no longer set on Fetch requests with a method of {{HTTPMethod("HEAD")}} or {{HTTPMethod("GET")}} ({{bug(1508661)}}).</li> +</ul> + +<h4 id="Media_Web_Audio_and_WebRTC">Media, Web Audio, and WebRTC</h4> + +<ul> + <li>The {{domxref("WebRTC API", "WebRTC", "", "1")}} {{domxref("RTCIceCandidateStats")}} dictionary has been updated according to the latest spec changes ({{bug(1324788)}}, {{bug(1489040)}}; see also<br> + <a href="https://www.fxsitecompat.com/en-CA/docs/2018/rtcicecandidatestats-has-been-updated-to-the-latest-spec/">RTCIceCandidateStats has been updated to the latest spec</a> for more details on exactly what has changed).</li> + <li>The {{domxref("MediaRecorder")}} <code>pause</code> and <code>resume</code> events (and their corresponding event handler properties — {{domxref("MediaRecorder.onpause")}} and {{domxref("MediaRecorder.onresume")}}) were not previously implemented, even though compatibility tables claimed they had been. They have now been implemented ({{bug(1458538)}}, {{bug(1514016)}}).</li> +</ul> + +<h4 id="Canvas_and_WebGL">Canvas and WebGL</h4> + +<ul> + <li>The {{domxref("WebGL API", "WebGL", "", "1")}} {{domxref("EXT_texture_compression_bptc")}} and {{domxref("EXT_texture_compression_rgtc")}} texture compression extensions have been exposed to WebGL1 and WebGL2 contexts ({{bug(1507263)}}).</li> +</ul> + +<h4 id="Removals_2">Removals</h4> + +<ul> + <li><a href="/en-US/docs/Web/Guide/Events/Mutation_events">Mutation events</a> have been disabled in shadow trees ({{bug(1489858)}}).</li> + <li>The non-standard {{domxref("MediaStream")}} property <code>currentTime</code> has been removed ({{bug(1502927)}}).</li> + <li>The <code>dom.webcomponents.shadowdom.enabled</code> and <code>dom.webcomponents.customelements.enabled</code> prefs have been removed — Shadow DOM and Custom Elements can no longer be disabled in <code>about:config</code> ({{bug(1503019)}}).</li> + <li>The non-standard DOM <code>text</code> event — fired to notify the browser editor UI of IME composition string data and selection range — has been removed ({{bug(1288640)}}).</li> + <li>The {{event("keypress")}} event is no longer fired for <a href="/en-US/docs/Web/API/KeyboardEvent/keyCode#Non-printable_keys_(function_keys)">non-printable keys</a> ({{bug(968056)}}), except for the <kbd>Enter</kbd> key, and the <kbd>Shift</kbd> + <kbd>Enter</kbd> and <kbd>Ctrl</kbd> + <kbd>Enter</kbd> key combinations (these were kept for cross-browser compatibility purposes).</li> +</ul> + +<h3 id="Security">Security</h3> + +<ul> + <li>Additional CORS restrictions are now being enforced on allowable request headers ({{bug(1483815)}}, see also <a href="https://github.com/whatwg/fetch/issues/382">whatwg fetch issue 382: CORS-safelisted request headers should be restricted according to RFC 7231</a> for more details).</li> +</ul> + +<h3 id="Networking">Networking</h3> + +<p><em>No changes.</em></p> + +<h3 id="Plugins">Plugins</h3> + +<p><em>No changes.</em></p> + +<h3 id="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3> + +<h4 id="API_changes">API changes</h4> + +<ul> + <li> + <p><code>WebDriver:ElementSendKeys</code> now handles <code><input type=file></code> more relaxed for interactability checks, and allows those elements to be hidden without raising a <code>not interactable</code> error anymore. If a strict interactability check is wanted the capability <code>strictFileInteractability</code> can be used ({{bug(1502864)}}).</p> + </li> +</ul> + +<h4 id="Bug_fixes">Bug fixes</h4> + +<ul> + <li> + <p>The window manipulation commands <code>WebDriver:FullscreenWindow</code>, <code>WebDriver:MinimizeWindow</code>, <code>WebDriver:MaximizeWindow</code>, and <code>WebDriver:SetWindowRect</code> have been made more stable ({{bug(1492499)}}). It means that under special conditions they don't cause an infinite hang anymore, but instead timeout after 5s if the requested window state cannot be reached ({{bug(1521527)}}).</p> + </li> + <li> + <p><code>WebDriver:ElementClick</code> now correctly calculates the center point of the element to click, which allows interactions with dimensions of 1x1 pixels ({{bug(1499360)}}).</p> + </li> +</ul> + +<h4 id="Others">Others</h4> + +<ul> + <li> + <p>For <code>unexpected alert open</code> errors more informative messages are provided (Bug 1502268).</p> + </li> +</ul> + +<h3 id="Other">Other</h3> + +<ul> + <li>Support for <a href="/en-US/docs/Glossary/webp">WebP</a> images has been added ({{bug(1294490)}}). + + <ul> + <li>In addition, to faciliate cross-browser compatibility in certain situations the WebP MIMEType (<code>image/webp</code>) has been added to the standard HTTP Request {{httpheader("Accept")}} header for HTML files ({{bug(1507691)}}).</li> + </ul> + </li> +</ul> + +<h2 id="Changes_for_add-on_developers">Changes for add-on developers</h2> + +<h3 id="API_changes_2">API changes</h3> + +<h4 id="Menus">Menus</h4> + +<h4 id="Tabs">Tabs</h4> + +<ul> + <li>The {{WebExtAPIRef("tabs", "tabs API", "", "1")}} has been enhanced to support tab successors — a tab can have a successor assigned to it, which is the ID of the tab that will be active once it is closed ({{bug(1500479)}}, also see <a href="https://qiita.com/piroor/items/ea7e727735631c45a366">this blog post</a> for more information). In particular: + + <ul> + <li>The {{WebExtAPIRef("tabs.Tab")}} type now has a <code>successorId</code> property, which can be used to store/retrieve the ID of the tab's successor.</li> + <li>The {{WebExtAPIRef("tabs.onActivated")}} event listener's callback has a new parameter available, <code>previousTabId</code>, which contains the ID of the previous activated tab, if it is still open.</li> + <li>The {{WebExtAPIRef("tabs.update()")}} function's <code>updateProperties</code> object has a new optional property available on it, <code>successorTabId</code>, so can be used to update it.</li> + <li><code>successorTabId</code> is also returned by functions like {{WebExtAPIRef("tabs.get()")}} and {{WebExtAPIRef("tabs.query()")}}.</li> + <li>The new function <code>tabs.moveInSuccession()</code> allows manipulation of tab successors in bulk.</li> + </ul> + </li> +</ul> + +<h3 id="Manifest_changes">Manifest changes</h3> + +<p><em>No changes.</em></p> + +<h3 id="Other_2">Other</h3> + +<ul> + <li>The <code>headerURL</code>/<code>theme_frame</code> properties for <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">Webextension themes</a> are now supported on Firefox for Android ({{bug(1429488)}}).</li> +</ul> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-CA/versions/65/">Site compatibility for Firefox 65</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers(65)}}</p> diff --git a/files/fr/mozilla/firefox/versions/68/index.html b/files/fr/mozilla/firefox/versions/68/index.html new file mode 100644 index 0000000000..037d582ad8 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/68/index.html @@ -0,0 +1,245 @@ +--- +title: Firefox 68 pour développeurs +slug: Mozilla/Firefox/Versions/68 +tags: + - '68' + - FRANCAIS + - Firefox + - Mozilla + - Release +translation_of: Mozilla/Firefox/Releases/68 +--- +<p>{{FirefoxSidebar}}</p> + +<p class="summary">Cet article fournit des informations à destination des développeurs à propos des changements dans Firefox 68. Firefox 68 a été lancée le 9 Juillet 2019.</p> + +<h2 id="Changements_pour_développeurs_web">Changements pour développeurs web</h2> + +<h3 id="Outils_développeur">Outils développeur</h3> + +<h4 id="NavigateurConsole_Web">Navigateur/Console Web</h4> + +<ul> + <li>La console web montre maintenant <a href="/en-US/docs/Tools/Web_Console/Console_messages#CSS">plus d'informations à propos des warnings CSS</a>, ceci inclut la liste de noeuds des éléments du DOM qui utilisaient la règle ({{bug(1093953)}}).</li> + <li>Vous pouvez maintenant filtrer du contenu dans la console Web en utilisant des expressions régulières (REGEX) ({{bug(1441079)}}).</li> + <li>La console du navigateur vous permet maintenant de montrer ou cacher les messages provenant du processus de contenus en paramètrant ou vidant la checkbox intitulé <em>Show Content Messages</em> ({{bug(1260877)}}).</li> +</ul> + +<h4 id="Le_débuggeur_JavaScript">Le débuggeur JavaScript</h4> + +<ul> + <li>Vous pouvez maintenant <a href="/en-US/docs/Tools/Debugger/How_to/Search#Searching_in_all_files">Rechercher </a>dans tout les fichiers du projet en cours depuis le débuggeur en appuyant sur les touches <kbd>Shift</kbd> + <kbd>Ctrl</kbd> + <kbd>F</kbd> (Windows ou Linux) ou <kbd>Shift</kbd> + <kbd>Cmd</kbd> + <kbd>F</kbd> (macOS) ({{bug(1320325)}}).</li> +</ul> + +<h4 id="Le_moniteur_réseau">Le moniteur réseau</h4> + +<ul> + <li>La <a href="/en-US/docs/Tools/Network_Monitor/request_list#Filtering_requests">liste des requêtes</a> du moniteur réseau vous permet maintenant de bloquer une URL spécifique ({{bug(1151368)}}).</li> + <li>Vous pouvez maintenant ré-envoyer une requête réseau sans éditer la méthode HTTP, l'URL, les paramètres et les en-têtes, en utilisant la commande <a href="/en-US/docs/Tools/Network_Monitor/request_list#Context_menu">Ré-envoyer</a> dans le menu contextuel ({{bug(1422014)}}).</li> + <li>L'onglet <a href="/en-US/docs/Tools/Network_Monitor/request_details#Headers">en-têtes</a> du menu contextuel du moniteur réseau vous permet maintenant de copier tout ou une partie de l'information de l'en-tête dans le presse-papier au format JSON ({{bug(1442249)}}).</li> +</ul> + +<h4 id="L'inspecteur_de_styles_et_du_DOM">L'inspecteur de styles et du DOM</h4> + +<ul> + <li>Un bouton qui vous permet de basculer l'affichage de n'importe quels <em>media queries</em> a été ajouté dans le <a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Examine_CSS_rules">panneau des règles</a> de l'inspecteur ({{bug(1534984)}}).</li> + <li>Le <a href="/en-US/docs/Tools/Page_Inspector/How_to/Edit_fonts">panneau de polices de caractère</a> inclut maintenant un bouton glissoire pour modifier l'espacement des lettres <code>letter-spacing</code> ({{bug(1536237)}}).</li> + <li>Une icône d'alerte apparaît à côté des propriétées CSS non supportées et des règles ayant des valeurs invalides, pour vous aider à comprendre pourquoi certains styles ne sont pas appliqués ({{bug(1306054)}}).</li> +</ul> + +<h4 id="Storage_inspector">Storage inspector</h4> + +<ul> + <li>You can now <a href="/en-US/docs/Tools/Storage_Inspector#Local_storage_Session_storage">delete local and session storage</a> entries by selecting the item in the storage inspector and pressing the backspace key ({{bug(1522893)}}).</li> +</ul> + +<h4 id="Other">Other</h4> + +<ul> + <li>The <a href="/en-US/docs/Tools/Accessibility_inspector">Accessibility Inspector</a> now includes a new <em>Check for issues</em> feature, which will include a number of audit tools to highlight accessibility problems on your web pages. The first available check is <em>contrast</em>, for highlighting color contrast problems.</li> + <li>The preference that controls the visibility of internal extensions (system add-ons and hidden extensions) on the <a href="/en-US/docs/Tools/about:debugging">about:debugging</a> page has been changed from <code>devtools.aboutdebugging.showSystemAddons</code> to <code>devtools.aboutdebugging.showHiddenAddons</code> ({{bug(1544372)}}).</li> + <li><a href="/en-US/docs/Tools/Responsive_Design_Mode">Responsive design mode</a> has been redesigned — the <em>Device Settings</em> dialog (device selection menu > <em>Edit List...</em>) is now more intuitive and simpler to use ({{bug(1487857)}}).</li> +</ul> + +<h4 id="Removals">Removals</h4> + +<ul> + <li>The "Enable add-on debugging" checkbox has been removed from the <a href="/en-US/docs/Tools/about:debugging">about:debugging</a> page ({{bug(1544813)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>The {{HTMLElement("track")}} element — represented by {{domxref("HTMLTrackElement")}} — now receives a {{domxref("HTMLTrackElement.cuechange_event", "cuechange")}} event in addition to the {{domxref("TextTrack")}} itself, if the text track is a contained by a media element ({{bug(1548731)}}).</li> + <li>{{htmlelement("link")}} elements support the <code>disabled</code> attribute again, albeit with different behavior. When <code>disabled</code> is set on a <code><link></code> element along with <code>rel="stylesheet"</code>, the referenced stylesheet is not loaded during page load, and will be loaded on demand when the <code>disabled</code> attribute is changed to <code>false</code> or removed ({{bug(1281135)}}).</li> +</ul> + +<h4 id="Removals_2"> Removals</h4> + +<ul> + <li><code><a href="/en-US/docs/Web/HTML/Element/meta"><meta http-equiv="set-cookie"></a></code> is no longer supported ({{bug(1457503)}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li><a href="/en-US/docs/Web/CSS/CSS_Scroll_Snap">CSS Scroll Snapping</a> has been updated to the latest version of the specification ({{bug(1312163)}}) and ({{bug(1544136)}}), this includes: + + <ul> + <li>The <code>scroll-padding</code> properties ({{bug(1373832)}})</li> + <li>The <code>scroll-margin</code> properties ({{bug(1373833)}})</li> + <li>{{CSSxRef("scroll-snap-align")}} ({{bug(1373835)}})</li> + </ul> + </li> + <li>The {{CSSxRef("-webkit-line-clamp")}} property has been implemented for compatibility with other browsers ({{bug(866102)}}).</li> + <li>Support has been added for the {{CSSxRef("::marker")}} pseudo-element ({{bug(205202)}}) and animation for <code>::marker</code> pseudos ({{bug(1538618)}})</li> + <li>We changed {{CSSxRef("currentColor")}} to be a computed value (except for the {{cssxref("color")}} property) ({{bug(760345)}}).</li> + <li>Support has been fixed for the <code>ch</code> length unit so it now matches the spec (fallback for no '0' glyph, vertical metrics) ({{bug(282126)}})</li> + <li>The {{CSSxRef("counter-set")}} property has been implemented. ({{bug(1518201)}}).</li> + <li>We now implement list numbering using a built-in "list-item" counter; this fixes list numbering bugs ({{bug(288704)}}).</li> + <li>Selector matching and parsing support has been implemented for <code><a href="/en-US/docs/Web/CSS/::part">::part()</a></code> ({{bug(1545430)}}) and ({{bug(1545425)}}).</li> + <li><a href="/en-US/docs/Web/CSS/CSS_Transforms">CSS Transforms</a> are now supported in indirectly rendered things e.g.) {{SVGElement("mask")}}, {{SVGElement("marker")}}, {{SVGElement("pattern")}}, {{SVGElement("clipPath")}} ({{bug(1323962)}}).</li> + <li> + <p>While we're keeping the prefixed versions of the various gradient properties ({{cssxref("linear-gradient")}}, {{cssxref("radial-gradient")}}, and {{cssxref("repeating-radial-gradient")}} available for compatibility reasons, we have revised how they're parsed so that they're handled much more like the non-prefixed versions. This means that certain existing styles won't work correctly.</p> + + <p>In particular, the complicated syntax taking both an angle and a position will no longer work, and the <code>to</code> keyword in the <code><side-or-corner></code> parameter is not required for the prefixed gradient properties. You are encouraged to use the standard, non-prefixed gradient properties instead, as they're now widely supported ({{bug(1547939)}}).</p> + </li> +</ul> + +<h4 id="Removals_3">Removals</h4> + +<ul> + <li>{{CSSxRef("scroll-snap-coordinate")}}, {{CSSxRef("scroll-snap-destination")}}, {{CSSxRef("scroll-snap-type-x")}} and {{CSSxRef("scroll-snap-type-y")}} have been removed.</li> + <li>The {{CSSxRef("scroll-snap-type")}} property has become a longhand, so the old shorthand syntax like <code>scroll-snap-type:mandatory</code> will stop working. See the <a href="https://www.fxsitecompat.com/en-CA/docs/2019/legacy-css-scroll-snap-syntax-support-has-been-dropped/">Firefox Site Compatability</a> note.</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>No changes.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>The new {{jsxref("BigInt")}} primitive is enabled by default ({{bug(1527902)}}).</li> + <li>String generic methods have been removed ({{bug(1222552)}}). See the <a href="/en-US/docs/Web/JavaScript/Reference/Errors/Deprecated_String_generics">deprecation warning</a> for more information.</li> +</ul> + +<h3 id="APIs">APIs</h3> + +<h4 id="CSS_Object_Model_(CSSOM)">CSS Object Model (CSSOM)</h4> + +<ul> + <li>The legacy {{domxref("CSSStyleSheet.rules", "rules")}} property and {{domxref("CSSStyleSheet.addRule", "addRule()")}} and {{domxref("CSSStyleSheet.removeRule", "removeRule()")}} methods have been added to the {{domxref("CSSStyleSheet")}} interface. These were introduced by Internet Explorer 9 and have never managed to quite be stamped out, so they have been added to improve compatibility with the small percentage of sites that still use them ({{bug(1545823)}}).</li> +</ul> + +<h4 id="DOM">DOM</h4> + +<ul> + <li>The <a href="/en-US/docs/Web/API/Visual_Viewport_API">Visual Viewport API</a> has now been enabled by default on Android ({{bug(1512813)}}). Adding this API to desktop versions of Firefox is being tracked in {{bug(1551302)}}.</li> + <li>The {{domxref("Window")}} feature <code><a href="/en-US/docs/Web/API/Window/open#noreferrer">noreferrer</a></code> is now supported; if specified, the new window's content is loaded without sharing the hostname, IP address, URL, or other identifying information about the host device ({{bug(1527287)}}).</li> + <li>The {{domxref("HTMLImageElement.decode", "decode()")}} method on <code>HTMLImageElement</code> is now implemented. This can be used to trigger loading and decoding of an image prior to adding it to the DOM ({{bug(1501794)}}).</li> + <li>{{domxref("XMLHttpRequest")}} has been updated to no longer accept the non-standard <code>moz-chunked-arraybuffer</code> value for {{domxref("XMLHttpRequest.responseType", "responseType")}}. Code still using it should be updated to <a href="/en-US/docs/Web/API/Streams_API/Using_readable_streams#Consuming_a_fetch_as_a_stream">use the Fetch API as a stream</a> ({{bug(1120171)}}).</li> + <li><code>XMLHttpRequest</code> now outputs a warning to console if you perform a synchronous request while handling an {{domxref("Window.unload_event", "unload")}}, {{domxref("Window.beforeunload_event", "beforeunload")}}, or {{domxref("Window.pagehide_event", "pagehide")}} event ({{bug(980902)}}).</li> + <li>The {{domxref("Document.cookie", "cookie")}} property has moved from the {{domxref("HTMLDocument")}} interface to the {{domxref("Document")}} interface, allowing documents other than {{Glossary("HTML")}} to use cookies ({{bug(144795)}}).</li> + <li>The {{domxref("HTMLElement.focus()")}} and {{domxref("SVGElement.focus()")}} methods now accept an optional object that may contain a boolean <code>preventScroll</code> option specifying whether or not to block the browser from scrolling the newly-focused element into view ({{bug(1374045)}}).</li> +</ul> + +<h4 id="DOM_events">DOM events</h4> + +<ul> + <li><a href="/en-US/docs/Mozilla/Firefox_for_Android">Firefox for Android</a> no longer incorrectly sends a {{domxref("Window.resize_event", "resize")}} event until after the first frame is painted; this improves web compatibility with sites that don't expect this event to occur ({{bug(1528052)}}).</li> + <li>The dispatching of events for non-primary mouse buttons has been made to more closely follow the specification; the {{domxref("Element.click_event", "click")}} event is no longer sent when non-primary buttons are clicked, instead using {{domxref("Element.auxclick_event", "auxclick")}}. In addition, {{domxref("Element.dblclick_event", "dblclick")}} no longer fires for non-primary buttons ({{bug(1379466)}}).</li> + <li>The proprietary {{domxref("MouseEvent.mozPressure")}} property has been deprecated, and will now trigger a warning in the console ({{bug(1165211)}}).</li> +</ul> + +<h4 id="Media_Web_Audio_and_WebRTC">Media, Web Audio, and WebRTC</h4> + +<ul> + <li>Due to changes in the Google Play store's policies, starting with Firefox 68 for Android, the OpenH264 codec used to handle AVC/H.264 video in WebRTC connections can no longer be downloaded and installed. Therefore, fresh installs of Firefox on Android devices no longer support AVC in WebRTC calls. If you upgrade from earlier versions of Firefox and already have the codec downloaded, it will continue to work. This does <em>not</em> affect other platforms. For more details, see <a href="https://support.mozilla.org/en-US/kb/firefox-android-openh264">this article on SUMO</a> or {{bug(1548679)}}.</li> + <li>WebRTC has been updated to recognize that a <code>null</code> candidate passed into the {{domxref("RTCPeerConnection.icecandidate", "icecandidate")}} event handler, indicating the receipt of a candidate, instead indicates that there are no further candidates coming; when this happens the ICE gathering ({{domxref("RTCPeerConnection.iceGatheringState", "iceGatheringState")}}) state reaches <code>complete</code> ({{bug(1318167)}}).</li> + <li>The {{domxref("RTCRtpReceiver")}} methods {{domxref("RTCRtpReceiver.getContributingSources", "getContributingSources()")}} and {{domxref("RTCRtpReceiver.getSynchronizationSources", "getSynchronizationSources()")}} now support video tracks; previously they only worked on audio ({{bug(1534466)}}).</li> + <li>The Web Audio API {{domxref("MediaStreamTrackAudioSourceNode")}} interface is now supported, as is the method {{domxref("AudioContext.createMediaStreamTrackSource()")}} ({{bug(1324548)}}).</li> + <li>{{domxref("RTCDataChannel.negotiated")}} is now implemented ({{bug(1529695)}}).</li> + <li>The {{domxref("MediaStreamAudioSourceNode.MediaStreamAudioSourceNode", "MediaStreamAudioSourceNode()")}} constructor has been updated to match the current specification's definition that the "first audio track" in the stream is the track whose ID comes first in lexicographical order ({{bug(1324548)}}).</li> + <li> + <p>{{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} may no longer be used from a non-secure context; attempting to do so now throws a <code>NotAllowedError</code> exception. Secure contexts are those loaded using HTTPS, those located using the <code>file:///</code> scheme, and those loaded from <code>localhost</code>. For now, if you must, you can re-enable the ability to perform insecure calls to <code>getUserMedia()</code> by setting the preference <code>media.getusermedia.insecure.enabled</code> to <code>true</code> ({{bug(1335740)}}).</p> + + <div class="blockIndicator note"> + <p><strong>Note:</strong> In the future, Firefox will also remove the {{domxref("navigator.mediaDevices")}} property on insecure contexts, preventing all access to the {{domxref("MediaDevices")}} APIs. <strong>This is already the case in Nightly builds.</strong></p> + </div> + </li> +</ul> + +<h4 id="Removals_4">Removals</h4> + +<ul> + <li>Removed the non-standard {{DOMxRef("XMLDocument.load()")}} method ({{bug(332175)}}).</li> + <li>Removed the non-standard {{DOMxRef("XMLDocument.async")}} property ({{bug(1328138)}}).</li> + <li>The {{domxref("RTCIceCredentialType")}} <code>token</code> value has been removed ({{bug(1529595)}}).</li> +</ul> + +<h3 id="HTTP">HTTP</h3> + +<ul> + <li>The <a href="/en-US/docs/Web/HTTP">HTTP</a> {{HTTPHeader("Clear-Site-Data")}} header no longer supports the <code>executionContexts</code> directive. This was removed due to problems with interactions between interconnections among different kinds of data at different points in the navigation process and the way the specification is designed. It <a href="https://github.com/w3c/webappsec-clear-site-data/issues/59">has been proposed</a> that this directive be removed from the specification for this reason, among others ({{bug(1548034)}}).</li> +</ul> + +<h4 id="Removals_5">Removals</h4> + +<ul> + <li>The {{HTTPHeader("Content-Security-Policy")}} directive <code>require-sri-for</code> is no longer supported due to concerns about its standardization status. It was previously available only behind a preference, which was off by default ({{bug(1386214)}}).</li> +</ul> + +<h3 id="Security">Security</h3> + +<ul> + <li>Due to <a href="https://www.mozilla.org/en-US/security/advisories/mfsa2019-21/#CVE-2019-11730">CVE-2019-11730: Same-origin policy treats all files in a directory as having the same-origin</a>, changes have been made so that Firefox now treats files in the same directory as being from different origins. This has a number of side-effects on what will work in documents loaded via file:// URLs (see {{bug("file-fallout")}} for useful background research). For example, workers can no longer be loaded.</li> +</ul> + +<h3 id="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3> + +<h4 id="Bug_fixes">Bug fixes</h4> + +<ul> + <li>If <code>WebDriver:SwitchToWindow</code> changes the selection to a different window it now waits for its <code>focus</code> and <code>activate</code> events before returning ({{bug(1335085)}}).</li> + <li>Fixed the <code>TypeError: this.tabModal is null</code> failure, which sometimes appeared when interacting with modal dialogs or user prompts ({{bug(1538782)}})</li> +</ul> + +<h4 id="Other_2">Other</h4> + +<ul> + <li>Disabled the feature to force unloading background tabs on low memory conditions, to prevent top-level browser contexts from magically disappearing ({{bug(1553748)}}).</li> + <li>Disabled priviledged content processes that caused HTTP authentication dialogs not to appear when navigating to a website after opening a new tab ({{bug(1558763)}}).</li> +</ul> + +<h3 id="Plugins">Plugins</h3> + +<p><em>No changes.</em></p> + +<h2 id="Changes_for_add-on_developers">Changes for add-on developers</h2> + +<h3 id="API_changes">API changes</h3> + +<ul> + <li>The The <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/register">proxy.register()</a></code> and <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/unregister">proxy.unregister()</a></code> functions have been deprecated and will be removed from Firefox 71 ({{bug(1545811)}}).</li> + <li>A <code>boolean</code> flag, <code>incognito</code>, has been added to the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/RequestDetails">proxy.RequestDetails</a>. object. When <code>true</code>, it indicates that this was a private browsing request ({{bug(1545163)}}).</li> + <li>The <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/RequestFilter">webRequest.RequestFilter</a> parameters can include an incognito parameter. If provided, requests that do not match the incognito state (<code>true</code> or <code>false</code>) will be filtered out ({{bug(1548177)}}).</li> + <li>A <code>string</code> value, <code>cookieStoreId</code>, representing the cookie store ID of the current context, has been added to the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/RequestDetails">proxy.RequestDetails</a>. object ({{bug(1545420)}}).</li> + <li>When an add-on attempts to add a bookmark folder to the root folder, the resulting error message is now much more intuitive ({{bug(1512171)}}).</li> + <li>The promise returned by <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/duplicate">browser.tabs.duplicate()</a></code> now resolves immediately, before the tabs are completely loaded ({{bug(1394376)}}).</li> + <li>Support has been added for chrome.storage.managed, allowing web extension settings to be implemented via enterprise policy ({{bug(1230802)}}).</li> +</ul> + +<h3 id="Manifest_changes">Manifest changes</h3> + +<p><em>No changes.</em></p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-CA/versions/68/">Site compatibility for Firefox 68</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers(67)}}</p> diff --git a/files/fr/mozilla/firefox/versions/69/index.html b/files/fr/mozilla/firefox/versions/69/index.html new file mode 100644 index 0000000000..5a5ad086a5 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/69/index.html @@ -0,0 +1,139 @@ +--- +title: Firefox 69 for developers +slug: Mozilla/Firefox/Versions/69 +translation_of: Mozilla/Firefox/Releases/69 +--- +<p>{{FirefoxSidebar}}{{Draft}}</p> + +<p class="summary">This article provides information about the changes in Firefox 69 that will affect developers. Firefox 69 is the current <a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#beta">Beta version of Firefox</a>, and will ship on <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates" rel="noopener">September 3, 2019</a>.</p> + +<h2 id="Changes_for_web_developers">Changes for web developers</h2> + +<h3 id="Developer_tools">Developer tools</h3> + +<ul> + <li>An icon will be displayed next to invalid or unsupported <a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Examine_CSS_rules">CSS rules</a> in the Rules pane of the Page Inspector ({{bug(1306054)}}).</li> + <li>The debugger now includes the ability to set a breakpoint on event handlers. For example, you can select keydown, and execution will pause when it enters any keydown event handler in your project ({{bug(1526079)}}).</li> + <li>When you hover over an element in the Page Inspector, the infobar that appears now includes the fact that an element is a flex container, or flex item ({{bug(1521188)}}).</li> +</ul> + +<h4 id="Removals">Removals</h4> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>In order to align more closely to the specification, the text track associated with a {{HTMLElement("track")}} element no longer loads the WebVTT file containing the text cues if the element is created in its default <code>disabled</code> {{domxref("TextTrack.mode", "mode")}}. To access or manipulate the cues when the <code>mode</code> is <code>disabled</code>, change the <code>mode</code> to either <code>started</code> or <code>hidden</code>; this will trigger loading of the WebVTT data ({{bug(1550633)}}).</li> +</ul> + +<h4 id="Removals_2"> Removals</h4> + +<ul> + <li>The HTML {{HTMLElement("keygen")}} element has been removed from Firefox. It was deprecated some time ago, and its purpose has generally been supplanted by other technologies ({{bug(1315460)}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Implement the break-spaces value of the white-space property ({{bug(1351432)}}).</li> + <li>Implement SVG geometry properties in CSS ({{bug(1383650)}}).</li> + <li>The {{cssxref("::cue")}} selector—used to style the captions ("cues") displayed by <a href="/en-US/docs/Web/API/WebVTT_API">WebVTT</a>—now enforces the limitations on which CSS properties may be used within cues, per the specification.</li> + <li>Properties which may apply to `::marker` restricted as per the specification ({{bug(1552578)}})</li> + <li>The {{cssxref("overflow-block")}} and {{cssxref("overflow-inline")}} properties have been implemented ({{bug(1470695)}}).</li> + <li>Adds the ability to test for support of a selector when using CSS Feature Queries (<a href="/en-US/docs/Web/CSS/@supports">@supports</a>), with the `selector()` method ({{bug(1513643)}}).</li> + <li>The {{cssxref("user-select")}} property—which specifies whether or not the user is able to select text in the affected element—has been unprefixed in Firefox 69 ({{bug(1492739)}}).</li> +</ul> + +<h4 id="Removals_3">Removals</h4> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>Support gzip-compressed SVG-in-OpenType ({{bug(1359240)}}).</li> +</ul> + +<h4 id="Removals_4">Removals</h4> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>The promise rejection events, <code><a href="/en-US/docs/Web/API/Window/unhandledrejection_event">unhandledrejection</a></code> and <code><a href="/en-US/docs/Web/API/Window/rejectionhandled_event">rejectionhandled</a></code>, are now enabled by default ({{bug(1362272)}}). To learn more about how these work, see {{SectionOnPage("/en-US/docs/Web/JavaScript/Guide/Using_promises", "Promise rejection events")}}.</li> +</ul> + +<h4 id="Removals_5">Removals</h4> + +<h3 id="HTTP">HTTP</h3> + +<ul> + <li>The HTTP headers {{HTTPHeader("Access-Control-Expose-Headers")}}, {{HTTPHeader("Access-Control-Allow-Methods")}}, and {{HTTPHeader("Access-Control-Allow-Headers")}} now accept a wildcard value "<code>*</code>" for requests without credentials ({{bug(1309358)}}). This change has also been uplifted to Firefox 68 ESR.</li> +</ul> + +<h3 id="APIs">APIs</h3> + +<p><em>No changes.</em></p> + +<h4 id="New_APIs">New APIs</h4> + +<h4 id="DOM">DOM</h4> + +<ul> + <li>The {{domxref("DOMMatrix")}}, {{domxref("DOMPoint")}}, and related objects are now supported in workers ({{bug(1420580)}}).</li> +</ul> + +<h4 id="DOM_events">DOM events</h4> + +<h4 id="Service_workers">Service workers</h4> + +<h4 id="Media_Web_Audio_and_WebRTC">Media, Web Audio, and WebRTC</h4> + +<ul> + <li>For improved user security, and in keeping with the latest versions of the <a href="/en-US/docs/Web/API/Media_Streams_API">Media Capture and Streams</a> specification, the {{domxref("navigator.mediaDevices")}} property is no longer present if the context is insecure. To use {{domxref("MediaDevices.getUserMedia", "getUserMedia()")}}, {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}}, {{domxref("MediaDevices.enumerateDevices", "enumerateDevices()")}}, and so forth, be sure your content is loaded using {{Glossary("HTTPS")}} ({{bug(1528031)}}).</li> + <li>The Web Audio API's {{domxref("AudioParam.value")}} property now returns the actual value of the property at the current time, taking into account all scheduled or gradiated changes taking places to the value. Previously, Firefox only returned the most recent explicitly-set value (as through using the <code>value</code> setter) ({{bug(893020)}}).</li> + <li>Updated {{domxref("MediaStreamAudioSourceNode")}} to use the new, lexicographical, ordering for tracks. Previously, track ordering was up to the individual browser, and could even change arbitrarily. In addition, attempting to create a <code>MediaStreamAudioSourceNode</code> using a stream that has no audio tracks now throws an <code>InvalidStateError</code> exception ({{bug(1553215)}}).</li> + <li>The {{domxref("MediaTrackSettings.facingMode", "facingMode")}}, {{domxref("MediaTrackSettings.deviceId", "deviceId")}}, and {{domxref("MediaTrackSettings.groupId", "groupId")}} settings are now included as members of the {{domxref("MediaTrackSettings")}} object returned by calls to {{domxref("MediaStreamTrack.getSettings()")}} ({{bug(1537986)}}).</li> +</ul> + +<h4 id="Canvas_and_WebGL">Canvas and WebGL</h4> + +<h4 id="Removals_6">Removals</h4> + +<h3 id="Security">Security</h3> + +<p><em>No changes.</em></p> + +<h4 id="Removals_7">Removals</h4> + +<h3 id="Plugins">Plugins</h3> + +<p><em>No changes.</em></p> + +<h4 id="Removals_8">Removals</h4> + +<h3 id="Other">Other</h3> + +<p><em>No changes.</em></p> + +<h4 id="Removals_9">Removals</h4> + +<h2 id="Changes_for_add-on_developers">Changes for add-on developers</h2> + +<h3 id="API_changes">API changes</h3> + +<p><em>No changes.</em></p> + +<h4 id="Removals_10">Removals</h4> + +<h3 id="Manifest_changes">Manifest changes</h3> + +<p><em>No changes.</em></p> + +<h4 id="Removals_11">Removals</h4> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-CA/versions/69/">Site compatibility for Firefox 69</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers(68)}}</p> diff --git a/files/fr/mozilla/firefox/versions/7/index.html b/files/fr/mozilla/firefox/versions/7/index.html new file mode 100644 index 0000000000..16936f3f8d --- /dev/null +++ b/files/fr/mozilla/firefox/versions/7/index.html @@ -0,0 +1,239 @@ +--- +title: Firefox 7 pour les développeurs +slug: Mozilla/Firefox/Versions/7 +tags: + - Firefox + - Firefox 7 +translation_of: Mozilla/Firefox/Releases/7 +--- +<div>{{FirefoxSidebar}}</div><p>Firefox 7, basé sur Gecko 7.0, est sorti le 27 september 2011. Cet article fournit des informations à propos des changements qui affectent les développeurs dans cette version.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>La propriété <code>profile</code> de {{domxref("HTMLHeadElement")}} a été supprimée, cette propriété est obsolète depuis {{gecko("2.0")}}.</li> + <li>Les propriétés <code>x</code> et <code>y</code> de {{domxref("HTMLImageElement")}} ont été supprimées.</li> + <li>Le paramètre <code>before</code> de la méthode <code>add()</code> de {{domxref("HTMLSelectElement")}} est désormais optionnel.</li> + <li>L'attribut {{htmlattrxref("background", "body")}} de l'élément {{HTMLElement("body")}} n'est plus résolu en tant qu'URI, ce qui est conforme à la spécification HTML courante.</li> + <li>L'attribut {{htmlattrxref("label", "option")}} de l'élément {{HTMLElement("option")}} reflète désormais la valeur du contenu texte de l'élément si l'attribut n'est pas spécifié.</li> +</ul> + +<h4 id="Canvas">Canvas</h4> + +<ul> + <li>Dans le cadre du <a class="external" href="http://blog.mozilla.com/joe/2011/04/26/introducing-the-azure-project/" title="http://blog.mozilla.com/joe/2011/04/26/introducing-the-azure-project/">projet Azure</a>, le Backend Azure Direct2D <a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=651858" title="https://bugzilla.mozilla.org/show_bug.cgi?id=651858">a été implémenté</a> et améliore considérablement les performances des canvas 2D.</li> + <li>La spécification de valeurs invalides lors de l'appel de <code>setTransform()</code>, <code>bezierCurveTo()</code> ou <code>arcTo()</code> ne renvoie plus d'exception, ces appels sont à présent ignorés silencieusement.</li> + <li>La méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/CanvasRenderingContext2D#isPointInPath()" title="en/DOM/CanvasRenderingContext2D#isPointInPath()"><code>isPointInPath()</code></a> considère maintenant correctement la matrice de transformation lors de la comparaison du point spécifié au tracé en cours.</li> + <li>L'appel de <code>strokeRect()</code> avec une largeur et une hauteur de zéro n'a désormais plus aucun effet.</li> + <li>L'appel de <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/CanvasRenderingContext2D#drawImage()" title="en/DOM/CanvasRenderingContext2D#drawImage()"><code>drawImage()</code></a> avec une largeur ou hauteur {{HTMLElement("canvas")}} de zéro lance désormais <code>INVALID_STATE_ERR</code>.</li> + <li>L'appel de <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/CanvasRenderingContext2D#drawImage()" title="en/DOM/CanvasRenderingContext2D#drawImage()"><code>drawImage()</code></a> avec des coordonnées non-finies ne renvoie plus d'exception.</li> + <li>La méthode <code>toDataURL()</code> accepte désormais un second paramètre pour contrôler la qualité JPEG.</li> + <li>Le support des opérations non-standards <code>clear</code> et <code>over</code> de <code>globalCompositeOperation</code> a été enlevé.</li> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/Canvas_tutorial/Applying_styles_and_colors#Shadows" title="en/Canvas_tutorial/Applying_styles_and_colors#Shadows">Les ombres</a> sont désormais uniquement dessinées pour les opérations de composition de <code>source-over</code>.</li> + <li>Vous pouvez désormais configurer la règle de remplissage utilisé par la toile en définissant l'<a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/CanvasRenderingContext2D#Attributes" title="en/DOM/CanvasRenderingContext2D#Attributes">attribute</a> <code>mozFillRule</code> au contexte.</li> + <li>Le support des attributs expérimentaux <code>mozDash</code>, <code>mozDashOffset</code>, <code>mozCurrentTransform</code> et <code>mozCurrentTransformInverse</code> a été ajouté.</li> + <li>Le support des méthodes non-standards <code>mozDrawText()</code>, <code>mozMeasureText()</code>, <code>mozPathText()</code> et <code>mozTextAlongPath()</code> a été retiré.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>{{cssxref("text-overflow")}} est désormais supporté.</li> + <li>La propriété {{cssxref("orient", "-moz-orient")}} a été corrigée pour que les éléments {{HTMLElement("progress")}} qui sont orientés verticalement aient des dimensions par défaut appropriées.</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>XLink href a été rétabli et l'attribut <code>href</code> de MathML3 est maintenant supporté. Les développeurs sont encouragés à passer à la dernière syntaxe.</li> + <li>Le support de l'attribut <code>voffset</code> sur les éléments {{MathMLElement("mpadded")}} a été ajouté et le comportement de l'attribut <code>lspace</code> a été fixé.</li> + <li>L'élément de premier niveau {{MathMLElement("math")}} accepte maintenant tous les atributs de l'élément {{MathMLElement("mstyle")}}.</li> + <li>Le support des polices <a class="external" href="http://www.ctan.org/tex-archive/fonts/Asana-Math/">Asana Math</a> a été ajouté.</li> + <li>L'épaisseur des lignes <code>medium</code> des barres de fraction des éléments {{MathMLElement("mfrac")}} a été corrigé pour correspondre à l'épaisseur par défaut.</li> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/MathML/Attributes/Values#Constants_(namedspaces)" title="en/MathML/Attributes/Values#Constants_(namedspaces)">Les noms des espaces négatifs</a> sont maintenant supportés.</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>Les méthodes non-standards <code>getAsBinary()</code>, <code>getAsDataURL()</code> et <code>getAsText()</code> de l'interface {{domxref("File")}} ont été supprimées ainsi que les propriétés non-standards <code>fileName</code> et <code>fileSize</code>.</li> + <li>L'interface {{domxref("XMLHttpRequest/FormData", "FormData")}} ne signale plus le nom du fichier comme une chaîne vide lors de l'envoi l'en-tête HTTP <code>Content-Disposition</code> si les données ont été définies à l'aide de {{domxref("Blob")}}. Cela corrige les erreurs qui avaient lieu sur certains serveurs.</li> + <li>L'attribut {{domxref("element.dir")}} renvoie désormais toujours son résultat en minuscules, comme l'exige la spécification HTML.</li> + <li>la méthode <code>readAsArrayBuffer()</code> de {{domxref("FileReader")}} est maintenant implémentée.</li> + <li>{{domxref("document.createEntityReference")}} a été retiré. Elle n'a jamais été correctement implémentée et n'est pas intégrée dans la plupart des autres navigateurs.</li> + <li><code>document.normalizeDocument</code> a été retiré. Utilisez {{domxref("Node.normalize")}} à la place.</li> + <li>{{domxref("DOMTokenList.item")}} renvoie désormais <code>undefined</code> si <code>index</code> est en dehors des limites, auparavant il renvoyé <code>null</code>.</li> + <li><code>Node.getFeature</code> a été supprimé.</li> + <li>Les interfaces <code>HTMLInsElement</code> et <code>HTMLDelElement</code> ont été retirées, depuis que les éléments {{HTMLElement("ins")}} et {{HTMLElement("del")}} utilisent l'interface {{domxref("HTMLModElement")}}.</li> + <li>Dans le but d'être conforme à la prochaine spécification <a class="external" href="http://www.w3.org/TR/dom/">DOM4</a> où {{domxref("Attr")}} n'hérite plus de {{domxref("Node")}} (il l'a fait dans les DOM Core 1, 2 and 3), beaucoup de propriétés et méthodes de {{domxref("Node")}} sur l'interface {{domxref("Attr")}} sont maintenant des <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Attr#Deprecated_properties_and_methods" title="en/DOM/Attr#Deprecated_properties_and_methods">rapports d'alertes</a> que nous nous efforçons de retirer dans une version ultérieure.</li> + <li>Ajout du support des propriétés {{domxref("window.ondeviceorientation")}} et {{domxref("window.ondevicemotion")}} sur les objets {{domxref("window")}}.</li> + <li>{{domxref("window.resizeTo")}}, {{domxref("window.resizeBy")}}, {{domxref("window.moveTo")}} et {{domxref("window.moveBy")}} ne s'appliquent plus à la fenêtre principale.</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>La propriété <code><a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/arity" title="en/JavaScript/Reference/Global_Objects/Function/arity">Function.arity</a></code> a été enlevée, utilisez <code><a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Function/length" title="en/JavaScript/Reference/Global_Objects/Function/length">Function.length</a></code> à la place.</li> +</ul> + +<h3 id="WebSockets">WebSockets</h3> + +<ul> + <li>la préférence <code>network.websocket.max-connections</code> est utilisée pour déterminer le nombre maximum de connexions à WebSocket qui peuvent être ouvertes en même temps. La valeur par défaut est 200.</li> + <li>La version 8 du protocole WebSocket (comme spécifié par <a class="external" href="http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10" title="http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10">IETF draft 10</a>) est maintenant utilisé à la place de la version 7 du protocole utilisé par Firefox 6.</li> + <li>L'API WebSocket est maintenant disponible sur Firefox Mobile.</li> +</ul> + +<h3 id="Console_API">Console API</h3> + +<ul> + <li>Les messages enregistrés avec <code>console.log</code> alors que la <a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console" title="Using the Web Console">console web</a> n'est pas ouverte sont toujours enregistrés, bien qu'ils ne s'affichent pas lorsque la console web est ouverte.</li> +</ul> + +<div class="changelog"> +<h3 id="Web_timing">Web timing</h3> + +<ul> + <li>Première implémentation de la spécification <a class="external" href="http://www.w3.org/TR/navigation-timing/">Navigation Timing</a> qui fournit des données pouvant être utilisées pour mesurer les performances d'un site.</li> +</ul> + +<h3 id="XML">XML</h3> + +<ul> + <li>En plus de la précédente prise en charge de <code>text/xsl</code>, les feuilles de style XSLT peuvent désormais utiliser les médias Internet officiels (MIME) de type <code>application/xslt+xml</code> (dans la <a class="external" href="http://www.w3.org/TR/xml-stylesheet/" title="http://www.w3.org/TR/xml-stylesheet/">feuille de style d'instruction de traitement</a> ou le <a class="external" href="http://tools.ietf.org/html/rfc5988">champ d'en-tête HTTP Link</a>).</li> +</ul> +</div> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<p>Ces changements affectent les développeurs d'extensions ainsi que les développeurs qui travaillent sur ou avec le code de Mozilla lui-même. Les developpeurs d'extensions doivent voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Firefox/Updating_extensions_for_Firefox_7" title="en/Firefox/Updating extensions for Firefox 7">Updating extensions for Firefox 7</a> pour plus d'informations.</p> + +<div class="note"><strong>Note:</strong> Firefox 7 requiert que les composants binaires soient recompilés, comme pour toutes les versions majeures de Firefox. Pour plus de détails, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Interface_Compatibility#Binary_Interfaces" title="En/Developer Guide/Interface Compatibility#Binary Interfaces">Interfaces Binaires</a>.</div> + +<h3 id="Modules_de_code_JavaScript">Modules de code JavaScript</h3> + +<h4 id="FileUtils.jsm">FileUtils.jsm</h4> + +<ul> + <li>la nouvelle méthode <code>openFileOutputStream()</code> ouvre un flux de sortie du fichier, la variante non-sécurisée, pour écrire dedans.</li> +</ul> + +<h4 id="AddonManager.jsm">AddonManager.jsm</h4> + +<ul> + <li>Le gestionnaire de modules complémentaires a de nouvelles méthodes pour gérer les listes d'extensions qui ont changé durant le démarrage des applications : <code><a href="/fr/Add-ons/Add-on_Manager/AddonManager#addStartupChange()">AddonManager.addStarupChange()</a></code>, <code><a href="/fr/Add-ons/Add-on_Manager/AddonManager#removeStartupChange()">AddonManager.removeStartupChange()</a></code> et <code><a href="/fr/Add-ons/Add-on_Manager/AddonManager#getStartupChanges()">AddonManager.getStartupChanges()</a></code>.</li> + <li>.</li> +</ul> + +<h3 id="XUL">XUL</h3> + +<ul> + <li>Les éléments {{xulelem("tree")}} peuvent désormais conserver l'état des triangles d'affichage si les nœuds référencés par les {{XULAttr("datasources")}} ont tous des ID uniques spécifiés par les attributs "id".</li> + <li>Les éléments {{xulelem("panel")}} peuvent désormais être configurés pour <a class="internal" href="https://developer.mozilla.org/en-US/docs/XUL/PopupGuide/Panels#Letting_panels_be_dragged_by_grabbing_the_background" title="en/XUL/PopupGuide/Panels#Letting_panels_be_dragged_by_grabbing_the_background">permettre à l'utilisateur de les faire glisser en cliquant n'importe où sur leur arrière-plan</a> avec le nouvel attribut {{XULAttr("backdrag")}}.</li> +</ul> + +<h3 id="XPCOM">XPCOM</h3> + +<ul> + <li>La nouvelle méthode <a class="internal" href="https://developer.mozilla.org/fr/docs/Components.utils.schedulePreciseGC" title="Components.utils.schedulePreciseGC"><code>Components.utils.schedulePreciseGC()</code></a> vous permet de programmer un cycle approfondi de collection de garbage de se produire à un moment donné lorsqu'aucun code JavaScript n'est exécuté, un rappel est exécuté une fois la collecte terminée.</li> + <li>La méthode <a class="internal" href="https://developer.mozilla.org/fr/docs/Components.utils.unload" title="Components.utils.unload"><code>Components.utils.unload()</code></a> vous permet de décharger les modules de code JavaScript déjà chargés en appelant <code>Components.utils.load()</code>.</li> +</ul> + +<h3 id="Rapporteur_de_mémoire">Rapporteur de mémoire</h3> + +<p>Ajout du support pour le multi-reporters, c'est le rapporteur de mémoire qui rassemble des données sur demande et effectue un rappel pour chaque résultat généré. Voir {{interface("nsIMemoryMultiReporter")}} et {{interface("nsIMemoryMultiReporterCallback")}} pour les interfaces nécessaires, ainsi que les méthodes {{ifmethod("nsIMemoryReporterManager", "registerMultiReporter")}} et {{ifmethod("nsIMemoryReporterManager", "unregisterMultiReporter")}}.</p> + +<h3 id="Changements_de_l'expérience_utilisateur">Changements de l'expérience utilisateur</h3> + +<ul> + <li>Les options des extensions peuvent désormais être <a class="internal" href="https://developer.mozilla.org/en-US/docs/Extensions/Inline_Options" title="en/Extensions/Inline_Options">être affichées à l'intérieur du gestionnaire de modules complémentaires</a>.</li> + <li>La destination des téléchargements est désormais gardée en mémoire sur une base site par site. Ces données peuvent être accessibles par <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/DownloadLastDir.jsm" title="en/JavaScript_code_modules/DownloadLastDir.jsm">DownloadLastDir.jsm</a>.</li> +</ul> + +<h3 id="Changements_dans_le_système_de_compilation">Changements dans le système de compilation</h3> + +<ul> + <li>L'API d'intégration d'ActiveX n'est plus compilée et son support a été retiré du système de compilation. Des interfaces ont également été supprimées, voir {{anch("Interfaces supprimées")}}.</li> + <li>Vous n'avez plus besoin de préciser <code>-Zc:wchar_t-</code> lors de la compilation sous Windows. Pour plus de détails, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Build_Instructions#Build_and_install" title="en/Developer_Guide/Build_Instructions#Build_and_install">la documentation sur la compilation</a>.</li> +</ul> + +<h3 id="Changements_dans_les_interfaces">Changements dans les interfaces</h3> + +<ul> + <li>{{interface("nsISocketTransport")}} offre désormais un nouveau drapeau de connexion : <code>DISABLE_IPV6</code>, cela entraîne des tentatives de connexion uniquement aux adresses IPv4, en ignorant toutes les adresses IPv6 disponibles. De plus, {{interface("nsIDNSService")}} offre désormais un nouveau drapeau de résolution : <code>RESOLVE_DISABLE_IPV6</code>, ce qui entraîne un résolution des noms de domaine en ne tenant compte que des hôtes IPv4 et en ignorant toutes les adresses IPv6 disponibles. Ces changements permettent d'implémenter la <a class="external" href="http://tools.ietf.org/html/draft-wing-http-new-tech-00">stratégie "happy eyeballs"</a> pour améliorer le temps de réponse lors d'une tentative de connexion sur les hôtes qui supportent à la fois IPv4 et IPv6 (en particulier ceux qui ont brisé la connectivité IPv6).</li> + <li>{{interface("inIDOMUtils")}} a deux nouvelles méthodes, {{ifmethod("inIDOMUtils","getChildrenForNode")}} qui renvoie une liste des nœuds enfants d'un noeud et {{ifmethod("inIDOMUtils","getUsedFontFaces")}} qui renvoie la liste des police de caractères utilisées dans une gamme.</li> + <li>L'interface <code>nsIMarkupDocumentViewer_MOZILLA_2_0_BRANCH</code> a été intégrée dans l'interface {{interface("nsIMarkupDocumentViewer")}}.</li> + <li>L'interface <code>nsIDOMWindow2</code> a été intégrée dans l'interface {{interface("nsIDOMWindow")}}.</li> + <li>L'interface <code>nsIDOMWindow_2_0_BRANCH</code> a été intégrée dans l'interface {{interface("nsIDOMWindowInternal")}}.</li> + <li>Les méthodes {{interface("nsINavHistoryObserver")}} avec des paramètres d'URI exigent désormais un GUID.</li> + <li>L'interface <code>nsISHistory_2_0_BRANCH</code> a été intégrée dans l'interface {{interface("nsISHistory")}}.</li> + <li>{{interface("nsITelemetry")}} a une nouvelle méthode, {{ifmethod("nsITelemetry","getHistogramById")}} qui retourne un histogramme par son ID, et un nouvel attribut <code>canRecord</code> qui, lorsqu'il est défini sur <code>false</code> désactive l'enregistrement des statistiques de télémétrie. Les statistiques de télémétrie ne sont plus enregistrées lorsque l'on est en mode de navigation privée. (voir {{bug("661574")}} et {{bug("661573")}})<br> + Les histogrammes de télémétrie définis avec {{ifmethod("nsITelemetry","newHistogram")}} ne seront pas rapportés dans le ping de télémétrie.</li> + <li>L'interface {{interface("nsIMemoryReporter")}} a été sensiblement modifiée, si vous l'utilisez, vous devez faire quelques ajustements à votre code.</li> + <li>Les en-têtes {{interface("nsIXMLHttpRequest")}} fixées par {{ifmethod("nsIXMLHttpRequest","setRequestHeader")}} sont envoyées à la demande lorsque l'on suit une redirection. Auparavant, ces en-têtes n'auraient pas été envoyées.</li> + <li>{{interface("nsIDocShell")}} a un nouvel attribut <code>allowWindowControl</code>. Si il est <code>true</code>, le contenu du docshell est autorisé à contrôler la fenêtre (c'est-à-dire la déplacer ou la redimensionner).</li> + <li>L'interface <code>nsIThreadInternal2</code> a été intégrée dans l'interface {{interface("nsIThreadInternal")}}.</li> +</ul> + +<h4 id="Nouvelles_interfaces">Nouvelles interfaces</h4> + +<dl> + <dt>{{interface("nsIDOMFontFace")}}</dt> + <dd>Décrit une seule police de caractères.</dd> + <dt>{{interface("nsIDOMFontFaceList")}}</dt> + <dd>Décrit une liste de polices de caractères, chacune représentée par {{interface("nsIDOMFontFace")}}.</dd> +</dl> + +<h4 id="Interfaces_supprimées">Interfaces supprimées</h4> + +<p>Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :</p> + +<ul> + <li><code>nsIDOM3Attr</code></li> + <li><code>nsIDOM3Node</code></li> + <li><code>nsIDOM3TypeInfo</code></li> + <li><code>nsIDOM3Text</code></li> + <li><code>nsIDOMDocumentStyle</code></li> + <li><code>nsIDOMNSDocument</code></li> + <li><code>nsIDOMNSFeatureFactory</code></li> + <li>{{interface("nsIDOMNSHTMLDocument")}}</li> + <li><code>nsIDOMNSHTMLFormElement</code></li> + <li><code>nsIDOMNSHTMLHRElement</code></li> + <li><code>nsIDOMNSHTMLTextAreaElement</code></li> +</ul> + +<p>Les interfaces suivantes ont été supprimées dans le cadre du retrait de l'API ActiveX :</p> + +<ul> + <li><code>DITestScriptHelper</code></li> + <li><code>DWebBrowserEvents</code></li> + <li><code>DWebBrowserEvents2</code></li> + <li>{{interface("IDispatch")}}</li> + <li><code>IMozControlBridge</code></li> + <li><code>IMozPluginHostCtrl</code></li> + <li><code>IWebBrowser</code></li> + <li><code>IWebBrowser2</code></li> + <li><code>IWebBrowserApp</code></li> + <li><code>IXMLDocument</code></li> + <li><code>IXMLElement</code></li> + <li><code>IXMLElementCollection</code></li> + <li><code>IXMLError</code></li> + <li><code>nsIActiveXSecurityPolicy</code></li> + <li>{{interface("nsIDispatchSupport")}}</li> + <li><code>nsIMozAxPlugin</code></li> + <li><code>nsIScriptEventHandler</code></li> + <li><code>nsIScriptEventManager</code></li> +</ul> + +<h3 id="Autres_changements">Autres changements</h3> + +<ul> + <li>La structure de la fenêtre de la bibliothèque (<code>places.xul</code>) <a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=588027" title="https://bugzilla.mozilla.org/show_bug.cgi?id=588027">a été nettoyée</a>. Cela <a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=677417" title="https://bugzilla.mozilla.org/show_bug.cgi?id=677417">pourrait casser les extensions</a> et les thèmes</li> + <li>L'apparence de la fenêtre d'aperçu avant impression <a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=663028" title="https://bugzilla.mozilla.org/show_bug.cgi?id=663028">a été modernisé</a> et les auteurs de thèmes sont invités à avoir le même style en utilisant les pseudo-éléments CSS {{cssxref("::-moz-page")}}, {{cssxref("::-moz-page-sequence")}} et {{cssxref("::-moz-scrolled-page-sequence")}}</li> +</ul> + +<h2 id="Voir_également">Voir également</h2> + +<p>{{Firefox_for_developers('6')}}</p> diff --git a/files/fr/mozilla/firefox/versions/70/index.html b/files/fr/mozilla/firefox/versions/70/index.html new file mode 100644 index 0000000000..e104829d70 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/70/index.html @@ -0,0 +1,111 @@ +--- +title: Firefox 70 for developers +slug: Mozilla/Firefox/Versions/70 +translation_of: Mozilla/Firefox/Releases/70 +--- +<p>{{FirefoxSidebar}}{{Draft}}</p> + +<p class="summary">This article provides information about the changes in Firefox 70 that will affect developers. Firefox 70 is the current <a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#nightly">Nightly version of Firefox</a>, and will ship on <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates" rel="noopener">October 22, 2019</a>.</p> + +<h2 id="Changes_for_web_developers">Changes for web developers</h2> + +<h3 id="Developer_tools">Developer tools</h3> + +<ul> + <li>An information icon will be displayed next <a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Examine_CSS_rules">CSS properties</a> that do not have an effect on the current element in the Rules pane of the Page Inspector ({{bug(1306054)}}).</li> +</ul> + +<h4 id="Removals">Removals</h4> + +<h3 id="HTML">HTML</h3> + +<p><em>No changes.</em></p> + +<h4 id="Removals_2"> Removals</h4> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>[fill-stroke] [filter-effects] [css-color] percentage opacity. {{Bug(1562086)}}</li> + <li>[css-grid] <a href="/en-US/docs/Web/CSS/grid-auto-columns">grid-auto-columns</a>/<a href="/en-US/docs/Web/CSS/grid-auto-rows">rows</a> should accept multiple track-size values. {{Bug(1339672)}}</li> + <li>[css-text-decor-4] Implement <a href="/en-US/docs/Web/CSS/text-decoration-skip-ink">text-decoration-skip-ink</a>. {{Bug(1411922)}}</li> + <li>[css-display-3] Implement multi-keyword {{CSSxRef("display")}} values. ({{Bug(1038294)}}, {{Bug(1105868)}} and {{Bug(1557825)}})</li> +</ul> + +<h4 id="Removals_3">Removals</h4> + +<h3 id="SVG">SVG</h3> + +<p><em>No changes.</em></p> + +<h4 id="Removals_4">Removals</h4> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Add support for numeric separators. {{Bug(1435818)}}</li> +</ul> + +<h4 id="Removals_5">Removals</h4> + +<h3 id="APIs">APIs</h3> + +<h4 id="New_APIs">New APIs</h4> + +<h4 id="DOM">DOM</h4> + +<ul> + <li>Add {{DOMxRef("DOMMatrix")}}, {{DOMxRef("DOMPoint")}}, etc. support in web workers ({{bug(1420580)}}).</li> +</ul> + +<h4 id="DOM_events">DOM events</h4> + +<h4 id="Service_workers">Service workers</h4> + +<h4 id="Media_Web_Audio_and_WebRTC">Media, Web Audio, and WebRTC</h4> + +<h4 id="Canvas_and_WebGL">Canvas and WebGL</h4> + +<h4 id="Removals_6">Removals</h4> + +<h3 id="Security">Security</h3> + +<p><em>No changes.</em></p> + +<h4 id="Removals_7">Removals</h4> + +<h3 id="Plugins">Plugins</h3> + +<p><em>No changes.</em></p> + +<h4 id="Removals_8">Removals</h4> + +<h3 id="Other">Other</h3> + +<p><em>No changes.</em></p> + +<h4 id="Removals_9">Removals</h4> + +<h2 id="Changes_for_add-on_developers">Changes for add-on developers</h2> + +<h3 id="API_changes">API changes</h3> + +<p><em>No changes.</em></p> + +<h4 id="Removals_10">Removals</h4> + +<h3 id="Manifest_changes">Manifest changes</h3> + +<p><em>No changes.</em></p> + +<h4 id="Removals_11">Removals</h4> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-CA/versions/70/">Site compatibility for Firefox 70</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers(69)}}</p> diff --git a/files/fr/mozilla/firefox/versions/76/index.html b/files/fr/mozilla/firefox/versions/76/index.html new file mode 100644 index 0000000000..efa1538412 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/76/index.html @@ -0,0 +1,114 @@ +--- +title: Firefox 76 for developers +slug: Mozilla/Firefox/Versions/76 +tags: + - '76' + - Firefox + - Mozilla + - Release +translation_of: Mozilla/Firefox/Releases/76 +--- +<p>{{FirefoxSidebar}}</p> + +<p class="summary">Cet article fournit des informations sur les modifications apportées à Firefox 76 qui affecteront les développeurs. Firefox 76 a été publié le <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates/docs/">5 Mai 2020</a>.</p> + +<p class="summary"><strong>Voir aussi le post d'accompagnement du blog hacks — <a href="https://hacks.mozilla.org/2020/05/firefox-76-audio-worklets-and-other-tricks/">Firefox 76: Audio worklets and other tricks</a>.</strong></p> + +<h2 id="Changements_pour_les_développeurs_web">Changements pour les développeurs web</h2> + +<h3 id="Outils_pour_les_développeurs">Outils pour les développeurs</h3> + +<h4 id="Débogueur">Débogueur</h4> + +<ul> + <li>Vous pouvez maintenant activer/désactiver le blackboxing des groupes et dossiers sources listés dans le volet <a href="/fr/docs/Outils/Débogueur/Visite_guidée_de_l_interface_utilisateur#Panneau_de_la_liste_des_sources">Liste des sources</a> via les options du menu contextuel ({{bug(1118152)}}).</li> + <li>L'option de menu contextuel <em>Copier la trace de la pile</em> d'appels du volet <a href="/fr/docs/Outils/Débogueur/Visite_guidée_de_l_interface_utilisateur#Pile_dexécution_call_stack">Pile d'éxécution</a> copie désormais les URL complètes, et pas seulement les noms de fichiers ({{bug(1619039)}}).</li> +</ul> + +<h4 id="Moniteur_de_réseau">Moniteur de réseau</h4> + +<ul> + <li>Dans la liste des requêtes du réseau, vous pouvez maintenant double-cliquer sur un séparateur de colonne pour redimensionner la colonne à gauche de celui-ci afin qu'il corresponde à son contenu ({{bug(1615102)}}).</li> + <li>Le menu contextuel de la requête réseau Copier > <a href="/fr/docs/Outils/Moniteur_r%C3%A9seau/request_list#Copier_en_tant_que_commande_cURL">Copier comme cURL</a> dispose d'une nouvelle option, <code>--globoff</code>, qui supprime la fonction de globbing (correspondance de caractères génériques) du cURL si l'URL copiée comprend des caractères entre crochets ({{bug(1549773)}}).</li> + <li>L'onglet <em>Messages</em> du panneau de détails pour les requêtes de socket web a un nouveau filtre - Contrôle - pour afficher les cadres de contrôle, et les filtres sont maintenant regroupés dans une liste de sélection ({{bug(1566780)}}).</li> +</ul> + +<h4 id="Console_web">Console web</h4> + +<ul> + <li>In <a href="/en-US/docs/Tools/Web_Console/The_command_line_interpreter#Multi-line_mode">multi-line mode</a>, code snippets longer than five lines are abbreviated to five lines, preceeded by a disclosure triangle (or "twistie"), and followed by an ellipsis (…). You can click anywhere in this area to show the code, and click again in that area to collapse it ({{bug(1578212)}}).</li> + <li>DOM element references outputted into the console now have a "Reveal in inspector" context menu option, which shows the element in the HTML pane of the <a href="/en-US/docs/Tools/Page_Inspector">Page inspector</a> ({{bug(1612276)}}).</li> +</ul> + +<h4 id="Débogage_à_distance">Débogage à distance</h4> + +<ul> + <li>Because of differences in DevTools versions, it is not possible to debug releases of Firefox for Android that are based on version 68, from desktop Firefox versions 69 or later. When attempting to do this, the Firefox desktop browser will now show a message informing the user of this problem, and offering possible next steps ({{bug(1625906)}}). See <a href="/en-US/docs/Tools/about:debugging#Connection_to_Firefox_for_Android_68">Connection to Firefox for Android 68</a> for more information.</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>The {{HTMLElement("input")}} element's {{htmlattrxref("min", "input")}} and {{htmlattrxref("max", "input")}} attributes now work correctly when the value of <code>min</code> is greater than the value of <code>max</code> for control types whose values are periodic (that is, values that wrap around at some point). This is particularly helpful, for example, with date and time inputs, where you might want to specify a time range of 11 PM to 2 AM ({{bug(1608010)}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Firefox now supports <a href="/en-US/docs/Web/CSS/color_value#System_Colors">CSS4 system colors</a> ({{bug(1590894)}}).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>No changes.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>The <code>numberingSystem</code> and <code>calendar</code> options of the {{jsxref("Intl.NumberFormat")}}, {{jsxref("Intl.DateTimeFormat")}}, and {{jsxref("Intl.RelativeTimeFormat")}} constructors are now enabled by default ({{bug(1625975)}}).</li> +</ul> + +<h3 id="APIs">APIs</h3> + +<h4 id="Nouvelles_APIs">Nouvelles APIs</h4> + +<ul> + <li>Firefox now supports audio worklets by default, with support for {{domxref("BaseAudioContext.audioWorklet", "AudioContext.audioWorklet")}}, which lets you use the {{domxref("AudioWorkletProcessor")}} and {{domxref("AudioWorkletNode")}} interfaces to process audio in real time off the main thread ({{bug(1616725)}}).</li> +</ul> + +<h4 id="DOM">DOM</h4> + +<ul> + <li>UI-parts related items in the <code>windowFeatures</code> parameter of {{domxref("window.open()")}} can no longer control the visibility of each UI part separately, but become a condition for whether to open a popup or not ({{bug(1507375)}}).</li> + <li>Attempts to navigate to an unknown protocol using methods such as <code><a href="/en-US/docs/Web/API/Location/href">location.href</a></code> or <code><a href="/en-US/docs/Web/HTML/Element/meta"><meta http-equiv="refresh"></a></code> are now blocked (see {{bug(1528305)}}; also see <a href="https://www.fxsitecompat.dev/en-CA/docs/2020/navigation-to-unknown-protocol-will-be-blocked/">Navigation to unknown protocol will be blocked</a> for more information).</li> + <li>The {{domxref("IntersectionObserver.IntersectionObserver", "IntersectionObserver()")}} constructor now accepts a {{domxref("Document")}} object as its <code>root</code>, as well as an {{domxref("Element")}} object ({{bug(1623623)}}). This lets you explicitly use a window's entire content area as the intersection bounds.</li> + <li>The <a href="/en-US/docs/Web/API/Fetch_API">Fetch API</a> now supports the <code>audioworklet</code> {{domxref("Request.destination", "destination")}} for requests. This causes received data to be dispatched to an {{domxref("AudioWorklet")}} ({{bug(1402784)}}).</li> +</ul> + +<h4 id="Suppressions">Suppressions</h4> + +<ul> + <li>We've completely removed the <a href="/en-US/docs/Web/API/Window/appinstalled_event">Window <code>appinstalled</code> event</a> (and the associated <code><a href="/en-US/docs/Web/API/Window/onappinstalled">Window.onappinstalled</a></code> handler property) — these were never shipped, and have now been removed from the <a href="https://w3c.github.io/manifest/">Web Manifest spec</a> ({{bug(1625384)}}).</li> +</ul> + +<h3 id="HTTP">HTTP</h3> + +<p><em>Aucun changements.</em></p> + +<h3 id="Sécurité">Sécurité</h3> + +<p><em>Aucun changements.</em></p> + +<h2 id="Changements_pour_les_développeurs_de_modules_complémentaires">Changements pour les développeurs de modules complémentaires</h2> + +<p><em>Aucun changements.</em></p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-CA/versions/76/">Site compatibility for Firefox 76</a></li> +</ul> + +<h2 id="Anciennes_versions">Anciennes versions</h2> + +<p>{{Firefox_for_developers(75)}}</p> diff --git a/files/fr/mozilla/firefox/versions/77/index.html b/files/fr/mozilla/firefox/versions/77/index.html new file mode 100644 index 0000000000..073ca22e4b --- /dev/null +++ b/files/fr/mozilla/firefox/versions/77/index.html @@ -0,0 +1,117 @@ +--- +title: Firefox 77 for developers +slug: Mozilla/Firefox/Versions/77 +tags: + - '77' + - Firefox + - Mozilla + - Sorties +translation_of: Mozilla/Firefox/Releases/77 +--- +<p>{{FirefoxSidebar}}{{Draft}}</p> + +<p class="summary">Cet article fournit des informations sur les modifications apportées à Firefox 77 qui affecteront les développeurs. Firefox 77 est l'actuel <a href="https://www.mozilla.org/fr/firefox/channel/desktop/#beta">version de Firefox Bêta</a>, et sera livrée le <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates/docs/">2 Juin 2020</a>.</p> + +<h2 id="Changements_pour_les_développeurs_web">Changements pour les développeurs web</h2> + +<h3 id="Outils_pour_les_développeurs">Outils pour les développeurs</h3> + +<p>Aucun changement.</p> + +<h4 id="Suppressions">Suppressions</h4> + +<h3 id="HTML">HTML</h3> + +<p>Aucun changement.</p> + +<h4 id="Suppressions_2"> Suppressions</h4> + +<h3 id="CSS">CSS</h3> + +<p><em>Aucun changement.</em></p> + +<h4 id="Suppressions_3"> Suppressions</h4> + +<h3 id="SVG">SVG</h3> + +<p><em>Aucun changement.</em></p> + +<h4 id="Suppressions_4">Suppressions</h4> + +<h3 id="JavaScript">JavaScript</h3> + +<p><em>Aucun changement.</em></p> + +<h3 id="APIs">APIs</h3> + +<h4 id="Nouvelles_APIs">Nouvelles APIs</h4> + +<h4 id="DOM">DOM</h4> + +<h4 id="Événements_DOM">Événements DOM</h4> + +<h4 id="Service_workers">Service workers</h4> + +<h4 id="Médias_Web_Audio_et_WebRTC">Médias, Web Audio et WebRTC</h4> + +<h4 id="Canevas_et_WebGL">Canevas et WebGL</h4> + +<h4 id="Suppressions_5">Suppressions</h4> + +<h3 id="HTTP">HTTP</h3> + +<p><em>Aucun changement.</em></p> + +<h3 id="Securité">Securité</h3> + +<p><em>Aucun changement.</em></p> + +<h4 id="Suppressions_6">Suppressions</h4> + +<h3 id="Plugins">Plugins</h3> + +<p><em>Aucun changement.</em></p> + +<h4 id="Suppressions_7">Suppressions</h4> + +<h3 id="Securité_2">Securité</h3> + +<p>Enlèvements</p> + +<h3 id="Autres">Autres</h3> + +<p>Aucun changement.</p> + +<h4 id="Suppressions_8">Suppressions</h4> + +<h2 id="Changements_pour_les_développeurs_de_modules_complémentaires">Changements pour les développeurs de modules complémentaires</h2> + +<h3 id="Modifications_de_lAPI">Modifications de l'API</h3> + +<p>Aucun changement.</p> + +<h4 id="Suppressions_9">Suppressions</h4> + +<h3 id="Changements_manifestes">Changements manifestes</h3> + +<ul> + <li>Les permissions suivantes sont désormais facultatives, elles peuvent être spécifiées dans la clé du manifeste <code><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a></code><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions"> </a>et demandées en utilisant l'API {{WebExtAPIRef("permissions")}} : <code>browsingData</code> ({{bug(1630417)}}), <code>pkcs11</code> ({{bug(1630418)}}), <code>proxy</code> ({{bug(1548011)}}), et <code>sessions</code> ({{bug(1630414)}}).</li> +</ul> + +<h4 id="Suppressions_10">Suppressions</h4> + +<h3 id="Autres_2">Autres</h3> + +<ul> + <li>L'utilisation de l'autorisation <code>unlimitedStorage</code> n'entraîne plus l'affichage d'une boîte de dialogue lors de l'installation ou de la mise à jour de l'extension. Pour plus d'informations, voir <a href="https://extensionworkshop.com/documentation/develop/request-the-right-permissions/">Demander les bonnes autorisations <sup>(en)</sup></a>. ({{bug(1630413)}})</li> +</ul> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-CA/versions/77/">Compatibilité du site pour Firefox 77</a></li> +</ul> + +<h2 id="Anciennes_versions">Anciennes versions</h2> + +<p>{{Firefox_for_developers(76)}}</p> diff --git a/files/fr/mozilla/firefox/versions/8/index.html b/files/fr/mozilla/firefox/versions/8/index.html new file mode 100644 index 0000000000..b1e7b31fa7 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/8/index.html @@ -0,0 +1,255 @@ +--- +title: Firefox 8 pour les développeurs +slug: Mozilla/Firefox/Versions/8 +tags: + - Firefox + - Firefox 8 +translation_of: Mozilla/Firefox/Releases/8 +--- +<div><section class="Quick_links" id="Quick_Links"> + <ol> + <li class="toggle"> + <details> + <summary>Notes de versions pour développeurs</summary> + <ol> + <li><a href="/fr/docs/Mozilla/Firefox/Releases">Notes de versions pour développeurs</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Modules complémentaires</summary> + <ol> + <li><a href="/fr/Add-ons/WebExtensions">WebExtensions</a></li> + <li><a href="/fr/Add-ons/Themes">Thèmes</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Fonctionnement interne de Firefox</summary> + <ol> + <li><a href="/fr/docs/Mozilla/">Le projet Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Gecko">Gecko</a></li> + <li><a href="/fr/docs/Mozilla/Firefox/Headless_mode">Mode « headless »</a></li> + <li><a href="/fr/docs/Mozilla/JavaScript_code_modules">Modules de code Javascript</a></li> + <li><a href="/fr/docs/Mozilla/js-ctypes">JS-ctypes</a></li> + <li><a href="/fr/docs/Mozilla/MathML_Project">Le projet MathML</a></li> + <li><a href="/fr/docs/Mozilla/MFBT">MFBT</a></li> + <li><a href="/fr/docs/Mozilla/Projects">Les projets Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Preferences">Le système de préférences</a></li> + <li><a href="/fr/docs/Mozilla/WebIDL_bindings">Connexions WebIDL</a></li> + <li><a href="/fr/docs/Mozilla/Tech/XPCOM">XPCOM</a></li> + <li><a href="/fr/docs/Mozilla/Tech/XUL">XUL</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Développer et contribuer</summary> + <ol> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions">Instructions de compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions/Configuring_Build_Options">Configuration des options de compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions/How_Mozilla_s_build_system_works">Fonctionnement de la compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Code source de Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Localization">Localisation</a></li> + <li><a href="/fr/docs/Mozilla/Mercurial">Mercurial</a></li> + <li><a href="/fr/docs/Mozilla/QA">Assurance qualité</a></li> + <li><a href="/fr/docs/Mozilla/Using_Mozilla_code_in_other_projects">Utilisation de code Mozilla dans d'autres projets</a></li> + </ol> + </details> + </li> + </ol> +</section></div><p>Firefox 8, basé sur Gecko 8.0, est sorti le 8 novembre 2011. Cet article fournit des informations à la fois pour les developpeurs Web et pour les développeurs d'extensions et de projets liés à Mozilla pour aider à tirer pleinement parti des fonctionnalités de cette version.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>La propriété <code>crossOrigin</code> a été ajouté à <a href="/fr/docs/Web/API/HTMLImageElement" title="L'interface HTMLImageElement fournit des propriétés et des méthodes spéciales pour manipuler la mise en page et la présentation des éléments <img> ."><code>HTMLImageElement</code></a> et l'attribut <code><a href="/fr/docs/Web/HTML/Element/img#attr-crossorigin">crossorigin</a></code> a été ajouté à l'élément <a href="/fr/docs/Web/HTML/Element/img" title="L'élément HTML <img> permet de représenter une image dans un document. Cet élément est un élément remplacé."><code><img></code></a> (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=664299" title="FIXED: Add crossorigin attribute">bug 664299</a>).</li> + <li>La méthode <a href="/fr/docs/Web/API/HTMLSelectElement#add()" title=""><code>HTMLSelectElement.add()</code></a> supporte désormais supporte désormais soit un élément ou soit l'index d'un élément auquel un nouvel élément doit être inséré avant. Auparavant, seulement un élément était supporté (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=666200" title="FIXED: support select.add(element, long before)">bug 666200</a>).</li> + <li>Le constructeur <code>HTMLIsIndexElement</code> a été retiré. Aucun éléments n'a implémenté cette interface depuis Firefox 4.</li> + <li>la fonctionnalité HTML5 "menu contextuel" (attribut <code>contextmenu</code>), qui vous permet d'ajouter des éléments personnalisés particuliers au menu contextuel d'origine, est désormais supportée (l'implémentation est encore expérimentale en attendant des changements dans la spécification (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=617528" title='FIXED: implement the HTML5 "context menu" feature (contextmenu attribute)'>bug 617528</a>).</li> + <li>Le support de l'attribut <a class="internal" href="https://developer.mozilla.org/fr/docs/HTML/Global_attributes#accesskey" title="Global attributes#accesskey"><code>accesskeylabel</code></a> a été ajouté à tous les éléments.</li> + <li>les éléments <a href="/fr/docs/Web/HTML/Element/input" title="L'élément HTML <input> est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément <input> dépend fortement de la valeur indiquée dans son attribut type."><code><input></code></a> et <a href="/fr/docs/Web/HTML/Element/textarea" title="L'élément HTML <textarea> représente un contrôle qui permet d'éditer du texte sur plusieurs lignes."><code><textarea></code></a> supportent désormais l'attribut <code>selectionDirection</code>, et leurs méthodes <code>setSelectionRange()</code> ont été mises à jour pour supporter éventuellement la spécification d'une direction.</li> + <li>La plupart des éléments peuvent désormais obtenir une bague de focalisation établie autour d'eux s'ils ont été faits pouvant recevoir le focus via l'attribut <code>tabindex</code> et que l'utilisateur se concentre ensuite sur l'élément.</li> + <li>Dans un ensemble d'éléments <a href="/fr/docs/Web/HTML/Element/label" title="L'élément HTML <label> représente une légende pour un objet d'une interface utilisateur. Il peut être associé à un contrôle en utilisant l'attribut for ou en plaçant l'élément du contrôle à l'intérieur de l'élément <label>. Un tel contrôle est appelé contrôle étiqueté par l'élément <label>."><code><label></code></a> imbriqués, cliquer sur les événements ne déclencheront plus plusieurs éléments, qui, avant, provoquaient un blocage de Firefox (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=646157" title="FIXED: Stops responding when selecting a checkbox on the Netapp admin page inside deeply nested <label>s">bug 646157</a>).</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>La méthode <a href="/fr/docs/Web/API/Element/insertAdjacentHTML" title="insertAdjacentHTML() analyse le texte spécifié en tant que HTML ou XML et insère les noeuds résultants dans le DOM à la position spécifiée. L'élement qui est utilisé n'est pas réanalysé et les élements qu'il contient ne sont donc pas corrompus. Ceci, et le fait d'éviter la sérialisation supplémentaire, rend la fonction plus rapide et directe que innerHTML."><code>insertAdjacentHTML</code></a> a été implémentée.</li> + <li><a href="/fr/docs/Web/API/BlobBuilder" title="L'interface BlobBuilder fournit une manière simple de construire des objets Blob. Il suffit de créer un BlobBuilder et de lui ajouter des données en appellant la méthode append(). Une fois finalisé, l'appel à la méthode getBlob() permet de récupérer un Blob contenant les données envoyées au constructeur dudit Blob."><code>BlobBuilder</code></a> dispose désormais d'une méthode <code>getFile()</code> qui renvoie le contenu du blob dans un fichier.</li> + <li>L'interface <a href="/fr/docs/Web/API/FileReaderSync" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>FileReaderSync</code></a> (partie de FileAPI) a été implementée.</li> + <li>La gestion des évènements par les <a href="/fr/docs/Web/HTML/Element/label" title="L'élément HTML <label> représente une légende pour un objet d'une interface utilisateur. Il peut être associé à un contrôle en utilisant l'attribut for ou en plaçant l'élément du contrôle à l'intérieur de l'élément <label>. Un tel contrôle est appelé contrôle étiqueté par l'élément <label>."><code><label></code></a> imbriqués a été fixée.</li> + <li>Vous pouvez maintenant utiliser <a href="/fr/docs/Web/API/Window/postMessage" title="La méthode window.postMessage permet une communication inter-domaine en toute sécurité. Normalement, les scripts de différentes pages sont autorisés à accéder les uns aux autres si et seulement si les pages depuis lesquelles ils sont exécutés ont des URL de même origine, c'est-à-dire avec le même protocole (généralement http ou https), le même numéro de port (80 étant le port par défaut pour http), et le même nom d'hôte (à condition que document.domain soit initialisé à la même valeur par les deux pages). window.postMessage fournit un mécanisme contrôlé pour contourner cette restriction d'une manière sécurisée si bien utilisée."><code>window.postMessage()</code></a> pour passer les objets <a href="/fr/docs/Web/API/File" title="L'objet File fournit un tableau contenant des informations sur l'accès au contenu du ou des fichiers selectionnés, des informations sur le type mime, la taille, le nom des fichiers ainsi que le nombre de fichiers selectionnés. Ils sont généralement extraits d'un objet FileList retourné comme résultat lors de la sélection des fichiers en utilisant un input de type file, ou à partir d'un objet DataTransfer lors d'un glisser-déposer."><code>File</code></a> et <a href="/fr/docs/Web/API/FileList" title="Un objet de ce type est retourné par la propriété files, ce qui vous permet d'accéder à la liste des fichiers sélectionnés avec l'élément <input type="file">.ou en utilisant l'API de glisser-déposer ; voir l'objet DataTransfer pour plus de détails sur cette utilisation."><code>FileList</code></a> entre les fenêtres.</li> + <li>Lors de l'édition de zones <a href="/fr/docs/Web/API/Element/contenteditable" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>element.contenteditable</code></a> la sortie d'une position en appuyant sur retour, ou à la sortie d'une liste en mode édition en appuyant sur retour à deux reprises, revient maintenant au mode d'entrée au paragraphe (c'est-à-dire les paragraphes à l'intérieur des blocs <a href="/fr/docs/Web/HTML/Element/p" title="L'élément HTML <p> représente un paragraphe de texte. Les paragraphes sont généralement représentés comme des blocs et séparés par un espace vertical, leur première ligne est également parfois indentée. Les paragraphes sont des éléments blocs."><code><p></code></a>) au lieu de lignes de séparation par les éléments <a href="/fr/docs/Web/HTML/Element/br" title="L'élément HTML <br> crée un saut de ligne (un retour chariot) dans le texte. Il s'avère utile lorsque les sauts de ligne ont une importance (par exemple lorsqu'on écrit une adresse ou un poème)."><code><br></code></a>.</li> + <li>Correction d'un bug empêchant la justification de la prise d'effet correcte lorsqu'elle est appliquée à la première ligne dans une zone <a href="/fr/docs/Web/API/Element/contenteditable" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>element.contenteditable</code></a>.</li> + <li>Correction d'un bug qui faisait que en appuyant sur Suppr ou Retour arrière au début d'une zone <a href="/fr/docs/Web/API/Element/contenteditable" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>element.contenteditable</code></a> affectait le bloc <code>contenteditable</code> précédent s'il était présent.</li> + <li><a href="/fr/docs/Web/API/Document/getSelection" title="Cette méthode fonctionne de manière identique à la méthode Window.getSelection() ; elle renvoie un objet Selection représentant le texte actuellement sélectionné dans le document."><code>document.getSelection()</code></a> renvoie désormais l'objet <code>Selection</code> identique à <a href="/fr/docs/Web/API/Window/getSelection" title="Renvoie un objet selection représentant le ou les objets sélectionnés."><code>window.getSelection()</code></a>, à la place de <em>stringifying</em>.</li> + <li>La propriété HTML5 <code>selectionDirection</code> permet de définir la direction de la sélection dans un texte éditable.</li> + <li><a href="/fr/docs/Web/API/HTMLMediaElement" title="L'interface HTMLMediaElement ajoute à HTMLElement les propriétés et les méthodes nécessaires pour prendre en charge les fonctionnalités de base liées aux médias qui sont communes aux vidéos et aux documents audios. HTMLVideoElement et HTMLAudioElement héritent de cette interface."><code>HTMLMediaElement</code></a> a maintenant une propriété <code>seekable</code> qui retourne l'objet <a href="/fr/docs/Web/API/TimeRanges" title="L'interface TimeRanges est utilisée pour représenter un ensemble de plages de temps, principalement dans le but de savoir quelles portions du média ont été mises en mémoire tampon lors du chargement avec les éléments <audio> et <video>."><code>TimeRanges</code></a>.</li> + <li>L'attribut <code>.preload</code> de <a href="/fr/docs/Web/API/HTMLMediaElement" title="L'interface HTMLMediaElement ajoute à HTMLElement les propriétés et les méthodes nécessaires pour prendre en charge les fonctionnalités de base liées aux médias qui sont communes aux vidéos et aux documents audios. HTMLVideoElement et HTMLAudioElement héritent de cette interface."><code>HTMLMediaElement</code></a> se reflète désormais comme une <em>valeur énumérée</em>.</li> + <li>Les <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes" title="CORS settings attributes">propriétés <code>crossOrigin</code></a> sont par défaut defaults to "Anonyme" quand une valeur invalide est utilisée.</li> + <li><a href="/fr/docs/Web/API/Window/navigator/cookieEnabled" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>window.navigator.cookieEnabled</code></a> renvoie désormais correctement l'information quand le paramètre de cookie par défaut est écrasé sur la base de chaque site.</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li><a class="internal" href="https://developer.mozilla.org/fr/docs/JavaScript/Référence_JavaScript/Objets_globaux/RegExp/exec" title="RegExp/exec"><code>RegExp.exec()</code></a> et <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp/test" title="RegExp/test"><code>RegExp.test()</code></a> appelés sans arguments correspondent maintenant à la chaîne "undefined".</li> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/search" title="String/search"><code>String.search()</code></a> et <a class="internal" href="https://developer.mozilla.org/fr/docs/JavaScript/Référence_JavaScript/Objets_globaux/String/Match" title="String/Match"><code>String.match()</code></a> appelés sans arguments ou <code>undefined</code> correspondent désormais à une chaîne vide et correspondent donc à chaque chaîne.</li> + <li>Le support des listes de surveillance a été implémenté avec les nouvelles mtéhodes (non standards) <a class="internal" href="https://developer.mozilla.org/fr/docs/JavaScript/Référence_JavaScript/Objets_globaux/Object/watch" title="Object/watch"><code>watch()</code></a> et <a class="internal" href="https://developer.mozilla.org/fr/docs/JavaScript/Référence_JavaScript/Objets_globaux/Object/unwatch" title="Object/unwatch"><code>unwatch()</code></a>.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li><a href="/fr/docs/Web/CSS/resolution" title="Le type de donnée CSS <resolution>, utilisé dans les media queries, décrit la densité de pixels d'un appareil d'affichage, c'est-à-dire sa résolution."><code>resolution</code></a> accepte désormais <a href="/fr/docs/Web/CSS/number" title="Le type de donnée CSS <number> permet de représenter des nombres entiers ou décimaux. C'est donc un type qui englobe le type de données <integer> (permettant de représenter des entiers)."><code><number></code></a>, pas seulement des valeurs <a href="/fr/docs/Web/CSS/integer" title="Le type de donnée CSS <integer> permet de représenter des nombres entiers positifs ou négatifs. Aucune unité n'est liée à la valeur. Les entiers sont utilisés dans de nombreuses propriétés CSS comme z-index, line-height, counter-increment, column-count, grid-row, repeat. Ce type est un sous-type de number."><code><integer></code></a> comme avec la spécification.</li> + <li>Les règles de césure ont été ajoutées pour de nombreuses nouvelles langues lors de l'utilisation de <a href="/fr/docs/Web/CSS/hyphens" title="La propriété hyphens indique au navigateur comment gérer les traits d'union lors des sauts de ligne. Grâce à elle, on peut empêcher l'utilisation des traits d'union en fin de ligne, contrôler quand ils sont ajoutés ou laisser le navigateur décider."><code>hyphens</code></a>.</li> + <li>Le traitement de <a href="/fr/docs/Web/CSS/background-size" title="La propriété CSS background-size définit la taille des images d'arrière-plan pour l'élément. La taille de l'image peut être contrainte, complètement ou partiellement afin de conserver ses proportions."><code>background-size</code></a> a été revu pour mieux correspondre à la spécification.</li> + <li>Dans le passé, <a href="/fr/docs/Web/CSS/text-decoration" title="Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !"><code>text-decoration</code></a> en mode quirks avait l'épaisseur de ligne et la position ajustée sur le texte descendant pour correspondre à la descendance. Désormais le mode standard et le mode quirks ont un rendu plus proche.</li> + <li>Le positionnement horizontal des éléments est davantage conforme à la spécification dans beaucoup de cas. La documentation est à venir, mais pour l'instant, pour plus de détails voir le commentaire 23 du <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=682780" title="jig.com looks different in aurora vs. firefox">bug 682780</a>.</li> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/CSS/Scaling_of_SVG_backgrounds" title="Scaling of SVG backgrounds">Les images SVG sont désormais correctement mise à l'échelle</a> lorsqu'elles sont utilisées comme images de fond.</li> +</ul> + +<h3 id="Réseau">Réseau</h3> + +<ul> + <li>Les doubles guillemets ne sont plus acceptés en tant que délimiteur pour l'encodage <a href="https://tools.ietf.org/html/rfc2231">RFC 2231</a> ou <a href="https://tools.ietf.org/html/rfc5987">RFC 5987</a>, conformément à ces RFCs.</li> + <li>Le parseur MIME du champ d'en-tête (<code>Content-Disposition</code>) exige désormais "=" dans les paramètres.</li> + <li>Les scripts ne sont plus téléchargés lorsque JavaScript est désactivé.</li> + <li>SSL 2.0 n'est plus supporté.</li> +</ul> + +<h3 id="WebSockets">WebSockets</h3> + +<ul> + <li>La méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebSockets/WebSockets_reference/WebSocket#send()" title="WebSocket#send()"><code>send()</code></a> de l'objet <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebSockets/WebSockets_reference/WebSocket" title="WebSocket"><code>WebSocket</code></a> ne renvoie plus à tort une valeur booléenne.</li> + <li>La méthode <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebSockets/WebSockets_reference/WebSocket#close()" title="WebSocket#close()"><code>close()</code></a> de l'objet <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebSockets/WebSockets_reference/WebSocket" title="WebSocket"><code>WebSocket</code></a> correspond désormais à la version actuelle du standard, et les événements proches utilisent à présent correctement l'interface <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebSockets/WebSockets_reference/CloseEvent" title="CloseEvent"><code>CloseEvent</code></a>.</li> + <li>L'attribut <code>extensions</code> de l'objet <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebSockets/WebSockets_reference/WebSocket" title="WebSocket"><code>WebSocket</code></a> est à présent supporté.</li> + <li>Le constructeur WebSocket supporte désormais un ensemble de protocoles ainsi que la chaîne d'un seul protocole.</li> + <li>Le contenu mixte n'est pas autorisé avec WebSockets, vous ne pouvez plus établir une connexion vers un serveur WebSocket non sécurisé à partir d'un contenu sécurisé.</li> + <li>Les erreurs de connexion avec WebSockets déclenchent à présent le gestionnaire <code>onerror</code>.</li> + <li>L'API <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebSockets" title="en/WebSockets">WebSocket</a> a été mise à jour suivant la dernière version de la spécification (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=674890" title="FIXED: Update WebSocket API to latest draft - send() should return void">bug 674890</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=674527" title="FIXED: Update WebSocket API to latest draft - array of protocols in ctor">bug 674527</a> et <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=674716" title="FIXED: Update WebSocket API to latest draft - close codes and reasons">bug 674716</a>).</li> + <li>L'extension deflate-stream pour WebSockets a été désactivée, elle est obsolète et a cassée la compatibilité avec quelques sites.</li> +</ul> + +<h3 id="WebGL">WebGL</h3> + +<ul> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/WebGL/Cross-Domain_Textures" title="Cross-Domain Textures">Les textures Cross-domain</a> sont à présent autorisées avec l'accord de CORS.</li> + <li>Le processus de rendu Cross avec Direct2D/Direct3D 10.</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>le support de l'attribut <code>displaystyle</code> sur l'élément de premier niveau <code><a href="/fr/docs/Web/MathML/Element/math" title="<math>"><math></a></code> a été ajouté.</li> + <li>L'interprétation de numéros de lignes négatifs pour l'attribut <code>align</code> de <code><a href="/fr/docs/Web/MathML/Element/mtable" title="<mtable>"><mtable></a></code> a été corrigée.</li> +</ul> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<ul> + <li>L'objet <a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console#The_console_object" title="Using the Web Console#The console object"><code>console</code></a> a une nouvelle méthode <code>dir()</code>, qui affiche une liste interactive des propriétés sur un objet spécifié.</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<p>Voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Firefox/Updating_add-ons_for_Firefox_8" title="Updating add-ons for Firefox 8">Updating add-ons for Firefox 8</a> pour vous guidez dans les modifications que vous êtes susceptibles d'avoir à faire pour rendre vos extensions compatibles avec Firefox 8.</p> + +<div class="note"><strong>Note:</strong> Firefox 8 requiert que les composants binaires soient recompilés, comme pour toutes les versions majeures de Firefox. Pour plus de détails, voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Interface_Compatibility#Binary_Interfaces" title="Interface Compatibility#Binary Interfaces">Interfaces Binaires</a>.</div> + +<h3 id="XPCOM">XPCOM</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/fr/docs/Components.utils" title="fr/Components.utils"><code>Components.utils</code></a></dt> + <dd>Les nouvelles méthodes <a class="internal" href="https://developer.mozilla.org/fr/docs/Components.utils.createObjectIn" title="Components.utils.createObjectIn"><code>Components.utils.createObjectIn()</code></a> et <a class="internal" href="https://developer.mozilla.org/fr/docs/Components.utils.makeObjectPropsNormal" title="Components.utils.makeObjectPropsNormal"><code>Components.utils.makeObjectPropsNormal()</code></a> ont été créées pour faciliter la création d'objets dans des compartiments spécifiques.</dd> +</dl> + +<h4 id="Autres_changements_relatifs_à_XPCOM">Autres changements relatifs à XPCOM</h4> + +<ul> + <li>Vous pouvez à présent demander des objets DOM <a href="/fr/docs/Web/API/File" title="L'objet File fournit un tableau contenant des informations sur l'accès au contenu du ou des fichiers selectionnés, des informations sur le type mime, la taille, le nom des fichiers ainsi que le nombre de fichiers selectionnés. Ils sont généralement extraits d'un objet FileList retourné comme résultat lors de la sélection des fichiers en utilisant un input de type file, ou à partir d'un objet DataTransfer lors d'un glisser-déposer."><code>File</code></a> à partir d'éléments du code en faisant simplement un nouveau fichier, au lieu de devoir demander directement à <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code>.</li> + <li>Le type de tableau <code>nsTPtrArray</code> a été retiré. La fonctionnalité est désormais disponible sur tous les <code>nsTArray</code>, qui propose désormais la méthode <code>SafeElementAt()</code> lors d'une demande à l'aide d'un type de pointeur. Voir la section sur <a class="internal" href="https://developer.mozilla.org/en-US/docs/XPCOM_array_guide#Bounds-safe_access_to_elements" title="XPCOM array guide#Bounds-safe access to elements"><code>SafeElementAt()</code></a> dans le <a class="internal" href="https://developer.mozilla.org/en-US/docs/XPCOM_array_guide" title="XPCOM array guide">guide des tableaux XPCOM</a> pour plus de détails.</li> +</ul> + +<h3 id="Workers">Workers</h3> + +<p>Il n'est plus possible d'accéder à des objets XPCOM depuis ChromeWorkers. XPConnect a été désactivé dans le contexte des travailleurs comme indiqué par le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=649537" title="FIXED: Workers: Make one OS thread and JS runtime per worker, and lose XPConnect">bug 649537</a>.</p> + +<h3 id="XUL">XUL</h3> + +<ul> + <li>Un bug dans <a href="/fr/docs/Web/API/Document/execCommand" title="La plupart des commandes affectent la sélection du document (gras, italique, etc.), tandis que d'autres ajoutent de nouveaux éléments (ajout d'un lien) ou affectent une ligne entière (indentation). Lorsque vous utilisez contentEditable, l'appel execCommand() affectera l'élément modifiable actuellement actif."><code>document.execCommand()</code></a> a été fixé, il survenait lors de l'appel sur la valeur de <code><span><a href="http://api/fr/docs/XUL/Propriétés/contentDocument">contentDocument</a></span></code>. Depuis Firefox 3, cela a entraîné des erreurs au lieu d'un travail correct.</li> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/Extensions/Bootstrapped_extensions" title="Bootstrapped extensions">Les extensions amorcées</a> peuvent à présent charger le chrome l'aide du fichier <a class="internal" href="https://developer.mozilla.org/fr/docs/Enregistrement_chrome" title="chrome.manifest"><code>chrome.manifest</code></a>. Voir la section <a class="internal" href="https://developer.mozilla.org/en-US/docs/Extensions/Bootstrapped_extensions#Adding_user_interface_with_a_chrome.manifest" title="Bootstrapped extensions#Adding user interface with a chrome.manifest">Ajout de l'interface utilisateur avec chrome.manifest</a> pour plus de détails.</li> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/XUL/image" title="XUL/image">Les images XUL</a> rétrécissent désormais avec le même ratio dans les deux sens lors de la spécification de dimensions maximales.</li> +</ul> + +<h3 id="Changements_dans_le_système_de_compilation">Changements dans le système de compilation</h3> + +<ul> + <li>Les options de configuration de compilation suivantes ont été retirées : + <ul> + <li><code>--enable-timeline</code></li> + <li><code>--disable-storage</code></li> + <li><code>--necko-disk-cache</code></li> + </ul> + </li> + <li>Lors de la compilation des fichiers IDL aux en-têtes, le fichier d'en-tête <code>jspubtd.h</code> est automatiquement inclus lorsque c'est nécessaire. L'inclusion manuelle de <code>jspubtd.h</code> et/ou <code>jsapi.h</code> dans des fichiers IDL qui utilisent jsval ou [implicit_jscontext] n'est plus nécessaire.</li> +</ul> + +<h3 id="Enregistrement_du_chrome">Enregistrement du chrome</h3> + +<ul> + <li>L'indicateur <a class="internal" href="https://developer.mozilla.org/en-US/docs/Chrome_Registration#platformversion" title="Chrome Registration#platformversion"><code>platformversion</code></a> peut être utilisé dans le chrome.manifest pour spécifier la compatibilité entre les versions de Gecko.</li> +</ul> + +<h3 id="Changements_dans_les_interfaces">Changements dans les interfaces</h3> + +<ul> + <li>La méthode <code><a href="http://api/fr/docs/XPCOM_Interface_Reference/mozIJSSubScriptLoader#loadSubScript()">mozIJSSubScriptLoader.loadSubScript()</a></code> charge désormais scripts à partir du cache de démarrage lorsque c'est possible.</li> + <li>L'attribut <code>ownerWindow</code> a été supprimé de l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code>.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMStorageWindow" title="">nsIDOMStorageWindow</a></code> a été fusionnée avec l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindow" title="">nsIDOMWindow</a></code>.</li> + <li>Tous les membres de l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowInternal" title="">nsIDOMWindowInternal</a></code> ont été déplacés dans l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindow" title="">nsIDOMWindow</a></code>. L'interface (sans les membres) reste disponible pour la compatibilité jusqu'à Firefox 9.</li> + <li>Afin d'améliorer les performances, le rappel pour les mises à jour asynchrones des bases de données Places a été changé. Voir les nouvelles méthodes <code><a href="http://api/fr/docs/XPCOM_Interface_Reference/mozIVisitInfoCallback#handleResult()">mozIVisitInfoCallback.handleResult()</a></code> et <code><a href="http://api/fr/docs/XPCOM_Interface_Reference/mozIVisitInfoCallback#handleError()">mozIVisitInfoCallback.handleError()</a></code>, qui remplacent l'ancienne unique méthode pour les erreurs et les conditions de succès.</li> + <li>L'attribut <code>KIND_MAPPED</code> de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMemoryReporter" title="">nsIMemoryReporter</a></code> a été désapprouvé au profit de <code>KIND_NONHEAP</code>, de nouveaux types d'unités ont été ajoutées : <code>UNITS_COUNT_CUMULATIVE</code> et <code>UNITS_PERCENTAGE</code>.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMemoryReporterManager" title="">nsIMemoryReporterManager</a></code> a un nouvel attribut <code>explicit</code>, qui indique explicitement la taille totale des allocations de mémoire.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMemoryReporterManager" title="">nsIMemoryReporterManager</a></code> a un nouvel attribut <code>resident</code>, qui relève la quantité de mémoire physique utilisée.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINetworkLinkService" title="">nsINetworkLinkService</a></code> a un nouvel attribut, <code>linkType</code>. Cet attribut indique le type de connexion réseau en cours d'utilisation. Tous les systèmes d'exploitation retournent actuellement <code>LINK_TYPE_UNKNOWN</code>. Le support d'Android a été gardé pour des raisons de sécurité.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISelection2" title="">nsISelection2</a></code> a été fusionnée avec l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISelectionPrivate" title="">nsISelectionPrivate</a></code>.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISelection3" title="">nsISelection3</a></code> a été fusionnée avec l'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISelection" title="">nsISelection</a></code>.</li> + <li>L'attribut <code>state</code> de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISessionStartup" title="">nsISessionStartup</a></code> est désormais de type <a class="internal" href="https://developer.mozilla.org/en-US/docs/SpiderMonkey/JSAPI_Reference/Jsval" title="jsval"><code>jsval</code></a> au lieu d'être une chaîne, pour des raisons de performance.</li> + <li>L'état de l'attribut <code>isActive</code> de (<code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocShell" title="">nsIDocShell</a></code>) est désormais <code>false</code> pour les fenêtres minimisées.</li> + <li>La méthode <code><a href="http://api/fr/docs/XPCOM_Interface_Reference/nsIDownloadHistory#addDownload()">nsIDownloadHistory.addDownload()</a></code> enregistre désormais la cible de l'endroit où le téléchargement est sauvegardé, sur le système de fichiers local.</li> +</ul> + +<h4 id="Interfaces_supprimées">Interfaces supprimées</h4> + +<p>Les interfaces suivantes ont été supprimées car elles n'étaient plus indispensables :</p> + +<ul> + <li><code>nsITimelineService</code></li> + <li><code>nsIDOMHTMLIsIndexElement</code></li> +</ul> + +<p>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWorkerFactory" title="">nsIWorkerFactory</a></code> a également été retirée. WLes travailleurs peuvent encore être créés à l'aide des constructeurs <code>Worker</code> et <code>ChromeWorker</code>.</p> + +<h3 id="Autres_changements">Autres changements</h3> + +<ul> + <li>Quand une fenêtre est minimisée (non réduite), ou basculée entre le plein écran et le mode fenêtré, elle reçoit l'événement <code>sizemodechange</code>.</li> + <li>You can now <a class="internal" href="https://developer.mozilla.org/en-US/docs/Installing_extensions#Preventing_automatic_install_from_specific_locations" title="en/Installing_extensions#Preventing_automatic_install_from_specific_locations">la préférence <code>extensions.autoDisableScopes</code></a> pour désactiver l'installation automatique d'extensions sur un emplacement d'installation.</li> + <li>La nouvelle propriété <a href="/fr/docs/Web/API/Document/mozSyntheticDocument" title="Indique si le document est synthétique ou non ; c'est-à-dire un document représentant une image autonome, une vidéo, un son ou analogue."><code>document.mozSyntheticDocument</code></a> des objets <a href="/fr/docs/Web/API/Document" title="L'interface Document représente n'importe quelle page Web chargée dans le navigateur et sert de point d'entrée dans le contenu de la page Web, qui est l'arborescence DOM. L'arborescence DOM inclut des éléments tels que <body> (corps) et <table> (tableau), parmi beaucoup d'autres. Il fournit des fonctionnalités globales au document, comme le moyen d'obtenir l'URL de la page et de créer de nouveaux éléments dans le document."><code>Document</code></a> vous permet de déterminer si un document est synthétique (comme une image, une vidéo ou un fichier audio) plutôt qu'un document DOM standard. Cela peut être utile, par exemple, si vous voulez présenter une interface utilisateur différente dans cette situation (comme l'ajout d'éléments contextuels différemment selon le cas présent).</li> + <li>Vous pouvez désormais spécifier un filtre en ouvrant <code>about:config</code> ; par exemple, "about:config?filter=sessionstore" n'affichera que les préférences liées au stockage des sessions.</li> +</ul> + +<h2 id="Voir_également">Voir également</h2> + +<div class="multiColumnList"> +<ul> +<li><a href="/fr/docs/Mozilla/Firefox/Versions/7">Firefox 7 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/6">Firefox 6 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/5">Firefox 5 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/4">Firefox 4 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3.6">Firefox 3.6 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3.5">Firefox 3.5 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3">Firefox 3 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/2">Firefox 2 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/1.5">Firefox 1.5 pour les développeurs</a></li></ul> +</div> diff --git a/files/fr/mozilla/firefox/versions/9/index.html b/files/fr/mozilla/firefox/versions/9/index.html new file mode 100644 index 0000000000..3ee33465b7 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/9/index.html @@ -0,0 +1,233 @@ +--- +title: Firefox 9 pour les développeurs +slug: Mozilla/Firefox/Versions/9 +tags: + - Firefox + - Firefox 9 +translation_of: Mozilla/Firefox/Releases/9 +--- +<div><section class="Quick_links" id="Quick_Links"> + <ol> + <li class="toggle"> + <details> + <summary>Notes de versions pour développeurs</summary> + <ol> + <li><a href="/fr/docs/Mozilla/Firefox/Releases">Notes de versions pour développeurs</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Modules complémentaires</summary> + <ol> + <li><a href="/fr/Add-ons/WebExtensions">WebExtensions</a></li> + <li><a href="/fr/Add-ons/Themes">Thèmes</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Fonctionnement interne de Firefox</summary> + <ol> + <li><a href="/fr/docs/Mozilla/">Le projet Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Gecko">Gecko</a></li> + <li><a href="/fr/docs/Mozilla/Firefox/Headless_mode">Mode « headless »</a></li> + <li><a href="/fr/docs/Mozilla/JavaScript_code_modules">Modules de code Javascript</a></li> + <li><a href="/fr/docs/Mozilla/js-ctypes">JS-ctypes</a></li> + <li><a href="/fr/docs/Mozilla/MathML_Project">Le projet MathML</a></li> + <li><a href="/fr/docs/Mozilla/MFBT">MFBT</a></li> + <li><a href="/fr/docs/Mozilla/Projects">Les projets Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Preferences">Le système de préférences</a></li> + <li><a href="/fr/docs/Mozilla/WebIDL_bindings">Connexions WebIDL</a></li> + <li><a href="/fr/docs/Mozilla/Tech/XPCOM">XPCOM</a></li> + <li><a href="/fr/docs/Mozilla/Tech/XUL">XUL</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Développer et contribuer</summary> + <ol> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions">Instructions de compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions/Configuring_Build_Options">Configuration des options de compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Build_Instructions/How_Mozilla_s_build_system_works">Fonctionnement de la compilation</a></li> + <li><a href="/fr/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Code source de Mozilla</a></li> + <li><a href="/fr/docs/Mozilla/Localization">Localisation</a></li> + <li><a href="/fr/docs/Mozilla/Mercurial">Mercurial</a></li> + <li><a href="/fr/docs/Mozilla/QA">Assurance qualité</a></li> + <li><a href="/fr/docs/Mozilla/Using_Mozilla_code_in_other_projects">Utilisation de code Mozilla dans d'autres projets</a></li> + </ol> + </details> + </li> + </ol> +</section></div> + +<p>Firefox 9, basé sur Gecko 9.0, est sorti le 20 décembre 2011 sur Windows. La version 9.0.1, qui corrige un problème de plantage découvert au dernier moment, est sortie le 21 décembre 2011, sur Mac et Linux.</p> + +<h2 id="Changements_pour_les_développeurs_Web">Changements pour les développeurs Web</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>L'attribut <code>value</code> de <a href="/fr/docs/Web/HTML/Element/li" title="L'élément HTML <li> est utilisé pour représenter un élément dans une liste. Il doit être contenu dans un élément parent : une liste ordonnée (<ol>), une liste non ordonnée (<ul>) ou un menu (<menu>). Dans les menus et les listes non ordonnées, les éléments de liste sont habituellement affichés en utilisant des puces. Dans les listes ordonnées, ils sont habituellement affichés avec compteur croissant à gauche, tel qu'un nombre ou une lettre."><code><li></code></a> peut désormais être négatif comme c'est indiqué dans HTML5. Auparavant les valeurs négatives été converties à 0.</li> + <li>Vous pouvez désormais <a href="https://developer.mozilla.org/en-US/docs/Using_HTML5_audio_and_video#Specifying_playback_range" title="Using HTML5 audio and video#Specifying playback range">specifier le début et la fin du temps d'un média</a> dans l'URI en utilisant les éléments <a href="/fr/docs/Web/HTML/Element/audio" title="L'élément HTML <audio> est utilisé afin d'intégrer un contenu sonore dans un document. Il peut contenir une ou plusieurs sources audio représentées avec l'attribut src ou l'élément <source>. S'il y a plusieurs sources, l'agent utilisateur choisira celle qui convient le mieux."><code><audio></code></a> et <a href="/fr/docs/Web/HTML/Element/video" title="L'élément HTML <video> intègre un contenu vidéo dans un document."><code><video></code></a>.</li> + <li>Les éléments <a href="/fr/docs/Web/HTML/Element/input" title="L'élément HTML <input> est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément <input> dépend fortement de la valeur indiquée dans son attribut type."><code><input></code></a> et <a href="/fr/docs/Web/HTML/Element/textarea" title="L'élément HTML <textarea> représente un contrôle qui permet d'éditer du texte sur plusieurs lignes."><code><textarea></code></a> <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTML/Controlling_spell_checking_in_HTML_forms#Controlling_the_spellchecker_language" title="Controlling spell checking in HTML forms#Controlling the spellchecker language">respectent désormais la valeur de l'attribut <code>lang</code></a> lors de l'appel du correcteur orthographique.</li> + <li>Firefox sur Android permet désormais la prise de photo avec le téléphone sans devoir quitter le navigateur lorsque l'élément <a href="/fr/docs/Web/HTML/Element/input" title="L'élément HTML <input> est utilisé pour créer un contrôle interactif dans un formulaire web qui permet à l'utilisateur de saisir des données. Les saisies possibles et le comportement de l'élément <input> dépend fortement de la valeur indiquée dans son attribut type."><code><input></code></a> est utilisé avec <code>type="file"</code> et <code>accept="image/*"</code>.</li> + <li>Les images ICO de style PNG de Windows Vista sont à présent supportée.</li> + <li>Les images dessinées qui utilisent l'attribut <a class="internal" href="https://developer.mozilla.org/en/HTML/CORS_settings_attributes" title="CORS settings attributes"><code>crossorigin</code></a> pour demander l'accès à CORS <a class="internal" href="https://developer.mozilla.org/en/CORS_Enabled_Image#What_is_a_.22tainted.22_canvas.3F" title="CORS Enabled Image#What is a tainted canvas ?">n'altère plus le canvas</a> quand CORS est accordé.</li> + <li>La valeur de l'attribut <code><a href="/fr/docs/Web/HTML/Element/td#attr-rowspan">rowspan</a></code> peut désormais aller jusqu'à 65 534, contre 8190 avant.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>La propriété <a href="/fr/docs/Web/CSS/font-stretch" title="La propriété font-stretch permet de choisir entre la forme normale, condensée ou étendue d'une police."><code>font-stretch</code></a> est à présent supportée.</li> + <li>La propriété <a href="/fr/docs/Web/CSS/columns" title="La propriété columns est une propriété raccourcie permettant de définir les deux propriétés column-width (qui définit la largeur des colonnes) et column-count (qui définit le nombre de colonnes) en même temps."><code>columns</code></a> est à présent supportée, avec le préfixe <code>-moz</code>. C'est un raccourci des propriétés suivantes : <a href="/fr/docs/Web/CSS/column-width" title="La propriété column-width définit une largeur de colonne idéale lorsqu'on utilise une disposition en colonnes. Aussi, on aura le plus de colonnes possible et pour lesquelles aucune n'est moins large que column-width. La colonne réelle peut être plus petite que cette taille si son conteneur est moins large que cette valeur."><code>column-width</code></a> et <a href="/fr/docs/Web/CSS/column-count" title="La propriété column-count décrit le nombre de colonnes d'un élément lorsqu'on utilise une disposition en colonnes."><code>column-count</code></a>.</li> + <li>Quand une feuille de style incluse à l'aide de l'élément <a href="/fr/docs/Web/HTML/Element/link" title="L'élément HTML <link> définit la relation entre le document courant et une ressource externe. Cet élément peut être utilisé pour définir un lien vers une feuille de style ou un cadre de navigation (accéder à la même page dans une langue différente par exemple)."><code><link></code></a> a été entièrement chargée et analysée (mais pas encore appliquée au document), l'<a class="internal" href="https://developer.mozilla.org/en-US/docs/HTML/Element/link#Stylesheet_load_events" title="link#Stylesheet load events"><code>load</code> event</a> est désormais déclenché. En outre, si une erreur survient durant le traitement d'une feuille de style, l'événement <code>error</code> est déclenché.</li> + <li>Vous pouvez à présent spécifier les paramètres de débordement pour les bords, à la fois à gauche et à droite, du contenu en utilisant une nouvelle syntaxe de deux valeurs pour <a href="/fr/docs/Web/CSS/text-overflow" title="La propriété text-overflow définit la façon dont le contenu textuel qui dépasse d'une boîte est signalé pour les utilisateurs. Le texte peut être rogné (clipping), afficher une ellipse ('…', U+2026 Horizontal Ellipsis) ou afficher une chaîne de caractères choisie."><code>text-overflow</code></a>.</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<dl> + <dt><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/Using_full-screen_mode" title="Using full-screen mode">Utilisation du mode plein écran</a></dt> + <dd>La nouvelle API pour le plein écran offre un moyen de présenter le contenu en utilisant la totalité de l'écran, sans l'interface du navigateur. C'est très bien pour les vidéos et les jeux. Cette API est encore expérimentale et préfixée.</dd> +</dl> + +<ul> + <li>La méthode <a href="/fr/docs/Web/API/Node/contains" title="Cette fonction vérifie si un élément est dans le corps de la page. Comme contains est inclusif, déterminer si le corps est contenu en lui-même n'est pas le but de isInPage, donc ce cas renvoie false."><code>Node.contains()</code></a> est désormais implémentée, elle vous permet de déterminer si un nœud donné est un descendant d'un autre noeud.</li> + <li>L'attribut <a href="/fr/docs/Web/API/Node/parentElement" title="parentElement référence l'élément parent d'un nœud (node). C'est toujours un objet Element du DOM ou null."><code>Node.parentElement</code></a> a été implémenté, cela renvoie l'<a href="/fr/docs/Web/API/Element" title="Element est la classe de base la plus générale à partir de laquelle tous les objets d'un Document héritent. Il n'a que des méthodes et des propriétés communes à tous les types d'éléments. Les classes plus spécifiques héritent d'Element. Par exemple, l'interface HTMLElement est l'interface de base pour les éléments HTML, tandis que l'interface SVGElement est la base de tous les éléments SVG. La plupart des fonctionnalités sont spécifiées plus bas dans la hiérarchie des classes."><code>Element</code></a> parent d'un noeud DOM, ou <code>null</code> si le parent n'est pas un élément.</li> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/CompositionEvent" title="CompositionEvent">Les évènements de composition</a> du DOM Level 3 sont à présent supportés.</li> + <li>L'attribut <a href="/fr/docs/Web/API/Document/scripts" title="Retourne une liste des scripts (éléments <script>) présents dans le document. L'objet retourné est une liste du type HTMLCollection."><code>Document.scripts</code></a> a été implémenté, il renvoie <a href="/fr/docs/Web/API/HTMLCollection" title="L'interface HTMLCollection est constituée d'une collection générique (à la manière d'un tableau similaire à arguments) d'éléments (dans l'ordre du document) et offre des méthodes et des propriétés pour sélectionner ces éléments dans la liste."><code>HTMLCollection</code></a> de tous les éléments <a href="/fr/docs/Web/HTML/Element/script" title="L'élément HTML <script> est utilisé pour intégrer ou faire référence à un script exécutable. Cela fait généralement référence à du code JavaScript mais ce peut également être un autre type de script (par exemple WebGL)."><code><script></code></a> du document.</li> + <li>la méthode <a href="/fr/docs/Web/API/Document/queryCommandSupported" title="La méthode Document.queryCommandSupported() indique si la commande d'éditeur spécifiée est prise en charge par le navigateur."><code>Document.queryCommandSupported()</code></a> a été implémentée.</li> + <li>L'ensemble des événements qui peuvent être écoutés sur les éléments <a href="/fr/docs/Web/HTML/Element/body" title="L'élément <body> représente le contenu principal du document HTML. Il ne peut y avoir qu'un élément <body> par document."><code><body></code></a> a été révisé pour correspondre à la dernière version de la spécification HTML5. La liste des événements dans la <a class="internal" href="https://developer.mozilla.org/en/DOM/DOM_event_reference" title="DOM event reference">référence d'événements DOM</a> reflète ceux qui peuvent être écoutés sur les <a href="/fr/docs/Web/HTML/Element/body" title="L'élément <body> représente le contenu principal du document HTML. Il ne peut y avoir qu'un élément <body> par document."><code><body></code></a>.</li> + <li>L'évènement <code>readystatechange</code> est désormais uniquement tiré sur le document, comme prévu.</li> + <li>Les gestionnaires d'événements sont désormais implémentés comme des interfaces IDL standard. Dans la plupart des cas, cela n'affectera pas le contenu, mais <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/DOM_event_handlers#Event_handler_changes_in_Firefox_9" title="DOM event handlers#Event handler changes in Firefox 9">il y a des exceptions</a>.</li> + <li>Un nouveau type de réponse, "<code>moz-json</code>", a été ajouté à <code>XMLHttpRequest</code>, laissant <code>XMLHttpRequest</code> analyser automatiquement les chaînes <a class="internal" href="https://developer.mozilla.org/en-US/docs/JSON" title="JSON">JSON</a>, quand vous demandez ce type, une chaîne JSON est analysé, afin que la valeur de la propriété <code>response</code> est la résultante de l'objet JavaScript.</li> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Monitoring_progress" title="Using XMLHttpRequest#Monitoring progress">Les évènements "progress" de <code>XMLHttpRequest</code></a> sont à présent correctement envoyé pour chaque bloc de données reçu, dans le passé il était possible pour que le dernier bloc de données reçu ne déclenche pas un évènement "progress". Maintenant, vous pouvez suivre uniquement la progression des évènements "progress", au lieu d'avoir également à surveiller les évènements "load" pour détecter la réception du dernier bloc de données.</li> + <li>Dans le passé, l'appel de <a class="internal" href="https://developer.mozilla.org/fr/docs/DOM/element.addEventListener" title="element.addEventListener"><code>addEventListener()</code></a> avec un écouteur <code>null</code> renvoyait une exception. maintenant il ne retourne plus d'erreur et est sans effet.</li> + <li>La nouvelle propriété <a href="/fr/docs/Web/API/Navigator/doNotTrack" title='Renvoi le paramètre utilisateur de do-not-track. Cette valeur est "1" si l´utilisateur a demandé de ne pas être suivi par les sites web, le contenu ou la publicité.'><code>navigator.doNotTrack</code></a> permet à votre contenu de déterminer facilement si l'utilisateur a activé la préférence do-no-track, si la valeur est "oui", vous ne devez pas suivre l'utilisateur.</li> + <li>Les objets <a href="/fr/docs/Web/API/Range" title="L'objet Range (littéralement : "étendue" ou "portée", ici : "segment") représente un fragment de document qui peut contenir des nœuds et des parties de nœuds texte dans un document donné."><code>Range</code></a> et <a href="/fr/docs/Web/API/Selection" title="La classe de l'objet retourné par window.getSelection(), document.getSelection() et d'autres méthodes."><code>Selection</code></a> se comportent désormais selon leurs spécifications lorsque <a href="/fr/docs/Web/API/Text/splitText" title="La méthode Text.splitText() sépare le nœud Text en deux nœuds au niveau de l’indice spécifié, et conserve les deux nœuds dans l’arbre en tant que voisins."><code>splitText()</code></a> et <a href="/fr/docs/Web/API/Node/normalize" title="Cette documentation n'a pas encore été rédigée, vous pouvez aider en contribuant !"><code>normalize()</code></a> sont appelés.</li> + <li>La valeur de <a href="/fr/docs/Web/API/Node/ownerDocument" title="La propriété en lecture seule Node.ownerDocument renvoie l'objet document de niveau supérieur pour ce nœud."><code>Node.ownerDocument</code></a> pour les noeuds de doctype est désormais le document sur lequel <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/DOMImplementation.createDocumentType" title="DOMImplementation.createDocumentType"><code>createDocumentType()</code></a> a été appelé pour créer le noeud, au lieu de <code>null</code>.</li> + <li><code>window.navigator.taintEnabled</code> a été retiré, il n'est plus supporté depuis plusieurs années.</li> +</ul> + +<h3 id="Workers">Workers</h3> + +<ul> + <li>Les workers implémentés dans les URLs blob étaient cassés sous Firefox 8, et sont de nouveaux disponibles à partir de Firefox 9.</li> +</ul> + +<h3 id="WebGL">WebGL</h3> + +<ul> + <li>Dans le cadre de <a class="internal" href="https://developer.mozilla.org/en-US/docs/WebGL" title="WebGL">WebGL</a> les attributs <code>drawingBufferWidth</code> et <code>drawingBufferHeight</code> sont à présent supportés.</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>La valeur non-standard <code>restyle</code> pour les attributs <code>actiontype</code> des éléments <code><a href="/fr/docs/Web/MathML/Element/maction" title="<maction>"><maction></a></code> a été retirée.</li> + <li>Alors qu'il n'était pas encore supporté, l'utilisation de l'élément <code><a href="/fr/docs/Web/MathML/Element/mlabeledtr" title="<mlabeledtr>"><mlabeledtr></a></code> ne casse plus complètement le rendu. Voir le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=689641" title="Add support for mlabeledtr">bug 689641</a> pour l'avancement du support de cet élément.</li> +</ul> + +<h3 id="Réseau">Réseau</h3> + +<ul> + <li>Vous pouvez désormais envoyer le contenu de <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_typed_arrays" title="JavaScript typed arrays">tableaux JavaScript typés</a> (c'est, le contenu d'un objet <a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_typed_arrays/ArrayBuffer" title="ArrayBuffer"><code>ArrayBuffer</code></a>) <a class="internal" href="https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Sending_typed_arrays_as_binary_data" title="Using XMLHttpRequest#Sending typed arrays as binary data">en utilisant XMLHttpRequest</a>.</li> + <li>Les connexions WebSocket permettent désormais des non-caractères autres que UTF-8 des trames de données devant être reçues, au lieu d'échouer.</li> + <li>L'en-tête HTTP <code>Accept</code> pour les réquêtes XSLT a été changée pour "*/*" pour simplifier. Puisque l'extraction d'XSLT est toujours retombée à "* / *", il était logique de faire la simplification.</li> + <li>Les tentatives faites par un serveur pour utiliser les codes de réponses <code>301 Moved Permanently</code> ou <code>307 Temporary Redirect</code> pour rediriger l'utilisateur vers une URI <code>javascript:</code> donne désormais <a class="internal" href="https://developer.mozilla.org/en-US/docs/HTTP#More_on_redirection_responses" title="HTTP#More on redirection responses">lieu à l'erreur "connexion incorrecte"</a> au lieu de vraiment rediriger. Cela évite certaines attaques de type cross-site scripting.</li> + <li>Le contenu servi par <a href="/fr/docs/Web/HTTP/Headers/Content-Disposition" title="Dans une réponse HTTP régulière, l'en-tête de réponse Content-Disposition est un en-tête indiquant si le contenu devrait être affiché en ligne dans le navigateur, c'est-à-dire en tant que page Web ou dans une page Web, ou en pièce jointe est téléchargé et enregistré localement."><code>Content-Disposition</code></a> vide avait déjà été traité comme si <a href="/fr/docs/Web/HTTP/Headers/Content-Disposition" title="Dans une réponse HTTP régulière, l'en-tête de réponse Content-Disposition est un en-tête indiquant si le contenu devrait être affiché en ligne dans le navigateur, c'est-à-dire en tant que page Web ou dans une page Web, ou en pièce jointe est téléchargé et enregistré localement."><code>Content-Disposition</code></a> était attachment", ce qui ne fonctionnait pas toujours comme prévu. C'est désormais traité comme si <a href="/fr/docs/Web/HTTP/Headers/Content-Disposition" title="Dans une réponse HTTP régulière, l'en-tête de réponse Content-Disposition est un en-tête indiquant si le contenu devrait être affiché en ligne dans le navigateur, c'est-à-dire en tant que page Web ou dans une page Web, ou en pièce jointe est téléchargé et enregistré localement."><code>Content-Disposition</code></a> était "inline".</li> + <li>La taille maximale par défaut d'un élément dans le cache disque a été augmentée à 50 Mo, auparavant, seuls les éléments jusqu'à 5 Mo étaient mis en cache.</li> +</ul> + +<h3 id="Outils_de_développement">Outils de développement</h3> + +<ul> + <li>La console Web supporte désormais <a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console#String_substitutions" title="Using the Web Console#String substitutions">les chaînes de substitutions</a> basiques dans ses méthodes d'exploitation.</li> + <li>Vous pouvez désormais <a class="internal" href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Using_groups_in_the_console" title="Using the Web Console#Using groups in the console">créer des blocs imbriqués pour la sortie</a> dans la console web, pour faciliter la lecture.</li> +</ul> + +<h2 id="Changements_pour_les_développeurs_de_Mozilla_et_de_modules_complémentaires">Changements pour les développeurs de Mozilla et de modules complémentaires</h2> + +<p>Voir <a class="internal" href="https://developer.mozilla.org/en-US/docs/Firefox/Updating_add-ons_for_Firefox_9" title="Updating add-ons for Firefox 9">Updating add-ons for Firefox 9</a> pour un aperçu des modifications que vous devriez apporter pour rendre vos extensions compatibles avec Firefox 9.</p> + +<h3 id="XUL">XUL</h3> + +<ul> + <li>L'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/tab" title="tab">tab</a></code> dispose à présent d'un attribut <code id="a-pending"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/pending">pending</a></code>, dont la valeur est <code>true</code>, lorsque l'onglet est en train d'être rétabli par le service de sauvegarde de session. Il peut être utilisé pour le style de l'onglet dans les thèmes. L'attribut n'est pas présent sur les onglets qui ne sont pas en attente.</li> + <li>L'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/tab" title="tab">tab</a></code> dispose à présent d'un attribut <code id="a-unread"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Attributs/unread">unread</a></code>, dont la valeur est <code>true</code>, lorsque l'onglet a changé depuis la dernière fois qu'il était actif ou si il n'a pas été sélectionné depuis que la session en cours a commencé. L'attribut n'est pas présent sur les onglets qui ne sont pas lus.</li> + <li>Vous pouvez désormais utiliser <code><a href="/fr/docs/Mozilla/Tech/XUL/panel" title="panel">panel</a></code> comme une image glissée pour les opérations DOM de glisser-déposer. Cela vous permet d'utiliser l'API standard drag & drop pour <a class="internal" href="https://developer.mozilla.org/en-US/docs/DragDrop/Drag_Operations#Using_XUL_panels_as_drag_images" title="Drag Operations#Using XUL panels as drag images">glisser et déposer du contenu XUL</a>.</li> + <li>La méthode <span id="m-appendNotification"><code><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XUL/Méthodes/appendNotification">appendNotification</a></code></span> de l'élément <code><a href="/fr/docs/Mozilla/Tech/XUL/notificationbox" title="notificationbox">notificationbox</a></code> vous permet désormais de spécifier un rappel qui est appelé pour des événements intéressants liés à la zone de notification. Actuellement, le seul événement est "removed", qui vous indique la zone qui a été retirée de sa fenêtre.</li> +</ul> + +<h3 id="Changements_dans_le_module_de_code_JavaScript">Changements dans le module de code JavaScript</h3> + +<ul> + <li><a class="internal" href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/FileUtils.jsm" title="FileUtils.jsm"><code>FileUtils.jsm</code></a> dispose désormais du constructeur <code>File</code> qui renvoie l'objet <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code> représentant un fichier spécifié par son chemin d'accès.</li> +</ul> + +<h3 id="Changement_dans_le_service">Changement dans le service</h3> + +<ul> + <li>Le service de préférence du contenu gère désormais <a class="internal" href="https://developer.mozilla.org/en-US/docs/Using_content_preferences#private-browsing" title="Using content preferences#private-browsing">le mode de navigation privée</a> (voir <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=679784" title="FIXED: nsIContentPrefService should handle private browsing mode">bug 679784</a>).</li> +</ul> + +<h3 id="NSPR">NSPR</h3> + +<ul> + <li>NSPR dispose désormais d'un module "append", qui vous permet d'ajouter de nouvelles données à la fin d'un journal existant.</li> +</ul> + +<h3 id="Changements_dans_les_interfaces">Changements dans les interfaces</h3> + +<h4 id="Interface_supprimée">Interface supprimée</h4> + +<ul> + <li><code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIGlobalHistory3" title="">nsIGlobalHistory3</a></code> a été enlevée lors de la réduction de Places et du code DocShell.</li> +</ul> + +<h4 id="Divers_changements_dans_les_interfaces">Divers changements dans les interfaces</h4> + +<ul> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISound" title="">nsISound</a></code> a une nouvelle constante <code>EVENT_EDITOR_MAX_LEN</code>. Elle permet de lire le son du système quand plus de caractères que le maximum autorisé sont entrés dans un champ de texte. Actuellement, ce n'est utilisé que sous Windows.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIScriptError2" title="">nsIScriptError2</a></code> a de nouvelles propriétés, <code>timeStamp</code> et <code>innerWindowID</code> ; en plus, la méthode <code>initWithWindowID()</code> prend désormais un ID de fenêtre intérieure au lieu d'un ID de fenêtre extérieure.</li> + <li>L'attribut <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIBidiKeyboard#haveBidiKeyboards">nsIBidiKeyboard.haveBidiKeyboards</a></code> a été ajouté, il vous permet de vérifier que le système a au moins un clavier installé dans chaque sens : de gauche à droite ou de droite à gauche.</li> + <li>Le nouvel attribut <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIEditor#isSelectionEditable">nsIEditor.isSelectionEditable</a></code> vous permet de déterminer si l'ancre de sélection en cours est modifiable. Cela permet de supporter les cas où seules certaines parties du document sont modifiables, en vous permettant de voir si la sélection actuelle est dans une partie modifiable.</li> + <li>Les méthodes <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIBrowserHistory#registerOpenPage()">nsIBrowserHistory.registerOpenPage()</a></code> et <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIBrowserHistory#unregisterOpenPage()">nsIBrowserHistory.unregisterOpenPage()</a></code> ont été supprimées dans le cadre d'une refonte des performances dans le système Places. A la place, vous pouvez utiliser les méthodes correspondantes de <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIPlacesAutoComplete" title="">mozIPlacesAutoComplete</a></code>.</li> + <li>La méthode <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIDOMWindowUtils#wrapDOMFile()">nsIDOMWindowUtils.wrapDOMFile()</a></code> a été ajoutée, elle retourne un objet DOM <a href="/fr/docs/Web/API/File" title="L'objet File fournit un tableau contenant des informations sur l'accès au contenu du ou des fichiers selectionnés, des informations sur le type mime, la taille, le nom des fichiers ainsi que le nombre de fichiers selectionnés. Ils sont généralement extraits d'un objet FileList retourné comme résultat lors de la sélection des fichiers en utilisant un input de type file, ou à partir d'un objet DataTransfer lors d'un glisser-déposer."><code>File</code></a> pour un <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code> donné.</li> + <li>La méthode <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIChromeFrameMessageManager#removeDelayedFrameScript()">nsIChromeFrameMessageManager.removeDelayedFrameScript()</a></code> a été ajouté pour supporter la suppression des scripts de chargement différé. Les extensions amorcées doivent l'utilisée, lors de l'arrêt, pour éliminer tous les scripts chargés à l'aide de <code><a href="https://developer.mozilla.org/fr/docs/XPCOM_Interface_Reference/nsIChromeFrameMessageManager#loadFrameScript()">nsIChromeFrameMessageManager.loadFrameScript()</a></code> avec l'indicateur de charge différé. Cela expose des extensions comme <code>browser.messageManager.removeDelayedFrameScript()</code>.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAppStartup" title="">nsIAppStartup</a></code> a un nouvel attribut <code>interrupted</code>, qui vous permet de savoir si la procédure de démarrage a été interrompue à tout moment par une commande interactive invitée. Cela peut être utile, par exemple, lors de la synchronisation du démarrage pendant l'évaluation des performances, pour être en mesure de déposer le nombre de sessions qui ont été interrompues.</li> + <li>L'interface <code><a href="/fr/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIEditorSpellCheck" title="">nsIEditorSpellCheck</a></code> a été revue pour supporter le choix des sites de dictionnaires pour la vérification orthographique.</li> +</ul> + +<h3 id="Parseur_IDL">Parseur IDL</h3> + +<p>Le parseur IDL ne supporte plus la notion de pointeurs unique qui n'a jamais été entièrement implémentée.</p> + +<h3 id="Changements_dans_le_système_de_compilation">Changements dans le système de compilation</h3> + +<ul> + <li>L'option <code>--enable-application=standalone</code> pour la compilation autonome d'XPConnect a été retirée, elle n'a pas été utilisée depuis 2007.</li> + <li>Le support de la compilation autonome de Necko et Transformiix XSLT a été retiré, vous ne pouvez plus utilisez <code>--enable-application=network</code> ou <code>--enable-application=content/xslt</code>.</li> + <li>Le système de compilation cherche désormais <code>.mozconfig</code> à <code>$topsrcdir/.mozconfig</code> ou <code>$topsrcdir/mozconfig</code>, et pas ailleurs, sauf si vous remplacez le chemin <code>.mozconfig</code> en utilisant la variable d'environnement <code>MOZCONFIG</code>.</li> + <li>L'utilitaire <code>xpidl</code> a été remplacé dans le SDK avec <a class="internal" href="https://developer.mozilla.org/en-US/docs/XPIDL/pyxpidl" title="pyxpidl">pyxpidl</a>.</li> +</ul> + +<h3 id="Autres_changements">Autres changements</h3> + +<ul> + <li>Le correcteur orthographique n'a plus la limite de 130 caractères sur la longueur des mots à vérifier. Cette limite était précédemment en place pour éviter les plantages qui sont survenus dans le correcteur orthographique, mais les bogues sous-jacents ont depuis été corrigés.</li> + <li>Vous pouvez désormais enregistrer des composants pour ajouter des fonctionnalités à l'objet <a href="/fr/docs/Web/API/Window/navigator" title="Renvoie une référence à l'objet + + navigator + , qui peut être interrogé pour obtenir des informations concernant l'application exécutant le script."><code>window.navigator</code></a> à l'aide de la catégorie "JavaScript-navigator-property". Voir <a class="internal" href="https://developer.mozilla.org/En/Developer_Guide/Adding_APIs_to_the_navigator_object" title="en/Developer_Guide/Adding APIs to the navigator object">Ajout des APIs de l'objet navigator</a> pour plus de détails et des exemples.</li> +</ul> + +<h2 id="Voir_également">Voir également</h2> + +<div class="multiColumnList"> +<ul> +<li><a href="/fr/docs/Mozilla/Firefox/Versions/8">Firefox 8 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/7">Firefox 7 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/6">Firefox 6 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/5">Firefox 5 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/4">Firefox 4 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3.6">Firefox 3.6 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3.5">Firefox 3.5 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/3">Firefox 3 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/2">Firefox 2 pour les développeurs</a></li><li><a href="/fr/docs/Mozilla/Firefox/Versions/1.5">Firefox 1.5 pour les développeurs</a></li></ul> +</div> diff --git a/files/fr/mozilla/firefox/versions/index.html b/files/fr/mozilla/firefox/versions/index.html new file mode 100644 index 0000000000..711c761192 --- /dev/null +++ b/files/fr/mozilla/firefox/versions/index.html @@ -0,0 +1,13 @@ +--- +title: Notes de version Firefox pour développeurs +slug: Mozilla/Firefox/Versions +tags: + - Firefox + - TopicStub +translation_of: Mozilla/Firefox/Releases +--- +<div>{{FirefoxSidebar}}</div> + +<p>Cette page regroupe les liens vers les articles « Firefox X pour les développeurs » pour chacune des versions de Firefox. Ces notes vous permettent de connaître quelles fonctions ont été ajoutées et les bogues éliminées à chacune des versions de Firefox.</p> + +<div class="multiColumnList">{{ListSubpages("",1,0,1)}}</div> diff --git a/files/fr/mozilla/firefox_pour_android/index.html b/files/fr/mozilla/firefox_pour_android/index.html new file mode 100644 index 0000000000..089098ad99 --- /dev/null +++ b/files/fr/mozilla/firefox_pour_android/index.html @@ -0,0 +1,65 @@ +--- +title: Firefox pour Android +slug: Mozilla/Firefox_pour_Android +tags: + - Firefox + - Mobile + - NeedsContent + - NeedsUpdate +translation_of: Mozilla/Firefox_for_Android +--- +<p>Pour de plus en plus de gens, les appareils mobiles sont le premier, voire le seul moyen d'accéder au Web. <a class="link-https" href="https://www.mozilla.org/fr/mobile/">Firefox pour Android</a> (nom de code Fennec) est un navigateur ouvert, modifiable, basé sur les standards, comme la version de Firefox pour les ordinateurs.</p> + +<p>Firefox pour Android construit son interface graphique avec des widgets Android natifs plutôt qu'avec XUL : cela améliore largement les performances, particulièrement le temps de démarrage et la consommation mémoire.</p> + +<h2 id="Contribuer_à_Firefox_pour_Android">Contribuer à Firefox pour Android</h2> + +<p>Le point de départ pour obtenir des informations à propos du projet Firefox pour Android est la <a class="link-https" href="https://wiki.mozilla.org/Mobile">page Wiki du projet</a>.</p> + +<p>Vous pouvez nous aider à créer et améliorer Firefox pour Android :</p> + +<ul> + <li>Aidez-nous à <a href="/fr/docs/Mozilla/Firefox_for_Android/Compatibility_Testing">tester la compatibilité</a> des sites populaires.</li> + <li>Contactez l'équipe sur <a class="link-irc" href="irc://irc.mozilla.org/#mobile">IRC.</a></li> + <li>Rejoignez-nous lors de nos <a class="link-https" href="https://wiki.mozilla.org/Mobile/Notes">réunions de développement du mercredi.</a></li> + <li>Tenez-vous au courant des nouvelles du projet sur le <a class="external" href="http://planet.firefox.com/mobile/">Planet Firefox</a> et sur <a class="link-https" href="https://twitter.com/#!/mozmobile" title="https://twitter.com/#!/mozmobile">Twitter.</a></li> + <li><a href="https://wiki.mozilla.org/Mobile/Fennec/Android" title="https://wiki.mozilla.org/Mobile/Fennec/Android">Construisez et hackez sur Firefox pour Android</a> (Fennec)</li> +</ul> + +<h2 id="Développer_pour_le_web_mobile">Développer pour le web mobile</h2> + +<p>Nous avons démarré un guide pour <a href="/fr/docs/Mobile" title="En/Mobile">concevoir des sites web pour les appareils mobiles</a>.</p> + +<p>Avec Firefox pour Android, vous avez accès à des APIs qui exploitent toutes les capacités de l'appareil, réduisant les différences entre les applications Web et natives :</p> + +<ul> + <li><a class="external" href="https://developer.mozilla.org/fr/docs/Web/API/Battery_Status_API" title="https://developer.mozilla.org/fr/docs/Web/API/Battery_Status_API">Batterie</a></li> + <li><a href="/en-us/DOM/Using_the_Camera_API" title="Utilisation de l'API">Appareil photo</a></li> + <li><a href="/en-us/API/WebTelephony/Introduction_to_WebTelephony" title="Introduction à la Téléphonie Web">Téléphonie Web</a></li> + <li><a href="/fr/docs/Mozilla/Firefox_OS/API/Mobile_Messaging_API/Introduction_to_Mobile_Message_API" title="Introduction à l'API WebSMS">SMS API</a></li> + <li><a href="/fr/docs/Web/API/Geolocation/Using_geolocation" title="Utiliser la geolocalisation">Géolocalisation</a></li> + <li><a href="/fr/docs/Web/API/Detecting_device_orientation" title="Détecter l'orientation">Orientation</a></li> +</ul> + +<p>Pour tester votre site web sur Firefox pour Android, vous pouvez l'<a class="external external-icon" href="https://www.mozilla.org/fr/firefox/">installer sur un appareil Android</a> ou <a class="link-https" href="https://wiki.mozilla.org/Mobile/Fennec/Android/Emulator">l'exécuter sur votre ordinateur en utilisant l'émulateur Android</a>.</p> + +<h2 id="Construire_des_add-ons_pour_mobile">Construire des add-ons pour mobile</h2> + +<p><a href="/en/Extensions/Mobile" title="en/Extensions/Firefox_on_Android">Firefox pour Android supporte les add-ons</a> et utilise exactement le même <a href="/fr/docs/Extensions" title="en/Extensions">système d'extension</a> que celui utilisé par toutes les autres applications basées sur Gecko. Nous n'avons pas inventé un nouveau système d'add-on. Cela signifie que construire un add-on pour Firefox pour Android est le <a href="/fr/docs/Construire_une_extension" title="en/Building_an_Extension">même procédé</a> que celui qui serait utilisé sur ordinateur. Les add-ons qui fonctionnent sur Firefox pour ordinateur <strong>ne fonctionnent pas</strong> automatiquement sur Firefox pour Android. Les interfaces graphiques y sont vraiment trop différentes.</p> + +<div class="note">Firefox pour Android a un identifiant unique d'application qui doit être utilisé dans <code>install.rdf</code>. L'identifiant est <code>{aa3c5121-dab2-40e2-81ca-7ea25febc110}</code></div> + +<p>Les deux approches d'add-ons, avec redémarrage ou <a href="/en/Extensions/Bootstrapped_extensions" title="en/Extensions/Bootstrapped_extensions">sans redémarrage</a> requis sont supportés. Il est préférable d'utiliser l'approche sans redémarrage dès que possible, puisque l'expérience utilisateur est largement meilleure que de forcer le redémarrage de l'application lorsqu'on installe ou supprime un add-on.</p> + +<h3 id="Aperçu_rapide">Aperçu rapide</h3> + +<ul> + <li>Il n'y a pas de XUL visible dans l'interface graphique, il est donc inutile d'utiliser des overlays pour ajouter ou modifier des éléments de l'interface.</li> + <li>Le code et les objets internes, comme <code>gBrowser</code>, n'existent pas. Regardez le fichier <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js" title="http://mxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js"><code>browser.js</code></a> de Firefox pour Android pour en savoir plus sur les objets internes. La plupart des fonctionnalités fondamentales existe de la même manière.</li> + <li>Les services comme <code>nsIPromptService</code> et <code>nsIAlertsService</code> sont implémentés pour utiliser l'interface graphique Android native.</li> + <li>Il existe un objet Javascript simple, appelé <a href="/en/Extensions/Mobile/API/NativeWindow" title="en/Extensions/Mobile/NativeWindow"><code>NativeWindow</code></a>, qui permet de manipuler des parties de l'interface graphique Android native.</li> +</ul> + +<h2 id="Obtenir_de_laide_avec_Firefox_pour_Android">Obtenir de l'aide avec Firefox pour Android</h2> + +<p>La documentation et les tutoriels pour utiliser Firefox pour Android et résoudre vos problèmes sont disponibles sur le <a class="external" href="http://support.mozilla.org/mobile" title="http://support.mozilla.org/mobile">site de support de Mozilla</a>.</p> diff --git a/files/fr/mozilla/firefox_pour_android/test_compatibilite/index.html b/files/fr/mozilla/firefox_pour_android/test_compatibilite/index.html new file mode 100644 index 0000000000..680e19bed5 --- /dev/null +++ b/files/fr/mozilla/firefox_pour_android/test_compatibilite/index.html @@ -0,0 +1,105 @@ +--- +title: Tester la compatibilité des sites avec Firefox pour Android +slug: Mozilla/Firefox_pour_Android/Test_Compatibilite +tags: + - AQ + - Compatibilité + - Firefox + - Guide + - Mobile +translation_of: Mozilla/Firefox_for_Android/Compatibility_Testing +--- +<h2 id="Résumé">Résumé</h2> +<p>Notre objectif est d'<strong>ouvrir le Web mobile à tous les navigateurs mobiles à travers la promotion des standards et des bonnes pratiques. </strong></p> +<p>Cependant, de nombreux sites servent à Firefox pour Android un contenu qui ne fonctionne pas bien ou qui est différent de celui pour les autres navigateurs mobiles. Ce contenu peut être :</p> +<ul> + <li>Un site mobile basique</li> + <li>Un site traditionnel pour ordinateur de bureau</li> + <li>Un site WAP (Wireless Application Protocol) conçu pour les téléphones non smart-phones</li> + <li>Un site mobile optimisé pour le tactile qui est cassé dans son apparence ou ses fonctionnalités.</li> +</ul> +<p>Nous désignons cette catégorie de problèmes, comme des <strong>problèmes de compatibilité Web</strong>. Les problèmes de compatibilité Web sont principalement issus d'une ou plusieurs des causes suivantes :</p> +<dl> + <dt> + Détection de l'agent utilisateur (UA-sniffing)</dt> + <dd> + Identifier le navigateur par sa chaîne d'agent utilisateur (user-agent) et envoyer un contenu différent.</dd> + <dt> + Utiliser des propriétés CSS non standards (principalement Webkit)</dt> + <dd> + Utiliser des propriétés CSS non standard que le navigateur ne reconnaît pas, causant des problèmes de mise en page et de style</dd> + <dt> + Utiliser des propriétés DOM non standard (principalement Webkit)</dt> + <dd> + Utiliser des propriétés DOM non standards en JavaScript que le navigateur ne reconnaît pas, causant des problèmes fonctionnels</dd> + <dt> + Limitation navigateur</dt> + <dd> + Utiliser des propriétés standards CSS et DOM que le navigateur ne reconnaît pas actuellement, ou qui posent des problèmes fonctionnels ou de performance.</dd> +</dl> +<p>Pour <strong>Firefox</strong> en particulier, nous avons besoin de votre aide pour identifier les sites qui ne fonctionnent pas bien, en signalant les problèmes spécifiques que vous avez trouvés lors de votre enquête. D'autres fabricants de navigateurs ont leurs propres systèmes d'alertes, dans lesquels vous pouvez signaler tout problème survenant aussi avec leur navigateur.</p> +<p>Ci-dessous sont détaillées les étapes que vous pouvez suivre pour identifier et signaler les sites problématiques.</p> +<h2 id="Préparation">Préparation</h2> +<p>Pour démarrer, préparons notre matériel et nos logiciels pour des tests de compatibilité.</p> +<ol> + <li>Un téléphone Android est un pré-requis pour tester Firefox pour Android. Assurez-vous que votre téléphone est supporté en consultant la <a href="http://www.mozilla.org/en-US/firefox/mobile/platforms/" title="http://www.mozilla.org/en-US/firefox/mobile/platforms/">liste des appareils supportés par Firefox pour Android</a>.</li> + <li>Installer <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox" title="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox pour Android depuis Google Play</a>.</li> + <li>Installer l'add-on <a href="https://addons.mozilla.org/fr/android/addon/phony/" title="https://addons.mozilla.org/fr/android/addon/phony/">Phony</a> pour Firefox pour Android. Cet add-on permet de faire passer Firefox pour Android pour un autre navigateur en remplaçant sa chaîne <a href="/en-US/docs/Browser_detection_using_the_user_agent" title="/en-US/docs/Browser_detection_using_the_user_agent">agent utilisateur</a> par celle d'un autre navigateur pour chaque requête HTTP.</li> + <li><a href="https://bugzilla.mozilla.org/createaccount.cgi" title="https://bugzilla.mozilla.org/createaccount.cgi">Créer un compte sur Bugzilla</a> pour que vous puissiez signaler les problèmes rencontrés.</li> +</ol> +<p><strong>Étapes facultatives :</strong></p> +<ul> + <li>Installer Firefox pour Android pour un autre canal de distribution : <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox_beta" title="https://play.google.com/store/apps/details?id=org.mozilla.firefox_beta">Beta</a>, <a href="http://www.mozilla.org/en-US/mobile/aurora/" title="http://www.mozilla.org/en-US/mobile/aurora/">Aurora</a> et <a href="http://nightly.mozilla.org/" title="http://nightly.mozilla.org/">Nightly</a>.</li> + <li>Vous pouvez essayer de reproduire et débuguer les problèmes que vous avez découverts, dans Firefox pour ordinateur de bureau. Installer Firefox sur Windows, Linux ou Mac OS X et un <a href="https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/?src=search" title="https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/? data-cke-saved-src=search src=search">module comme Phony pour ordinateur</a>.</li> +</ul> +<div class="note"> + <p><strong>Note :</strong> Voir l'article <a href="/en-US/docs/Browser_detection_using_the_user_agent" title="/en-US/docs/Browser_detection_using_the_user_agent">Détection du navigateur par l'agent-utilisateur</a> pour une explication détaillée sur les agents-utilisateurs des navigateurs.</p> +</div> +<h2 id="Tester_la_compatibilité">Tester la compatibilité</h2> +<p>Les étapes suivantes vous guideront selon la méthodologie utilisée par Mozilla AQ (Assurance Qualité) lors des tests de compatibilité :</p> +<ol> + <li>Choisissez un site à tester. + <ul> + <li>Il peut s'agir d'un site que vous avez déjà visité et sur lequel vous avez constaté un problème lors de vos navigations quotidiennes.</li> + <li>Sinon, vous pouvez choisir un des principaux sites listés dans le <a href="http://people.mozilla.org/~lmandel/arewecompatibleyet/" title="http://people.mozilla.org/~lmandel/arewecompatibleyet/">rapport Are We Compatible Yet</a>. Les sites qui n'ont pas été analysés sont affichés en blanc.</li> + </ul> + </li> + <li>Ouvrez le site que vous avez choisi avec Firefox pour Android. Testez son fonctionnement en explorant les différentes parties du site. Par exemple, si le site affiche des articles, des photos, et des vidéos, vous pouvez explorer ces trois parties du site. Cliquez sur les liens, utilisez les formulaires, créez des comptes, identifiez-vous, et posez les questions : + <ol> + <li>Est-ce que ce site est pour ordinateur de bureau ? Si oui, sautez directement au point 3 ou 4 pour déterminer si Safari sur iPhone et le navigateur d'Android reçoivent le même contenu.</li> + <li>Est-ce que le site a de flagrants problèmes de mise en page ? Est-ce que les éléments sont positionnées les uns sur les autres ? Est-ce qu'il manque du contenu ? Est-ce que les menus sont correctement affichés ? Est-ce que les couleurs de fonds de l'en-tête sont correctes ? Est-ce que certaines zones de la page sont affichées correctement ? Est-ce que le site apparaît tout simplement cassé, ou mal ?<span style="display: none;"> </span></li> + </ol> + </li> + <li>Visitez le même site web en utilisant le navigateur de votre appareil Android, et en utilisant la même méthode d'exploration que pour le point 2, et posez les questions : + <ol> + <li>Est ce que ce site est pour ordinateur de bureau ? Est-ce que le contenu change fortement avec ce que vous avez vu sur Firefox pour Android ? Si oui, comment était-ce différent ? S'agit'il d'un site optimisé pour mobile ?</li> + <li>Y-a t'il les mêmes problèmes de mise en page que ceux constatés sur Firefox pour Android ? Si oui, quels problèmes avez-vous vu sous Firefox pour Android qui ne sont plus là avec le navigateur d'Android ?</li> + </ol> + </li> + <li>Faîtes apparaître Firefox pour Android aux yeux du site, comme s'il s'agissait de Safari sur iPhone, en cliquant sur Menu -> Phony et en choisissant iPhone. Après avoir sélectionné iPhone, cliquez sur Menu -> Recharger. Visitez le même site une nouvelle fois et continuez la même méthode d'exploration que pour le point 2, et posez les questions : + <ol> + <li>Est ce que ce site est pour ordinateur de bureau ? Est-ce que le contenu change fortement avec ce que vous avez vu sur Firefox pour Android ? Si oui, s'agit'il d'un site optimisé pour mobile ?</li> + <li>Y a-t'il des problèmes de mise en page ? Si oui, quels sont ces problèmes ?</li> + </ol> + </li> +</ol> +<h2 id="Signaler_les_résultats">Signaler les résultats</h2> +<p>Pour tout site qui apparaît ou fonctionne différement dans Firefox pour Android, le navigateur d'Android, ou Safari sur iPhone, vous devez signaler le problème sur Bugzilla. Pour signaler un problème, soumettez un bug dans le module <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox%20for%20Android&component=Evangelism&rep_platform=ARM&op_sys=Android" title="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox%20for%20Android&component=Evangelism&rep_platform=ARM&op_sys=Android">Firefox for Android Evangelism</a> et fournissez autant d'informations sur le problème que vous pouvez. Voici certaines informations souvent utiles, à renseigner dans votre signalement :</p> +<dl> + <dt> + Résumé</dt> + <dd> + Résumez le problème que vous avez identifié avec le site. Il est utile d'inclure le nom de domaine, par exemple mozilla.org, dans le résumé.</dd> + <dt> + Description</dt> + <dd> + Décrivez le problème du mieux que vous pouvez. Mettez des détails sur la façon dont le contenu diffère entre Firefox pour Android, le navigateur Android et Safari sur iPhone, les endroits précis (titres, liste d'articles, menus) où le site ne s'affiche pas correctement, et quelles parties du site (articles illisibles, vidéos injouables, impossible de cliquer sur les liens) qui ne fonctionnent pas comme elles le devraient.<br> + <br> + Si vous avez quelques connaissances en HTML, CSS et JavaScript, il est très utile d'indiquer les lignes de code qui sont à l'origine du problème.</dd> + <dt> + Pièces jointes</dt> + <dd> + Il est aussi utile d'attacher une capture d'écran montrant le problème dans Firefox pour Android. La méthode pour prendre une capture d'écran sur Android diffère selon la version du système d'exploitation.</dd> +</dl> +<h2 id="Information_de_contact">Information de contact</h2> +<p>Si vous avez des questions sur les tests de compatibilité ou si vous voulez vous impliquer dans l'effort de compatibilité Web mobile de Mozilla, s'il vous plaît, inscrivez-vous sur la liste de diffusion <a href="https://lists.mozilla.org/listinfo/compatibility">compatibility@lists.mozilla.org</a>.</p> diff --git a/files/fr/mozilla/gecko/chrome/css/-moz-window-dragging/index.html b/files/fr/mozilla/gecko/chrome/css/-moz-window-dragging/index.html new file mode 100644 index 0000000000..55ddef129a --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/-moz-window-dragging/index.html @@ -0,0 +1,107 @@ +--- +title: '-moz-window-dragging' +slug: Mozilla/Gecko/Chrome/CSS/-moz-window-dragging +tags: + - CSS + - Non-standard + - Propriété + - Reference + - XUL +translation_of: Mozilla/Gecko/Chrome/CSS/-moz-window-dragging +--- +<div>{{Non-standard_header}}{{CSSRef}}</div> + +<p>La propriété <strong><code>-moz-window-dragging</code></strong> indique si une fenêtre peut être déplacée. Elle ne peut être utilisée qu'à partir de code appelé pour l'interface utilisateur du navigateur et uniquement sur macOS X.</p> + +<p>Cette propriété a été ajoutée à Firefox 35 afin de résoudre certains problèmes liés à la fenêtre de Firefox qui ne pouvait pas être déplacé lorsque celui-ci était occupé ({{bug(944836)}}).</p> + +<p>{{cssinfo}}</p> + +<h2 id="Syntaxe">Syntaxe</h2> + +<p>La propriété <code>-moz-window-dragging</code> s'utilise avec un des mots-clés parmi ceux de la liste suivante.</p> + +<h3 id="Valeurs">Valeurs</h3> + +<dl> + <dt><code>drag</code></dt> + <dd>La fenêtre peut être déplacée.</dd> + <dt><code>no-drag</code></dt> + <dd>La fenêtre ne peut pas être déplacée.</dd> +</dl> + +<h3 id="Syntaxe_formelle">Syntaxe formelle</h3> + +<pre class="syntaxbox">{{csssyntax}}</pre> + +<h2 id="Exemple">Exemple</h2> + +<pre><code id="line-283">toolbarpaletteitem { +</code><code id="line-284"> -moz-window-dragging: no-drag; +</code><code id="line-285">}</code></pre> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette propriété ne fait partie d'aucune spécification.</p> + +<h2 id="Compatibilité_des_navigateurs">Compatibilité des navigateurs</h2> + +<div>{{CompatibilityTable}}</div> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Fonctionnalité</th> + <th>Chrome</th> + <th>Edge</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Support simple</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td> + <p>{{CompatGeckoDesktop(35)}}</p> + </td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Fonctionnalité</th> + <th>Android</th> + <th>Webview Android</th> + <th>Edge</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Phone</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + <th>Chrome pour Android</th> + </tr> + <tr> + <td>Support simple</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatGeckoMobile(35)}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<p> </p> diff --git a/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text(hover)/index.html b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text(hover)/index.html new file mode 100644 index 0000000000..37bcb675cd --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text(hover)/index.html @@ -0,0 +1,19 @@ +--- +title: ':-moz-tree-cell-text(hover)' +slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text(hover)' +tags: + - CSS + - Non-standard + - Pseudo-classe + - Reference +translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text(hover)' +--- +<div>{{Non-standard_header}}{{CSSRef}}{{Fx_minversion_header(1.9)}}</div> + +<p>La pseudo-classe <strong><code>:-moz-tree-cell-text(hover)</code></strong> correspond à un élément si le curseur de la souris est en train de survoler une cellule d'un arbre.</p> + +<p>Ce sélecteur est principalement destiné aux développeurs de thèmes.</p> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.</p> diff --git a/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text/index.html b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text/index.html new file mode 100644 index 0000000000..c20c552b1f --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text/index.html @@ -0,0 +1,32 @@ +--- +title: ':-moz-tree-cell-text' +slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text' +tags: + - CSS + - Non-standard + - Pseudo-classe + - Reference +translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text' +--- +<div>{{Non-standard_header}}{{CSSRef}}</div> + +<p>Cette pseudo-classe est activée avec l'attribut <code>properties</code>.</p> + +<h2 id="Éléments_XUL_associés">Éléments XUL associés</h2> + +<ul> + <li>{{XULElem("treecell")}}</li> +</ul> + +<h2 id="Propriétés_associées">Propriétés associées</h2> + +<ul> + <li>{{cssxref("font")}}</li> + <li>{{cssxref("visibility")}}</li> + <li>{{cssxref("color")}}</li> + <li>{{cssxref("text-decoration")}}</li> +</ul> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.</p> diff --git a/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell/index.html b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell/index.html new file mode 100644 index 0000000000..5397076180 --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell/index.html @@ -0,0 +1,40 @@ +--- +title: ':-moz-tree-cell' +slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell' +tags: + - CSS + - Non-standard + - Pseudo-classe + - Reference +translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell' +--- +<div>{{Non-standard_header}}{{CSSRef}}</div> + +<p>Cette pseudo-classe est activée avec l'attribut <code>properties</code>.</p> + +<h2 id="Éléments_XUL_associés">Éléments XUL associés</h2> + +<ul> + <li>{{XULElem("treecell")}}</li> +</ul> + +<h2 id="Propriétés_associées">Propriétés associées</h2> + +<ul> + <li>{{cssxref("background")}}</li> + <li>{{cssxref("border")}}</li> + <li>{{cssxref("margin")}}</li> + <li>{{cssxref("outline")}}</li> + <li>{{cssxref("padding")}}</li> + <li>{{cssxref("visibility")}}</li> +</ul> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="/fr/docs/Tutoriel_XUL/Styler_un_arbre">Mettre en forme un arbre XUL</a></li> +</ul> diff --git a/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-column/index.html b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-column/index.html new file mode 100644 index 0000000000..8e0bcb2932 --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-column/index.html @@ -0,0 +1,31 @@ +--- +title: ':-moz-tree-column' +slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-column' +tags: + - CSS + - Non-standard + - Pseudo-classe + - Reference +translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-column' +--- +<div>{{Non-standard_header}}{{CSSRef}}</div> + +<p>Cette pseudo-classe est activée avec l'attribut <code>properties</code>.</p> + +<h2 id="Éléments_XUL_associés">Éléments XUL associés</h2> + +<ul> + <li>{{XULElem("treecol")}}</li> +</ul> + +<h2 id="Propriétés_associées">Propriétés associées</h2> + +<ul> + <li>{{cssxref("margin")}}</li> + <li>{{cssxref("visibility")}}</li> + <li>{{cssxref("text style")}}</li> +</ul> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.</p> diff --git a/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-drop-feedback/index.html b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-drop-feedback/index.html new file mode 100644 index 0000000000..2b81402253 --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-drop-feedback/index.html @@ -0,0 +1,30 @@ +--- +title: ':-moz-tree-drop-feedback' +slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-drop-feedback' +tags: + - CSS + - Non-standard + - Pseudo-classe + - Reference +translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-drop-feedback' +--- +<div>{{Non-standard_header}}{{CSSRef}}</div> + +<p>Cette pseudo-classe est activée avec l'attribut <code>properties</code>.</p> + +<h2 id="Éléments_XUL_associés">Éléments XUL associés</h2> + +<ul> + <li>{{XULElem("treerow")}}</li> +</ul> + +<h2 id="Propriétés_associées">Propriétés associées</h2> + +<ul> + <li>{{cssxref("margin")}}</li> + <li>{{cssxref("visibility")}}</li> +</ul> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.</p> diff --git a/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-image/index.html b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-image/index.html new file mode 100644 index 0000000000..2305bb1423 --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-image/index.html @@ -0,0 +1,36 @@ +--- +title: ':-moz-tree-image' +slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-image' +tags: + - CSS + - Non-standard + - Pseudo-classe + - Reference +translation_of: 'Mozilla/Gecko/Chrome/CSS/:-moz-tree-image' +--- +<div>{{Non-standard_header}}{{CSSRef}}</div> + +<p>Cette pseudo-classe est activée avec l'attribut <code>properties</code>.</p> + +<h2 id="Éléments_XUL_associés">Éléments XUL associés</h2> + +<ul> + <li>{{XULElem("treeitem")}}</li> + <li>{{XULElem("treecell")}}</li> +</ul> + +<h2 id="Propriétés_associées">Propriétés associées</h2> + +<ul> + <li>{{cssxref("margin")}}</li> + <li>{{cssxref("list-style")}}</li> + <li>{{cssxref("position")}}</li> +</ul> + +<h2 id="Exemples">Exemples</h2> + +<p><em><a class="external" href="http://forums.mozillazine.org/viewtopic.php?t=610762&sid=2aa24bf393171dd0c9bd9343b3d355c3">Bookmark icons in the Places window - Mozillazine Forum</a></em><a class="external" href="http://forums.mozillazine.org/viewtopic.php?t=610762&sid=2aa24bf393171dd0c9bd9343b3d355c3"> (en anglais)</a></p> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.</p> diff --git a/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-indentation/index.html b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-indentation/index.html new file mode 100644 index 0000000000..83d93fe084 --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-indentation/index.html @@ -0,0 +1,29 @@ +--- +title: ':-moz-tree-indentation' +slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-indentation' +tags: + - CSS + - Non-standard + - Pseudo-classe + - Reference +translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-indentation' +--- +<div>{{Non-standard_header}}{{CSSRef}}</div> + +<p>Cette pseudo-classe est activée avec l'attribut <code>properties</code>.</p> + +<h2 id="Éléments_XUL_associés">Éléments XUL associés</h2> + +<ul> + <li>{{XULElem("treeitem")}}</li> +</ul> + +<h2 id="Propriétés_associées">Propriétés associées</h2> + +<ul> + <li>{{cssxref("position")}}</li> +</ul> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.</p> diff --git a/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-line/index.html b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-line/index.html new file mode 100644 index 0000000000..b3306ea046 --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-line/index.html @@ -0,0 +1,30 @@ +--- +title: ':-moz-tree-line' +slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-line' +tags: + - CSS + - Non-standard + - Pseudo-classe + - Reference +translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-line' +--- +<div>{{Non-standard_header}}{{CSSRef}}</div> + +<p>Cette pseudo-classe est activée avec l'attribut <code>properties</code>.</p> + +<h2 id="Éléments_XUL_associés">Éléments XUL associés</h2> + +<ul> + <li>{{XULElem("treeitem")}}</li> +</ul> + +<h2 id="Propriétés_associées">Propriétés associées</h2> + +<ul> + <li>{{cssxref("border")}}</li> + <li>{{cssxref("visibility")}}</li> +</ul> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.</p> diff --git a/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-progressmeter/index.html b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-progressmeter/index.html new file mode 100644 index 0000000000..09f8ce7451 --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-progressmeter/index.html @@ -0,0 +1,30 @@ +--- +title: ':-moz-tree-progressmeter' +slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-progressmeter' +tags: + - CSS + - Non-standard + - Pseudo-classe + - Reference +translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-progressmeter' +--- +<div>{{Non-standard_header}}{{CSSRef}}</div> + +<p>Cette pseudo-classe est activée lorsque l'attribut <code>type</code> est défini sur <code>progressmeter</code>.</p> + +<h2 id="Éléments_XUL_associés">Éléments XUL associés</h2> + +<ul> + <li>{{XULElem("treecell")}}</li> +</ul> + +<h2 id="Propriétés_associées">Propriétés associées</h2> + +<ul> + <li>{{cssxref("margin")}}</li> + <li>{{cssxref("color")}}</li> +</ul> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.</p> diff --git a/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row(hover)/index.html b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row(hover)/index.html new file mode 100644 index 0000000000..bfc3bed3de --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row(hover)/index.html @@ -0,0 +1,19 @@ +--- +title: ':-moz-tree-row(hover)' +slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row(hover)' +tags: + - CSS + - Non-standard + - Pseudo-classe + - Reference +translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row(hover)' +--- +<div>{{Non-standard_header}}{{CSSRef}}{{Fx_minversion_header(3)}}</div> + +<p>La pseudo-classe <strong><code>:-moz-tree-row(hover)</code></strong> correspond à un élément si le curseur de la souris est en train de survoler une ligne d'un arbre.</p> + +<p>Ce sélecteur est principalement destiné aux développeurs de thèmes.</p> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.</p> diff --git a/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row/index.html b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row/index.html new file mode 100644 index 0000000000..6fd4596d0b --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row/index.html @@ -0,0 +1,55 @@ +--- +title: ':-moz-tree-row' +slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row' +tags: + - CSS + - Non-standard + - Pseudo-classe + - Reference +translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row' +--- +<div>{{CSSRef}}{{Non-standard_header}}</div> + +<p>La pseudo-classe <strong><code>-moz-tree-row</code></strong> est utilisée afin de sélectionner des lignes d'un arbre pour leur appliquer des styles</p> + +<h2 id="Éléments_XUL_associés">Éléments XUL associés</h2> + +<ul> + <li>{{XULElem("treerow")}}</li> +</ul> + +<h2 id="Syntaxe">Syntaxe</h2> + +<pre class="syntaxbox">treechildren::-moz-tree-row { <em>propriétés de style </em>} +</pre> + +<h2 id="Propriétés_associées">Propriétés associées</h2> + +<ul> + <li>{{cssxref("background")}}</li> + <li>{{cssxref("border")}}</li> + <li>{{cssxref("margin")}}</li> + <li>{{cssxref("outline")}}</li> + <li>{{cssxref("padding")}}</li> + <li>{{cssxref("display")}}</li> + <li>{{cssxref("-moz-appearance")}}</li> +</ul> + +<h2 id="Exemples">Exemples</h2> + +<h3 id="CSS">CSS</h3> + +<pre class="brush: css">treechildren::-moz-tree-row( toto bar ) +{ + margin: 2%; +} +</pre> + +<h3 id="XUL">XUL</h3> + +<pre class="brush: xml"><treerow properties="toto">…</treerow> +</pre> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.</p> diff --git a/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-separator/index.html b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-separator/index.html new file mode 100644 index 0000000000..2f0f6e1769 --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-separator/index.html @@ -0,0 +1,31 @@ +--- +title: ':-moz-tree-separator' +slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-separator' +tags: + - CSS + - Non-standard + - Pseudo-classe + - Reference +translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-separator' +--- +<div>{{CSSRef}}{{Non-standard_header}}</div> + +<p>Cette pseudo-classe est activée via l'attribut <code>properties</code> .</p> + +<h2 id="Éléments_XUL_associés">Éléments XUL associés</h2> + +<ul> + <li>{{XULElem(" treeseparator ")}}</li> +</ul> + +<h2 id="Propriétés_associées">Propriétés associées</h2> + +<ul> + <li>{{cssxref("border")}}</li> + <li>{{cssxref("display")}}</li> + <li>{{cssxref("-moz-appearance")}}</li> +</ul> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.</p> diff --git a/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-twisty/index.html b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-twisty/index.html new file mode 100644 index 0000000000..b863bca3ff --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-twisty/index.html @@ -0,0 +1,35 @@ +--- +title: ':-moz-tree-twisty' +slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-twisty' +tags: + - CSS + - Non-standard + - Pseudo-classe + - Reference +translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-twisty' +--- +<div>{{CSSRef}}{{Non-standard_header}}</div> + +<p>Cette pseudo-classe est activée via l'attribut <code>properties</code> .</p> + +<h2 id="Éléments_XUL_associés">Éléments XUL associés</h2> + +<ul> + <li>{{XULElem("treecell")}}</li> +</ul> + +<h2 id="Propriétés_associées">Propriétés associées</h2> + +<ul> + <li>{{cssxref("border")}}</li> + <li>{{cssxref("margin")}}</li> + <li>{{cssxref("padding")}}</li> + <li>{{cssxref("display")}}</li> + <li>{{cssxref("list-style")}}</li> + <li>{{cssxref("position")}}</li> + <li>{{cssxref("-moz-appearance")}}</li> +</ul> + +<h2 id="Spécifications">Spécifications</h2> + +<p>Cette pseudo-classe est une pseudo-classe propriétaire liée à Gecko/Mozilla et ne fait partie d'aucune spécification.</p> diff --git a/files/fr/mozilla/gecko/chrome/css/index.html b/files/fr/mozilla/gecko/chrome/css/index.html new file mode 100644 index 0000000000..1edf837046 --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/css/index.html @@ -0,0 +1,25 @@ +--- +title: Chrome-only CSS reference +slug: Mozilla/Gecko/Chrome/CSS +tags: + - Aperçu + - CSS + - Gecko + - Mozilla + - Non-standard + - Reference +translation_of: Mozilla/Gecko/Chrome/CSS +--- +<div>{{CSSRef}}</div> + +<p class="summary">Cette page liste les propriétés CSS uniquement accessible depuis le code du chrome de Gecko.</p> + +<p>{{SubpagesWithSummaries}}</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="/fr/docs/Web/CSS/Mozilla_Extensions">Les extensions CSS de Mozilla</a></li> + <li><a href="/fr/docs/Web/CSS/Reference">La référence CSS</a></li> + <li><a href="/fr/docs/Web/CSS">CSS</a></li> +</ul> diff --git a/files/fr/mozilla/gecko/chrome/index.html b/files/fr/mozilla/gecko/chrome/index.html new file mode 100644 index 0000000000..6f5de4f5ea --- /dev/null +++ b/files/fr/mozilla/gecko/chrome/index.html @@ -0,0 +1,15 @@ +--- +title: Gecko Chrome +slug: Mozilla/Gecko/Chrome +tags: + - Aperçu + - Chrome + - Gecko + - Mozilla +translation_of: Mozilla/Gecko/Chrome +--- +<div>{{FirefoxSidebar}}</div> + +<div>Cette page contient des informations spécifiques au code de Gecko responsable du "chrome" (les éléments de l'interface utilisateur).</div> + +<p>{{SubpagesWithSummaries}}</p> diff --git a/files/fr/mozilla/gecko/faq/index.html b/files/fr/mozilla/gecko/faq/index.html new file mode 100644 index 0000000000..be9fbe5bd8 --- /dev/null +++ b/files/fr/mozilla/gecko/faq/index.html @@ -0,0 +1,201 @@ +--- +title: Gecko FAQ +slug: Mozilla/Gecko/FAQ +translation_of: Gecko/FAQ +--- +<h3 id="What_is_Gecko.3F" name="What_is_Gecko.3F">Qu'est-ce que Gecko?</h3> + +<p>Gecko est un moteur open source de rendu web supportant différents standards d'internet comme le <a href="https://developer.mozilla.org/fr/docs/Web/HTML">HTML</a>, le <a href="https://developer.mozilla.org/fr/docs/Web/CSS">CSS</a>, le <a href="https://developer.mozilla.org/fr/docs/Web/API/R%C3%A9f%C3%A9rence_du_DOM_Gecko">DOM</a>, <a href="https://developer.mozilla.org/fr/docs/Glossaire/XML">XML</a>, <a href="https://developer.mozilla.org/fr/docs/Web/JavaScript">javascript</a> et d'autres standards encore.</p> + +<p>Gecko est utilisé par de nombreux navigateurs internet, avec bien entendu Mozilla Firefox, mais aussi SeaMonkey, Camino. Gecko est en développement constant par les développeurs de Mozilla. Gecko est le nom final du moteur, il s'appelait aussi "Raptor" et "NGLayout"; mais le nom final du moteur a été choisi suite à un litige.</p> + +<p>Pour plus d'informations, visitez <a href="https://fr.wikipedia.org/wiki/Gecko_(moteur_de_rendu)">l'article Gecko (moteur de rendu) sur Wikipedia</a>.</p> + +<h3 id="What_is_a_layout_engine.3F" name="What_is_a_layout_engine.3F">Qu'est-ce qu'un moteur de rendu?</h3> + +<p>Un <a href="https://en.wikipedia.org/wiki/Layout_engine">moteur de rendu </a>va aller traduire le contenu des fichiers (les fichiers pouvant être une page internet en HTML, XML, des images...) et s'occupe de formater les informations contenus dans les fichiers, généralement le HTML, qui décrivent l'emplacement des textes, des images etc... afin de faire affiché l'information comme le voulait le webmaster. Il dessine la page web dans la zone de rendu de la fenêtre du navigateur.</p> + +<p>Ainsi officiellement, un moteur de rendu définie la politique de placement pour un docuement et fait la mise en page. Gecko est un moteur de rendu trés rapide. Il offre la possibilité de parser de nombreux types de docuements (HTML, XML, SVG, etc...). Il est capable de donné un rendu avancé en incluant les compositions et les transformations. Il supporte aussi le javascript et les <a href="/en/Plugins">plugins</a>.</p> + +<p>Gecko est si rapide et puissant qu'il peut être utiliser pour créer des interfaces utilisateurs pour certaines applications ("chrome"). En d'autres termes, Gecko ne fait pas seulement que affiché le contenu d'un document, il peut aussi être utiliser pour dessiner des barres de défilement, des menus à l'écran. Pour plus d'information, reportez-vous à la documentation sur <a href="https://developer.mozilla.org/fr/docs/Tutoriel_XUL">XUL</a>.</p> + +<h3 id="How_is_a_layout_engine_like_Gecko_different_from_a_Web_browser.3F" name="How_is_a_layout_engine_like_Gecko_different_from_a_Web_browser.3F">How is a layout engine like Gecko different from a Web browser?</h3> + +<p>Gecko fournit la base nécessaire pour afficher l'information à l'écran, en incluant un moteur de rendu ainsi qu'un ensemble complémentaire de composants du navigateur. Cependant, Gecko ne supporte pas tous les composants aux côtés d'autres modules d'interface dans une application cohérente (y compris les menus, les barres d'outils, etc...) tel que Firefox.</p> + +<p>La fondation Mozilla assemble les composants nécessaires dans ses logiciels, comme Firefox, Thunderbird, SeaMonkey, Camino, qui sont disponibles au téléchargement sur le site mozilla.org. Netscape a publié sa propre version du navigateur sous la marque Netscape Navigator. D'autres compagnies crée aussi leur propre logiciel et matériel qui utilisent Gecko. Voir <a href="https://developer.mozilla.org/fr/docs/Floril%C3%A8ge_des_applications_XULrunner">la page recensant une liste de logiciel </a>dans lequel Gecko est utilisé via XULRunner.</p> + +<p>Les éditeurs tiers comme les éditeurs de logiciels et fournisseurs de matériels vont choisir les composants qu'ils souhaitent utiliser dans leurs logiciels ou matériels. Certains composants du navigateur ne sont pas fournis dans les fonctionnalités de Gecko, comme les marque page, l'historique de navigation, les faboris.... Cependant, la source de tous ces composants sont disponibles au téléchargement sur le portail mozilla.org.</p> + +<h3 id="Why_was_Gecko_built.3F" name="Why_was_Gecko_built.3F">Why was Gecko built?</h3> + +<p>The original Mozilla browser, first released as Navigator 1.0, was developed rapidly by a small team that was passionate about creating the next killer app, and they succeeded. Now that the web has evolved, a new generation layout engine was needed upon which future products could be built. Gecko enables a pioneering new class of dynamic content that is more interactive and offers greater presentation control to Web developers, using open and recommended Internet standards instead of proprietary APIs. You are encouraged to join this team by getting involved.</p> + +<h3 id="How_is_mozilla.org_using_Gecko.3F" name="How_is_mozilla.org_using_Gecko.3F">How is mozilla.org using Gecko?</h3> + +<p>mozilla.org will assemble the Gecko layout engine and other browser components into the Mozilla browser application.</p> + +<h3 id="How_does_Mozilla_use_Gecko.3F" name="How_does_Mozilla_use_Gecko.3F">How does Mozilla use Gecko?</h3> + +<p>Gecko lies at the heart of Mozilla and Firefox browsers, as well as others, powering all of the individual components. Gecko technologies will also power the display of the mozilla.com portal site, speedily delivering more exciting content and services. Gecko's architecture will serve Mozilla well into the future, enabling faster time to market, more innovation, less costly development, easier distribution and updating, and better cross platform support.</p> + +<h3 id="How_can_other_companies_and_organizations_use_Gecko.3F" name="How_can_other_companies_and_organizations_use_Gecko.3F">How can other companies and organizations use Gecko?</h3> + +<p>Because Gecko is small, lightweight, and open source, other companies and organizations can easily reuse it. Many hardware vendors are creating devices with network access and wish to include web browsing functionality. Likewise, many software developers want to include Web browsing capability in their applications, but don't want to independently develop browser software. These developers can pick and choose the browser components they want from among those that Gecko offers, and package these components alongside their own within their finished products.</p> + +<h3 id="Which_open_standards_is_the_Gecko_development_project_working_to_support.2C_and_to_what_extent_does_it_support_them.3F" name="Which_open_standards_is_the_Gecko_development_project_working_to_support.2C_and_to_what_extent_does_it_support_them.3F">Which open standards is the Gecko development project working to support, and to what extent does it support them?</h3> + +<p>By the end of calendar year 2000, Gecko is expected to support the following recommended open Internet standards fully except for the areas noted below and open bugs documented in <a class="link-https" href="https://bugzilla.mozilla.org/">Bugzilla</a>:</p> + +<ul> + <li>HTML 4.0 - full support except for: + <ul> + <li>elements: BDO, BASEFONT</li> + <li>attributes: shape attribute on the A element, abbr, axis, headers, scope-row, scope-col, scope-rowgroup, scope-colgroup, charoff, datasrc, datafld, dataformat, datapagesize, summary, event, dir, align on table columns, label attribute of OPTION, alternate text of AREA elements, longdesc</li> + <li>various metadata attributes: cite, datetime, lang, hreflang</li> + <li>bidirectional text layout, which is only used in Hebrew and Arabic (IBM has begun work to add bidi support in a future release)</li> + </ul> + </li> + <li>Style Sheets + <ul> + <li>CSS 1 - full support, except for: + <ul> + <li>the application of styles to HTML column elements</li> + <li>the ability to turn off author styles</li> + <li>the names of certain Mozilla extension pseudo-classes lack the moz- prefix</li> + </ul> + </li> + <li>CSS 2 - partial support is expected and has already been built into Gecko, including support for CSS2 positioning, but no commitment has been made to achieve a specific level of support</li> + </ul> + </li> + <li>DOM + <ul> + <li>Level 0</li> + <li>Level 1 Core: full support + <ul> + <li>making EntityReferences available through DOM1; per a provision of the DOM1 spec for XML implementations, Entities will be automatically expanded inline and therefore not available through DOM1; our implementation extrapolates this provision to apply to EntityReferences as well</li> + <li>For more information, see the <a href="/en/DOM" title="en/DOM">DOM in Mozilla</a></li> + </ul> + </li> + <li>Level 1 HTML</li> + <li>DOM 2 - Most of it has already been implemented in Gecko, including support for DOM 2 events, the DOM 2 Style, and the DOM2 Core. DOM 3 support is also planned for a future release.</li> + </ul> + </li> + <li>XML 1.0: full support, except for processing to manipulate default attributes</li> + <li>RDF: full support, except for aboutEach, aboutEachPrefix, and parseType</li> + <li>JavaScript 1.5, including ECMA-262 Edition 3 (ECMAscript) compliance, except for Date.toDateString and Date.toTimeString, which are not implemented</li> + <li>Transfer protocols: HTTP 1.1 (including gzip compression), FTP</li> + <li>SSL</li> + <li>Unicode</li> + <li>OJI (Open Java Interface)</li> + <li>Image formats + <ul> + <li>PNG</li> + <li>GIF</li> + <li>JPEG, PJPEG</li> + </ul> + </li> +</ul> + +<h3 id="Does_.22full_support.22_mean_that_Gecko_has_zero_bugs_today_or_will_have_zero_bugs_at_some_point_in_the_future.3F" name="Does_.22full_support.22_mean_that_Gecko_has_zero_bugs_today_or_will_have_zero_bugs_at_some_point_in_the_future.3F">Does "full support" mean that Gecko has zero bugs today or will have zero bugs at some point in the future?</h3> + +<p>Of course not. As Robert O'Callahan notes in {{ Bug(25707) }}, "Full HTML4/CSS1 compliance can't mean '100% bug free'. If it does, no-one will ever ship a fully compliant browser."</p> + +<p>Because web pages can be arbitrarily long and complex and have arbitrarily deeply nested markup, it will always be possible to construct web pages that do not display in a given browser the way the specifications would recommend. So long as QA testing and test case development continues, there will always be known bugs at any given point in time in the open-source Gecko codebase, and it follows that every commercial product that has ever shipped and ever will ship based on Gecko will have known bugs at the time of its release. (The same principle of course applies to other browser engine development projects and products based upon them as well.)</p> + +<p>Known bugs in the open-source Gecko codebase are documented in <a class="link-https" href="https://bugzilla.mozilla.org/">Bugzilla</a>. Here are some links to lists of reported bugs related to the standards mentioned above; be aware that these raw lists of open in-process bugs will inevitably include some duplicate, out of date, unreproducible, invalid, and incorrectly tagged reports:</p> + +<div class="note">The links themselves are probably outdated too.</div> + +<ul> + <li><a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Layout&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Layout</a> component tracks content layout bugs that may be related to a variety of specifications</li> + <li>HTML 4.0 + <ul> + <li><a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Form+Submission&component=HTML+Element&component=HTML+Form+Controls&component=HTMLFrames&component=HTMLTables&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Elements, Form Controls, Frames, Tables, and Form Submission</a></li> + <li>bug reports marked with the <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=html4&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">html4 keyword</a></li> + <li>"meta bug" for tracking outstanding issues with <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=7954">HTML 4.01 compliance</a></li> + </ul> + </li> + <li>CSS: <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Style+System&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Style System</a> component (see also bug reports marked with the <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Style+System&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=css1&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">css1</a>, <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Style+System&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=css2&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">css2</a>, and <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Style+System&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=css3&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">css3</a> keywords)</li> + <li>DOM: see <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=DOM+Level+0&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">DOM0</a>, <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=DOM+Level+1&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">DOM1</a>, <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=DOM+Level+2&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">DOM2</a> and <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Event+Handling&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Event Handling</a> components</li> + <li><a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=XML&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">XML</a></li> + <li><a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=RDF&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">RDF</a></li> + <li>core JavaScript language interpreter (<a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Javascript+Engine&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">JavaScript engine</a>)</li> + <li>HTTP 1.1 compliance bugs should generally be found on the <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Necko&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Networking, Networking - General, and Networking: Cache</a> components</li> + <li><a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=OJI&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">OJI</a></li> + <li><a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=ImageLib&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Imagelib</a> image library (see also <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=JPEG+Image+Handling&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">JPEG Image Handling</a> and <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=PNG+Image+Handling&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">PNG Image Handling</a>)</li> + <li>SSL-related bugs are filed on the <a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&component=Security%3A+Crypto&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&newqueryname=&order=Reuse+same+sort+as+last+time">Crypto</a> component</li> +</ul> + +<p>For information about the known bugs of a specific commercial product based on Gecko, see that product's release notes.</p> + +<h3 id="How_does_Gecko_format_XML_documents.3F" name="How_does_Gecko_format_XML_documents.3F">How does Gecko format XML documents?</h3> + +<p>Gecko supports the use of CSS and <a href="/en/XSLT" title="en/XSLT">XSLT</a> to format XML documents.</p> + +<p>For XML documents without associated CSS or XSLT, Gecko displays the pretty-printed source of the document.</p> + +<h3 id="How_does_Gecko_help_content_developers.3F" name="How_does_Gecko_help_content_developers.3F">How does Gecko help content developers?</h3> + +<p>Content developers are sick and tired of developing and testing every single web page multiple times in order to support the different, incompatible, proprietary DOMs of browsers from different vendors. They have been demanding that all vendors fully support the open standards listed above so that they can</p> + +<ol> + <li>have a rich, powerful formatting system and object model at their disposal, and</li> + <li>"write once, view anywhere."</li> +</ol> + +<p>Gecko's robust support for these standards makes Gecko the platform of choice for web content and web application developers worldwide.</p> + +<h3 id="Are_Gecko.27s_APIs_based_on_ActiveX.3F_COM.3F_JavaBeans.3F" name="Are_Gecko.27s_APIs_based_on_ActiveX.3F_COM.3F_JavaBeans.3F">Are Gecko's APIs based on ActiveX? COM? JavaBeans?</h3> + +<p>Gecko is reusable on all platforms thanks to <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a>, a subset of COM that works across platforms. COM, developed by Digital and later adopted by Microsoft, is the de facto standard for modular interfaces on Windows platforms.</p> + +<p>Additionally, on the Windows platform, Gecko's XPCOM interfaces are wrapped in an ActiveX control that VB developers can utilize (ActiveX wrappers are not available on other platforms because ActiveX is a Windows-only technology).</p> + +<p>A JavaBean wrapper is not currently under development, but there is nothing in Gecko's architecture that precludes such development in the future. Source code and documentation for these interfaces are available through mozilla.org.</p> + +<p>For future embedding API plans, see {{ interwiki('wikimo', 'Mozilla_2:Embedding_APIs', 'wikimo:Mozilla 2:Embedding APIs') }}.</p> + +<h3 id="Are_Gecko.27s_APIs_compatible_with_Microsoft.27s_Trident_APIs.3F" name="Are_Gecko.27s_APIs_compatible_with_Microsoft.27s_Trident_APIs.3F">Are Gecko's APIs compatible with Microsoft's Trident APIs?</h3> + +<p>Gecko's XPCOM interfaces are different than Microsoft's. The most important differences between the two models involve reflection of the Document Object Model (DOM) in the interfaces.</p> + +<p>Microsoft's Trident interfaces reflect the DOM in a proprietary API, whereas Gecko exposes the DOM according to the W3C's recommended standard. Other incompatibilities exist. Adam Lock created a partial compatibility layer that may enable developers to more easily migrate from Microsoft's engine to the Gecko engine.</p> + +<h3 id="Which_platforms_does_Gecko_run_on.3F" name="Which_platforms_does_Gecko_run_on.3F">Which platforms does Gecko run on?</h3> + +<p>Gecko runs today on Win32 (Windows XP Service Pack 2, Windows Vista, Windows 7, Windows 8, Windows 8.1), Mac OS X 10.5 and later, and Linux. OEMs and contributors from the Net participating in mozilla.org are porting Gecko to other platforms. Such porting efforts are underway for Solaris, HP/UX, AIX, Irix, OS/2, OpenVMS, BeOS, and Amiga, among others.</p> + +<p>Older versions of Gecko supported earlier versions of Win32 and Mac OS X.</p> + +<h3 id="What_are_the_components_of_Gecko.3F" name="What_are_the_components_of_Gecko.3F">What are the components of Gecko?</h3> + +<p>Gecko includes the following components:</p> + +<ul> + <li>Document parser (handles HTML and XML)</li> + <li>Layout engine with content model</li> + <li>Style system (handles CSS, etc.)</li> + <li>JavaScript runtime (<a href="/en/SpiderMonkey" title="en/SpiderMonkey">SpiderMonkey</a>)</li> + <li>Image library</li> + <li>Networking library (<a href="/en/Necko" title="en/Necko">Necko</a>)</li> + <li>Platform-specific graphics rendering and widget sets for Win32, X, and Mac</li> + <li>User preferences library</li> + <li>Mozilla Plug-in API (<a href="/en/Plugins" title="en/Plugins">NPAPI</a>) to support the Navigator plug-in interface</li> + <li>Open Java Interface (OJI), with Sun Java 1.2 JVM</li> + <li><a href="/en/RDF" title="en/RDF">RDF</a> back end</li> + <li>Font library</li> + <li>Security library (<a href="/en/NSS" title="en/NSS">NSS</a>)</li> +</ul> + +<div class="originaldocinfo"> +<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> + +<ul> + <li>Author(s): Angus</li> + <li>Other Contributors: Ekrock, Vidur, Hidday, Drunclear</li> + <li>Copyright Information: Portions of this content are © 1998–2006 by individual mozilla.org contributors; content available under a Creative Commons license</li> +</ul> +</div> + +<p>{{ languages( { "ja": "ja/Gecko_FAQ", "zh-cn": "cn/Gecko_FAQ" } ) }}</p> diff --git a/files/fr/mozilla/gecko/gecko_embedding_basics/index.html b/files/fr/mozilla/gecko/gecko_embedding_basics/index.html new file mode 100644 index 0000000000..2a116f5d88 --- /dev/null +++ b/files/fr/mozilla/gecko/gecko_embedding_basics/index.html @@ -0,0 +1,403 @@ +--- +title: Les bases de Gecko embarqués +slug: Mozilla/Gecko/Gecko_Embedding_Basics +translation_of: Mozilla/Gecko/Gecko_Embedding_Basics +--- +<p>{{ Outdated("It was last updated a very long time ago.") }}</p> + +<div class="almost_half_cell" id="gt-res-content"> +<div dir="ltr" style="zoom: 1;"><span id="result_box" lang="fr"><span class="atn hps">Compte tenu de l'</span><span>importance croissante</span> <span class="hps">du Web</span> <span class="atn hps">comme source d'</span><span>information, de divertissement</span><span>,</span> <span class="alt-edited hps">et la connectivité</span> <span class="alt-edited hps">individuelle</span><span>,</span> <span class="hps">la possibilité d'accéder</span> <span class="hps">et</span> <span class="hps">d'afficher des données</span> <span class="alt-edited hps">enregistrées</span> <span class="hps">au format</span> <span class="hps">HTML</span> <span class="hps">devient de plus en</span> <span class="hps">plus</span> <span class="hps">important pour</span> <span class="hps">une grande variété</span> <span class="hps">d'applications logicielles par</span> <span class="hps">ailleurs très</span> <span class="hps">diverses</span><span>.</span> <span class="hps">Que ce soit</span> pour un simple visualiseur HTML <span class="hps">ou</span> pour<span class="hps"> créer un navigateur</span> <span class="hps">web</span> <span class="hps">à part entière</span><span>,</span> <span class="hps">la capacité</span> <span class="hps">d'analyser et d'afficher des documents</span> <span class="hps">de type HTML</span> <span class="hps">est une fonction</span> <span class="hps">de plus en plus</span> <span class="hps">importante</span> <span class="hps">dans</span> <span class="hps">de nombreuses</span> <span class="hps">situations</span><span>.</span> <span class="hps">Pour le</span> <span class="alt-edited hps">développeur d'applications</span><span>,</span> <span class="hps">le problème</span> <span class="hps">est de savoir comment</span> <span class="hps">mettre en œuvre</span> <span class="hps">cette fonctionnalité</span> <span class="hps">cruciale</span> <span class="hps">d'une manière qui</span> <span class="hps">minimise</span> <span class="hps">encore</span> <span class="hps">le temps de développement</span> qui <span class="hps">va permettre de créer</span> <span class="hps">un produit</span> <span class="hps">agile et robuste</span><span>.</span> <span class="alt-edited hps">Intégrer</span> <span class="alt-edited hps">Gecko</span><span>,</span> <span class="hps">le moteur de rendu</span> <span class="hps">au cœur</span> <span class="hps">des navigateurs</span> <span class="hps">Netscape et Mozilla</span><span>,</span> <span class="hps">est</span> <span class="hps">une solution </span></span>pour ce problème.</div> + +<div dir="ltr" style="zoom: 1;"> </div> +</div> + +<h2 id="Why_Gecko" name="Why_Gecko">Pourquoi Gecko</h2> + +<p>Intégrer Gecko est un choix pertinent. Il est rapide, robuste, et respecte les standards du web. Chez Mozilla et Netscape, il a été largement diffusé et abondamment testé.</p> + +<p><span style="line-height: 1.5;">Il est Open-Source. Contrairement à d'autres choix d'int</span>égration<span style="line-height: 1.5;">, tout le code source de Gecko est librement disponible et personnalisable. Vous pouvez le bricoler </span><span style="line-height: 1.5;">autant que vous le voulez sans limite. Pourtant, selon la licence choisie, il est possible d'utiliser Gecko comme un composant dans un produit commercial et propriétaire.</span></p> + +<p>Comme Gecko est associé avec le projet Mozilla, il y a beaucoup de ressources disponibles pour aider à son intégration. <a href="http://www.mozilla.org/">Le site officiel de Mozilla</a> a un espace dédié aux <a href="http://mozilla.org/projects/embedding/">projets d'intégration.</a> <span id="result_box" lang="fr"><span class="hps">Il y a un</span> <span class="hps">groupe de discussion,</span> <span class="hps">mozilla.dev.embedding</span><span>,</span> <span class="hps">qui met l'accent sur</span> <span class="hps">l'échange d'informations</span> <span class="hps">entre les</span> <span class="hps">intégrateurs</span><span>,</span> <span class="hps">ainsi qu'à un</span> <span class="hps">certain nombre d'autres</span> <span class="hps">groupes de discussion</span> <span class="hps">connexes</span></span>. On peut accéder à un index croisé complet de la<span id="result_box" lang="fr"><a href="http://lxr.mozilla.org/seamonkey"> <span class="hps">base de code</span></a> et il est simple d'ajouter du code, de suivre ses progrès ou d'aider à corriger des bogues via la<span class="hps"> <a href="http://bugzilla.mozilla.org/">base de données</a></span><a href="http://bugzilla.mozilla.org/"> <span class="hps">de bugs</span> <span class="hps">Bugzilla</span><span>.</span></a></span></p> + +<p>De plus, Gecko a été architecturé dès le commencement pour être multi-plateforme. La version de mozilla.org, tourne aussi bien sur Wintel, Mac OS 9.0, OS X et Linux et il existe des portages faits par des tiers sur nombre d'autres plateformes.</p> + +<p>Enfin, la license Gecko is gratuite, même si l'application finale est un produit commercial propriétaire. La plupart du temps, toute modification apportée au code originellement fourni par Mozilla (mais pas le code dans lequel il est intégré) doit revenir à la communauté, ce même code originel doit être rendu disponible aux utilisateurs de l'application (souvent via un lien sur le site web de mozilla.org), et l'application doit indiquer de manière évidente (Par exemple un logo sur la boîte ou sur la page APropos) que le produit intègre Gecko. La description exacte des licenses possibles est visible sur <a class="external" href="http://www.mozilla.org/MPL/">Mozilla & Netscape Public Licenses</a>, qui est la seule source légale des information de license.</p> + +<h2 id="What_You_Need_to_Embed" name="What_You_Need_to_Embed">Ce dont vous avez besoin pour embarquer</h2> + +<p>Une fois que vous avez décidé d'intégrer, il y a trois étapes à suivre. Premierement, vous devez vous procurer le code. Ensuite, vous devez comprendre les quelques technologies spécifiques qui sont utilisées pour manipuler le code de base de Gecko. Enfin, vous devez décider quelles fonctionalités vous pouriez ajouter. Cette section vous guidera dans ces étapes.</p> + +<h3 id="Getting_the_Code" name="Getting_the_Code">Vous procurer le code</h3> + +<p>Actuellement, le meilleur moyen d'obtenir les fichiers dont vous avez besoin pour intégrer Gecko consiste à télécharcher et compiler les source de Mozilla dans leur totalité. C'est en fait un processu assez simple. Les liens vers les instructions completes sont disponibles dans la section Télécharger le Code source de Mozilla. Une seconde méthode, composant par composant, est en cours de développement, mais est encore au niveau béta. Vous pouvez trouver des informations sur ce projet dans la section Compilation. De plus, nous développons un Environnement d'exécution Gecko (Gecko Runtime Environment ou GRE), de maniere à supporter plusieurs outils batis sur des composants Mozilla tout en n'utilisant qu'un seul ensemble de bibliotheque. (Si vous avez l'intention de travailler composant par composant, soyez particulierement attentifs aux probleme de versions et de compatibilité des binaires. Pour vous aidez sur ce point, regardez la section Réutilisation des composants XPCOM.)</p> + +<p>Déjà, vous devz vous procurer quelques outils (en bref, un compilateur, une distribution Perl, et quelaues utilitaires génériques). Ensuite, vous devez les installer sur votre ordinateur. Apres quoi, vous devez télécharger la source. En supposant que vous allez télécharger l'ensemble de l'arborescence, il y a deux manieres de procéder: vous pouvez télécharger en FTP une archive contenant l'ensemble de l'arborescence (c'est la maniere la plus simple, et la plus sure de compiler, mais elle peut contenir une version dépourvue des modifications les plus récentes) ou vous pouvez utiliser CVS pour etre certain que vous téléchargezla version la plus récente. Une fois que vous avez l'arborescence et les outils, et que votre environement est corectement installé, il ne vous reste qu'à exécuter le makefile. Vous pouvew trouver des instructions détaillées pour chacune des plateformes supportées. </p> + +<p>Une fois la source compilée, rendez-vous dans le dossier mozilla/embedding/config. Vous y trouverez des fichiers de démonstration (chacun d'entre eux porte un nom commencant par "basebrowser") intégrables sur chacune des plateformes. Ce sont uniquement des exemples, peut-etre inadaptés à votre besoin particulier, mais ce sont un bon moyen de débuter. Il y a aussi des exemples de projets d'intégration pour chacune des plateforme que vous pouvez utiliser en tant que modele. Voir Intégration : Exemples de Mozilla et projets externes. </p> + +<h3 id="Understanding_the_Coding_Environment" name="Understanding_the_Coding_Environment">Understanding the Coding Environment</h3> + +<p>Mozilla was set up from the beginning to support design and development across multiple platforms and programming languages. To this end, a number of in-house programming technologies were developed, all based around an ideal of object encapsulation. Embedding Gecko necessarily implies acquiring a working knowledge of these technologies, including XPCOM, XPIDL, XPConnect, special string classes, and, optionally, XUL. The following provides a brief introduction to them. More information can be found at the mozilla.org site.</p> + +<h4 id="XPCOM" name="XPCOM">XPCOM</h4> + +<p>The most important of the Mozilla technologies is <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a>, the Cross-Platform Component Object Model. XPCOM provides a framework which manages the creation, ownership, and deletion of objects and other data throughout Mozilla. If you have used MSCOM, you will recognize certain basic similarities. But there are also significant differences -- XPCOM is cross-platform and designed to run largely in a single thread -- and the two are not at this time compatible.</p> + +<h5 id="The_interface" name="The_interface">The interface</h5> + +<p>At the core of XPCOM is the concept of the interface. An interface is simply a description of a set of methods, attributes, and related constants all associated with a particular functionality: it is completely distinct from the class that implements those things. The interface serves as a kind of contract: any object that supports a particular interface guarantees that it will perform the services described in it. To keep the interface as language neutral as possible, it is written in a special language, the Interface Definition Language, or IDL. Interface files are often referred to as .idl files. In addition to specifying the functionality of the interface, these files also carry the interface's IID, its globally unique identifying number.</p> + +<p>Much of the communication within Gecko takes place in terms of these abstract structures (by convention, their names follow the form <code>nsISomething</code>).</p> + +<pre>//this +void ProcessSample(nsISample* aSample) { + aSample->Poke("Hello"); +//not this +void ProcessSample(nsSampleImpl* aSample) { + aSample->Poke("hello"); +</pre> + +<h5 id=".40status_FROZEN" name=".40status_FROZEN">@status FROZEN</h5> + +<p>XPCOM's level of abstraction produces great flexibility in the system. Implementations are free to change as needed. But, to work, the interfaces themselves must remain fixed. Throughout Mozilla's initial design and development period, interfaces have been somewhat fluid, but as the project has matured, more and more of the interfaces have been marked FROZEN. Any interface so marked is guaranteed not to change in the future.</p> + +<p>Most of the main interfaces key to the embedding effort are now frozen, but it's always a good idea to check before using any interface. An interface's status is listed in the .idl file's comments. A frozen interface is marked <code>@status FROZEN</code>. You can <a class="external" href="http://lxr.mozilla.org/seamonkey/search?string=%40status+FROZEN">search for frozen interfaces</a> by using the Mozilla cross referencing tool. Until it is frozen, an interface may change at any time. For more information on the freezing process, see the <a class="external" href="http://mozilla.org/projects/embedding/">embedding project page</a>.</p> + +<p>Once an interface has been frozen, it is added to the <a class="external" href="http://mozilla.org/projects/embedding/embedapiref/embedapi.html">Gecko Embedding API Reference</a>.</p> + +<h5 id="nsISupports" name="nsISupports">nsISupports</h5> + +<p>A single object can support more than one interface. In fact, essentially all objects support at least two interfaces -- a minimum of one that does something specifically useful and one, <code>nsISupports</code>, that serves a more general purpose. In a sense, <code>nsISupports</code> is the progenitor of all XPCOM interfaces. All interfaces inherit from it, most directly so. It serves two main functions: runtime type discovery and object lifetime management. It is functionally identical to IUnknown in MSCOM.</p> + +<p>Since an object can support multiple interfaces, it's possible to have a pointer to one interface and want to know whether that same object also supports a different interface whose functionality you might also need. The first <code>nsISupports</code> method, <code>QueryInterface()</code>, does exactly that: it asks, in effect, "I know that this object is of type A (supports interface A) but is it also of type B (supports interface B)?"</p> + +<p>If it is (or does), <code>QueryInterface()</code> returns to the caller a pointer bound to the newly requested interface.</p> + +<pre>void ProcessSample(nsISample* aSample) { + nsIExample *example; + nsresult rv; + rv = aSample->QueryInterface(NS_GET_IID(nsIExample),(void **)&example); + if (NS_SUCCEEDED(rv)) { + example->DoSomeOperation(); + NS_RELEASE(example); // using a macro to call Release + } +} +</pre> + +<p>Because XPCOM uses an indirect method, the Component Manager, to actually instantiate objects, and because multiple pointers to the same object -- often bound to different interfaces -- can exist, it can quickly become very difficult for callers to keep accurate track of all of the objects to which those pointers point. Objects could be kept around in memory longer than they need to be, causing leaks, or objects could be deleted prematurely, causing dangling pointers. The other two methods in <code>nsISupports</code>, <code>AddRef()</code> and <code>Release()</code>, are designed to deal with this issue. Every time a pointer is given out <code>AddRef()</code> must be called on the object, incrementing an internal counter. Every time a pointer is released, <code>Release()</code> must be called, which decrements that same counter. When the counter reaches zero, there are no pointers to the object remaining and the object can safely delete itself. Control of the object's lifetime stays within the object itself. See below for information on XPCOM's "smart" pointer, <a href="#nsCOMPtr">nsCOMPtr</a>, a utility which helps automate this process.</p> + +<h5 id="Object_creation" name="Object_creation">Object creation</h5> + +<p>The instantiation of objects is also an indirect process in XPCOM. Just as interfaces have a globally unique ID number (the IID), XPCOM classes are assigned their own GUIDs, the CID. In addition, they are also often given a text-based ID, called a contract ID. One or the other of these IDs is passed to a method on a persistent XPCOM component, the Component Manager, which actually creates the object. When a new library of classes (called a module in XPCOM) is first introduced into the system, it must register itself with the Component Manager, which maintains a registry that maps classes (with their IDs) to the libraries in which they reside.</p> + +<p>A limited number of persistent services, supplied by singleton objects, are created and controlled by a companion to the Component Manager, the Service Manager. The Component Manager itself is an example of such a persistent service.</p> + +<h5 id="Summing_up" name="Summing_up">Summing up</h5> + +<p>Functionality in XPCOM is described by abstract interfaces, and most communication among parts of the system takes place in terms of those interfaces. The underlying objects that implement the interfaces, on the other hand, are created indirectly by the Component Manager based on a cross-indexed registry that it maintains.</p> + +<p>One functionality shared by all interfaces is the ability to query the underlying object at runtime to see if also implements other interfaces. In theory an interface is fixed and unchangeable, but at this stage in the Mozilla codebase, only interfaces that have been declared <code>FROZEN</code> are guaranteed not to change significantly. Object lifetime management takes place inside the object itself through an internal counter that keeps track of the number of pointers to the object that have been added or released. The client's only responsibility is to increment and decrement the counter. When the internal counter reaches zero, the object deletes itself.</p> + +<h5 id="nsCOMPtr" name="nsCOMPtr">nsCOMPtr</h5> + +<p>Sometimes, however, even remembering to call <code>AddRef()</code> and <code>Release()</code> at the right times can be difficult. To make this process easier and more reliable, XPCOM has a built-in "smart" pointer, <code>nsCOMPtr</code>. This pointer takes care of calling <code>AddRef()</code> and <code>Release()</code> for you. Using <code>nsCOMPtr</code> whenever possible will make your code cleaner and more efficient. For more information on the smart pointer, see "<a class="external" href="http://www.mozilla.org/projects/xpcom/nsCOMPtr.html">The Complete nsCOMPtr User's Manual</a>".</p> + +<p>Mozilla actually provides a large number of built-in macros (by convention, written in all caps in the code) and utilities like <code>nsCOMPtr</code> that can make the entire process of coding with XPCOM easier. Many of these can be found in the following files: <code>nsCom.h</code>, <code>nsDebug.h</code>, <code>nsError.h</code>, <code>nsIServiceManager.h</code>, and <code>nsISupportsUtils.h</code>. Mozilla also supplies other development tools for tracking memory usage and the like. More information on these can be found at <a class="external" href="http://www.mozilla.org/performance/" rel="freelink">http://www.mozilla.org/performance/</a></p> + +<h5 id="For_more_information" name="For_more_information">For more information</h5> + +<p>More information on XPCOM in general can be found at <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a>. For an overview of creating XPCOM components, see Chapter 8 of O'Reilly's <em><a class="external" href="http://books.mozdev.org/chapters/ch08.html">Creating Applications with Mozilla</a></em>. There is also a new book completely devoted to this topic, <em><a href="/en/Creating_XPCOM_Components" title="en/Creating_XPCOM_Components">Creating XPCOM Components</a></em>. A fuller explanation of some of the underlying logic to COM systems can be found in the early chapters of <em>Essential COM</em> by Don Box. While it focuses on MSCOM in particular, the book does provide an excellent background on some of the core rationales for using such an object model.</p> + +<h4 id="XPIDL" name="XPIDL">XPIDL</h4> + +<p>Interfaces are abstract classes written in XPIDL, the Cross Platform Interface Definition Language. Yet to be useful the functionality promised in those interfaces must be implemented in some regular programming language. Facilitating this is the job of the XPIDL compiler. Once an interface is defined in an .idl file, it can be processed by the XPIDL compiler.</p> + +<p>The compiler can be set to output a number of things, but generally the output is two-fold: a C++ .h file that includes a commented out template for a full C++ implementation of the interface and an XPT file that contains type library information which works with XPConnect to make the interface available to JavaScript. More information on the syntax of <a href="/en/XPIDL" title="en/XPIDL">XPIDL</a> (a simple C-like language) and the use of the <a href="/en/XPIDL/xpidl" title="en/XPIDL/xpidl">compiler</a> is available.</p> + +<h4 id="XPConnect_and_XPT_files" name="XPConnect_and_XPT_files"><a href="/en/XPConnect" title="en/XPConnect">XPConnect</a> and XPT files</h4> + +<p><a href="/en/XPConnect" title="en/XPConnect">XPConnect</a> is an <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> module that allows code written in <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a> to access and manipulate XPCOM components written in C++ and vice versa. By means of XPConnect, components on either side of an XPCOM interface do not, in general, need to know or care about which of these languages the object on the other side is implemented in.</p> + +<p>When an interface is run through the XPIDL compiler, it produces an XPT or type library file. Because XPconnect uses the information in this file to implement transparent communication between C++ objects and JavaScript objects across XPCOM interfaces, it is important to make sure they are generated and included with your code even if you are developing exclusively in C++. Not only is a substantial part of the browser, in fact, implemented in JS, it is possible that in the future someone may wish to use JS-based code to interact with whatever components you create .</p> + +<p>As is from Mozilla, XPConnect currently facilitates interoperability between C++ and JS. Modules to extend it to allow access from other languages (including Python) are under independent development.</p> + +<h4 id="String_classes" name="String_classes">String classes</h4> + +<p>Web browsing typically involves a large amount of string manipulation. Mozilla has developed a hierarchy of C++ classes to facilitate such manipulation and to render it efficient and quick. To make communication among objects simpler and more error free, Mozilla uses interfaces, which are, in essence, abstract classes. The string hierarchy is also headed up by a set of abstract classes, <code>nsAString</code>, <code>nsASingleFragmentString</code>, and <code>nsAFlatString</code>, and for the same reasons. (These refer to double-byte strings. There is a parallel hierarchy topped with <code>nsACString</code>, etc., that refers to single-byte strings.) <code>nsAString</code> guarantees only a string of characters. <code>nsASingleFragmentString</code> guarantees that the characters will be stored in a single buffer. <code>nsAFlatString</code> guarantees that the characters will be stored in a single null-terminated buffer. While there are underlying concrete classes, in general it is best to use the most abstract type possible in a given situation. For example, concantenation can be done virtually, through the use of pointers, resulting in an nsAString that can be used like any other string. This saves the allocating and copying that would otherwise have to be done. For more information, see "<a href="/En/Mozilla_internal_string_guide" title="En/Mozilla_internal_string_guide">XPCOM string guide</a>".</p> + +<h4 id="XUL.2FXBL" name="XUL.2FXBL">XUL/XBL</h4> + +<p>Use of this final Mozilla technology is optional, depending on how you decide to create the user interface for your application. <a href="/en/XUL" title="en/XUL">XUL</a> is Mozilla's highly flexible XML UI Language. It provides a number of largely platform independent widgets from which to construct a UI. Netscape and Mozilla both use XUL for their interfaces, but not all embedders choose to use it. XBL or the eXtensible Binding Language allows you to attach behaviors to XUL's XML elements. More information on XUL can be found at <a class="external" href="http://www.mozilla.org/xpfe/xulref/">XUL Programmer's Reference</a> and on <a href="/en/XBL" title="en/XBL">XBL</a> at <a href="/en/XBL/XBL_1.0_Reference" title="en/XBL/XBL_1.0_Reference">XBL:XBL_1.0_Reference</a>. There is also a wealth of good information on XUL at <a class="external" href="http://www.xulplanet.com/">XULPlanet</a>.</p> + +<h3 id="Choosing_Additional_Functionalities" name="Choosing_Additional_Functionalities">Choosing Additional Functionalities</h3> + +<p>As of this writing (8/19/02), Gecko is a partially modularized rendering engine. Some functionalities beyond basic browsing are always embedded with Gecko, and, as a result of certain architectural decisions, always will be; some are at present always embedded with Gecko, but may, at some point in the future, be separable; and some are now available purely as options. The following table describes the present status of these additional functionalities:</p> + +<table> + <tbody> + <tr> + <th>Functions</th> + <th>Status Now</th> + <th>Status in Future</th> + </tr> + <tr> + <td>FTP support</td> + <td>Optional</td> + <td> </td> + </tr> + <tr> + <td>HTTPS support</td> + <td>Optional</td> + <td> </td> + </tr> + <tr> + <td>International character support</td> + <td>Optional</td> + <td> </td> + </tr> + <tr> + <td>XUL support</td> + <td>Required</td> + <td>Probably optional</td> + </tr> + <tr> + <td>Network support</td> + <td>Required</td> + <td>Maybe optional</td> + </tr> + <tr> + <td>JavaScript support</td> + <td>Required</td> + <td>Maybe optional</td> + </tr> + <tr> + <td>CSS support</td> + <td>Required</td> + <td>Always required</td> + </tr> + <tr> + <td>DOM support</td> + <td>Required</td> + <td>Probably always</td> + </tr> + <tr> + <td>XML support</td> + <td>Required</td> + <td>Probably always</td> + </tr> + </tbody> +</table> + +<p>At this time embedding Mozilla's editor along with the rendering engine Gecko is an uncertain proposion, although the situation continues to improve. For more information on the status of the embeddable editor, see <a class="external" href="http://www.mozilla.org/editor/Editor_Embedding_Guide.html" rel="freelink">http://www.mozilla.org/editor/Editor...ing_Guide.html</a>.</p> + +<h2 id="What_Gecko_Provides" name="What_Gecko_Provides">What Gecko Provides</h2> + +<p>The following is a description of some of the interfaces most commonly used in embedding Gecko. It is by no means an exhaustive list of the available interfaces. The interfaces in this section are on classes provided by Mozilla. There is also a set of interfaces for which Gecko expects the embedder to provide the implementation. A sample of those are covered in the next section.</p> + +<h3 id="Initialization_and_Teardown" name="Initialization_and_Teardown">Initialization and Teardown</h3> + +<p>There are two C++ only functions which serve to initalize and terminate Gecko. The initialization function (<a class="external" href="http://mozilla.org/projects/embedding/embedapiref/embedapi2.html#1099700">NS_InitEmbedding</a>) must be called before attempting to use Gecko. It ensures XPCOM is started, creates the component registry if necessary, and starts global services. The shutdown function (<a class="external" href="http://mozilla.org/projects/embedding/embedapiref/embedapi2.html#1101115">NS_TermEmbedding</a>) terminates the Gecko embedding layer, ensuring that global services are unloaded, files are closed and XPCOM is shut down.</p> + +<h3 id="nsIWebBrowser" name="nsIWebBrowser"><a class="external" href="http://mozilla.org/projects/embedding/embedapiref/embedapi4.html">nsIWebBrowser</a></h3> + +<p>Use of this interface during initialization allows embedders to associate a new <code>nsWebBrowser</code> instance (an object representing the "client-area" of a typical browser window) with the embedder's chrome and to register any listeners. The interface may also be used at runtime to obtain the content DOM window and from that the rest of the DOM.</p> + +<p>The <a class="external" href="http://xulplanet.com/references/xpcomref/ifaces/nsIWebBrowser.html">XULPlanet <code>nsWebBrowser</code> reference</a> also has a lot of useful information on this class.</p> + +<h3 id="nsIWebBrowserSetup" name="nsIWebBrowserSetup"><a class="external" href="http://www.mozilla.org/projects/embedding/embedapiref/embedapi10.html">nsIWebBrowserSetup</a></h3> + +<p>This interface is used to set basic properties (like whether image loading will be allowed) before the browser window is open.</p> + +<h3 id="nsIWebNavigation" name="nsIWebNavigation"><a class="external" href="http://www.xulplanet.com/references/xpcomref/ifaces/nsIWebNavigation.html">nsIWebNavigation</a></h3> + +<p>The <code>nsIWebNavigation</code> interface is used to load URIs into the web browser instance and provide access to session history capabilities - such as back and forward. As of June 6, 2006, this interface is not yet frozen.</p> + +<h3 id="nsIWebBrowserPersist" name="nsIWebBrowserPersist"><a class="external" href="http://www.xulplanet.com/references/xpcomref/ifaces/nsIWebBrowserPersist.html">nsIWebBrowserPersist</a></h3> + +<p>The <code>nsIWebBrowserPersist</code> interface allows a URI to be saved to file. As of June 6, 2006, this interface is not yet frozen.</p> + +<h3 id="nsIBaseWindow" name="nsIBaseWindow"><a class="external" href="http://www.xulplanet.com/references/xpcomref/ifaces/nsIBaseWindow.html">nsIBaseWindow</a></h3> + +<p>The <code>nsIBaseWindow</code> interface describes a generic window and basic operations (size, position, window title retrieval, etc.) that can be performed on it. As of June 6, 2006, this interface is not yet frozen.</p> + +<h3 id="nsISHistory" name="nsISHistory"><a class="external" href="http://mozilla.org/projects/embedding/embedapiref/embedapi58.html">nsISHistory</a></h3> + +<p>The <code>nsISHistory</code> interface provides access to session history information and allows that information to be purged.</p> + +<h3 id="nsIWebBrowserFind" name="nsIWebBrowserFind"><a class="external" href="http://mozilla.org/projects/embedding/embedapiref/embedapi14.html">nsIWebBrowserFind</a></h3> + +<p>The <code>nsIWebBrowserFind</code> interface controls the setup and execution of text searches in the browser window.</p> + +<h2 id="What_You_Provide" name="What_You_Provide">What You Provide</h2> + +<p>The following is a description of some of the more common embedder-provided interfaces used in embedding Gecko. It is by no means an exhaustive list of the available interfaces.</p> + +<h3 id="nsIWebBrowserChrome" name="nsIWebBrowserChrome"><a class="external" href="http://mozilla.org/projects/embedding/embedapiref/embedapi6.html">nsIWebBrowserChrome</a></h3> + +<p>The <code>nsIWebBrowserChrome</code> interface corresponds to the top-level, outermost window containing an embedded Gecko web browser. You associate it with the WebBrowser through the <code>nsIWebBrowser</code> interface. It provides control over window setup and whether or not the window is modal. It must be implemented.</p> + +<h3 id="nsIEmbeddingSiteWindow" name="nsIEmbeddingSiteWindow"><a class="external" href="http://www.mozilla.org/projects/embedding/embedapiref/embedapi12.html">nsIEmbeddingSiteWindow</a></h3> + +<p>The <code>nsIEmbeddingSiteWindow</code> interface provides Gecko with the means to call up to the host to resize the window, hide or show it and set/get its title. It must be implemented.</p> + +<h3 id="nsIWebProgressListener" name="nsIWebProgressListener"><a href="/en/nsIWebProgressListener" title="en/nsIWebProgressListener">nsIWebProgressListener</a></h3> + +<p>The <code>nsIWebProgressListener</code> interface provides information on the progress of loading documents. It is added to the WebBrowser through the <code>nsIWebBrowser</code> interface. It must be implemented. As of this writing (8/19/02), it is not frozen.</p> + +<h3 id="nsISHistoryListener" name="nsISHistoryListener"><a class="external" href="http://mozilla.org/projects/embedding/embedapiref/embedapi59.html">nsISHistoryListener</a></h3> + +<p>The <code>nsISHistoryListener</code> interface is implemented by embedders who wish to receive notifications about activities in session history. A history listener is notified when pages are added, removed and loaded from session history. It is associated with Gecko through the <code>nsIWebBrowser</code> interface. Implementation is optional.</p> + +<h3 id="nsIContextMenuListener" name="nsIContextMenuListener"><a class="external" href="http://mozilla.org/projects/embedding/embedapiref/embedapi5.html">nsIContextMenuListener</a></h3> + +<p>The <code>nsIContextMenuListener</code> interface is implemented by embedders who wish to receive notifications for context menu events, i.e. generated by a user right-mouse clicking on a link. It should be implemented on the web browser chrome object associated with the window for which notifications are required. When a context menu event occurs, the browser will call this interface if present. Implementation is optional.</p> + +<h3 id="nsIPromptService" name="nsIPromptService"><a href="/en/XPCOM_Interface_Reference/nsIPromptService" title="en/nsIPromptService">nsIPromptService</a></h3> + +<p>The <code>nsIPromptServices</code> interface allows the embedder to override Mozilla's standard prompts: alerts, dialog boxes, and check boxes and so forth. The class that implements these embedder specific prompts must be registered with the Component Manager using the same CID and contract ID that the Mozilla standard prompt service normally uses. Implementation is optional. As of this writing (8/19/02), this interface is not frozen.</p> + +<h2 id="Common_Embedding_Tasks" name="Common_Embedding_Tasks">Common Embedding Tasks</h2> + +<p>The following is a series of code snippets (taken from MFCEmbed, the Windows based embedding Gecko sample) which demonstrate very briefly implementation associated with common embedding tasks. MFCEmbed code was deleted from the current repository as the code quality was not very high and it did not use good embedding APIs. If you need a MFC embedding example, maybe take a look at the K-Meleon source. There are also Linux- and Mac OS-based examples, see <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/embedding/tests/" title="http://mxr.mozilla.org/mozilla-central/source/embedding/tests/">http://mxr.mozilla.org/mozilla-central/source/embedding/tests/</a> for a list of examples.</p> + +<h3 id="Gecko_setup" name="Gecko_setup">Gecko setup</h3> + +<p>The Gecko embedding layer must be initialized before you can use Gecko. This ensures XPCOM is started, creates the component registry if necessary, and starts global services. There is an equivalent shutdown procedure.</p> + +<p>Note that the embedding layer is started up by passing it two parameters. The first indicates where the executable is stored on the file system (<code>nsnull</code> indicates the working directory). The second indicates the file location object "provider" that specifies to Gecko where to find profiles, the component registry preferences, and so on.</p> + +<pre>nsresult rv; +rv = NS_InitEmbedding(nsnull, provider); +if(NS_FAILED(rv)) +{ +ASSERT(FALSE); +return FALSE; +} +</pre> + +<h3 id="Creating_a_browser_instance" name="Creating_a_browser_instance">Creating a browser instance</h3> + +<p>The embedder-provided BrowserView object calls its method <code>CreateBrowser()</code>. Each browser object (a webbrowser) represents a single browser window. Notice the utility directive <code>do_CreateInstance()</code> and the use of macros.</p> + +<pre>//Create an instance of the Mozilla embeddable browser + +HRESULT CBrowserView::CreateBrowser() +{ +// Create a web shell +nsresult rv; +mWebBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID, &rv); +if(NS_FAILED(rv)) +return rv; +</pre> + +<p>Once the <code>nsWebBrowser</code> object is created the application uses <code>do_QueryInterface()</code> to load a pointer to the <a class="external" href="http://www.xulplanet.com/references/xpcomref/ifaces/nsIWebNavigation.html">nsIWebNavigation</a> interface into the <code>mWebNav</code> member variable. This will be used later for web page navigation.</p> + +<pre>rv = NS_OK; +mWebNav = do_QueryInterface(mWebBrowser, &rv); +if(NS_FAILED(rv)) +return rv; +</pre> + +<p>Next the embedder-provided <code>CBrowserImpl</code> object is created. Gecko requires that some interfaces be implemented by the embedder so that Gecko can communicate with the embedding application. See the <a href="#What_You_Provide">What You Provide Section</a>. In the sample, <code>CBrowserImpl</code> is the object that implements those required interfaces. It will be passed into the <code>SetContainerWindow()</code> call below.</p> + +<pre>mpBrowserImpl = new CBrowserImpl(); +if(mpBrowserImpl == nsnull) +return NS_ERROR_OUT_OF_MEMORY; +</pre> + +<p>The <code>mWebBrowser</code> interface pointer is then passed to the <code>CBrowserImpl</code> object via its <code>Init()</code> method. A second pointer to the platform specific <code>BrowserFrameGlue</code> interface is also passed in and saved. The <code>BrowserFrameGlue</code> pointer allows <code>CBrowserImpl</code> to call methods to update status bars, progress bars, and so forth.</p> + +<pre>mpBrowserImpl->Init(mpBrowserFrameGlue, mWebBrowser); +mpBrowserImpl->AddRef(); +</pre> + +<p>Next the embedder-supplied chrome object is associated with the webbrowser. Note the use of an <code>nsCOMPtr</code>.</p> + +<pre>mWebBrowser->SetContainerWindow + (NS_STATIC_CAST(nsIWebBrowserChrome*, mpBrowserImpl)); +nsCOMPtr<nsIWebBrowserSetup>setup(do_QueryInterface(mWebBrowser)); +if (setup) + setup->SetProperty(nsIWebBrowserSetup::SETUP_IS_CHROME_WRAPPER,PR_TRUE); +</pre> + +<p>Then, the real webbrowser window is created.</p> + +<pre>rv = NS_OK; +mBaseWindow = do_QueryInterface(mWebBrowser, &rv); +if(NS_FAILED(rv)) +return rv; +</pre> + +<h3 id="Binding_a_window" name="Binding_a_window">Binding a window</h3> + +<p>Basic location information is passed in.</p> + +<pre>RECT rcLocation; +GetClientRect(&rcLocation); +if(IsRectEmpty(&rcLocation)) +{ + rcLocation.bottom++; + rcLocation.top++; +} +rv = mBaseWindow->InitWindow(nsNativeWidget(m_hWnd), + nsnull,0, 0, rcLocation.right - rcLocation.left, + rcLocation.bottom - rcLocation.top); +rv = mBaseWindow->Create(); +</pre> + +<p>Note the <code>m_hWnd</code> passed into the call above to <code>InitWindow()</code>. (<code>CBrowserView</code> inherits the <code>m_hWnd</code> from <code>CWnd</code>). This <code>m_hWnd</code> will be used as the parent window by the embeddable browser.</p> + +<h3 id="Adding_a_listener" name="Adding_a_listener">Adding a listener</h3> + +<p>The <code>BrowserImpl</code> object is added as an <a href="/en/nsIWebProgressListener" title="en/nsIWebProgressListener">nsIWebProgressListener</a>. It will now receive progress messages. These callbacks will be used to update the status/progress bars.</p> + +<pre>nsWeakPtr weakling + (dont_AddRef(NS_GetWeakReference(NS_STATIC_CAST(nsIWebProgressListener*, + mpBrowserImpl)))); +void mWebBrowser->AddWebBrowserListener(weakling, NS_GET_IID(nsIWebProgressListener)); +</pre> + +<p>Finally the webbrowser window is shown.</p> + +<pre>mBaseWindow->SetVisibility(PR_TRUE); +</pre> + +<h3 id="Using_session_history_to_navigate" name="Using_session_history_to_navigate">Using session history to navigate</h3> + +<p>The pointer to <a class="external" href="http://www.xulplanet.com/references/xpcomref/ifaces/nsIWebNavigation.html">nsIWebNavigation</a> saved above is used to move back through session history.</p> + +<pre>void CBrowserView::OnNavBack() +{ +if(mWebNav) + mWebNav->GoBack(); +} +</pre> + +<h2 id="Appendix:_Data_Flow_Inside_Gecko" name="Appendix:_Data_Flow_Inside_Gecko">Appendix: Data Flow Inside Gecko</h2> + +<p>While it isn't strictly necessary for embedders to understand how Gecko does what it does, a brief overview of the main structures involved as Gecko puts bits on a display may be helpful.</p> + +<p><img alt="Image:EmbeddingBasicsa.gif" class="internal" src="/@api/deki/files/189/=EmbeddingBasicsa.gif"></p> + +<p>HTML data comes into Gecko either from the network or a local source. The first thing that happens is that it is parsed, using Gecko's own HTML parser. Then the Content Model arranges this parsed data into a large tree. The tree is also known as the "Document" and its structure is based on the W3C Document Object Model. Any use of DOM APIs manipulates the data in the Content Model.</p> + +<p>Next the data is put into frames using CSS and the Frame Constructor. A frame in this sense (which is not the same thing as an HTML frame) is basically an abstract box within which a DOM element will be displayed. This process produces a Frame Tree, which, like the Content Model, is a tree of data, but this time focused not on the logical relationship among the elements but on the underlying calculations needed to display the data. In the beginning a frame has no size. Using CSS rules specifying how the elements of the DOM should look when they are displayed, including information like font type or image size, the eventual size of each frame is calculated. Because the same data may need to be displayed in different ways -- to a monitor and to a printer, for example -- a particular Content Model may have more than one Frame Tree associated with it. In such a case, each individual Frame Tree would belong to a different "presentation" mode.</p> + +<p>Calculations continue as new information flows into the system using a process called <strong>reflow</strong>. As information in the Frame Tree changes, the section of the Frame Tree involved is marked "dirty" by the Frame Constructor. Reflow repeatedly steps through the tree, processing every "dirty" item it encounters until all the items it encounters are "clean". Every item in the Frame Tree has a pointer back to its corresponding item in the Content Model. A change in the Content Model, say through using the DOM APIs to change an element from hidden to visible, produces an equivalent change in the Frame Tree. It's important to note that all of these operations are purely data manipulations. Painting to the display itself is not yet involved at this point.</p> + +<p>The next stage is the View Manager. With a few small exceptions that have to do with prompting the Frame Constructor to load graphics, the View Manager is the first place in the process that accesses the native OS. Delaying OS access until this point both helps Gecko to run more quickly and makes cross-platform issues easier to deal with. The View Manger is the place where Gecko figures out where on the display the data will need to be drawn. It then tells the system that that area is "invalid" and needs to be repainted. The actual painting is managed by the gfx submodule, while other low-level system operations are run through the widget submodule, which handles things like platform specific event (mouse clicks and so forth) processing loops and accessing system defaults (colors, fonts, etc.) Both gfx and widget are system specific.</p> + +<p>If you want to take a look at the code underlying these structures, the code for the Content Model can be found in <code>/mozilla/content</code>, for the Frame Constructor, CSS, and Reflow in <code>/mozilla/layout</code>, for the View Manager in <code>/mozilla/view</code>, and for the DOM APIs in <code>/mozilla/dom</code>.</p> + +<div class="originaldocinfo"> +<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> + +<ul> + <li>Author(s): <a class="external" href="/mailto:jeev@jeev13@gmail.com" title="mailto:jeev@jeev13@gmail.com">Ellen Evans</a></li> + <li>Last Updated Date: August 19, 2002</li> + <li>Copyright Information: Copyright (C) <u>Creative Commons Attribution</u></li> +</ul> +</div> + +<p>{{ languages( { "ja": "ja/Gecko_Embedding_Basics" } ) }}</p> diff --git a/files/fr/mozilla/gecko/index.html b/files/fr/mozilla/gecko/index.html new file mode 100644 index 0000000000..fcd4a8e202 --- /dev/null +++ b/files/fr/mozilla/gecko/index.html @@ -0,0 +1,118 @@ +--- +title: Gecko +slug: Mozilla/Gecko +translation_of: Mozilla/Gecko +--- +<p><img alt="" class="internal" src="/@api/deki/files/1410/=Netscape-gecko-logo.jpg" style="float: right;"> <strong>Gecko</strong> est le nom du moteur de rendu développé par la fondation Mozilla. Il s'appelait à l'origine NGLayout.</p> + +<p>La fonction de Gecko est de lire le contenu Web tel que <a href="/fr/HTML" title="fr/HTML">HTML</a>, <a href="/fr/CSS" title="fr/CSS">CSS</a>, <a href="/fr/XUL" title="fr/XUL">XUL</a> et <a href="/fr/JavaScript" title="fr/JavaScript">JavaScript</a>, puis de le représenter sur l'écran de l'utilisateur ou à l'impression. Dans les applications basées sur XUL, Gecko est également utilisé pour afficher l'interface utilisateur de l'application.</p> + +<p>Gecko est utilisé dans de nombreuses applications dont quelques navigateurs comme Firefox, la Suite Mozilla, Camino, etc. (Pour obtenir la liste complète, référez-vous à cet <a class="external" href="http://fr.wikipedia.org/wiki/Gecko_%28moteur_de_rendu%29#Navigateurs_web">article de Wikipedia sur Gecko</a>). Les produits utilisant la même version de Gecko ont un support identique des standards.</p> + +<p><small>Le nom et le logo Gecko sont des marques de Netscape Communications Corporation, utilisés sous licence.</small></p> + +<h3 id="Les_versions_de_Gecko" name="Les_versions_de_Gecko">Les versions de Gecko</h3> + +<table class="standard-table"> + <tbody> + <tr> + <th>Version de Gecko</th> + <th>Applications basées sur cette version</th> + </tr> + <tr> + <td>Gecko 17.0 (en cours de développement)</td> + <td><a class="internal" href="/fr/docs/Firefox_17_pour_les_développeurs" title="Firefox 17 pour les développeurs">Firefox 17</a>, SeaMonkey 2.14, Thunderbird 17</td> + </tr> + <tr> + <td>Gecko 16.0 (en cours de développement)</td> + <td><a class="internal" href="/fr/docs/Firefox_16_pour_les_développeurs" title="Firefox 16 pour les développeurs">Firefox 16</a>, SeaMonkey 2.13, Thunderbird 16</td> + </tr> + <tr> + <td>Gecko 15.0 (en cours de développement)</td> + <td><a class="internal" href="/fr/docs/Firefox_15_pour_les_développeurs" title="Firefox 15 pour les développeurs">Firefox 15</a>, <a class="link-https" href="https://wiki.mozilla.org/SeaMonkey/Features/2.12" title="Changements dans SeaMonkey 2.12">SeaMonkey 2.12</a>, <a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB15UserChanges" title="Changements dans Thunderbird 15">Thunderbird 15</a></td> + </tr> + <tr> + <td>Gecko 14.0</td> + <td><a class="internal" href="/fr/docs/Firefox_14_pour_les_développeurs" title="Firefox 14 pour les développeurs">Firefox 14</a>, <a class="link-https" href="https://wiki.mozilla.org/SeaMonkey/Features/2.11" title="Changements dans SeaMonkey 2.11">SeaMonkey 2.11</a>, <a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB14UserChanges" title="Changements dans Thunderbird 14">Thunderbird 14</a></td> + </tr> + <tr> + <td>Gecko 13.0</td> + <td><a class="internal" href="/fr/docs/Firefox_13_pour_les_développeurs" title="Firefox 13 pour les développeurs">Firefox 13</a>, <a class="link-https" href="https://wiki.mozilla.org/SeaMonkey/Features/2.10" title="Changements dans SeaMonkey 2.10">SeaMonkey 2.10</a>, <a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB13UserChanges" title="Changements dans Thunderbird 13">Thunderbird 13</a></td> + </tr> + <tr> + <td>Gecko 12.0</td> + <td><a class="internal" href="/fr/docs/Firefox_12_pour_les_développeurs" title="Firefox 12 pour les développeurs">Firefox 12</a>, <a class="link-https" href="https://wiki.mozilla.org/SeaMonkey/Features/2.9" title="Changements dans SeaMonkey 2.9">SeaMonkey 2.9</a>, <a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB12UserChanges" title="Changements dans Thunderbird 12">Thunderbird 12</a></td> + </tr> + <tr> + <td>Gecko 11.0</td> + <td><a class="internal" href="/fr/docs/Firefox_11_pour_les_développeurs" title="Firefox 11 pour les développeurs">Firefox 11</a>, <a class="link-https" href="https://wiki.mozilla.org/SeaMonkey/Features/2.8" title="Changements dans SeaMonkey 2.8">SeaMonkey 2.8</a>, <a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB11UserChanges" title="Changements dans Thunderbird 11">Thunderbird 11</a></td> + </tr> + <tr> + <td>Gecko 10.0</td> + <td><a class="internal" href="/fr/docs/Firefox_10_pour_les_développeurs" title="Firefox 10 pour les développeurs">Firefox 10</a>, <a class="link-https" href="https://wiki.mozilla.org/SeaMonkey/Features/2.7" title="Changements dans SeaMonkey 2.7">SeaMonkey 2.7</a>, <a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB10UserChanges" title="Changements dans Thunderbird 10">Thunderbird 10</a></td> + </tr> + <tr> + <td>Gecko 9.0</td> + <td><a class="internal" href="/fr/docs/Firefox_9_pour_les_développeurs" title="Firefox 9 pour les développeurs">Firefox 9</a>, <a class="link-https" href="https://wiki.mozilla.org/SeaMonkey/Features/2.6" title="Changements dans SeaMonkey 2.6">SeaMonkey 2.6</a>, <a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB9UserChanges" title="Changements dans Thunderbird 9">Thunderbird 9</a></td> + </tr> + <tr> + <td>Gecko 8.0</td> + <td><a class="internal" href="/fr/docs/Firefox_8_pour_les_développeurs" title="Firefox 8 pour les développeurs">Firefox 8</a>, <a class="link-https" href="https://wiki.mozilla.org/SeaMonkey/Features/2.5" title="Changements dans SeaMonkey 2.5">SeaMonkey 2.5</a>, <a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB8UserChanges" title="Changements dans Thunderbird 8">Thunderbird 8</a></td> + </tr> + <tr> + <td>Gecko 7.0</td> + <td><a class="internal" href="/fr/docs/Firefox_7_pour_les_développeurs" title="Firefox 7 pour les développeurs">Firefox 7</a>, <a class="link-https" href="https://wiki.mozilla.org/SeaMonkey/Features/2.4" title="Changements dans SeaMonkey 2.4">SeaMonkey 2.4</a>, <a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB7UserChanges" title="Changements dans Thunderbird 7">Thunderbird 7</a></td> + </tr> + <tr> + <td>Gecko 6.0</td> + <td><a class="internal" href="/fr/docs/Firefox_6_pour_les_développeurs" title="Firefox 6 pour les développeurs">Firefox 6</a>, <a class="link-https" href="https://wiki.mozilla.org/SeaMonkey/Features/2.3" title="Changements dans SeaMonkey 2.3">SeaMonkey 2.3</a>, <a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB6UserChanges" title="Changements dans Thunderbird 6">Thunderbird 6</a></td> + </tr> + <tr> + <td>Gecko 5.0</td> + <td><a class="internal" href="/fr/docs/Firefox_5_pour_les_développeurs" title="Firefox 5 pour les développeurs">Firefox 5</a>, <a class="link-https" href="https://wiki.mozilla.org/SeaMonkey/Features/2.2" title="Changements dans SeaMonkey 2.2">SeaMonkey 2.2</a>, <a class="external" href="http://kb.mozillazine.org/Thunderbird_5.0_-_New_Features_and_Changes" title="Changements dans Thunderbird 5">Thunderbird 5</a></td> + </tr> + <tr> + <td>Gecko 2.0</td> + <td><a class="internal" href="/fr/docs/Firefox_4_pour_les_développeurs" title="Firefox 4 pour les développeurs">Firefox 4</a>, <a class="link-https" href="https://wiki.mozilla.org/SeaMonkey/Features/2.1" title="Changements dans SeaMonkey 2.1">SeaMonkey 2.1</a></td> + </tr> + <tr> + <td>Gecko 1.9.2</td> + <td><a class="internal" href="/fr/docs/Firefox_3.6_pour_les_développeurs" title="Firefox 3.6 pour les développeurs">Firefox 3.6</a>, <a class="external" href="http://kb.mozillazine.org/Thunderbird_3.1_-_New_Features_and_Changes" title="Changements dans Thunderbird 3.1">Thunderbird 3.1</a></td> + </tr> + <tr> + <td>Gecko 1.9.1</td> + <td><a class="internal" href="/Fr/docs/Firefox_3.5_pour_les_développeurs" title="Firefox 3.5 pour les développeurs">Firefox 3.5</a>, <a class="link-https" href="https://wiki.mozilla.org/SeaMonkey:New_for_2.0" title="Changements dans SeaMonkey 2.0">SeaMonkey 2.0</a>, <a class="external" href="http://kb.mozillazine.org/Thunderbird_3.0_-_New_Features_and_Changes" title="Changements dans Thunderbird 3.0">Thunderbird 3.0</a></td> + </tr> + <tr> + <td>Gecko 1.9.0</td> + <td><a class="internal" href="/fr/docs/Firefox_3_pour_les_développeurs" title="Firefox_3_pour_les_développeurs">Firefox 3</a></td> + </tr> + <tr> + <td>Gecko 1.8.1</td> + <td><a class="internal" href="/fr/docs/Firefox_2_pour_les_développeurs" title="Firefox_2_pour_les_développeurs">Firefox 2</a>, SeaMonkey 1.1, Thunderbird 2.0</td> + </tr> + <tr> + <td>Gecko 1.8.0</td> + <td><a class="internal" href="/fr/docs/Firefox_1.5_pour_les_développeurs" title="Firefox_1.5_pour_les_développeurs">Firefox 1.5</a>, SeaMonkey 1.0, Thunderbird 1.5</td> + </tr> + <tr> + <td>Gecko 1.7</td> + <td>Firefox 1.0, Mozilla Suite 1.7, Nvu 1.0, Thunderbird 1.0</td> + </tr> + <tr> + <td colspan="2"><strong>Les versions plus anciennes de Gecko correspondent aux versions de la Suite Mozilla</strong></td> + </tr> + </tbody> +</table> + +<hr> +<h3 id="Ressources" name="Ressources">Ressources</h3> + +<ul> + <li><a class="external" href="http://www.mozilla.org/newlayout/">Page du projet Gecko</a></li> + <li><a href="/fr/Manuel_de_compatibilité_Gecko" title="fr/Manuel_de_compatibilité_Gecko">Manuel de compatibilité Gecko</a></li> + <li><a href="/fr/Les_chaînes_UserAgent_de_Gecko" title="fr/Les_chaînes_UserAgent_de_Gecko">Les chaînes UserAgent de Gecko</a></li> + <li><a href="/fr/Mozilla_embarqué" title="fr/Mozilla_embarqué">Intégration de Gecko dans d'autres programmes</a></li> +</ul> + +<p>{{ languages( { "de": "de/Gecko", "en": "en/Gecko", "es": "es/Gecko", "it": "it/Gecko", "ja": "ja/Gecko", "ko": "ko/Gecko", "pl": "pl/Gecko", "pt": "pt/Gecko", "zh-cn": "cn/Gecko" } ) }}</p> diff --git a/files/fr/mozilla/gecko/mozilla_embarqué/api_overview/index.html b/files/fr/mozilla/gecko/mozilla_embarqué/api_overview/index.html new file mode 100644 index 0000000000..bf0dbc85cf --- /dev/null +++ b/files/fr/mozilla/gecko/mozilla_embarqué/api_overview/index.html @@ -0,0 +1,422 @@ +--- +title: Vue d'ensemble des APIS embarquées de Mozilla +slug: Mozilla/Gecko/Mozilla_embarqué/API_overview +translation_of: Mozilla/Gecko/Embedding_Mozilla/API_overview +--- +<h2 id="Introduction" name="Introduction">Introduction</h2> +<p>The Mozilla Public API consists of a collection of services and components which are accessed via XPCOM interfaces. Mozilla's XPCOM layer consists of a component model (called XPCOM) and the infrastructure necessary to support dynamic registration, instantiation and manipulation of XPCOM components.</p> +<p>At the heart of XPCOM's implementation is the Service Manager and the Component Manager. Together, these two services provide a centralized point for gaining access to all of the public Mozilla interfaces.</p> +<p>The Service Manager exposes all of the available XPCOM services - each service represents a global object which provides some piece of functionality. The Component Manager allows new instances of registered XPCOM components to be instantiated.</p> +<p><img alt="Image:public-apis-image2.gif" class="internal" src="/@api/deki/files/819/=Public-apis-image2.gif"></p> +<p>The embedding layer consists of several components built on top of XPCOM and its services. Much of the Gecko functionality is exposed through a component called the nsWebBrowser. Embedding applications can leverage this component to easily access many of Gecko's features. Each WebBrowser instance represents the "client-area" of a typical browser window. The WebBrowser exposes a set of interfaces which allow the embedding application to control activity and respond to changes within this client area. Using these interfaces an embedding application can build up its own user interface around a WebBrowser instance.</p> +<p><img alt="Image:public-apis-image1.gif" class="internal" src="/@api/deki/files/818/=Public-apis-image1.gif"></p> +<h2 id="Public_Classes" name="Public_Classes">Public Classes</h2> +<p>The following utility classes are available from the XPCOM DLL. They provide some basic functionality which should be leveraged when building new XPCOM components.</p> +<ul> + <li>nsCOMPtr<interface-type></li> +</ul> +<p>These are templatized smart pointers which transparently deal with XPCOM reference counting issues. See the nsCOMPtr User's Manual for more information.</p> +<ul> + <li>nsString</li> +</ul> +<p>There are a collection of string classes which support both unicode and ASCII strings. These classes provide a variety of string operations as well as dealing with the memory management issues of storing the underlying data. See the String Guide for more details.</p> +<ul> + <li>nsWeakPtr</li> +</ul> +<p>This is an nsCOMPtr which encapsulates XPCOM weak reference support. See the nsIWeakReference document for more information.</p> +<h2 id="Public_Return_Codes" name="Public_Return_Codes">Public Return Codes</h2> +<ul> + <li>NS_SUCCEEDED</li> + <li>NS_ERROR_FAILURE</li> + <li>NS_ERROR_NOT_IMPLEMENTED</li> +</ul> +<h2 id="Public_Functions" name="Public_Functions">Public Functions</h2> +<p>The following functions are available from the XPCOM DLL.</p> +<ul> + <li>NS_InitEmbedding</li> +</ul> +<p>This function initializes the Gecko embedding support. This must be the first function call made into Gecko.</p> +<ul> + <li>NS_TermEmbedding</li> +</ul> +<p>This function shuts down Gecko and cleans up any remaining resources... Currently, once Gecko has been shutdown, it cannot be restarted in the same process space... This should change in the future.</p> +<ul> + <li>nsMemory + <ul> + <li>nsMemory::Alloc</li> + <li>nsMemory::Realloc</li> + <li>nsMemory::Free</li> + </ul> + </li> +</ul> +<p>This helper class provides static accessors to the global nsMemory Service.</p> +<ul> + <li>NS_GetGlobalComponentManager</li> +</ul> +<p>This function returns an instance of the Component Manager service.</p> +<ul> + <li>NS_ConvertASCIItoUCS2</li> +</ul> +<p>This is a helper class which converts an ASCII string into a UCS2 string. Typically, instances of this class are stack allocated, and wrap ASCII arguments which must be converted into UCS2.</p> +<ul> + <li>do_QueryInterface</li> +</ul> +<p>This is a helper class which works in conjunction with nsCOMPtr to perform a simplified call to nsISupports::QueryInterface(...) with a typesafe assignment.</p> +<ul> + <li>do_GetInterface</li> +</ul> +<p>This function simplfies retrieving interfaces via the nsIInterfaceRequestor::GetInterface(...) method. Using this function, one can use nsISupports instances and still easily access other interfaces via nsIInterfaceRequestor.</p> +<p>Internally, this function tries to convert the nsISupports argument into an nsIInterfaceRequestor and then calls GetInterface(...) to retrieve the requested interface.</p> +<ul> + <li>do_QueryReferent</li> +</ul> +<p>This function is the equivilent of do_QueryInterface except that it performs the QI through a weak reference.</p> +<ul> + <li>do_GetService</li> +</ul> +<p>This function simplifies accessing services from the Service Manager.</p> +<ul> + <li>do_CreateInstance</li> +</ul> +<p>This function simplifies creating new component instances.</p> +<ul> + <li>nsCOMTypeInfo<interface-type>::GetIID()</li> +</ul> +<p>This template helper class allows easy access to an interface's nsIID. Typically the NS_GET_IID(...) macro is used instead of using the nsCOMTypeInfo template directly.</p> +<ul> + <li>NS_GetWeakReference</li> +</ul> +<p>This function creates a weak reference to a component which implements the nsIWeakReference interface.</p> +<h2 id="Global_Services" name="Global_Services">Global Services</h2> +<p><strong>nsServiceManager</strong></p> +<p>The Service Manager is the central repository for accessing instances of the various XPCOM services. Each service is represented by a singleton object which is instantiated the first time it is requested and remains alive until the Service Manager is shut down, or the service is explicitly unloaded.</p> +<p>Through the Service Manager, individual services can be loaded, unloaded and accessed.</p> +<p><em>Implemented Interfaces:</em></p> +<ul> + <li>nsIServiceManager</li> +</ul> +<p><em>Related Interfaces:</em></p> +<ul> + <li>nsIShutdownListener</li> +</ul> +<p><strong>nsMemory</strong></p> +<p>The nsMemory service provides the global memory manager implementation for XPCOM. In addition to memory allocation and release, this service provides low memory notifications, called a memory pressure observers, which are notified when memory is low - thus allowing cached resources to be freed.</p> +<p>All heap access should be done via the nsMemory service. To facilitate this, a set of global functions are available to access the nsMemory methods without requiring an instance of the nsMemory service (see nsMemory.h).</p> +<p><em>Contract-id:</em> NS_MEMORY_CONTRACTID</p> +<p><em>Implemented Interfaces:</em></p> +<ul> + <li>nsIMemory</li> +</ul> +<p><em>Related Interfaces:</em></p> +<ul> + <li>nsIObserver</li> +</ul> +<p><strong>nsComponentManager</strong></p> +<p>The nsComponentManager service is responsible for creating new instances of XPCOM components. The Component Manager is also responsible for registering and managing the class factories used for component creation...</p> +<p><em>Contract-id:</em> NS_COMPONENTMANAGER_CONTRACTID</p> +<p><em>Implemented Interfaces:</em></p> +<ul> + <li>nsIComponentManager</li> + <li>nsIInterfaceRequestor</li> +</ul> +<p><em>Requestor Interfaces:</em></p> +<ul> + <li>nsIServiceManager</li> +</ul> +<p><em>Related Interfaces:</em></p> +<ul> + <li>nsIFactory</li> +</ul> +<p><strong>nsURILoader</strong></p> +<p>The nsURILoader service is responsible for targeting a URI at an appropriate content handler. A content handler may be an existing or new window, a helper application or the Unknown Content Handler - if no other handler can be found for the content-type.</p> +<p><em>Contract-id:</em> NS_URI_LOADER_CONTRACTID</p> +<p><em>Implemented Interfaces:</em></p> +<ul> + <li>nsIURILoader</li> +</ul> +<p><em>Related Interfaces:</em></p> +<ul> + <li>nsIURIContentListener</li> +</ul> +<p><strong>nsUnknownContentTypeHandler</strong></p> +<p>The UnknownContentTypeHandler service is the last resort of the URILoader when no other content handler can be located. If no registered content handlers are available, the UnknownContentTypeHandler is notified.</p> +<p>The default implementation of this service displays a dialog box asking the user if the content should be saved to disk...</p> +<p><em>Contract-id:</em> NS_IUNKNOWNCONTENTTYPEHANDLER_CONTRACTID</p> +<p><em>Implemented Interfaces:</em></p> +<ul> + <li>nsIUnknownContentTypeHandler</li> +</ul> +<p><strong>HelperApp Launch Dialog</strong></p> +<p><em>Contract-id:</em> NS_EXTERNALHELPERAPPSERVICE_CONTRACTID</p> +<p><em>Implemented Interfaces:</em></p> +<ul> + <li>nsIExternalHelperAppService</li> +</ul> +<p><strong>Preferences Service</strong></p> +<p>The Preferences service provides access to persistent data stored within a user's profile directory.</p> +<p><em>Contract-id:</em> NS_PREF_CONTRACTID</p> +<p><em>Implemented Interfaces:</em></p> +<ul> + <li>nsIPrefService</li> + <li>nsIPrefBranch</li> +</ul> +<p><em>Related Interfaces:</em></p> +<ul> + <li>nsIPrefListener</li> +</ul> +<p><strong>Profile Manager Service</strong></p> +<p><em>Contract-id:</em></p> +<p><em>Implemented Interfaces:</em></p> +<p><strong>Document Loader Service (WebProgress)</strong></p> +<p>Eventually, this service will be replaced by theWebProgress service...</p> +<p><em>Contract-id:</em> NS_DOCUMENT_LOADER_SERVICE_CONTRACTID</p> +<p><em>Implemented Interfaces:</em></p> +<ul> + <li>nsIWebProgress</li> + <li>nsIDocumentLoader</li> +</ul> +<p><em>Related Interfaces:</em></p> +<ul> + <li>nsIWebProgressListener</li> +</ul> +<h2 id="Public_Components" name="Public_Components">Public Components</h2> +<h3 id="nsWebBrowser" name="nsWebBrowser">nsWebBrowser</h3> +<p>The nsWebBrowser is the main embedding component which Gecko exposes. Conceptually, each nsWebBrowser instance represents a HTML content area.</p> +<p>Conceptually, for each document being rendered, Gecko creates a container called a DOMWindow. Each WebBrowser exposes a tree of DOMWindows - representing the frame hierarchy for the current document. As such, access to individual document frames is done via the DOMWindow interfaces. Manipulation of the entire document structure is done via the various WebBrowser interfaces.</p> +<p><em>Contract-id:</em> NS_WEBBROWSER_CONTRACTID</p> +<p><em>Implemented Interfaces:</em></p> +<ul> + <li>nsIWebBrowser</li> + <li>nsIWebNavigation</li> + <li>nsIWebBrowserSetup</li> + <li>nsIWebBrowserPersist</li> + <li>nsIWebBrowserFind</li> + <li>nsIWebBrowserPrint</li> + <li>nsIWebBrowserFocus</li> + <li>nsIBaseWindow</li> +</ul> +<p><em>Requestor Interfaces:</em></p> +<ul> + <li>nsIDOMWindow</li> + <li>nsIDOMDocument</li> + <li>nsIWebProgress</li> + <li>nsIClipboardCommands</li> + <li>nsIPrompt</li> +</ul> +<p><em>Related Interfaces:</em></p> +<ul> + <li>nsIPrompt</li> + <li>nsIWebBrowserChrome</li> + <li>nsIWebBrowserSiteWindow</li> + <li>nsIWebProgressListener</li> + <li>nsIContextMenuListener</li> + <li>nsIPrintOptions</li> +</ul> +<p><strong>Overview:</strong></p> +<p>Most of Gecko's functionality is exposed through the nsWebBrowser component. The WebBrowser provides a simple mechanism for other applications to leverage Gecko functionality. Each instance of a WebBrowser encapsulates a full featured HTML content area.</p> +<p>The embedding application receives notifications from Gecko through a set of callback interfaces it may choose to implement.</p> +<p><img alt="Image:public-apis-image3.gif" class="internal" src="/@api/deki/files/820/=Public-apis-image3.gif"></p> +<p>Below is a code snippet which an embedding application can use to create and initialize a WebBrowser:</p> +<pre> nsresult rv; + nsCOMPtr<nsIBaseWindow> baseWindow; + nsCOMPtr<nsIWebBrowser> webBrowser; + + // Create a nsWebBrowser instance... + webBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID, &rv); + if (NS_FAILED(rv)) return rv; + + // Give the WebBrowser a pointer to the embedding component which + // implements the callback interfaces. Replace 'this' with + // an appropriate object... + rv = webBrowser->SetContainerWindow((nsIWebBrowserChrome*)this); + if (NS_FAILED(rv)) return rv; + + baseWindow = do_QueryInterface(webBrowser); + + // Initialize the WebBrowser with a native parent window + // (ie. HWND on Win32). Replace 'nativeWindow' with a + // reference to an appropriate native resource... + rv = baseWindow->InitWindow(nativeWindow, // Native window + nsnull, // Always nsnull. + x, y, cx, cy); // Initial dimensions... + if (NS_FAILED(rv)) return rv; + + // Create the child window for the WebBrowser. + rv = baseWindow->Create(); + if (NS_FAILED(rv)) return rv; + + // At this point webBrowser contains the new initialized instance + // of the nsWebBrowser component... + // Save webBrowser before it goes out of scope :-) + +</pre> +<p><strong>Web Navigation</strong></p> +<p>The nsIWebNavigation interface is used to load URIs into the WebBrowser and provide access to session history capabilities - such as back and forward.</p> +<p><strong>Clipboard</strong></p> +<p>The WebBrowser exposes access to the system clipboard via the nsIClipboardCommands interface. This interface supports cut/copy/paste operations on the current selection within the WebBrowser window.</p> +<p><strong>Printing (not yet implemented)</strong></p> +<p>Printing the contents of a DOMWindow within a WebBrowser is a two step process. First, the printer and page options are collected via the nsIPrintOptions interface. On most platforms this involves displaying a native Print dialog box. Once all of the options have been set, the nsIWebBrowserPrint interface is used to print the contents of the desired DOMWindow.</p> +<p><strong>Searching</strong></p> +<p>Searching within a nsWebBrowser is controlled via the nsIWebBrowserFind interface. The search is always performed within the DOMWindow which currently has the focus.</p> +<p><strong>Focus Management</strong></p> +<p>Focus managment within the WebBrowser is accessed via the nsIWebBrowserFocus interface.</p> +<p>This interface serves two purposes. First, it provides methods for the embedding application to notify a WebBrowser of activation/deactivation and to control tabbing order... This interface also allows access to the currently focused DOMWindow and DOMElement.</p> +<p><strong>Context Menu notifications</strong></p> +<p>Right-click context menu notifications are passed up to the embedding application through the nsIContextMenuListener interface. These notifications allow the embedding application to display context menus based on user activity within the WebBrowser (such as a right-click on a hypertext link).</p> +<p><strong>Saving Documents</strong></p> +<p><strong>Notification Interfaces which the embedding application should implement</strong></p> +<h3 id="nsFile" name="nsFile">nsFile</h3> +<h2 id="Public_Interfaces" name="Public_Interfaces">Public Interfaces</h2> +<p><strong>nsISupports</strong></p> +<p>Base Component Object Model interface. This interface provides runtime interface discovery and a reference counted memory model fashioned after the Microsoft COM IUnknown interface.</p> +<p><em>Interface status...</em> none</p> +<p><em>Interface definition:</em> nsISupportsUtils.h</p> +<p><br> + <strong>nsIInterfaceRequestor</strong></p> +<p>This Interface provides an interface discovery mechanism which does not imply aggregation. <em>Interface status...</em> none</p> +<p><em>Interface definition:</em> nsIInterfaceRequestor.idl</p> +<p><strong>nsIWeakReference</strong></p> +<p>This interface is used to retern a proxy reference to a component.</p> +<p><em>Interface status...</em> <a class="external" href="http://www.mozilla.org/projects/embedding/apiReviewNotes.html#nsIWeakReference">being reviewed</a></p> +<p><em>Interface definition:</em> nsIWeakReference.idl</p> +<p><strong>nsISimpleEmunerator</strong></p> +<p>This interface provides a simple enumeration abstraction.</p> +<p><em>Interface status...</em> <a class="external" href="http://www.mozilla.org/projects/embedding/apiReviewNotes.html#nsISimpleEmunerator">being reviewed</a></p> +<p><em>Interface definition:</em> nsISimpleEnumerator.idl</p> +<p><strong>nsIServiceManager</strong></p> +<p>This interface allows access to global services within mozilla.</p> +<p><em>Interface status...</em> none</p> +<p><em>Interface definition:</em> nsIServiceManager.h</p> +<p><br> + <strong>nsIShutdownListener</strong></p> +<p>This interface is used to receive notifications when the Service Manager is being shutdown.</p> +<p><em>Interface status...</em> none</p> +<p><em>Interface definition:</em> nsIServiceManager.h</p> +<p><br> + <strong>nsIComponentManager</strong></p> +<p>This interface allows new instances of registered XPCOM components to be instantiated.</p> +<p><em>Interface status...</em> none</p> +<p><em>Interface definition:</em> nsIComponentManager.idl</p> +<p><br> + <strong>nsIFactory</strong></p> +<p>This interface is used by the Component Manager to create new instances of a particular XPCOM component. Each component must provide a factory implementation for creating new instances.</p> +<p><em>Interface status...</em> none</p> +<p><em>Interface definition:</em> nsIFactory.idl</p> +<p><br> + <strong>nsIMemory</strong></p> +<p>This interface provides access to the global memory management functionality.</p> +<p><em>Interface status...</em> <a class="external" href="http://www.mozilla.org/projects/embedding/apiReviewNotes.html#nsIMemory">being reviewed</a></p> +<p><em>Interface definition:</em> nsIMemory.idl</p> +<p><br> + <strong>nsIDOMWindow</strong></p> +<p>This interface is used to represent the window containing a specific document.</p> +<p><em>Interface status...</em> <a class="external" href="http://www.mozilla.org/projects/embedding/apiReviewNotes.html#nsIDOMWindow">being reviewed</a></p> +<p><em>Interface definition:</em> nsIDOMWindow.idl</p> +<p><br> + <strong>nsIBaseWindow</strong></p> +<p>This interface provides access to various window operations.</p> +<p><em>Interface status...</em> <a class="external" href="http://www.mozilla.org/projects/embedding/apiReviewNotes.html#nsIBaseWindow">being reviewed</a></p> +<p><em>Interface definition:</em> nsIBaseWindow.idl</p> +<p><br> + <strong>nsIRequest</strong></p> +<p>This interface provides a means to control various operations.</p> +<p><em>Interface status...</em> <a class="external" href="http://www.mozilla.org/projects/embedding/apiReviewNotes.html#nsIRequest">being reviewed</a></p> +<p><em>Interface definition:</em> nsIRequest.idl</p> +<p><br> + <strong>nsIWebBrowser</strong></p> +<p>This is the primary interface to the WebBrowser component.</p> +<p><em>Interface status...</em> <a class="external" href="http://www.mozilla.org/projects/embedding/apiReviewNotes.html#nsIWebBrowser">being reviewed</a></p> +<p><em>Interface definition:</em> nsIWebBrowser.idl</p> +<p><br> + <strong>nsIWebBrowserSetup</strong></p> +<p>This interface is used to enable or disable various capabilities of a nsWebBrowser instance.</p> +<p><em>Interface status...</em> <a class="external" href="http://www.mozilla.org/projects/embedding/apiReviewNotes.html#nsIWebBrowserSetup">being reviewed</a></p> +<p><em>Interface definition:</em> nsIWebBrowserSetup.idl</p> +<p><br> + <strong>nsIWebBrowserChrome</strong></p> +<p>This interface provides access to the window containing an nsWebBrowser instance.</p> +<p><em>Interface status...</em> <a class="external" href="http://www.mozilla.org/projects/embedding/apiReviewNotes.html#nsIWebBrowserChrome">being reviewed</a></p> +<p><em>Interface definition:</em> nsIWebBrowserChrome.idl</p> +<p><br> + <strong>nsIWebNavigation</strong></p> +<p>This interface exposes the web navigation functionality of the nsWebBrowser component.</p> +<p><em>Interface status...</em> <a class="external" href="http://www.mozilla.org/projects/embedding/apiReviewNotes.html#nsIWebNavigation">being reviewed</a></p> +<p><em>Interface definition:</em> nsIWebNavigation.idl</p> +<p><br> + <strong>nsIWebBrowserPersist</strong></p> +<p>This interface exposes the save-as functionality of the nsWebBrowser component.</p> +<p><em>Interface status...</em> <a class="external" href="http://www.mozilla.org/projects/embedding/apiReviewNotes.html#nsIWebBrowserPersist">being reviewed</a></p> +<p><em>Interface definition:</em> nsIWebBrowserPersist.idl</p> +<p><br> + <strong>nsIWebBrowserPrint</strong></p> +<p>This interface allows printing of individual (or a collection of) DOM Windows within a nsWebBrowser component.</p> +<p><em>Interface status...</em> <a class="external" href="http://www.mozilla.org/projects/embedding/apiReviewNotes.html#nsIWebBrowserPrint">being reviewed</a></p> +<p><em>Interface definition:</em> nsIWebBrowserPrint.idl</p> +<p><br> + <strong>nsIWebBrowserFind</strong></p> +<p>This interface exposes the searching capabilities of the nsWebBrowser component.</p> +<p><em>Interface status...</em> none</p> +<p><em>Interface definition:</em> nsIWebBrowserFind.idl</p> +<p><br> + <strong>nsIWebBrowserFocus</strong></p> +<p>This interface provides access to the focus information of a nsWebBrowser instance.</p> +<p><em>Interface status...</em> <a class="external" href="http://www.mozilla.org/projects/embedding/apiReviewNotes.html#nsIWebBrowserFocus">being reviewed</a></p> +<p><em>Interface definition:</em> nsIWebBrowserFocus.idl</p> +<p><br> + <strong>nsIWebProgress</strong></p> +<p><em>Interface status...</em></p> +<p><em>Interface definition:</em></p> +<p><br> + <strong>nsIWebProgressListener</strong></p> +<p><em>Interface status...</em></p> +<p><em>Interface definition:</em></p> +<p><br> + <strong>nsIPrompt</strong></p> +<p><em>Interface status...</em></p> +<p><em>Interface definition:</em></p> +<p><br> + <strong>nsIPrefs</strong></p> +<p><em>Interface status...</em></p> +<p><em>Interface definition:</em></p> +<p><br> + <strong>{{ interface("nsIProfile") }}</strong></p> +<p>The Profile Manager creates and manages user profiles; each profile is essentially a complete configuration of the application, including preferences, installed extensions, and so forth.</p> +<p><br> + <strong>nsIDirectoryServiceProvider</strong></p> +<p><em>Interface status...</em></p> +<p><em>Interface definition:</em></p> +<p><br> + <strong>nsILocalFile</strong></p> +<p><em>Interface status...</em></p> +<p><em>Interface definition:</em></p> +<p><br> + <strong>nsIFile</strong></p> +<p><em>Interface status...</em></p> +<p><em>Interface definition:</em></p> +<p><br> + <strong>nsIClipboardCommands</strong></p> +<p><em>Interface status...</em></p> +<p><em>Interface definition:</em></p> +<p><br> + <strong>nsISelection</strong></p> +<p><em>Interface status...</em></p> +<p><em>Interface definition:</em></p> +<p><br> + <strong>nsIURILoader</strong></p> +<p><em>Interface status...</em></p> +<p><em>Interface definition:</em></p> +<p><br> + <strong>nsIURIContentListener</strong></p> +<p><em>Interface status...</em></p> +<p><em>Interface definition:</em></p> +<p> </p> +<h2 id="Defining_New_XPCOM_Components" name="Defining_New_XPCOM_Components">Defining New XPCOM Components</h2> +<div class="originaldocinfo"> + <h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> + <ul> + <li>Author(s): rpotts, alecf, oeschger at netscape.com</li> + <li>Last Updated Date: March 5, 2003</li> + <li>Copyright Information: Creative Commons</li> + </ul> +</div> +<p> </p> diff --git a/files/fr/mozilla/gecko/mozilla_embarqué/faq_de_mozilla_embarqué/embarquer_gecko/index.html b/files/fr/mozilla/gecko/mozilla_embarqué/faq_de_mozilla_embarqué/embarquer_gecko/index.html new file mode 100644 index 0000000000..e35036fbf4 --- /dev/null +++ b/files/fr/mozilla/gecko/mozilla_embarqué/faq_de_mozilla_embarqué/embarquer_gecko/index.html @@ -0,0 +1,133 @@ +--- +title: Embarquer Gecko +slug: Mozilla/Gecko/Mozilla_embarqué/FAQ_de_Mozilla_embarqué/Embarquer_Gecko +tags: + - FAQ_de_Mozilla_embarqué +translation_of: Mozilla/Gecko/Embedding_Mozilla/FAQ/Embedding_Gecko +--- +<div class="blockIndicator obsolete obsoleteHeader"><p><strong><span class="icon-only-inline" title="This is an obsolete API and is no longer guaranteed to work."><i class="icon-trash"> </i></span> Obsolète</strong><br>Cette fonctionnalité est obsolète. Bien qu'encore supportée par des navigateurs, son utilisation est découragée pour tout nouveau projet. Évitez de l'utiliser.</p></div> + +<div class="warning">Embedding of Gecko is no longer supported. If you currently embed Gecko, you should use an alternate solution, because you will not be able to pick up new security improvements. <strong>Do not use the techniques covered on this page; this material is retained for historical purposes only.</strong></div> + +<h2 id="Section_2__Embarquer_Gecko" name="Section_2_:_Embarquer_Gecko">Section 2 : Embarquer Gecko</h2> + +<h3 id="De_quels_fichiers_ai-je_besoin_pour_embarquer_.3F" name="De_quels_fichiers_ai-je_besoin_pour_embarquer_.3F">De quels fichiers ai-je besoin pour embarquer ?</h3> + +<p>Actuellement, vous devez télécharger et compiler toute l'arborescence des sources du navigateur Mozilla puis choisir les fichiers binaires que vous souhaitez embarquer dans votre application.<br> + Les<em>nightly builds</em> sont créées automatiquement depuis les manifests donc vous pouvez commencer à chercher de ce coté.</p> + +<p>Comment puis-je compiler les sources à embarquer ?</p> + +<p>Premièrement <a href="fr/Documentation_sur_la_compilation">compilez Mozilla</a>, puis saisissez :</p> + +<pre class="eval">cd mozilla/embedding/config +make +</pre> + +<p>Note : Si vous utilisez un <code>objdir</code>, placez-vous plutôt dans le répertoire <code>mozilla/<objdir>/embedding/config</code> puis lancez la compilation avec <code>make</code>.</p> + +<p>Un répertoire appelé <code>mozilla/dist/Embed</code> est créé, il contient les fichiers spécifiés par les manifests par défaut et chrome. Vous pouvez tester les compilations par défaut en exécutant les applications de test TestGtkEmbed sous Unix ou MFCEmbed sous Win32. Pour exécuter TestGtlEmbed sous Unix saisissez :</p> + +<pre class="eval">cd mozilla/dist/Embed +./run-mozilla.sh ./TestGtkEmbed +</pre> + +<h3 id="Comment_est_faite_la_distribution_embarqu.C3.A9e_.3F" name="Comment_est_faite_la_distribution_embarqu.C3.A9e_.3F">Comment est faite la distribution embarquée ?</h3> + +<p>Look in <code><a href="https://dxr.mozilla.org/mozilla-central/source/embedding/config/" rel="custom">embedding/config/</a></code> to see a the embedding build process. The basebrowser-win (or basebrowser-unix etc.) file determines which files need to be copied. The embed-jar.mn specifies what chrome is required.</p> + +<p>Note that this sample only contains a<em>typical</em> subset of files. You may wish to add or remove files from basebrowser-foo (where foo is win, unix or mach as appropriate) depending on the capabilities you need in your product, or supplement these files by writing your own client-foo file which will be read in addition to basebrowser-foo.</p> + +<p>For instance, you can remove the "necko2" library if you do not need FTP, but you will need to add the "appcomps" and "mork" libraries in order to use the Mozilla browser's global history implementation.</p> + +<p>The embedding distribution <a href="https://dxr.mozilla.org/mozilla-central/source/embedding/config/readme.html" rel="custom">readme file</a> provides more information.</p> + +<p><small>Todo: provide a more complete map of features <-> files</small></p> + +<h3 id="Pourquoi_ai-je_besoin_de_distribuer_des_fichiers_XPT_avec_mon_application_.3F" name="Pourquoi_ai-je_besoin_de_distribuer_des_fichiers_XPT_avec_mon_application_.3F">Pourquoi ai-je besoin de distribuer des fichiers XPT avec mon application ?</h3> + +<p>XPT files are XPCOM type libraries and contain binary definitions of interfaces used by cross-thread marshalling routines and JavaScript to call objects. In other words they are as vital as DLLs to ensure Gecko functions properly.</p> + +<p>XPT files can be concatenated together using the xpt_link tool to reduce clutter and improve startup performance. There is a special perl script for this purpose, that you can see <a href="https://dxr.mozilla.org/mozilla-central/source/xpinstall/packager/xptlink.pl" rel="custom">here</a>.</p> + +<h3 id="Comment_me_pr.C3.A9munir_des_changements_de_Gecko_.3F" name="Comment_me_pr.C3.A9munir_des_changements_de_Gecko_.3F">Comment me prémunir des changements de Gecko ?</h3> + +<p>If you want to be protected against changes in the Gecko, you should only use interfaces and API that are clearly marked FROZEN in their idl description. This query will find most of the frozen interfaces: <a href="http://mxr.mozilla.org/mozilla-central/search?string=us+FROZEN">Frozen Interface and APIs</a>. Interfaces are being reviewed and frozen all the time and cover most things embedders will want to do.</p> + +<p>You can still use unfrozen interfaces (hey it's open source and we can't stop you!) and even reach into the guts of the code but you do so at your own risk. Subsequent releases of Mozilla may well change these interfaces and your source and binary will break as a result.</p> + +<p>See the <a class="external" href="http://www.mozilla.org/projects/embedding/embedapiref/embedapiTOC.html">Embedding API Reference</a> for more information</p> + +<h3 id="Cela_veut-il_dire_que_mon_application_fonctionnera_avec_toutes_les_futures_versions_de_GRE.2FGecko.2FMozilla_.3F" name="Cela_veut-il_dire_que_mon_application_fonctionnera_avec_toutes_les_futures_versions_de_GRE.2FGecko.2FMozilla_.3F">Cela veut-il dire que mon application fonctionnera avec toutes les futures versions de GRE/Gecko/Mozilla ?</h3> + +<p>As long as you use frozen interfaces, the answer is: "Almost." Unfortunately vtable layout can vary from compiler to compiler. This mostly affects Linux compilers such as gcc which have changed their vtable layout more than once in the past few years. See the document on <a class="external" href="http://www.mozilla.org/projects/xpcom/binary-compatibility.html">binary compatibility</a>. <span class="comment">when ported too, this should be an internal link</span></p> + +<h3 id="Quelles_plate-formes_sont_support.C3.A9es_.3F" name="Quelles_plate-formes_sont_support.C3.A9es_.3F">Quelles plate-formes sont supportées ?</h3> + +<p>Short answer is anything Mozilla can run on, then Gecko can too. However, the embedding is concentrating on three primary platforms:</p> + +<ul> + <li>Windows (95? definitely 98 and later)</li> + <li>Linux (and probably most other X-windows based *nix variants)</li> + <li>Macintosh OS X. MacOS 8.6 and 9 support is now deprecated to the ports section of the Mozilla project and are not being actively worked on.</li> +</ul> + +<h3 id="L.27embarquement_supporte-t-il_des_protocoles_s.C3.A9curis.C3.A9s_comme_HTTPS_.3F" name="L.27embarquement_supporte-t-il_des_protocoles_s.C3.A9curis.C3.A9s_comme_HTTPS_.3F">L'embarquement supporte-t-il des protocoles sécurisés comme HTTPS ?</h3> + +<p>Yes, psm is supported in embedding.</p> + +<h3 id="Comment_mes_applications_communiquent-elles_avec_Gecko_.3F" name="Comment_mes_applications_communiquent-elles_avec_Gecko_.3F">Comment mes applications communiquent-elles avec Gecko ?</h3> + +<p>The Embedding API provides a set of interfaces and to control the embedded application, and another set of interfaces that the containing application must implement in order to receive asynchronous notifications from the embedded browser.</p> + +<p><small>Todo: insert jud's picture here?</small></p> + +<h3 id="Puis-je_embarquer_sans..." name="Puis-je_embarquer_sans...">Puis-je embarquer sans...</h3> + +<p>(Some of the more common questions)</p> + +<ul> + <li>FTP support? Yes.</li> + <li>HTTPS support? Yes.</li> + <li>Network support? No, maybe someday</li> + <li>XUL support? No, but someday yes.</li> + <li>JavaScript support? No, maybe someday.</li> + <li>CSS support? No, never.</li> + <li>DOM support? No, probably never.</li> + <li>XML support? No, probably never.</li> + <li>International Characters Sets? Yes.</li> + <li>Java support? Yes.</li> +</ul> + +<h3 id="Puis-je_embarquer_l.27.C3.A9diteur_HTML_de_Mozilla_.3F" name="Puis-je_embarquer_l.27.C3.A9diteur_HTML_de_Mozilla_.3F">Puis-je embarquer l'éditeur HTML de Mozilla ?</h3> + +<p>Sort of. The latest word is that you can embed an editor in a native app, and do command handling and updating via the command handling APIs. There is some lacking functionality (e.g. controlling editor types, inserting and extracting HTML). In addition, the command handling APIs are soon going to change, when Mike Judge lands a long-standing patch (which missed the 1.0 change, and bas been delayed way too long).</p> + +<p>Documentation is lacking, mostly because of pending API changes. Check out the <a class="external" href="http://www.mozilla.org/editor/editor-embedding.html">Embedding Editor</a> page for more info.</p> + +<h3 id="Quel_toolkit_de_widget_peut_utiliser_Mozilla_.3F" name="Quel_toolkit_de_widget_peut_utiliser_Mozilla_.3F">Quel toolkit de widget peut utiliser Mozilla ?</h3> + +<p>Mozilla makes its own cross-platform widgets for HTML forms, and does not use a 3rd-party cross platform toolkit, nor the native widgets that a platform provides. The widgets are drawn using GFX, Mozilla's abstraction of a drawing toolkit. They are styled with CSS, including minor per-platform tweaks to allow them to look like the native platform's native widgets. This allows full CSS and DOM support of all HTML widgets across all platforms, without requiring each platform to separately support every part of CSS and DOM.</p> + +<p>There have been a number of requests for native widget support but at this time there are no plans to support a second widget set beyond the cross-platform widgets.</p> + +<p>In the future, widgets may be defined with XBL.</p> + +<h3 id="Mozilla_embarqu.C3.A9_supporte-t-il_Java_.3F" name="Mozilla_embarqu.C3.A9_supporte-t-il_Java_.3F">Mozilla embarqué supporte-t-il Java ?</h3> + +<p>We provide Java support through the OJI plugin API. The Java plugin from Sun takes ~7Mb of disk space (Linux). If you want Java support you should edit the basebrowser-win / basebrowser-unix etc. file and uncomment the OJI section or copy those files manually after an embedding dist has been created.</p> + +<h3 id="Puis-je_embarquer_Mozilla_dans_n.27importe_quel_autre_cas_.3F" name="Puis-je_embarquer_Mozilla_dans_n.27importe_quel_autre_cas_.3F">Puis-je embarquer Mozilla dans n'importe quel autre cas ?</h3> + +<p>Aside from programming direct to the embedding API you may also embed Mozilla:</p> + +<ul> + <li>In GTK applications using the <a class="external" href="http://www.mozilla.org/unix/gtk-embedding.html">Gtk Mozilla Embedding Widget</a>.</li> + <li>In Win32 ActiveX applications using the <a class="external" href="http://www.iol.ie/%7Elocka/mozilla/mozilla.htm">Mozilla ActiveX Control</a>.</li> + <li>In Mac applications using <a href="https://dxr.mozilla.org/mozilla-central/source/embedding/browser/powerplant/" rel="custom">PPEmbed</a>.</li> + <li>In a Java Application using <a class="external" href="http://www.mozilla.org/projects/blackwood/webclient/">Webclient</a>.</li> +</ul> + +<p><span class="comment">Interwiki Language Links</span></p> + +<div class="noinclude"> </div> diff --git a/files/fr/mozilla/gecko/mozilla_embarqué/faq_de_mozilla_embarqué/introduction_à_gecko_et_à_l'embarqué/index.html b/files/fr/mozilla/gecko/mozilla_embarqué/faq_de_mozilla_embarqué/introduction_à_gecko_et_à_l'embarqué/index.html new file mode 100644 index 0000000000..1836cab0bb --- /dev/null +++ b/files/fr/mozilla/gecko/mozilla_embarqué/faq_de_mozilla_embarqué/introduction_à_gecko_et_à_l'embarqué/index.html @@ -0,0 +1,53 @@ +--- +title: Introduction à Gecko et à l'embarqué +slug: >- + Mozilla/Gecko/Mozilla_embarqué/FAQ_de_Mozilla_embarqué/Introduction_à_Gecko_et_à_l'embarqué +tags: + - FAQ_de_Mozilla_embarqué +translation_of: Mozilla/Gecko/Embedding_Mozilla/FAQ/How_do_I... +--- +<p> </p> +<h2 id="Introduction_.C3.A0_Gecko_et_.C3.A0_l.27embarquement" name="Introduction_.C3.A0_Gecko_et_.C3.A0_l.27embarquement">Introduction à Gecko et à l'embarquement</h2> +<h3 id="Qu.27est-ce_que_Gecko_.3F" name="Qu.27est-ce_que_Gecko_.3F">Qu'est-ce que Gecko ?</h3> +<p>Gecko est le moteur interne du navigateur, ce qui inclut networking, un parser, un modèle de contenu, chrome et les autres technologies sur lesquelles Mozilla et les autres applications sont basées. En d'autres termes, tout ce qui n'est pas spécifique à une application.</p> +<p>La FAQ de Gecko est légèrement obsolète <a class="external" href="http://www.mozilla.org/newlayout/faq.html">FAQ</a>.</p> +<h3 id="Qu.27est-ce_que_Mozilla_.3F" name="Qu.27est-ce_que_Mozilla_.3F">Qu'est-ce que Mozilla ?</h3> +<p>Mozilla est un navigateur web open-source multi plates-formes, un éditeur et une application de messagerie / newsgroup créé sur Gecko.</p> +<h3 id="Qu.27est-ce_que_le_GRE_.3F" name="Qu.27est-ce_que_le_GRE_.3F">Qu'est-ce que le GRE ?</h3> +<p>Le GRE (formellement le MRE) qui est l'acronime de <a href="fr/GRE">Gecko Runtime Environment</a>, est un support d'exécution partagé que toutes les applications peuvent utiliser. Il est maintenant développé comme un projet indépendant connu sous le nom de <a href="fr/XULRunner">XULRunner</a>.</p> +<h3 id="Qu.27est-ce_que_XPCOM_.3F" name="Qu.27est-ce_que_XPCOM_.3F">Qu'est-ce que XPCOM ?</h3> +<p>XPCOM est un + <i> + modèle objet de composants</i> + (semblable à COM/DCOM de MS Windows mais conçut pour être portable sur plusieurs plates-formes) utilisé pour unifier la création, le contrôle, et la suppression d'objets et d'autres données à travers Mozilla. Le coeur de XPCOM est l'interface + <i> + nsISupports</i> + , qui offre des services de comptage des références et d'introspection (possibilité d'interroger les objets afin de se renseigner sur leurs capacités). Tout les objets XPCOM implémentent l'interface + <i> + nsISupports</i> + , en plus de toutes les interfaces spécifiques qui lui sont nécessaire. En fin de compte, XPCOM fournit une couche de services indépendante du language appelé + <i> + XPConnect</i> + qui permet l'implémentation d'objets dans tout language supporté. Grâce à + <i> + XPConnect</i> + , ces objets peuvent aussi être appelés à partir de n'importe lequel de ces languages.</p> +<p>On peut trouver plus d'informations <a class="external" href="http://www.mozilla.org/projects/xpcom/">ici</a>.</p> +<h3 id="Que_signifie_embarquer_Gecko_.3F" name="Que_signifie_embarquer_Gecko_.3F">Que signifie embarquer Gecko ?</h3> +<p>Gecko autorise des developpeurs tiers à utiliser la même technologie que Mozilla. Cela signifie que vous pouvez tirer partie, dans une application tierce, des services d'un navigateur web, ouvrir des canaux de communications et faire transiter des flux de données à travers le service réseau, le + <i> + Modèle Objet de Document</i> + (NdT: en anglais DOM, + <i> + Document Object Model</i> + ) et plus encore. Vous pouvez même bâtir entièrement une nouvelle application en utilisant Gecko.</p> +<h3 id="Quels_sont_les_termes_de_licence_pour_embarquer_Gecko_.3F" name="Quels_sont_les_termes_de_licence_pour_embarquer_Gecko_.3F">Quels sont les termes de licence pour embarquer Gecko ?</h3> +<p>Les mêmes que pour le reste de Mozilla. Voir la <a class="external" href="http://www.mozilla.org/MPL/">page du MPL</a> pour plus d'informations.</p> +<h3 id="Existe-t.27il_un_SDK_.3F" name="Existe-t.27il_un_SDK_.3F">Existe-t'il un SDK ?</h3> +<p>Nous travaillons lentement sur une SDK, gelant et documentant les interfaces et retouchant le processus de construction. Pour le moment nous vous recommandons de <a class="external" href="http://developer.mozilla.org/fr/docs/T%C3%A9l%C3%A9chargement_du_code_source_de_Mozilla">télécharger le code source</a> puis de le <a class="external" href="http://developer.mozilla.org/fr/docs/Documentation_sur_la_compilation">compiler</a>.</p> +<p>Des compilations nocturnes du SDK pour la plateforme Windows 32bits peuvent être disponibles <a class="link-ftp" href="ftp://ftp.mozilla.org/pub/mozilla.org/mozilla/nightly/latest-trunk/gecko-sdk-i586-pc-msvc.zip">ici</a>.</p> +<h3 id="Quelle_est_la_derni.C3.A8re_version_.3F_Quelle_version_utiliser_.3F" name="Quelle_est_la_derni.C3.A8re_version_.3F_Quelle_version_utiliser_.3F">Quelle est la dernière version ? Quelle version utiliser ?</h3> +<p>Les compilations embarquées et les source tarballs sont produites la nuit et peuvent être obtenues <a class="link-ftp" href="ftp://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/latest-trunk/">ici</a>. Si vous privilégiez la stabilité, les compilations de la branche 1.7.x de Mozilla sont vivement recommendées.</p> +<h3 id="Qui_utilise_d.C3.A9j.C3.A0_gecko_.3F" name="Qui_utilise_d.C3.A9j.C3.A0_gecko_.3F">Qui utilise déjà gecko ?</h3> +<p>Voir <a class="external" href="http://www.mozilla.org/projects/embedding/examples/">ici</a> la liste des logiciels embarquant Gecko.</p> +<p><span class="comment">Interwiki Language Links</span></p> diff --git a/files/fr/mozilla/gecko/mozilla_embarqué/index.html b/files/fr/mozilla/gecko/mozilla_embarqué/index.html new file mode 100644 index 0000000000..b8a2b5bb4c --- /dev/null +++ b/files/fr/mozilla/gecko/mozilla_embarqué/index.html @@ -0,0 +1,59 @@ +--- +title: Mozilla embarqué +slug: Mozilla/Gecko/Mozilla_embarqué +tags: + - Mozilla_embarqué +translation_of: Mozilla/Gecko/Embedding_Mozilla +--- +<div> +<p><a href="/fr/Gecko" title="fr/Gecko">Gecko</a> permet aux développeurs d'applications tierces de pouvoir bénéficier de la même technologie que celle présente dans Mozilla. Il est possible d'intégrer un navigateur Web à l'intérieur d'une autre application, d'ouvrir des canaux et de parcourir des flux de données à travers le réseau, de manipuler le <a href="/fr/DOM" title="fr/DOM">DOM</a> et ainsi de suite. Des applications entières peuvent être crées en s'appuyant sur Gecko.</p> +</div> + +<table class="topicpage-table"> + <tbody> + <tr> + <td> + <h2 class="Documentation" id="Documentation"><a href="/Special:Tags?tag=Mozilla_embarqué&language=fr" title="Special:Tags?tag=Mozilla_embarqué&language=fr">Documentation</a></h2> + + <dl> + <dt><a href="/fr/docs/FAQ_de_Mozilla_embarqué" title="fr/FAQ_de_Mozilla_embarqué">FAQ de Mozilla embarqué</a></dt> + <dd><small>Une Foire Aux Questions très complète concernant Mozilla embarqué.</small></dd> + </dl> + + <dl> + <dt><a href="/fr/docs/Gecko/Gecko_Embedding_Basics" title="fr/Les_bases_de_Gecko_embarqué">Les bases de Gecko embarqué</a></dt> + <dd><small>Une introduction à l'incorporation du moteur de rendu Gecko dans une application (à traduire de <a href="/en/Gecko_Embedding_Basics">en:Gecko Embedding Basics</a>).</small></dd> + </dl> + + <dl> + <dt><a href="/fr/docs/Intégration_de_l'éditeur" title="fr/Intégration_de_l'éditeur">Intégration de l'éditeur</a></dt> + <dd><small>Ce document détaille la situation actuelle de l'éditeur dans ce domaine, les problèmes dans l'implémentation existante, certains scénarios possibles d'intégration de l'éditeur qui doivent être pris en compte, et une solution embarquée qui les intègrera</small>.</dd> + </dl> + + <dl> + <dt><a href="https://developer.mozilla.org/fr/docs/Gecko/Mozilla_embarqué/Roll_your_own_browser" title="fr/Construisez_votre_propre_navigateur_-_Comment_embarquer_Mozilla">Construisez votre propre navigateur - Comment embarquer Mozilla</a></dt> + <dd><small>Une introduction rapide à Mozilla embarqué (à traduire de <a href="/en/Roll_your_own_browser_-_An_embedding_HowTo">en:Roll your own browser - An embedding HowTo</a>.</small></dd> + </dl> + + <p><span class="alllinks"><a href="/Special:Tags?tag=Mozilla_embarqué&language=fr" title="Special:Tags?tag=Mozilla_embarqué&language=fr">Tous les articles…</a></span></p> + </td> + <td> + <h2 class="Community" id="Communauté">Communauté</h2> + + <ul> + <li>Voir les forums de Mozilla…</li> + </ul> + + <p>{{ DiscussionList("dev-embedding", "mozilla.dev.embedding") }}</p> + + <h2 class="Related_Topics" id="Sujets_liés">Sujets liés</h2> + + <dl> + <dd><a href="/fr/Gecko" title="fr/Gecko">Gecko</a>, <a href="/fr/XPCOM" title="fr/XPCOM">XPCOM</a></dd> + </dl> + </td> + </tr> + </tbody> +</table> + +<p> </p> diff --git a/files/fr/mozilla/gecko/mozilla_embarqué/intégration_éditeur/index.html b/files/fr/mozilla/gecko/mozilla_embarqué/intégration_éditeur/index.html new file mode 100644 index 0000000000..4e6e8c8281 --- /dev/null +++ b/files/fr/mozilla/gecko/mozilla_embarqué/intégration_éditeur/index.html @@ -0,0 +1,133 @@ +--- +title: Intégration de l'éditeur +slug: Mozilla/Gecko/Mozilla_embarqué/Intégration_éditeur +tags: + - Midas + - Mozilla_embarqué +translation_of: Mozilla/Gecko/Embedding_Mozilla/Embedding_the_editor +--- +<h3 id="Introduction" name="Introduction">Introduction</h3> + +<p>Ce document présente les possibilités actuelles d'intégration d'un éditeur, les problèmes causés par l'intégration existante, quelques scénarios d'intégration possibles pour s'en sortir, et une solution d'intégration pour les réaliser. Pour finir, la solution retenue sera décrite étape par étape.</p> + +<h3 id="Mises_en_.C5.93uvre_possibles_de_l.27int.C3.A9gration" name="Mises_en_.C5.93uvre_possibles_de_l.27int.C3.A9gration">Mises en œuvre possibles de l'intégration</h3> + +<p>Ici sont décrits des scénarios d'intégration nécessaires pour faire fonctionner un éditeur. Notez que j'utilise le terme de « Compositeur » pour désigner une interface de composition au format HTML qui fait de l'édition de texte enrichi et « Éditeur » pour un éditeur en texte brut (aussi bien que pour la technologie sous-jacente du compositeur). <code><htmlarea></code> est vu comme une formule pour désigner un objet texte contenant du texte enrichi, cela ne veut pas dire pour autant que cette balise sera supportée dans les versions suivantes de Mozilla.</p> + +<h4 id="Compositeur_int.C3.A9gr.C3.A9_dans_une_application_XUL" name="Compositeur_int.C3.A9gr.C3.A9_dans_une_application_XUL">Compositeur intégré dans une application XUL</h4> + +<p>Les développeurs ont besoin d'intégrer des compositeurs dans leurs applications XUL en utilisant la balise <code><editor></code>, comme cela se fait aujourd'hui. Ils devraient avoir le moins possible de travail à faire pour obtenir les fonctions basiques d'édition, avoir autant d'<code><editor></code>s par fenêtre qu'ils le souhaitent et pouvoir contrôler si ces <code><editor></code>s sont en mode HTML ou en mode texte.</p> + +<h4 id="Compositeur_int.C3.A9gr.C3.A9_dans_une_application_native" name="Compositeur_int.C3.A9gr.C3.A9_dans_une_application_native">Compositeur intégré dans une application native</h4> + +<p>Dans ce cas de figure, l'<code><iframe></code> dans laquelle fonctionne l'éditeur est directement intégrée dans l'application native. Cela revient à intégrer un navigateur via nsIWebBrowser, mais en obtenant, à la place, un document éditable. L'interface du compositeur (barres d'outils, etc.) doit être implémentée à partir des éléments d'interface graphique présents dans le conteneur ou en utilisant du XUL. Cette interface doit être configurable, avec notamment des barres d'outils flottantes déplaçables (dockable ?), une même barre d'outils pour plusieurs objets compositeur, ou une pour chaque.</p> + +<p>Ce type d'intégration requiert que le code du compositeur fonctionne quelle que soit l'interface utilisateur (IU). La communication entre le noyau de l'éditeur et l'interface utilisateur doit pouvoir passer par une ou plusieurs interfaces qui isolent l'éditeur de l'application hôte. (L'<code>nsEditorShell</code> existant fait des suppositions sur l'hébergement de document XUL, qui doivent être contredites.)</p> + +<h4 id="Compositeur_int.C3.A9gr.C3.A9_dans_une_page_web_.28.3Chtmlarea.3E.29" name="Compositeur_int.C3.A9gr.C3.A9_dans_une_page_web_.28.3Chtmlarea.3E.29">Compositeur intégré dans une page web (<code><htmlarea></code>)</h4> + +<p>IE 5 supporte l'<a class="external" href="http://www.siteexperts.com/ie5/htmlarea/page1.asp">élément <code><HTMLArea></code></a> ; si Mozilla travaille à supporter quelque chose de similaire, l'éditeur devra être intégrable dans la mesure du possible. Il est probable qu'on utilise <a class="external" href="http://www.mozilla.org/projects/xbl/xbl.html">XBL</a> pour implémenter ce type d'objet, comme c'est prévu pour d'autres types de contrôles.</p> + +<p>Dans le cas de l'intégration du compositeur dans une application native, il est donc ici nécessaire de rendre l'interface utilisateur configurable, de façon que l'on puisse aussi bien l'afficher comme une barre d'outils au dessus de <code><htmlarea></code>, comme une fenêtre flottante, ou comme une barre d'outil de haut-niveau (top-level).</p> + +<h3 id="Probl.C3.A8mes_connus" name="Probl.C3.A8mes_connus">Problèmes connus</h3> + +<p>L'architecture du compositeur existant a été créée alors que d'autres parties de Mozilla étaient encore en cours de développement. Il en résulte de nombreux points faibles et anachronismes. Cette section décrit ses défauts majeurs.</p> + +<h4 id="Probl.C3.A8me_d.27appartenance_de_l.27.C3.A9diteur" name="Probl.C3.A8me_d.27appartenance_de_l.27.C3.A9diteur">Problème d'appartenance de l'éditeur</h4> + +<p>L'éditeur d'une fenêtre compositrice appartient au <code><a class="external" href="http://lxr.mozilla.org/seamonkey/source/editor/base/nsEditorShell.cpp">nsEditorShell</a></code>, qui à son tour est créé, dirigé et détruit par <code><a class="external" href="http://lxr.mozilla.org/seamonkey/source/layout/xul/base/src/nsEditorBoxObject.cpp">nsEditorBoxObject</a></code>. L'objet box est une structure de présentation qui appartient aux noeuds de contenu et survit à la destruction/reconstitution de la frame. L'objet box a également une référence vers le docShell de la frame éditrice. XBL créé un <code>nsEditorBoxObject</code> pour chaque balise <code><editor></code>, et permet à Javascript d'accéder aux propriétés de cet objet box (tel que le <code>nsIEditorShell</code>). La balise <code><editor></code> est tout simplement une <code><iframe></code> dans laquelle l'éditeur est créé. Dans les autres aspects, il se comporte comme une <code><iframe></code> XUL.</p> + +<p>Le problème avec ce modèle d'appartenance est qu'il ne peut y avoir qu'un éditeur par balise <code><editor></code>, alors que le document chargé dans l'<code><iframe></code> peut très bien contenir de multiples <code><iframe></code>s (dans le cas d'un document frameset ou dans un document contenant lui-même un <code><html:iframe></code>). Aujourd'hui, le compositeur ne fonctionne pas très bien avec ce types de document.</p> + +<h4 id="Limitation_d.27un_.C3.A9diteur_par_fen.C3.AAtre" name="Limitation_d.27un_.C3.A9diteur_par_fen.C3.AAtre">Limitation d'un éditeur par fenêtre</h4> + +<p>Le compositeur construit sur une architecture XUL/C++ s'est développé sur le présupposé qu'une seule balise <code><editor></code> par fenêtre suffirait. Lors de la construction de la fenêtre, nous prenons l'editorShell de l'élément <code><editor></code> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/editor/ui/composer/content/editor.js#169">que l'on met dans <code>window.editorShell</code></a>. A partir de là, beaucoup de Javascript dans editor.js, ComposerCommands.js et les différents fichiés JS de dialogue s'assurent de pouvoir atteindre le seul bon éditeur via <code>window.editorShell</code>. Ce présupposé manquait de clairevoyance et doit être corrigé.</p> + +<h4 id="L.27.C3.A9diteur_suppose_une_structure_de_document_XUL" name="L.27.C3.A9diteur_suppose_une_structure_de_document_XUL">L'éditeur suppose une structure de document XUL</h4> + +<p>Du code C++ et JS présent dans l'éditeur suppose que celui-ci se trouve dans un document XUL et qu'il y ait des nœuds du document XUL en dehors, dont les attributs peuvent être récupérés pour changer l'état de l'interface utilisateur (par exemple le style des boutons). Cela doit être changé pour permettre aux conteneurs d'utiliser leurs propres apparences, probablement natives. L'éditeur doit pouvoir faire des appels à travers une ou plusieurs interfaces quand il communique avec l'interface utilisateur.</p> + +<h3 id="Objectifs_de_l.27int.C3.A9gration" name="Objectifs_de_l.27int.C3.A9gration">Objectifs de l'intégration</h3> + +<p>L'éditeur requiert des changements de conception de façon à ce que les applications intégrées soient fonctionnelles. Ces changements doivent nécessairement prendre en compte les problèmes existants. Brièvement, les objectifs de l'intégration sont :</p> + +<ul> + <li><code><editor></code> devrait vous offrir un éditeur fonctionnel dans une application XUL</li> + <li>possibilité d'avoir plusieurs <code><editor></code>s par fenêtre XUL</li> + <li>possibilité d'intégrer une frame éditable dans une application native</li> + <li>Les conteneurs devraient être capables de fournir leur propre interface (barre d'outils, etc).</li> +</ul> + +<p>Atteindre ces objectifs doit également permettre de résoudre les problèmes suivants, liés au compositeur :</p> + +<ul> + <li>il doit pouvoir traiter les documents de type frameset</li> + <li>il doit pouvoir traiter les documents contenant des <code><iframe></code>s</li> + <li>il ne doit pas dépendre d'une structure de document XUL donnée</li> +</ul> + +<h3 id="Solutions_propos.C3.A9es" name="Solutions_propos.C3.A9es">Solutions proposées</h3> + +<h4 id="R.C3.A9gler_les_probl.C3.A8mes_d.27appartenance_de_l.27.C3.A9diteur" name="R.C3.A9gler_les_probl.C3.A8mes_d.27appartenance_de_l.27.C3.A9diteur">Régler les problèmes d'appartenance de l'éditeur</h4> + +<p>Comme décrit plus haut, les liens d'appartenance (racines) de l'éditeur doivent être changés de façon à ce qu'un éditeur se trouve au plus haut niveau du nsDocShell, plutôt que d'être accroché à l'objet <code>nsEditorBoxObject</code>. Il doit y avoir un docShell par <code><iframe></code> éditable. Cela implique :</p> + +<ul> + <li>Faire une nouvelle interface : <strong><code>nsIEditorFrame</code></strong> qui est exécutée par <code>nsDocShell</code> ou une classe liée. On doit pouvoir faire appel à l'une d'entres elle à partir de <code>nsIDocShell</code>, si l'appel réussit, il indique que la frame est éditable. <code>nsIEditorFrame</code> doit contenir des méthodes pour obtenir la session d'édition et faire certains traitements génériques liés à l'éditeur (probablement commun à l'édition HTML et texte brut). Une partie de <code>nsIEditorShell</code> devraient probablement passer dans cette interface. (Cela devrait être analogue à l'interface [<a class="external" href="http://lxr.mozilla.org/seamonkey/source/docshell/base/nsIWebNavigation.idl" rel="freelink">http://lxr.mozilla.org/seamonkey/sou...Navigation.idl</a> <code>nsIWebNavigation</code> utilisée par le navigateur.)</li> +</ul> + +<ul> + <li>Quand on aura un éditeur par docShell, charger un document frameset ou une page avec une iframe dans le compositeur instanciera plus d'un éditeur de bas-niveau. Nous avons besoin d'un concept de "session d'édition" - pour avoir un seul document de haut-niveau éditable qui puisse incorporer plusieurs éditeurs. Cette interface s'appellerait <strong><code>nsI????</code></strong>. L'IU de haut-niveau et le code intégré doivent communiquer avec cette interface de session d'édition sans connaitre les éditeurs sous-jacents. La session d'édition enverra les commandes aux éditeurs individuels en fonction du focus et gérera l' annuler/rétablir entre eux.</li> + <li><em>La solution alternative</em> : Plutôt que d'avoir de multiples éditeurs, dans ce scénario on pourrait avoir un seul éditeur capable d'enregistrer et de restorer un état, de sorte qu'il puisse être transmis entre les différents sous-documents édités. Cette état doit inclure le document, la pile d'actions 'annuler' et l'état de la saisie (? typing state). La mise en place de la session d'édition permettra la permutation de l'état de l'éditeur en fonction du changement de focus ect.</li> +</ul> + +<h4 id="Plus_d.27un_.C3.A9diteur_par_fen.C3.AAtre" name="Plus_d.27un_.C3.A9diteur_par_fen.C3.AAtre">Plus d'un éditeur par fenêtre</h4> + +<p>Les clients compositeurs basés sur Mozilla supposent tous qu'il n'y a qu'une balise <code><editor></code> par fenêtre. Ils ont tous besoin de fonctionner avec plusieurs éditeurs. Corriger cela nécessite des modifications JS de cette ordre :</p> + +<ul> + <li>Standardiser la façon dont les clients obtiennent l'editorShell (ou son remplacant, travail post-intégration) à partir de la fenêtre.</li> + <li>S'assurer que les changements de focus entre éditeurs mettent bien à jour la notion de session courante de la fenêtre. Si on continue à utiliser <code>window.editorShell</code>, il doit être mis à jour pour supporter les changements de focus.</li> + <li>S'assurer que chaque éditeur est correctement construit lors de la création de la fenêtre et supprimé lors de destruction de la fenêtre.</li> + <li>S'assurer que les tests de fermeture de fenêtre (par exemple appelé <code>window.tryToClose</code>) consultent convenablement l'état de chaques éditeurs.</li> +</ul> + +<h4 id="Isoler_l.27.C3.A9diteur_de_l.27interface" name="Isoler_l.27.C3.A9diteur_de_l.27interface">Isoler l'éditeur de l'interface</h4> + +<p>Le compositeur doit ne rien connaitre de l'IU qui le contrôle. Le plan est d'isoler le compositeur de l'IU via une nouvelle interface que le conteneur implémente. N'importe quel IU qui est aujourd'hui créée par le compositeur doit passer par cette interface.</p> + +<ul> + <li>Utiliser une nouvelle interface, <code>nsIEditorUserInterface</code> pour diffuser la communication entre l'éditeur et l'IU. Un conteneur pourrait avoir besoin de l'implémenter pour avoir des menus et barres d'outils natives. Dans le compositeur, on aurait une implémentation en JS qui communique avec les commandes existantes et met à jour les noeuds XUL.</li> + <li>Corriger le code JS et C++ qui s'adresse explicitement à des éléments dans le document XUL pour passer par <code>nsIEditorUserInterface</code>.</li> +</ul> + +<h3 id="Les_.C3.A9tapes_de_l.27int.C3.A9gration" name="Les_.C3.A9tapes_de_l.27int.C3.A9gration">Les étapes de l'intégration</h3> + +<p>Cette section tente de préparer un plan d'implémentation, dans le but de garder tout en état de marche étape après étape (? as the various steps are taken). Certaines de ces tâches peuvent être faite simultanément.</p> + +<ol> + <li>Décider comment implémenter <a href="#Probl.C3.A8me_d.27appartenance_de_l.27.C3.A9diteur">le support d'une session édition muti-éditeur</a></li> + <li>Éliminer <a href="#Isol.C3.A9_l.27.C3.A9diteur_de_l.27interface">les interdépendances spécifiques entre le compositeur et le document XUL</a>, via <code>nsIEditorUserInterface</code></li> + <li>Créer <a href="#Plus_d.27un_.C3.A9diteur_par_fen.C3.AAtre">un goulet d'étranglement pour communiquer avec l'éditeur qui a le focus; s'assurer que les changements de focus mettent bien à jour l'état</a></li> + <li>Faire du docShell,<a href="#R.C3.A9gler_les_probl.C3.A8mes_d.27appartenance_de_l.27.C3.A9diteur">le propriétaire de l'éditeur, créant <code>nsIEditorFrame</code></a></li> + <li>Créer l'API de la session d'édition qui s'occupera des collections d'éditeurs (ou rendre l'éditeur refocusable)</li> +</ol> + +<h3 id="Questions_ouvertes" name="Questions_ouvertes">Questions ouvertes</h3> + +<h4 id="Ou_doit_se_trouver_la_logique_d.27ouverture_et_enregistrement_de_fichier_.3F" name="Ou_doit_se_trouver_la_logique_d.27ouverture_et_enregistrement_de_fichier_.3F">Ou doit se trouver la logique d'ouverture et enregistrement de fichier ?</h4> + +<p>Il semble que certains conteneurs voudront composer leur logique d'ouverture et enregistrement de fichier, d'autres non. Ou devrait se trouver cette logique ? Peut-elle être en JavaScript ? Bien sur, un conteneur doit pouvoir utiliser ses propres boîtes de dialogue Ouvrir et Enregistrer et communiquer avec le compositeur pour coordonner le processus d'ouverture et enregistrement.</p> + +<h5 id="R.C3.A9ponse_possible" name="R.C3.A9ponse_possible">Réponse possible</h5> + +<p>Le conteneur fournit les boîtes de dialogue Ouvrir et Enregistrer s'il le veut. Dans le compositeur, on peut adopter (? pose) ces boîtes de dialogue à partir de JS (? certains problèmes liés à <code>nsIFile</code> ont été résolu - once some <code>nsIFile</code> problems have been solved).</p> + +<h4 id="Toute_l.27IU_du_compositeur_doit-elle_.C3.AAtre_rempla.C3.A7able_.3F" name="Toute_l.27IU_du_compositeur_doit-elle_.C3.AAtre_rempla.C3.A7able_.3F">Toute l'IU du compositeur doit-elle être remplaçable ?</h4> + +<p>Une immense partie de l'IU du compositeur se trouve dans les différentes boîtes de dialogue pour l'édition des tableaux, liens, images etc. Doit-on donner la possibilité à un conteneur de remplacer tout cela par une IU native ?</p> + +<h5 id="R.C3.A9ponse_possible_2" name="R.C3.A9ponse_possible_2">Réponse possible</h5> + +<p>Les boîtes de dialogue utilisent les API de l'éditeur disponible pour obtenir et affecter les données, donc elles peuvent faire tout leur travail en passant par les API existantes. Si un intégrateur veut une IU entièrement native, il aura à coder ses propres boîtes de dialogue et logiques associées, mais les API devraient toujours leurs être accessibles. Il semble que ce ne soit pas une bonne solution.</p> diff --git a/files/fr/mozilla/gecko/sdk_gecko/index.html b/files/fr/mozilla/gecko/sdk_gecko/index.html new file mode 100644 index 0000000000..306fb0590f --- /dev/null +++ b/files/fr/mozilla/gecko/sdk_gecko/index.html @@ -0,0 +1,61 @@ +--- +title: SDK Gecko +slug: Mozilla/Gecko/SDK_Gecko +tags: + - Développement_de_Mozilla + - Extensions + - Gecko +translation_of: Mozilla/Gecko/Gecko_SDK +--- +<p> +</p> +<h2 id="Aper.C3.A7u" name="Aper.C3.A7u"> Aperçu </h2> +<p>Le SDK Gecko est un ensemble de fichiers <a href="fr/XPIDL">XPIDL</a>, d'entêtes et d'outils pour développer des composants <a href="fr/XPCOM">XPCOM</a> pouvant à leur tour être accéder depuis <a href="fr/XUL">XUL</a> grâce à <a href="fr/JavaScript">JavaScript</a>. +</p><p>Notez que le développement de tels composants ne nécessite pas que vous possédiez la totalité des sources, par exemple de Firefox, puisque vous n'accédez pas à l'interface utilisateur depuis un composant. Comme le composant contient des fonctions basiques, il doit pouvoir fonctionner avec chaque application de la plateforme Mozilla. Il n'y a donc aucune raison de se baser sur une application particulière pour créer une fonctionnalité générique. C'est la raison pour laquelle a été conçu le SDK Gecko. +</p><p>Il ne faut pas confondre le SDK Gecko avec <a href="fr/XULRunner">XULRunner</a>. Le SDK Gecko est une collection de fichiers d'entêtes et d'outils utilisée pour développer des composants XPCOM généraux afin d'ajouter des fonctionnalités à une plateforme existante, alors que XULRunner peut servir de support à l'éxécution d'applications autonomes ou embarquées basées sur la technologie Mozilla. +</p> +<h2 id="Obtenir_le_SDK" name="Obtenir_le_SDK"> Obtenir le SDK </h2> +<p><b>Notez</b> qu'il n'est pas nécessaire de re-télécharger ou de re-compiler le SDK Gecko à chaque mise à jour de sécurité de Mozilla puisque le SDK Gecko ne subit pas de modifications lors de ces mises à jour. +</p> +<h3 id="T.C3.A9l.C3.A9chargement" name="T.C3.A9l.C3.A9chargement"> Téléchargement </h3> +<p>Lorsque vous téléchargez le SDK Gecko, vous devez choisir la version correspondant à la plus ancienne version de Mozilla que vous ciblez. Autrement dit, vous ne devez pas télécharger le SDK Gecko 1.7 si vous souhaitez utiliser votre composant avec Mozilla 1.6. C'est un point important car la compatibilité binaire n'est assurée qu'avec les versions futures du moteur de rendu Gecko. Pour ce tutoriel, nous utiliserons la version 1.7 du SDK Gecko, ainsi notre composant sera compatible avec Mozilla 1.7 (et ses produits dérivés tels que Firefox 1.0 ou Netscape 7.2). +</p> +<table class="standard-table"> +<tbody><tr> +<th>Lien de téléchargement +</th><th>Gecko 1.7 (Firefox 1.0) +</th><th>Gecko 1.8 (Firefox 1.5 et 2.0) +</th></tr><tr> +<th>Windows +</th><td><a class="external" href="http://releases.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.7/gecko-sdk-i586-pc-msvc-1.7.zip">Download</a> +</td><td><a class="external" href="http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/1.8.0.4/sdk/gecko-sdk-win32-msvc-1.8.0.4.zip">Download</a> +</td></tr><tr> +<th>Mac +</th><td>N/A +</td><td><a class="external" href="http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/1.8.0.4/sdk/gecko-sdk-mac-1.8.0.4.zip">Download</a> +</td></tr><tr> +<th>Linux i686 +</th><td><a class="external" href="http://releases.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.7/gecko-sdk-i686-pc-linux-gnu-1.7.tar.gz">Download</a> +</td><td><a class="external" href="http://releases.mozilla.org/pub/mozilla.org/xulrunner/releases/1.8.0.4/sdk/gecko-sdk-i686-pc-linux-gnu-1.8.0.4.tar.bz2">Download</a> +</td></tr></tbody></table> +<p>Le SDK n'est pas officiellement disponible pour d'autres plateformes ; si vous en avez besoin, vous devrez probablement le compiler vous même. +</p><p>Décompressez le fichier dans un répertoire de votre disque. +</p> +<h3 id="Compiler_le_SDK" name="Compiler_le_SDK"> Compiler le SDK </h3> +<p>Pour compiler le SDK, vous devez compiler <a href="fr/XULRunner">XULRunner</a> (le SDK Gecko est compilé en même temps que XULRunner). Consultez la <a href="fr/Documentation_sur_la_compilation">documentation sur la compilation</a> pour plus de précisions. +</p><p>Le SDK Gecko est généré dans <code>dist/sdk</code> dans votre répertoire objet. Vous pouvez ensuite copier ce répertoire vers un autre emplacement et supprimer l'arborescence XULRunner. +</p> +<h2 id="Contenu_du_SDK" name="Contenu_du_SDK"> Contenu du SDK </h2> +<p>Le SDK contient les éléments suivants : +</p> +<ul><li> Fichiers IDL pour les interfaces gelées (dans <code>idl/</code>) +</li><li> Fichiers d'entêtes pour les interfaces gelées, les fonctions XPCOM et les fonctions NSPR (dans <code>include/</code>) +</li><li> Bibliothèques d'importations ou partagées (dans <code>lib/</code>) +</li><li> Bibliothèques d'utilitaires statiques (dans <code>lib/</code>) +</li><li> Divers outils (dans <code>bin/</code>) +</li></ul> +<p>Pour plus d'informations sur la manière de lier des composants XPCOM en utilisant la bibliothèque "glue" XPCOM, consultez <a href="fr/XPCOM_Glue">XPCOM Glue</a>. +</p> +<div class="noinclude"> +</div> +{{ languages( { "en": "en/Gecko_SDK", "ja": "ja/Gecko_SDK", "zh-cn": "cn/Gecko_SDK" } ) }} diff --git a/files/fr/mozilla/implementer_pontoon_sur_un_projet_mozilla/index.html b/files/fr/mozilla/implementer_pontoon_sur_un_projet_mozilla/index.html new file mode 100644 index 0000000000..8fd8b5daa7 --- /dev/null +++ b/files/fr/mozilla/implementer_pontoon_sur_un_projet_mozilla/index.html @@ -0,0 +1,76 @@ +--- +title: Implémenter Pontoon sur un projet Mozilla +slug: Mozilla/Implementer_Pontoon_sur_un_projet_Mozilla +tags: + - Localisation +translation_of: Mozilla/Implementing_Pontoon_in_a_Mozilla_website +--- +<p><a class="external external-icon" href="https://pontoon.mozilla.org">Pontoon</a> est un outil What-You-See-Is-What-You-Get (WYSIWYG) web pour la localisation (l10n). Chez Mozilla, nous utilisons actuellement Pontoon pour la localisation de plusieurs projets Mozilla et pour l'interface de l'app de Firefox OS app, connue comme Gaia. Pontoon est un outil simple et intuitif qui demande très peu de compétences techniques de la part des localisateurs, ce qui réduira le temps de publication des versions localisées de votre projet. Nous discutons ci-dessous de la manière d'ajouter Pontoon à votre projet Mozilla.</p> + +<div class="note"> +<p><strong>Vous voulez participer à l'amélioration de Pontoon?</strong> Apprenez comment participer su <a href="https://github.com/mozilla/pontoon">GitHub</a>.</p> +</div> + +<div class="note"> +<p><strong>Vous venez de démarrer votre projet de localisation?</strong> Jetez un oeil sur la page <a href="https://wiki.mozilla.org/L10n:NewProjects">Localisez votre projet</a> de notre wiki.</p> +</div> + +<h2 id="A._Rendre_votre_projet_localisable">A. Rendre votre projet localisable</h2> + +<p>Nous comprenons que les éléments suivants puissent être considérés des <a class="external external-icon" href="https://mozweb.readthedocs.org/en/latest/reference/l10n.html">meilleures pratiques</a> standards pour la localisation de projets chez Mozilla, mais nous ne perdons rien à faire un petit rappel:</p> + +<ol> + <li>Assurez-vous que votre projet supporte l'un des frameworks l10n (<a class="external external-icon" href="https://www.gnu.org/software/gettext/">gettext</a>, <a class="external external-icon" href="https://docs.oasis-open.org/xliff/xliff-core/v2.0/xliff-core-v2.0.html">XLIFF</a>, <a class="external external-icon" href="https://projectfluent.org/">L20n</a>, <a class="external external-icon" href="https://github.com/mozilla-l10n/langchecker/wiki/.lang-files-format">lang</a>, <a class="external external-icon" href="https://wikipedia.org/wiki/.properties">properties</a>, etc.).</li> + <li>Extrayez les strings localisables dans des fichiers de ressources.</li> + <li>Envoyez (push) les ressources vers un repository (SVN, HG, Git). + <ul> + <li>Les répertoires locaux individuels doivent être situés au même niveau d'indentation de l'arbre des répertoires. La locale d'origine doit être nommée <code>templates</code>, <code>en-US</code>, <code>en-us</code> ou <code>en</code>. Si plusieurs répertoires avec de tels noms existent dans le repository et contiennent des fichiers dans un format de fichier supporté, le premier sera utilisé. Vous pourriez vouloir mettre tous les dossiers dans un répertoire <code>locales</code> dédié à cet objectif. Le code des locales ne doit pas faire partie du nom du fichier.</li> + <li>Forme correcte: + <pre>/locales/{locale_code}/path/to/file.extension</pre> + </li> + <li>Forme incorrecte: + <pre>/locales/{locale_code}/path/to/file.{locale_code}.extension</pre> + </li> + </ul> + </li> + <li>Assurez-vous que Pontoon a les droits en écriture sur votre repository. + <ul> + <li>Si vous utilisez Github, ajoutez <a class="external external-icon" href="https://github.com/mozilla-pontoon">mozilla-pontoon</a> ou <a href="https://github.com/orgs/mozilla/teams/pontoon-l10n-robots">pontoon-l10n-robots</a> comme collaborateur à votre projet.</li> + </ul> + </li> +</ol> + +<h2 id="B._optionnel_Activer_la_localisation_en-page_de_votre_projet_web">B. (optionnel) Activer la localisation en-page de votre projet web</h2> + +<ol> + <li>Liez un script depuis l'élément <code><body></code> de votre code HTML, pour que Pontoon puisse parler à votre site, détecter le contenu et le rendre localisable en-place. Vous devez seulement faire ça sur l'environnement qui sera utilisé pour la localisation en-page. En gros, votre serveur de validation: + + <ul> + <li> + <pre id="line1"><span> </span><span><<span class="start-tag">script</span> <span class="attribute-name">src</span>="<a class="attribute-value">https://pontoon.mozilla.org/pontoon.js</a>"</span><span>></<span class="end-tag">script</span>></span></pre> + </li> + </ul> + </li> + <li>Si votre site utilise <a href="/fr/docs/Web/HTTP/CSP">CSP</a>, assurez-vous que les actions suivantes sont autorisées pour le domaine <code>pontoon.mozilla.org</code>: + <ol> + <li>charger dans une iframe</li> + <li>charger des CSS distants</li> + <li>chargez des images distantes</li> + </ol> + </li> + <li>Si votre site utilise le header <a href="/fr/docs/Web/HTTP/Headers/X-Frame-Options">X-Frame-Options</a>, assurez-vous que le chargement dans des iframes est autorisé pour le domaine <code>pontoon.mozilla.org</code>.</li> + <li>Assurez-vous que votre site supporte HTTPS. C'est gratuit, automatisé et libre. <a href="https://letsencrypt.org/">Let's encrypt</a>!</li> +</ol> + +<h2 id="C._Ajoutez_votre_projet_à_Pontoon">C. Ajoutez votre projet à Pontoon</h2> + +<p>Votre projet est maintenant prêt à être configuré sur Pontoon. Enregistrez un bug sur <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Localization%20Infrastructure%20and%20Tools&component=Administration%20%2F%20Setup">Localization Infrastructure and Tools :: Administration / Setup</a> et fournissez-nous l'information suivante:</p> + +<ul> + <li>Nom du projet</li> + <li>URL du repository</li> + <li>Liste des locales solicitées</li> + <li>URL du site web, incluant toutes les URLs des sous-pages (uniquement si vous utilisez la localisation en-page)</li> +</ul> + +<p>Pour plus de détails, contactez l'<a href="mailto:pontoon-team@mozilla.com">Équipe de gestion du projet</a>.</p> diff --git a/files/fr/mozilla/index.html b/files/fr/mozilla/index.html new file mode 100644 index 0000000000..881e22064e --- /dev/null +++ b/files/fr/mozilla/index.html @@ -0,0 +1,16 @@ +--- +title: Mozilla +slug: Mozilla +tags: + - Add-ons + - Apps + - Avancé + - Codage + - Extensions + - Localisation + - Mozilla +translation_of: Mozilla +--- +<p>Les articles ci-dessous intégrent des contenus à propos du téléchargement et de la compilation du code de Mozilla. De plus, vous trouverez des articles utiles expliquant le fonctionnement du code et indiquant les modalités de construction d'extensions pour les applications Mozilla et semblables.</p> + +<p>{{LandingPageListSubpages}}</p> diff --git a/files/fr/mozilla/instantbird/index.html b/files/fr/mozilla/instantbird/index.html new file mode 100644 index 0000000000..d73135fead --- /dev/null +++ b/files/fr/mozilla/instantbird/index.html @@ -0,0 +1,58 @@ +--- +title: Instantbird +slug: Mozilla/Instantbird +translation_of: Mozilla/Instantbird +--- +<p><span class="seoSummary"><strong>Instantbird </strong>est une application de messagerie instantanée avec liens étroits à Mozilla. Ces pages documentent Instantbird et fournissent également des liens vers de la documentation sur le <a href="/en-US/docs/Chat_Core">Chat Core</a> backend, qui est également utilisée dans <a href="/fr/docs/Mozilla/Thunderbird">Thunderbird</a>.</span></p> + +<p>Instantbird est construit sur le même plate-form technique que <a href="/fr/docs/Mozilla/Firefox">Firefox</a>. Initialement proposé comme projet Google Summer of Code pour créer une interface d'XML autour libpurple (le backend de Pidgin). Instantbird n'a pas été accepté, mais a débuté en 2007, depuis il a grandis au-delà d'une frontend simple pour que libpurple à dispose de ses propres protocales.</p> + +<table class="topicpage-table"> + <tbody> + <tr> + <td> + <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2> + + <dl> + <dt><a href="/en-US/docs/Simple_Instantbird_build" title="Simple Thunderbird build">Constuction d'Instantbird</a></dt> + <dd>Information sur la création d'Instantbird à partir du dépôt <a href="/en-US/docs/comm-central" title="comm-central">comm-central</a>.</dd> + <dt><span class="seoSummary"><a href="/en-US/docs/Chat_Core">Chat Core</a></span></dt> + <dd>Le code backend, y compris documentation rugueux sur <a href="/en-US/docs/Chat_Core/Protocols" title="MailNews_Protocols">chat protocols</a> ({{ Interface("prplIProtocol") }} and ami.e.s.).</dd> + <dt><a href="/en-US/docs/Chat_Core/Message_Styles" title="DB_Views_(message_lists)">Affichage des Messages</a></dt> + <dd>Information sur le thème de l'affichage des messages.</dd> + <dt><a href="/en-US/docs/Chat_core/Keyboard_shortcuts">Raccourcis Clavier</a></dt> + <dd>Liste des raccourcis clavier.</dd> + <dt> + <h2 id="Liens_Utils">Liens Utils</h2> + </dt> + <dt><a href="http://ftp.instantbird.com/instantbird/nightly/latest-trunk/">Dernier nightly builds</a></dt> + <dd>Ceux-ci sont généralement stables, mais attendent à des problèmes de temps à autreet déposer des <a href="https://bugzilla.mozilla.org/" title="Instantbird:Bugzilla">bugs</a>.</dd> + </dl> + + <p><span class="alllinks"><a href="/en-US/docs/tag/Instantbird" title="tag/Thunderbird">Voir Tout...</a></span></p> + </td> + <td> + <h2 class="Community" id="Community" name="Community">Communauté</h2> + + <ul> + <li><a class="link-irc" href="irc://irc.mozilla.org/instantbird">#instantbird sur irc.mozilla.org</a> (pour des utilisateurs et développeurs)</li> + <li>Assistance est géré sur la liste de diffusion pour support-instantbird ou sur IRC: {{ DiscussionList("support-instantbird", "mozilla.support.instantbird") }}</li> + <li>Questions d'extensions peut-être discuté sur le dev-chat groupe ou sur IRC: {{ DiscussionList("dev-chat", "mozilla.dev.chat") }}</li> + <li>une liste de tout <a class="external external-icon" href="https://wiki.mozilla.org/Instantbird/CommunicationChannels" title="Thunderbird communication channels">Instantbird canaux de communication</a></li> + </ul> + + <h2 class="Tools" id="Tools" name="Tools">Outils</h2> + + <ul> + <li><a href="/fr/docs/DOM_Inspector" title="DOM_Inspector">DOM Inspector</a></li> + </ul> + + <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Sujets Connexes</h2> + + <ul> + <li><a href="/fr/docs/Extensions" title="Extensions">Extensions</a></li> + </ul> + </td> + </tr> + </tbody> +</table> diff --git a/files/fr/mozilla/internal_css_attributes/index.html b/files/fr/mozilla/internal_css_attributes/index.html new file mode 100644 index 0000000000..cd449f72a5 --- /dev/null +++ b/files/fr/mozilla/internal_css_attributes/index.html @@ -0,0 +1,20 @@ +--- +title: Chrome-only CSS attributes +slug: Mozilla/Internal_CSS_attributes +tags: + - TopicStub +translation_of: Mozilla/Gecko/Chrome/CSS +--- +<div>{{CSSRef}}</div> + +<p>Les attributs CSS suivants ne sont disponibles qu'à partir du code privilégié (chrome) et sont spécifiques à Mozilla.</p> + +<p>{{LandingPageListSubpages}}</p> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="/en-US/docs/Web/CSS/Mozilla_Extensions">Extensions CSS Mozilla</a></li> + <li><a href="/en-US/docs/Web/CSS/Reference">Référence CSS</a></li> + <li><a href="/en-US/docs/Web/CSS">CSS</a></li> +</ul> diff --git a/files/fr/mozilla/javascript_astuces/index.html b/files/fr/mozilla/javascript_astuces/index.html new file mode 100644 index 0000000000..f2bbb7b567 --- /dev/null +++ b/files/fr/mozilla/javascript_astuces/index.html @@ -0,0 +1,115 @@ +--- +title: Astuces JavaScript +slug: Mozilla/JavaScript_Astuces +tags: + - Developper avec Mozilla + - JavaScript +translation_of: Mozilla/JavaScript_Tips +--- +<h2 id="Function_and_variable_naming" name="Function_and_variable_naming">XUL Tips</h2> + +<ul> + <li>Lorsque vous insérez du code dans un overlay XUL, placez vos fonctions et variables à l'intérieur d'un objet possédant un nom unique afin d'éviter des conflts avec d'autres fonctions et noms de variables existants ou futurs.</li> +</ul> + +<pre class="brush: js">var UniqueName = { + _privateMember: 3, + publicMember: "A string", + + init: function() { + this.doSomething(this.anotherMember); + }, + + doSomething: function(aParam) { + alert(aParam); + } +}; +</pre> + +<h2 id="XPConnect" name="XPConnect">XPConnect</h2> + +<ul> + <li>N'utilisez pas plus de méthodes ou de propriétés d'object qu'il vous faut. Il est plus souvent rapide de stocker le résultat dans une variable temporaire.</li> + <li>N'appelez pas les méthodes dont vous n'avez pas besoin. Par exemple, <code>windowManager.getEnumerator(aType).hasMoreElements()</code> peut être remplacé par <code>windowManager.getMostRecentWindow(aType) != null pour une simple fenêtre</code>.</li> + <li>N'interrogez des interfaces que pour avoir accès aux méthodes et propriétés de cette interface. Vous n'avez pas à interroger des interfaces pou comparer des objets, pas plus que pour passer des objets en tant que paramètres (Ceci est différent du C++, où vous devez interroger les interfaces dans ces 2 cas).</li> + <li>N'appelez pas <code>QueryInterface</code> à moins que vous en ayez réellement besoin. A la place, utilisez plutôt <code>instanceof</code>, par exemple :</li> +</ul> + +<pre class="brush: js">if (target instanceof Components.interfaces.nsIRDFResource) + return target.Value; +if (target instanceof Components.interfaces.nsIRDFLiteral) + return target.Value; +return null; +</pre> + +<ul> + <li>Ne testez pas la valeur de retour de <code>QueryInterface</code>, elle renvoie toujours la valeur originale en cas de succès. XPConnect knows all about tearoffs and modifies the object that you <code>QueryInterface</code> or <code>instanceof</code> to cache all its known interfaces.</li> + <li>Lorsque vous passez un objet à une méthode XPCOM, passez plutôt un objet XPCOM. La méthode C++ accèdera alors directement à l'objet C++. Ce n'est cependant pas toujours nécessaire. For instance the offline observer declared above is a JavaScript object that is registered with an XPCOM object, so that the call back from XPCOM executes the JavaScript method. Some XPCOM methods expect an object that implements several interfaces thus requiring you to write a <code>QueryInterface</code> method. However, in JavaScript this is quite simple even in the case of a weak reference which in C++ requires a helper class:</li> +</ul> + +<pre class="brush: js">var weakObserver = { + QueryInterface: function QueryInterface(aIID) { + if (aIID.equals(Components.interfaces.nsIObserver) || + aIID.equals(Components.interfaces.nsISupportsWeakReference) || + aIID.equals(Components.interfaces.nsISupports)) + return this; + throw Components.results.NS_NOINTERFACE; + }, + observe: function observe(aSubject, aTopic, aState) { + } +} +</pre> + +<ul> + <li>Lorsque vous devez déclarer des méthodes XPCOM, essayez d'utiliser les mêmes noms pour les paramètres de la méthodes que dans la définition de l'interface.</li> +</ul> + +<h2 id="DOM_elements" name="DOM_elements">DOM elements</h2> + +<ul> + <li>Les éléments du DOM sont juste des objets XPCOM dont certaines interfaces sont mises en cache.</li> + <li>N'appelez pas <a href="/en/DOM/element.getAttribute" title="en/DOM/element.getAttribute">getAttribute</a> pour voir si des attributs existent, appelez plutôt <a href="/en/DOM/element.hasAttribute" title="en/DOM/element.hasAttribute">hasAttribute</a> instead.</li> + <li>Utilisez une boucle sur les childNodes plutôt que d'utiliser first/lastChild avec next/previous. Mais utilisez plutôt hasChildNodes() to <code>childNodes.length > 0</code>. De même utilisez <code>document.getElementsByTagName(aTag).item(0) != null</code> plutôt que <code>document.getElementsByTagName(aTag).length > 0</code>.</li> + <li>Utilisez de préférence localName plutôt que tagName.</li> + <li>Les éléments XUL elements ont beaucoup d'attributs mappés aux propriétés. Ceci a été fait pour que vous les utilisiez ! Les propriétés sont les suivantes : + <ul> + <li>align</li> + <li>allowEvents</li> + <li>contextMenu</li> + <li>datasources</li> + <li>dir</li> + <li>flex</li> + <li>height</li> + <li>id<span style="display: none;"> </span><span style="display: none;"> </span></li> + <li>left</li> + <li>maxHeight</li> + <li>maxWidth</li> + <li>minHeight</li> + <li>minWidth</li> + <li>observes</li> + <li>orient</li> + <li>pack</li> + <li>persist</li> + <li>ref</li> + <li>statusText</li> + <li>top</li> + <li>tooltip</li> + <li>tooltipText</li> + <li>width</li> + </ul> + </li> + <li>XUL mappe l'attribut <code>ordinal</code>, mais s'il n'est pas présent il sera initialisé à "1".</li> + <li>XUL mappe également l'attribut <code>class</code> attribute, mais malheureusement <code>class</code> est un identifiant réservé. La propriété est donc appelée <code>className</code>. (La propriété pourrait avoir été implémentée ainsi <code>{{ mediawiki.external('"class"') }}</code> mais ca paraît un peu idiot.)</li> + <li>XUL mappe les attributs <code>hidden</code> et <code>collapsed</code> aux propriétés, mais n'oubliez pas qu'il s'agit de propriétés booléennes tandis que la liste ci-dessus sont toutes des propriétés de type string..</li> + <li>XUL mappe également d'autres propriétés et méthodes très utiles via le binding XBL. Ceci varie d'un élément à un autre.</li> + <li>Pour de meilleures performances donnez des ids à tous les éléments importants. En plus de localiser des éléments par tagName, XUL vous permet de localiser un élément par son attribut en commençant de n'importe quel élément dans le document.</li> +</ul> + +<h2 id="References" name="References">References</h2> + +<ul> + <li>This was started as a reprint of <a class="external" href="http://neil.rashbrook.org/JS.htm" title="http://neil.rashbrook.org/JS.htm">Neil's guide</a></li> + <li>Some more current info on this <a class="external" href="http://autonome.wordpress.com/2006/03/24/">blog post</a></li> +</ul> + +<p>{{ languages( { "ja": "ja/JavaScript_style_guide" } ) }}</p> diff --git a/files/fr/mozilla/javascript_code_modules/index.html b/files/fr/mozilla/javascript_code_modules/index.html new file mode 100644 index 0000000000..b982031dd1 --- /dev/null +++ b/files/fr/mozilla/javascript_code_modules/index.html @@ -0,0 +1,93 @@ +--- +title: JavaScript code modules +slug: Mozilla/JavaScript_code_modules +tags: + - Add-ons + - Extensions + - JavaScript + - Modules + - TopicStub + - XPCOM +translation_of: Mozilla/JavaScript_code_modules +--- +<div>{{gecko_minversion_header("1.9")}}</div> + +<p>Modules de code javaScript permettent de multiples priviléges de code partagé étendues. Par exemple, un module peut être utilisé par Firefox, ainsi que par des extensions, afin d'éviter la duplication de code.</p> + +<table class="topicpage-table"> + <tbody> + <tr> + <td> + <h2 id="Sujets_généraux">Sujets généraux</h2> + + <dl> + <dt><a href="/fr/docs/JavaScript_code_modules/Using" title="./Using">Utilisation de modules de code JavaScript</a></dt> + <dd>Une introduction à la façon d'utiliser les modules de code JavaScript.</dd> + <dt><a href="/fr/docs/Components.utils.import" title="Components.utils.import">Component.utils.import</a></dt> + <dd>Comment importer un module de code JavaScript.</dd> + <dt><a href="/fr/docs/Components.utils.unload" title="Components.utils.unload">Component.utils.unload</a> {{gecko_minversion_inline("7.0")}}</dt> + <dd>Comment décharger un module de code JavaScript.</dd> + <dt><a href="/fr/docs/Code_snippets/Modules" title="Code_snippets/Modules">Code snippets: Modules</a></dt> + <dd>Des exemples de la façon d'utiliser des modules de code.</dd> + <dt><a class="external" href="http://wiki.mozilla.org/Labs/JS_Modules">Mozilla Labs JS Modules</a></dt> + <dd>Cette page propose une liste de modules JS, ainsi que des liens de téléchargement et de la documentation, que les développeurs d'extensions peuvent utiliser dans leur code.</dd> + </dl> + + <dl> + </dl> + </td> + <td> + <h2 id="Modules_de_code_standard">Modules de code standard</h2> + + <dl> + <dt><a href="/fr/docs/Addons/Add-on_Manager" title="Addons/Add-on_Manager">AddonManager.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> + <dd>Interface pour installer, gérer et désinstaller des add-ons.</dd> + <dt><a href="/fr/docs/Addons/Add-on_Repository" title="Addons/Add-on Repository">AddonRepository.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> + <dd>Permet de rechercher des addons référentiel.</dd> + <dt><a href="/fr/docs/Mozilla/js-ctypes" title="./ctypes.jsm">ctypes.jsm</a> {{fx_minversion_inline("3.6")}}</dt> + <dd>Fournit une interface qui permet au code JavaScript d'appeler les bibliothèques natives sans nécessiter le développement d'un composant XPCOM.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/DeferredTask.jsm" title="./DeferredTask.jsm">DeferredTask.jsm</a> {{gecko_minversion_inline("18.0")}}</dt> + <dd>Exécuter une tâche après un délai.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/Dict.jsm" title="./Dict.jsm">Dict.jsm</a> {{gecko_minversion_inline("5.0")}}</dt> + <dd>Fournit une API pour les dictionnaires de paires clé/valeur.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/DownloadLastDir.jsm" title="./DownloadLastDir.jsm">DownloadLastDir.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> + <dd>Fournit le chemin d'accès au répertoire dans lequel le dernier téléchargement a eu lieu.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/Downloads.jsm" title="./Downloads.jsm">Downloads.jsm</a> {{gecko_minversion_inline("23.0")}}</dt> + <dd>Fournit un point d'entrée unique pour interagir avec les capacités de téléchargement de la plate-forme.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/FileUtils.jsm" title="./FileUtils.jsm"><strong style="font-weight: bold;">FileUtils.jsm</strong></a> {{gecko_minversion_inline("1.9.2")}}</dt> + <dd>Fournit des aides pour le traitement des fichiers.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/Geometry.jsm" title="./Geometry.jsm">Geometry.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> + <dd>Fournit des routines pour effectuer des opérations géométriques de base sur des points et des rectangles.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/ISO8601DateUtils.jsm" title="./ISO8601DateUtils.jsm">ISO8601DateUtils.jsm</a></dt> + <dd>Fournit des routines pour convertion entre des objets <a href="/fr/docs/JavaScript/Reference/Global_Objects/Date" title="/fr/docs/JavaScript/Reference/Global_Objects/Date"> <code>Date</code> </a> JavaScript et des chaînes de date ISO 8601.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/NetUtil.jsm" title="./NetUtil.jsm"><strong style="font-weight: bold;">NetUtil.jsm</strong></a></dt> + <dd>Fournit des fonctions utilitaires de mise en réseau utiles, notamment la possibilité de copier facilement des données d'un flux d'entrée vers un flux de sortie de manière asynchrone.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/openLocationLastURL.jsm" title="./openLocationLastURL.jsm">openLocationLastURL.jsm</a> {{gecko_minversion_inline("1.9.1.4")}}</dt> + <dd>Donne accès à la dernière URL ouverte à l'aide de l'option "Ouvrir l'emplacement" dans le menu Fichier.</dd> + <dt><a href="/fr/docs/JavaScript_OS.File" title="/en-US/docs/JavaScript_OS.File">osfile.jsm</a> {{gecko_minversion_inline("16.0")}}</dt> + <dd>Le module JavaScript <code>OS.File</code> contient des primitives de manipulation de fichiers</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/PerfMeasurement.jsm" title="./PerfMeasurement.jsm">PerfMeasurement.jsm</a> {{fx_minversion_inline("4.0")}}</dt> + <dd>Permet d'accéder au hardware de bas niveau et aux outils OS de mesure de performance.</dd> + <dt><a href="/fr/docs/Localization_and_Plurals" title="Localization and Plurals">PluralForm.jsm</a></dt> + <dd>Fournit un moyen simple d'obtenir les formes plurielles correctes pour la locale actuelle, ainsi que des moyens de localiser vers une règle plurielle spécifique.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/PopupNotifications.jsm" title="./PopupNotifications.jsm">PopupNotifications.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> + <dd>Fournit un moyen facile de présenter des notifications non-modales aux utilisateurs.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/Promise.jsm" title="./Promise.jsm">Promise.jsm</a> {{gecko_minversion_inline("25.0")}}</dt> + <dd>Met en oeuvre la proposition <a class="external" href="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md" title="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md">Promises/A+</a> telle que connue en avril 2013</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/Services.jsm" title="./Services.jsm">Services.jsm</a> {{gecko_minversion_inline("2.0")}}</dt> + <dd>Fournit getters pour obtenir facilement l'accès aux services couramment utilisés.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/source-editor.jsm" title="./source-editor.jsm">source-editor.jsm</a> {{fx_minversion_inline("11.0")}}</dt> + <dd>Est utilisé par les outils de développement tels que l'éditeur de style; cette interface implémente l'éditeur et vous permet d'interagir avec lui.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/Sqlite.jsm" title="./Sqlite.jsm">Sqlite.jsm</a> {{gecko_minversion_inline("20.0")}}</dt> + <dd>Une API basée sur promise de {{ interface("mozIStorage") }}/SQLite.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/Task.jsm" title="./Task.jsm">Task.jsm</a> {{gecko_minversion_inline("17.0")}}</dt> + <dd>Met en œuvre un sous-ensemble d'opérations asynchrones séquentielles simple <a class="external" href="https://taskjs.org/"> Task.js </a>, en utilisant la puissance de l'opérateur JavaScript <a href="https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Opérateurs/yield">yield</a>.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/Timer.jsm" title="/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm">Timer.jsm </a>{{gecko_minversion_inline("22.0")}}</dt> + <dd>Une mise en œuvre pur JS de <code>window.setTimeout</code>.</dd> + <dt><a href="/fr/docs/Mozilla/JavaScript_code_modules/XPCOMUtils.jsm" title="./XPCOMUtils.jsm">XPCOMUtils.jsm</a></dt> + <dd>Contient des utilitaires pour les composants JavaScript chargés par le chargeur composant JS.</dd> + </dl> + </td> + </tr> + </tbody> +</table> diff --git a/files/fr/mozilla/javascript_code_modules/osfile.jsm/index.html b/files/fr/mozilla/javascript_code_modules/osfile.jsm/index.html new file mode 100644 index 0000000000..b2ed155f4f --- /dev/null +++ b/files/fr/mozilla/javascript_code_modules/osfile.jsm/index.html @@ -0,0 +1,70 @@ +--- +title: OSFile.jsm +slug: Mozilla/JavaScript_code_modules/OSFile.jsm +tags: + - File + - IO + - JavaScript + - NeedsTranslation + - OS + - TopicStub + - Unix + - Windows + - add-on + - platform +translation_of: Mozilla/JavaScript_code_modules/OSFile.jsm +--- +<p>Le module JavaScript <code>OS.File</code> contient des primitives pour manipuler des fichiers hors du thread principal.</p> + +<h2 id="F.A.Q.">F.A.Q.</h2> + +<dl> + <dt>Qu'est-ce que OS.File?</dt> + <dd>OS.File est une nouvelle API conçue pour une manipulation efficace et hors-fil des fichiers par du code JavaScript privilégié. Cette API est destinée à remplacer, à terme, la plupart des manipulations de fichiers basées sur XPCOM (nsIFile, sous-ensembles de nsIIOService, etc.) par du code JavaScript.</dd> + <dt>Quelles sont les relations avec l'API de fichier HTML5?</dt> + <dd>Aucun, vraiment. L'API de fichier est conçue pour une manipulation de haut niveau et très restreinte de fichiers par des applications Web. OS.File est conçu pour une manipulation efficace et sans restriction des fichiers par Firefox lui-même et par des modules complémentaires.</dd> + <dt>Why is Off Main Thread File I/O important?</dt> + <dd>One thing that all developers need to remember is that the duration of a File I/O operation is <em>unbounded</em>. Depending on the current load of the kernel, the current disk activity, the current load of the bus, the current rotation speed of the disk, the amount of battery power, etc. operations can take an arbitrary amount of time. We are talking about <strong>several seconds</strong> to execute operations that look trivial, such as closing a file, or checking when it was last modified.<br> + If the operation is called on the main thread, this means that the whole user experience is stuck for several seconds, which is quite bad.</dd> + <dt>Why is I/O Efficiency important?</dt> + <dd>I/O efficiency is all about <em>minimizing the number of actual I/O calls</em>. This is critical because some platforms have extremely slow storage (e.g. smartphones, tablets) and because, regardless of the platforms, doing too much I/O penalizes not just your application but potentially all the applications running on the system, which is quite bad for the user experience. Finally, I/O is often expensive in terms of energy, so <em>wasting I/O is wasting battery</em>. + <p style="text-align: justify;">Consequently, one of the key design choices of OS.File is to provide operations that are low-level enough that they do not hide any I/O from the developer (which could cause the developer to perform more I/O than they think) and, since not all platforms have the same features, offer system-specific information that the developer can use to optimize his algorithms for a platform.</p> + </dd> +</dl> + +<h2 id="Using_OS.File">Using OS.File</h2> + +<h3 id="..._from_the_main_thread">... from the main thread</h3> + +<p>Most uses of OS.File are from the main thread. In this mode, main thread clients use the API to request off main thread file I/O.</p> + +<dl> + <dt><a href="/docs/Mozilla/JavaScript_code_modules/OSFile.jsm/OS.File_for_the_main_thread" title="/en-US/docs/JavaScript_OS.File/OS.File_for_the_main_thread">Calling OS.File from the main thread</a></dt> + <dd>Asynchronous, off-main thread file I/O, main thread API.</dd> + <dt><a href="/docs/Mozilla/JavaScript_code_modules/OSFile.jsm/OS.File.DirectoryIterator_for_the_main_thread" title="/en-US/docs/JavaScript_OS.File/OS.File.DirectoryIterator_for_the_main_thread">Calling OS.File.DirectoryIterator from the main thread</a></dt> + <dd>Asynchronous, off-main thread file directory access, main thread API.</dd> +</dl> + +<h3 id="..._from_a_worker_thread">... from a worker thread</h3> + +<p>In some cases, the main thread API for OS.File is not appropriate as it would require too much message passing, or because the code that requires file I/O is already executed on a worker thread. For this reason, API clients can also spawn their own worker threads and make use of OS.File directly from these threads.</p> + +<dl> + <dt><a href="/docs/Mozilla/JavaScript_code_modules/OSFile.jsm/OS.File_for_workers" title="/en-US/docs/JavaScript_OS.File/OS.File_for_workers">OS.File for workers</a></dt> + <dd>Synchronous file I/O for worker threads</dd> + <dt><a href="/docs/Mozilla/JavaScript_code_modules/OSFile.jsm/OS.File.DirectoryIterator_for_workers" title="/en-US/docs/JavaScript_OS.File/OS.File.DirectoryIterator_for_workers">OS.File.DirectoryIterator for workers</a></dt> + <dd>Visiting directories synchronously from a worker thread</dd> +</dl> + +<h3 id="..._composants_partagés">... composants partagés</h3> + +<dl> + <dt><a href="/docs/Mozilla/JavaScript_code_modules/OSFile.jsm/OS.Path" title="/en-US/docs/JavaScript_OS.File/OS.Path">OS.Path et OS.Constants.Path</a></dt> + <dd>Manipulation des chemins</dd> + <dt><a href="/docs/Mozilla/JavaScript_code_modules/OSFile.jsm/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></dt> + <dd>Représentation des erreurs liées aux fichiers</dd> + <dt><a href="/docs/Mozilla/JavaScript_code_modules/OSFile.jsm/OS.File.Info" title="/en-US/docs/JavaScript_OS.File/OS.File.Info">OS.File.Info</a></dt> + <dd>Représentation des informations du fichier (taille, date de création, etc.)</dd> + <dt><a href="/docs/Mozilla/JavaScript_code_modules/OSFile.jsm/OS.File.DirectoryIterator.Entry" title="/en-US/docs/JavaScript_OS.File/OS.File.DirectoryIterator.Entry">OS.File.DirectoryIterator.Entry</a></dt> + <dd>Informations sur les fichiers obtenues lors de la visite d'un répertoire</dd> +</dl> diff --git a/files/fr/mozilla/javascript_code_modules/osfile.jsm/os.file_for_the_main_thread/index.html b/files/fr/mozilla/javascript_code_modules/osfile.jsm/os.file_for_the_main_thread/index.html new file mode 100644 index 0000000000..e21a10ac20 --- /dev/null +++ b/files/fr/mozilla/javascript_code_modules/osfile.jsm/os.file_for_the_main_thread/index.html @@ -0,0 +1,1159 @@ +--- +title: OS.File pour le thread principal +slug: Mozilla/JavaScript_code_modules/OSFile.jsm/OS.File_for_the_main_thread +translation_of: Mozilla/JavaScript_code_modules/OSFile.jsm/OS.File_for_the_main_thread +--- +<p>Cette page explique comment utiliser File I/O depuis le thread principal. Pour d'autres utilisations de OS.File, voir <a href="/fr/docs/JavaScript_OS.File" title="/fr/docs/JavaScript_OS.File">OS.File</a>.</p> + +<h2 id="Utilisation_d'OS.File_depuis_le_thread_principal">Utilisation d'OS.File depuis le thread principal</h2> + +<p>Pour importer OS.File dans votre code chrome, ajoutez les ligne suivante au début de votre script:</p> + +<pre><code class="brush: js">Components.utils.import("<a rel="freelink">resource://gre/modules/osfile.jsm"</a>);</code></pre> + +<p>Pour importer OS.File dans votre code main.js, ajoutez les lignes suivantes au début de votre script:</p> + +<pre><code class="brush: js"><code><span class="kwd">const</span><span class="pln"> </span><span class="pun">{</span><span class="typ">Cu</span><span class="pun">}</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">require</span><span class="pun">(</span><span class="str">"chrome"</span><span class="pun">); + +// To read content from file</span><span class="pln"> +</span><span class="kwd">const</span><span class="pln"> </span><span class="pun">{</span><span class="typ">TextDecoder</span><span class="pun">,</span><span class="pln"> OS</span><span class="pun">}</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Cu</span><span class="pun">.</span><span class="kwd">import</span><span class="pun">(</span><span class="str">"resource://gre/modules/osfile.jsm"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{}); + +<code class="brush: js"><code><span class="kwd">// To read & write content to file +const</span><span class="pln"> </span><span class="pun">{</span><span class="typ"><code class="brush: js"><code><span class="typ">TextDecoder</span><span class="pun">,</span><span class="pln"> </span></code></code>TextEncoder</span><span class="pun">,</span><span class="pln"> OS</span><span class="pun">}</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Cu</span><span class="pun">.</span><span class="kwd">import</span><span class="pun">(</span><span class="str">"resource://gre/modules/osfile.jsm"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{});</span></code></code></span></code></code></pre> + +<h3 id="Promises">Promises</h3> + +<p>Avant d'utiliser OS.File depuis le thread principal, vous avez besoin d'une certaine compréhension de la bibliothèque <a href="https://developer.mozilla.org/fr/Add-ons/SDK/Low-Level_APIs/core_promise" title="https://developer.mozilla.org/fr/Add-ons/SDK/Low-Level_APIs/core_promise">Promise</a>.</p> + +<p>Voir la <a href="/fr/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/fr/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise"> documentation object <code>Promise</code></a> pour plus de détails.</p> + +<p>OS.File fonctionne très bien avec <a href="/fr/docs/Mozilla/JavaScript_code_modules/Task.jsm" title="/fr/docs/Mozilla/JavaScript_code_modules/Task.jsm">Task.jsm</a>.</p> + +<h3 id="Exemple_Lire_le_contenu_d'un_fichier_sous_forme_de_texte">Exemple: Lire le contenu d'un fichier sous forme de texte</h3> + +<p>L'extrait suivant ouvre un fichier "file.txt" et lit son contenu sous forme de chaîne, en utilisant l'encodage par défaut (utf-8).</p> + +<p>Le contenu est lu de manière asynchrone. Le résultat est une <a href="/fr/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/fr/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a>.</p> + +<pre class="brush: js">let decoder = new TextDecoder(); // This decoder can be reused for several reads +let promise = OS.File.read("file.txt"); // Read the complete file as an array +promise = promise.then( + function onSuccess(array) { + return decoder.decode(array); // Convert this array to a text + } +); +</pre> + +<div class="note">Cet exemple nécessite Firefox 18 ou une version plus récente.</div> + +<h3 id="Exemple_Ecrire_une_chaîne_dans_un_fichier">Exemple: Ecrire une chaîne dans un fichier</h3> + +<p>L'extrait suivant écrit le texte "Ceci est un texte" sous forme de chaîne dans "file.txt", en utilisant l'encodage par défaut (utf-8). Il utilise une écriture atomique pour veiller à ce que le fichier ne soit pas modifiée si, pour une raison quelconque, l'écriture ne peut pas se réaliser complètement (généralement parce que l'ordinateur est éteint, la batterie est épuisée, ou l'application est arrêtée.)</p> + +<pre class="brush: js">let encoder = new TextEncoder(); // This encoder can be reused for several writes +let array = encoder.encode("This is some text"); // Convert the text to an array +let promise = OS.File.writeAtomic("file.txt", array, // Write the array atomically to "file.txt", using as temporary + {tmpPath: "file.txt.tmp"}); // buffer "file.txt.tmp". + +</pre> + +<p>La variante suivante fait la même chose, mais échouera si "file.txt" existe déjà:</p> + +<pre class="brush: js">let encoder = new TextEncoder(); // This encoder can be reused for several writes +let array = encoder.encode("This is some text"); // Convert the text to an array +let promise = OS.File.writeAtomic("file.txt", array, // Write the array atomically to "file.txt", using as temporary + {tmpPath: "file.txt.tmp", noOverwrite: true}); // buffer "file.txt.tmp". + +</pre> + +<div class="note">Ces exemples nécessitent Firefox 19 ou une version plus récente.</div> + +<h3 id="Exemple_Renommer_un_fichier">Exemple: Renommer un fichier</h3> + +<p>Vous pouvez utiliser <code>OS.File.move</code> pour renommer un fichier:</p> + +<pre class="brush: js">let promise = OS.File.move("oldname.txt", "newname.txt", {noOverwrite:true});</pre> + +<p>Voici un exemple qui a rebaptise <code>test.txt</code> en <code>testRenamed.txt</code> si le fichier se trouve dans le répertoire <code>C:\Jean\</code></p> + +<pre class="brush: js">var promise = OS.File.move(OS.Path.join('C:', 'Jean', 'test.txt'), OS.Path.join('C:', 'Jean', 'testRenamed.txt')); +promise.then( + function() { + console.log('rename successful') + }, + function(aRejectReason) { + console.log('rename failed, aRejectReason = ', aRejectReason) + } +)</pre> + +<p><code>noOverwrite: true</code> est important, (par défaut <code>false</code>) si un fichier avec le même nom existe déjà dans le répertoire, il ne sera plus là après cette opération "renommer", qui est un "mouvement".</p> + +<h3 id="Exemple_Copier_un_fichier">Exemple: Copier un fichier</h3> + +<p>The following snippet copies file "oldname.txt" to "newname.txt". On most operating systems, this operation is handled directly by the operating system itself, which makes it as fast as possible.</p> + +<pre class="brush: js">let promise = OS.File.copy("oldname.txt", "newname.txt");</pre> + +<div class="note">This example requires Firefox 16 or a more recent version.</div> + +<h3 id="Exemple_Manipulation_de_chemin">Exemple: Manipulation de chemin</h3> + +<p>The following snippet obtains the path to file "sessionstore.js", contained in the user's profile directory.</p> + +<pre class="brush: js">let sessionstore = OS.Path.join(OS.Constants.Path.profileDir, "sessionstore.js"); + // Under Linux, this is generally "$HOME/.firefox/Profiles/$PROFILENAME/sessionstore.js" + // Under MacOS, this is generally "$HOME/Library/Application Support/Firefox/$PROFILENAME/sessionstore.js" + // Under Windows, this is generally "%APPDATA%\Local\temp\%PROFILENAME%"\sessionstore.js + // etc. + +</pre> + +<h3 id="Exemple_Déterminer_si_un_fichier_est_un_répertoire">Exemple: Déterminer si un fichier est un répertoire</h3> + +<p>The following snippet determines if some path represents a file or a directory:</p> + +<pre class="brush: js">let promise = OS.File.stat(somePath); +promise = promise.then( + function onSuccess(stat) { + if (stat.isDir) { + // The path represents a directory + } else { + // The path represents a file, not a directory + } + }, + function onFailure(reason) { + if (reason instanceof OS.File.Error && reason.becauseNoSuchFile) { + // The file does not exist + } else { + // Some other error + throw reason; + } + } +); +</pre> + +<h3 id="Exemple_copier_un_fichier_par_morceaux">Exemple: copier un fichier par morceaux</h3> + +<p>The following snippet writes a (presumably large) buffer by chunks. Note that this snippet is useful as a demonstration of complex asynchronous programming with OS.File – in most cases, function <code>OS.File.writeAtomic</code> is a better choice.</p> + +<pre class="brush: js">let writeStream = function writeStream(data, outFile, chunkSize) { + let view = new Uint8Array(data); + + let loop = function loop(pos) { // Define a recursive asynchronous loop. + if (pos <= view.byteLength) { // Note: Should this be pos >= view.byteLength ? + return Promise.resolve(true); // Loop end. + } + let promise = file.write(view.subarray(pos, chunkSize)); // Write a subset of |data| + return promise.then(function onSuccess(bytes) { + return loop(pos + bytes); // ... and loop. + }); + }; + + let promise = loop(0); // Enter the loop. + + promise = promise.then(function onSuccess() { // Once loop is complete, finalize. + file.close(); + }, function onError(reason) { + file.close(); + throw reason; + }); + return promise; +} +</pre> + +<p>Or a variant using <a class="external" href="http://taskjs.org/" title="http://taskjs.org/">Task.js</a> (or at least <a class="external" href="http://dxr.mozilla.org/mozilla-central/source/toolkit/modules/Task.jsm" title="http://dxr.mozilla.org/mozilla-central/toolkit/content/Task.jsm.html">the subset already present on mozilla-central</a>):</p> + +<pre class="brush: js">let writeStream = function writeStream(data, outFile, chunkSize) { + return Task.spawn(function() { + let view = new Uint8Array(data); + let pos = 0; + while (pos < view.byteLength) { + pos += yield outFile.write(view.subarray(pos, chunkSize)); + } + outFile.close(); + }).then( + null, + function onFailure(reason) { + outFile.close(); + throw reason; + } + ); +} +</pre> + +<h3 id="Exemple_Enregistrer_un_canvas_sur_le_disque">Exemple: Enregistrer un canvas sur le disque</h3> + +<p>This exmaple uses <code>Image </code>to load an image from a path (note: if your path is a file on disk you must use local file; this is accomplished with <code>OS.Path.toFileURI</code>, which accepts a string). After image loads it then draws it to <code>canvas</code>, makes it a <code>blob</code>, and uses <code>FileReader</code> to turn it into <code>ArrayBuffer(View)</code>, then uses OS.File.writeAtomic to save to disk.</p> + +<pre class="brush: js">var img = new Image(); +img.onload = function() { + var canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'canvas'); + canvas.width = img.naturalWidth; + canvas.height = img.naturalHeight; + var ctx = canvas.getContext('2d'); + ctx.drawImage(img, 0, 0); + (canvas.toBlobHD || canvas.toBlob).call(canvas, function(b) { + var r = <code class="language-html">Cc['@mozilla.org/files/filereader;1'].createInstance(Ci.nsIDOMFileReader); </code>//new FileReader(); + r.onloadend = function() { + // r.result contains the ArrayBuffer. + var writePath = OS.Path.join(OS.Constants.Path.desktopDir, 'savedImage.png'); + var promise = OS.File.writeAtomic(writePath, new Uint8Array(r.result), { tmpPath: writePath + '.tmp' }); + promise.then( + function(aVal) { + console.log('successfully saved image to disk'); + }, + function(aReason) { + console.log('writeAtomic failed for reason:', aReason); + } + ); + }; + r.readAsArrayBuffer(b); + }, 'image/png'); +}; +//var path = OS.Path.toFileURI(OS.Path.join(OS.Contants.Path.desktopDir, 'my.png')); //do it like this for images on disk +var path = 'https://mozorg.cdn.mozilla.net/media/img/firefox/channel/toggler-beta.png?2013-06'; //do like this for images online +img.src = path; +</pre> + +<h3 id="Exemple_Ajouter_au_fichier">Exemple: Ajouter au fichier</h3> + +<p>This example shows how to use <code>open</code>, <code>write</code>, and <code>close</code> to append to a file. If the file does not exist, it is created. At the time of this writing, <code>write</code> does not support <code>encoding</code> option so the text to be written has to be encoded with <code>TextEncoder</code>. This example also shows the resolve value of open (an instance of OS.File, this is a file, so you can do any of the methods on it found <a href="#OS.File.prototype.close">here</a>), <code>write</code> (a number indicating bytes written), and <code>close</code> (<code>undefined</code>, meaning there is no resolve value).</p> + +<pre class="brush: js"><code>var pth = OS.Path.join(OS.Constants.Path.desktopDir, 'app.txt'); +OS.File.open(pth, {write: true, append: true}).then(valOpen => { + console.log('valOpen:', valOpen); + var txtToAppend = '</code>append some text <code>\n'; + var txtEncoded = TextEncoder().encode(txtToAppend); + valOpen.write(txtEncoded).then(valWrite => { + console.log('valWrite:', valWrite); + valOpen.close().then(valClose => { + console.log('valClose:', valClose); + console.log('successfully appended'); + }); + }); +});</code></pre> + +<h2 id="Objet_Global_OS.File">Objet Global OS.File</h2> + +<h3 id="Aperçu_des_Méthodes">Aperçu des Méthodes</h3> + +<table> + <tbody> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><File> <a href="#OS.File.open" title="#OS.File.open">open</a>(in string path, [optional] in object mode, [optional] in object options);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><object> <a href="#OS.File.openUnique" title="#OS.File.openUnique">openUnique</a>(in string path, [optional] in object options);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.copy" title="#OS.File.copy">copy</a>(in string sourcePath, in string destPath, [optional] in object options);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><bool> <a href="#OS.File.exists" title="#OS.File.exists">exists</a>(in string path);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><string> <a href="#OS.File.getCurrentDirectory" title="#OS.File.getCurrentDirectory">getCurrentDirectory</a>();</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.makeDir" title="#OS.File.makeDir">makeDir</a>(in string path, [optional] in object options);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.move" title="#OS.File.move">move</a>(in string sourcePath, in string destPath);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><<a href="/en-US/docs/Web/API/Uint8Array">Uint8Array</a>> <a href="#OS.File.read" title="#OS.File.read">read</a>(in string path, [optional] in object options);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.remove" title="#OS.File.remove">remove</a>(in string path, [optional] in object options);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.removeEmptyDir" title="#OS.File.removeEmptyDir">removeEmptyDir</a>(in string path, [optional] in object options);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.removeDir" title="#OS.File.removeDir">removeDir</a>(in string path, [optional] in object options);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.setCurrentDirectory" title="#OS.File.setCurrentDirectory">setCurrentDirectory</a>(in string path);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.setDates">setDates</a>(in string path, in Date|number accessDate, in Date|number modificationDate);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.setPermissions">setPermissions</a>(in string path, </code> <code>in object options</code> <code>);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><<a href="/en-US/docs/JavaScript_OS.File/OS.File.Info" title="/en-US/docs/JavaScript_OS.File/OS.File.Info">File.Info</a>> <a href="#OS.File.stat" title="#OS.File.stat">stat</a>(in string path, [optional] in object options);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.unixSymLink" title="#OS.File.unixSymLink">unixSymLink</a>(in string targetPath, in string createPath);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.writeAtomic" title="#OS.File.writeAtomic">writeAtomic</a>(in string path, in ArrayView data, in object options);</code></td> + </tr> + </tbody> +</table> + +<h3 id="Methods">Methods</h3> + +<h4 id="OS.File.open()">OS.File.open()<a name="OS.File.open"></a></h4> + +<p>Use method <code>OS.File.open()</code> to open a file.</p> + +<pre class="brush:js;">Promise<File> open( + in string path, + [optional] in object mode, + [optional] in object options +) +</pre> + +<h5 id="Arguments">Arguments</h5> + +<dl> + <dt><code>path</code></dt> + <dd>The full native name of the file to open.</dd> + <dt><code>mode</code> {{optional_inline()}}</dt> + <dd>The opening mode for the file, as an object that may contain a subset of the following fields: + <dl> + <dt><code>read</code></dt> + <dd>If <code>true</code>, the file will be opened for reading. Depending on other fields, it may also be opened for writing.</dd> + <dt><code>write</code></dt> + <dd>If <code>true</code>, the file will be opened for writing. Depending on other fields, it may also be opened for reading.</dd> + <dd> + <div class="note">Prior to Gecko 27, unless <code>create</code> or <code>truncate</code> are set or explicit <code>unixFlags</code> are given, the file will be opened for appending on Unix/Linux. However, the file is not opened for appending on Windows. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=924858">bug 924858</a>. Starting with Gecko 27, you may use the <code>append</code> flag instead. For an example using append see <a href="#Example: Append to File">here</a>.</div> + </dd> + <dt><code>truncate</code> | <code>trunc</code></dt> + <dd>If <code>true</code>, the file will be opened for writing. If the file does not exist, it will be created. If the file exists, its contents will be removed. Cannot be used with <code>create</code>.</dd> + <dt><code>create</code></dt> + <dd>If <code>true</code>, file will be opened for writing. The file must not exist. If the file already exists, throw an error. Cannot be used with <code>truncate</code> or <code>existing</code>.</dd> + <dt><code>existing</code></dt> + <dd>If <code>true</code>, the file must already exist. If the file does not exist, throw an error. Cannot be used with <code>create</code>.</dd> + <dt><code>append</code></dt> + <dd>If<code> true</code>, the file will be opened for appending, meaning the equivalent of <code>.setPosition(0, POS_END)</code> is executed before each write. The default is <code>true</code>, i.e. opening a file for appending. Specify <code>append: false</code> to open the file in regular mode.</dd> + </dl> + </dd> + <dt><code>options</code> {{optional_inline()}}</dt> + <dd>Platform-specific options for opening the file. <strong>For advanced users only. Most users will never have need of these options.</strong> To specify options, pass an object that may contain some of the following flags: + <dl> + <dt><code>unixFlags</code></dt> + <dd>(ignored under non-Unix platforms) If specified, file opening flags, as per libc function <code>open</code>. If unspecified, build these flags from the contents of <code>mode</code>. You can build these flags from values <a href="/en/JavaScript_OS.Constants#libc_opening_files" title="en/JavaScript_OS.Constants#libc_opening_files">OS.Constants.libc.O_*</a>.</dd> + <dt><code>unixMode</code></dt> + <dd>(ignored under non-Unix platforms) If specified, file creation mode, as per libc function <code>open</code>. If unspecified, files are created with a default mode of 0600 (file is private to the user, the user can read and write). You can build this mode from values <a href="/en/JavaScript_OS.Constants#libc_opening_files" title="en/JavaScript_OS.Constants#libc_opening_files"><code>OS.Constants.libc.S_I*</code></a>.</dd> + <dt><code>winShare</code></dt> + <dd>(ignored under non-Windows platforms) If specified, a sharing policy, as per Windows function <code>CreateFile</code>. If unspecified, files are opened with a default sharing policy (file is not protected against being read/written/removed by another process or another use in the same process). You can build this policy from constants OS.Constants.Win.FILE_SHARE_*.</dd> + <dt><code>winSecurity</code></dt> + <dd>(ignored under non-Windows platforms) If specified, a security policy, as per Windows function <code>CreateFile</code>. If unspecified, no security attributes.</dd> + <dt><code>winAccess</code></dt> + <dd>(ignored under non-Windows platforms) If specified, access mode, as per Windows function <code>CreateFile</code>. This also requires option <code>winDisposition</code> and this replaces argument <code>mode</code>. If unspecified, value is built from <code>mode</code>.</dd> + <dt><code>winDisposition</code></dt> + <dd>(ignored under non-Windows platforms) If specified, disposition mode, as per Windows function <code>CreateFile</code>. This also requires option <code>winAccess</code> and this replaces argument <code>mode</code>. If unspecified, value is built from <code>mode</code>.</dd> + </dl> + </dd> +</dl> + +<h5 id="Promise_resolves_to">Promise resolves to</h5> + +<p>An instance of <code>OS.File</code> representing the expected file.</p> + +<div class="warning">Note that the operating system limits the number of files that can be opened simultaneously by one process, so do not forget to <a href="/OS.File.prototype.close" title="OS.File.prototype.close"><code>close</code></a> that file once you have finished it, to ensure that you are not blocking the rest of the process.</div> + +<p>When opening files for writing, they will be opened for appending unless you specify <code>append: false</code> in Gecko 27 and later. In Gecko 26 and earlier, on platforms other than Windows, the files will be opened for appending unless you specify explicit <code>unixFlags</code> or open the file with either <code>create</code> or <code>truncate</code> flags. In Gecko 26 and earlier on Windows, files will never be opened for appending.</p> + +<p>To open an existing file for writing <em>without</em> appending in a compatible way on all platforms in both Gecko 27 and later and Gecko 26 and earlier, you should specify both the <code>append</code> flag and <code>unixFlags</code>.</p> + +<pre class="brush:js; language-js">// Open a file for writing without appending to it. + +Task.spawn(function() { + // Under Unix, you'll have to specify your own unixFlags for Gecko < 27 to avoid append mode. + var options = {}; + if (OS.Constants.libc) { + // Own flags omitting O_APPEND, e.g. + options.unixFlags = OS.Constants.libc.O_CREAT | OS.Constants.libc.O_WRONLY; + } + // For Gecko >= 27, it is enough, but crucial, to set the correct append flag. + var outfile = yield OS.File.open("file.tmp", {write: true, append: false}, options); + try { + // ... do something with that file + } finally { + yield outfile.close(); + } +});</pre> + +<h5 id="Example_of_opening_file_and_keeping_it_locked">Example of opening file and keeping it locked</h5> + +<p>This uses Tasks.jsm to open a file and keep it open. When you are done with it, like in shutdown of restartless add-on, you should close the file so it becomes editable again.</p> + +<pre class="brush:js; language-js">let options = { + winShare: 0 // Exclusive lock on Windows +}; +if (OS.Constants.libc.O_EXLOCK) { + // Exclusive lock on *nix + options.unixFlags = OS.Constants.libc.O_EXLOCK; +} +let file = yield OS.File.open(..., options);</pre> + +<p>Then when you want to unlock the file so it can be edited from other places, close the file.</p> + +<pre class="brush:js; language-js">file.close();</pre> + +<p>This example is from Stackoverflow: <a href="http://stackoverflow.com/questions/24462115/os-file-check-last-modified-date-before-os-read#24463662">OS.File check last modified date before OS.read</a></p> + +<h4 id="OS.File.openUnique()">OS.File.openUnique()<a name="OS.File.openUnique"></a></h4> + +<p>Creates and opens a file with a unique name. By default, generate a random hex number and use it to create a unique new file name.</p> + +<pre>Promise<object> openUnique( + in string path, + [optional] in object options +) throws <a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></pre> + +<h5 id="Arguments_2">Arguments</h5> + +<dl> + <dt><code>path</code></dt> + <dd>The full native name of the file to open.</dd> + <dt><code>options</code> {{optional_inline()}}</dt> + <dd>Additional options for file opening. This implementation interprets the following fields: + <dl> + <dt><code>humanReadable</code></dt> + <dd>If <code>true</code>, create a new filename appending a decimal number, e.g., filename-1.ext, filename-2.ext. If <code>false</code> use hex numbers, e.g., filename-A65BC0.ext.</dd> + <dt><code>maxAttempts</code></dt> + <dd>Used to limit the amount of tries after a failed file creation. Default is 99.</dd> + </dl> + </dd> +</dl> + +<h5 id="Promise_resolves_to_2">Promise resolves to</h5> + +<p>An object contains a file object{file} and the path{path}.</p> + +<h5 id="Promise_can_be_rejected_with">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>If the file could not be opened.</dd> +</dl> + +<h4 id="OS.File.copy()">OS.File.copy()<a name="OS.File.copy"></a></h4> + +<p>Copy a file.</p> + +<pre>void copy( + in string sourcePath, + in string destPath + [optional] in object options) +throws <a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a> +</pre> + +<h5 id="Arguments_3">Arguments</h5> + +<dl> + <dt><code>sourcePath</code></dt> + <dd>The full path of the file to copy. At the time of this writing, this function does <strong>not</strong> copy directories.</dd> + <dt><code>destPath</code></dt> + <dd>The full path of the destination. Note that this is not a directory but a file.</dd> + <dt><code>options</code> {{optional_inline()}}</dt> + <dd>An optional object used to control the behavior of this function. You may pass an object with a subset of the following fields:</dd> + <dt style="margin-left: 40px;"><code>noOverwrite</code></dt> + <dd style="margin-left: 40px;">If <code>destPath</code> already exists, do not overwrite it, but rather launch an exception.</dd> +</dl> + +<h5 id="Promise_can_be_rejected_with_2">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error, in particular if the file does not exist.</dd> +</dl> + +<div class="note"><strong>Performance notes</strong> + +<ul> + <li>To avoid erasing the destination file, it is much faster to use option <code>noOverwrite</code> than to check manually whether the file exists.</li> + <li>This operation is OS-optimized under OS X (native operation <code>copyfile</code>), Linux/Android (native operation <code>splice</code>), and Windows (native operation <code>CopyFile</code>).</li> +</ul> +</div> + +<h4 id="OS.File.exists()">OS.File.exists()<a name="OS.File.exists"></a></h4> + +<p>Determine whether a file exists</p> + +<pre class="brush: js">Promise<bool> exists( + in string path +) +</pre> + +<h5 id="Arguments_4">Arguments</h5> + +<dl> + <dt><code>path</code></dt> + <dd>The name of the file</dd> +</dl> + +<h5 id="Promise_resolves_to_3">Promise resolves to</h5> + +<p>true if the file exists, false otherwise</p> + +<div class="note"><strong>Performance note: </strong>For the sake of performance, you should avoid this function whenever possible. For instance, rather than calling exists() to determine if a directory should be created with makeDir, you should rather create the directory with makeDir and catch the error if the directory exists. This will ensure that you only need to perform one I/O operation rather than two.</div> + +<h4 id="OS.File.getCurrentDirectory()">OS.File.getCurrentDirectory()<a name="OS.File.getCurrentDirectory"></a></h4> + +<p>Return the current directory</p> + +<pre class="brush: js">Promise<string> getCurrentDirectory()</pre> + +<h5 id="Promise_resolves_to_4">Promise resolves to</h5> + +<p>The path to the current directory.</p> + +<div class="note"> +<p><strong>Safety note:</strong> Recall that the current directory can change during the execution of the process. Therefore, the information returned by this function may be false by the time you receive it.</p> +</div> + +<h4 id="OS.File.makeDir()">OS.File.makeDir()<a name="OS.File.makeDir"></a></h4> + +<p>Create a new directory</p> + +<pre>Promise<void> makeDir( + in string path, + [optional] in object options +) throws <a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></pre> + +<h5 id="Arguments_5">Arguments</h5> + +<dl> + <dt><code>path</code></dt> + <dd>The full name of the directory to create.</dd> + <dt><code>options</code> {{optional_inline()}}</dt> + <dd>Options for creating the directory. To specify options, pass an object that may contain some of the following flags:</dd> + <dt style="margin-left: 40px;"><code>ignoreExisting</code></dt> + <dd style="margin-left: 40px;">If <code>true</code>, succeed even if the directory already exists (default behavior). Otherwise, fail if the directory already exists. NOTE: If <code>from</code> is specified then even if <code>ignoreExisting</code> is specified as <code>false</code>, it will not fail due to pre-existence of directories, because the <code>from</code> option tells <code>makeDir</code> to make the folders if not found.</dd> + <dt style="margin-left: 40px;"><code>unixMode</code></dt> + <dd style="margin-left: 40px;">(ignored under non-Unix platforms) If specified, file creation mode, as per libc function mkdir. If unspecified, directories are created with a default mode of 0600 (file is private to the user, the user can read and write). You can build this mode from values <a href="/en/JavaScript_OS.Constants#libc_opening_files" title="en/JavaScript_OS.Constants#libc_opening_files"><code>OS.Constants.libc.S_I*</code></a>.</dd> + <dt style="margin-left: 40px;"><code>winSecurity</code></dt> + <dd style="margin-left: 40px;">(ignored under non-Windows platforms) If specified, a security policy, as per Windows function <code>CreateDirectory</code>. If unspecified, no security attributes.</dd> + <dt style="margin-left: 40px;"><code>from</code></dt> + <dd style="margin-left: 40px;">If specified, the call to <code>makeDir</code> creates all the ancestors of <code>path</code> that are descendents of <code>from</code>. Note that <code>from</code> and its existing descendents must be user-writeable and that <code>path</code> must be a descendent of <code>from</code>.</dd> +</dl> + +<h4 id="OS.File.move()">OS.File.move()<a name="OS.File.move"></a></h4> + +<p>Move a file.</p> + +<pre>Promise<void> move( + in string sourcePath, + in string destPath + [optional] in object options +)</pre> + +<h5 id="Arguments_6"><span>Arguments</span></h5> + +<dl> + <dt><code>sourcePath</code></dt> + <dd>The full path of the file to move. At the time of this writing, the behavior of this function is unspecified if <code>sourcePath</code> is a directory.</dd> + <dt><code>destPath</code></dt> + <dd>The full path of the destination. At the time of this writing, the behavior of this function is unspecified if <code>destPath</code> is a directory.</dd> + <dt><code>options</code> {{optional_inline()}}</dt> + <dd>An optional object used to control the behavior of this function. You may pass an object with a subset of the following fields: + <dl> + <dt><code>noOverwrite</code></dt> + <dd>If <code>destPath</code> already exists, do not overwrite it, but rather launch an exception.</dd> + <dt><code>noCopy</code></dt> + <dd>If moving the file would require a copy (i.e. if the destination path resides on another drive/device/file system as the source path), fail.</dd> + </dl> + </dd> +</dl> + +<h5 id="Promise_can_be_rejected_with_3">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error, in particular if the file does not exist.</dd> +</dl> + +<div class="note"><strong>Performance note</strong>: This operation is OS-optimized under OS X, Linux/Android, and Windows.</div> + +<h4 id="OS.File.read()">OS.File.read()<a name="OS.File.read"></a></h4> + +<p>Read the contents of a file</p> + +<pre class="brush: js">Promise<Uint8Array> read( + in string path, + [optional] in number bytes +) +</pre> + +<h5 id="Arguments_7">Arguments</h5> + +<dl> + <dt><code>path</code></dt> + <dd>The full path to the file to read.</dd> + <dt><code>bytes</code> {{optional_inline()}}</dt> + <dd>The number of bytes to read. If unspecified, read the complete file.</dd> +</dl> + +<h5 id="Promise_resolves_to_5">Promise resolves to</h5> + +<p>An array holding bytes bytes (or less if the file did not contain as many bytes).</p> + +<h5 id="Promise_can_be_rejected_with_4">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error, in particular if the file does not exist or if the process does not have the authorization to read it.</dd> +</dl> + +<div class="note"> +<dl> + <dt>As of Firefox 30, OS.File.read() takes an options object as second argument.</dt> +</dl> + +<pre class="brush: js">Promise<Uint8Array> read( + in string path, + [optional] in object options +)</pre> + +<h5 id="Arguments_8">Arguments</h5> + +<dl> + <dt><code>path</code></dt> + <dd>The full path to the file to read.</dd> +</dl> + +<dl> + <dt><code>options</code> {{optional_inline()}}</dt> + <dd>An optional object used to control the behavior of this function. You may pass an object with a subset of the following fields: + <dl> + <dt><code>bytes</code></dt> + <dd>The number of bytes to read. If unspecified, read the complete file.</dd> + <dt><code>encoding</code></dt> + <dd>Instead of using <code>TextDecoder</code>, you can supply a string to this option. For example, instead of: + <pre class="brush: js">let decoder = new TextDecoder(); +let promise = OS.File.read("file.txt"); +promise = promise.then( + function onSuccess(array) { + return decoder.decode(array); // Convert this array to a text + } +);</pre> + You can simply do: + + <pre class="brush: js">let promise = OS.File.read("file.txt", { encoding: "utf-8" }); +promise = promise.then( + function onSuccess(text) { + return text; // text is a string + } +);</pre> + </dd> + </dl> + </dd> +</dl> +</div> + +<h4 id="OS.File.remove()">OS.File.remove()<a name="OS.File.remove"></a></h4> + +<p>Remove an existing file.</p> + +<pre>Promise<void> remove( + in string path, + [optional] in object options +) +</pre> + +<h5 id="Arguments_9">Arguments</h5> + +<dl> + <dt><code>path</code></dt> + <dd>A string representing the path of the file to remove. At the time of this writing, this function does <strong>not</strong> remove directories.</dd> + <dt>options {{optional_inline()}}</dt> + <dd>An optional object used to control the behavior of this function. You may pass an object with a subset of the following fields:</dd> + <dt style="margin-left: 40px;"><code>ignoreAbsent</code></dt> + <dd style="margin-left: 40px;">Succeed if the file doesn't exist.</dd> +</dl> + +<h5 id="Promise_can_be_rejected_with_5">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error, in particular if the file does not exist.</dd> +</dl> + +<h4 id="OS.File.removeEmptyDir()">OS.File.removeEmptyDir()<a name="OS.File.removeEmptyDir"></a></h4> + +<p>Remove an empty directory</p> + +<pre class="brush: js">Promise<void> removeEmptyDir( + in string path, + [optional] in object options +) +</pre> + +<h5 id="Arguments_10">Arguments</h5> + +<dl> + <dt><code>path</code></dt> + <dd>The complete path to the directory.</dd> + <dt>options {{optional_inline()}}</dt> + <dd>An optional object used to control the behavior of this function. You may pass an object with a subset of the following fields:</dd> + <dt style="margin-left: 40px;"><code>ignoreAbsent</code></dt> + <dd style="margin-left: 40px;">Succeed if the directory doesn't exist.</dd> +</dl> + +<h5 id="Promise_can_be_rejected_with_6">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error, in particular if the file does not exist.</dd> +</dl> + +<h4 id="OS.File.removeDir()">OS.File.removeDir()<a name="OS.File.removeDir"></a></h4> + +<p>Remove an existing directory and its contents.</p> + +<pre>Promise<void> removeDir( + in string path, + [optional] in object options +) +</pre> + +<h5 id="Arguments_11">Arguments</h5> + +<dl> + <dt><code>path</code></dt> + <dd>A string representing the name of the file to remove.</dd> + <dt><code>options</code></dt> + <dd>An object that may contain the following fields</dd> + <dt style="margin-left: 40px;"><code>ignoreAbsent</code></dt> + <dd style="margin-left: 40px;">If false, this function will throw an error if the directory doesn't exist.</dd> + <dt style="margin-left: 40px;"><code>ignorePermissions</code></dt> + <dd style="margin-left: 40px;">If true, this function will remove the directory even when lacking write permissions.</dd> +</dl> + +<h5 id="Promise_can_be_rejected_with_7">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error, in particular if path isn't a directory.</dd> +</dl> + +<h4 id="OS.File.setCurrentDirectory()">OS.File.setCurrentDirectory()<a name="OS.File.setCurrentDirectory"></a></h4> + +<p>Change the current directory of the process.</p> + +<div class="warning"><strong>Use with extreme caution</strong>: This API may be useful for application developers but must not be used by add-ons, as it changes the state of the complete application.</div> + +<pre class="brush: js">Promise<void> setCurrentDirectory( + in string path +)</pre> + +<h5 id="Arguments_12">Arguments</h5> + +<dl> + <dt><code>path</code></dt> + <dd>The complete path to use as current directory.</dd> +</dl> + +<h5 id="Promise_can_be_rejected_with_8">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error, in particular if the path does not represent an existing directory.</dd> +</dl> + +<h4 id="OS.File.setDates()">OS.File.setDates()<a name="OS.File.setDates"></a></h4> + +<p>Set the last access and modification date of the file.</p> + +<p>The time stamp resolution is one second at best, but might be worse depending on the platform, file system, etc.</p> + +<pre class="brush: js">Promise<void> setDates( + in string path, + in Date|number accessDate, + in Date|number modificationDate +)</pre> + +<h5 id="Arguments_13">Arguments</h5> + +<dl> + <dt>path</dt> + <dd>The complete path to the file.</dd> + <dt>accessDate</dt> + <dd>The last access date. If numeric, milliseconds since epoch. If omitted or null, the current date will be used.</dd> + <dt>modificationDate</dt> + <dd>The last modification date. If numeric, milliseconds since epoch. If omitted or null, the current date will be used.</dd> +</dl> + +<h5 id="Promise_can_be_rejected_with_9">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error, in particular if the path does not represent an existing file.</dd> +</dl> + +<dl> + <dt> + <h4 id="OS.File.setPermissions()">OS.File.setPermissions()<a name="OS.File.setPermissions"></a></h4> + + <p>Sets the file's access permission bits.</p> + + <pre class="brush: js">Promise<void> setPermissions( + in string path, + in object options +)</pre> + + <h5 id="Arguments_14">Arguments</h5> + </dt> + <dt>path</dt> + <dd>The complete path to the file.</dd> + <dt>options</dt> + <dd>The new attributes to set</dd> + <dt style="margin-left: 40px;"><code>winAttributes</code></dt> + <dd style="margin-left: 40px;">This is an object with following optional keys. Ignored under non-Windows platforms.</dd> + <dt style="margin-left: 80px;"><code>hidden</code></dt> + <dd style="margin-left: 80px;">Boolean. Set to true to make the target hidden, or false to make it visible.</dd> + <dt style="margin-left: 80px;"><code>readOnly</code></dt> + <dd style="margin-left: 80px;">Boolean. Set to true to make the target "read only".</dd> + <dt style="margin-left: 80px;"><code>system</code></dt> + <dd style="margin-left: 80px;">Boolean. Toggles the "system" attribute, this is equivalent .</dd> + <dt style="margin-left: 40px;"><code>unixMode</code></dt> + <dd style="margin-left: 40px;">Number. This is an number can be created with the constants available in <code>OS.Constants.libc.S_I*</code> or <code>OS.Constants.libc.S_O*</code>. Ignored under non-Unix platforms. To make a file hidden on Unix based platforms, including Mac, simply rename the file with <code>OS.File.move</code> to have "." at the start of the file name.</dd> + <dt style="margin-left: 40px;"><code>unixHonorUmask</code></dt> + <dd style="margin-left: 40px;">Toggles the <code>OS.Constants.Sys.umask</code> flag. Ignored under non-Unix platforms..</dd> + <dt> + <h5 id="Promise_can_be_rejected_with_10">Promise can be rejected with</h5> + </dt> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error, in particular if the path does not represent an existing file.</dd> +</dl> + +<h4 id="OS.File.stat()">OS.File.stat()<a name="OS.File.stat"></a></h4> + +<p>Obtain information about a file, such as size, creation date, etc.</p> + +<pre class="brush: js">Promise<File.Info> stat( + in string path +)</pre> + +<h5 id="Arguments_15">Arguments</h5> + +<dl> + <dt><code>path</code></dt> + <dd>The complete path to the file.</dd> +</dl> + +<h5 id="Promise_resolves_to_6">Promise resolves to</h5> + +<p class="brush: js">An instance of <a href="/en-US/docs/JavaScript_OS.File/OS.File.Info" title="/en-US/docs/JavaScript_OS.File/OS.File.Info">File.Info</a> holding information about a file.</p> + +<h5 id="Promise_can_be_rejected_with_11">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error, in particular if the path does not represent an existing file.</dd> +</dl> + +<div class="note"><strong>Performance Note:</strong> If the file is already opened, calling <em>method</em> <a href="#OS.File.prototype.stat" title="#OS.File.prototype.stat"><code>stat()</code></a> is much faster than calling <em>function</em> <a href="#OS.File.stat" title="#OS.File.stat">OS.File.stat()</a>.</div> + +<h4 id="OS.File.unixSymLink()">OS.File.unixSymLink()<a id="OS.File.unixSymLink" name="OS.File.unixSymLink"></a></h4> + +<p>Create a symoblic link file, also known as "Alias" files on Mac OS. This is similar to "Shortcut" files on Windows systems. This function is specific to UNIX baed systems such as Linux and Mac OS X.</p> + +<pre class="brush: js">Promise<undefined> unixSymLink( + in string pathTarget, + in string pathCreate +)</pre> + +<h5 id="Arguments_16">Arguments</h5> + +<dl> + <dt><code>pathTarget</code></dt> + <dd>The complete path to the file that should be launced by the symbolic link.</dd> +</dl> + +<dl> + <dt><code>pathCreate</code></dt> + <dd>The complete path to the file that should launch target. The file extension should be <code>.link.</code></dd> +</dl> + +<h5 id="Promise_resolves_to_7">Promise resolves to</h5> + +<p class="brush: js">undefined</p> + +<h5 id="Promise_can_be_rejected_with_12">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error. If the file exists already, unixErrorco of 17 will be returned.</dd> +</dl> + +<h4 id="OS.File.writeAtomic()">OS.File.writeAtomic()<a name="OS.File.writeAtomic"></a></h4> + +<p>Write data to a file, atomically.</p> + +<p>Unlike a regular <code>write</code>, this operation ensures that, until the contents are fully written, the destination file is not modified.</p> + +<pre class="brush: js">Promise<void> writeAtomic( + in string path, + in ArrayBufferView data, + in object options +)</pre> + +<h5 id="Arguments_17">Arguments</h5> + +<dl> + <dt><code>path</code></dt> + <dd>The full path to the destination file.</dd> + <dt><code>data</code></dt> + <dd>An <a href="/en-US/docs/JavaScript_typed_arrays/ArrayBufferView" title="/en-US/docs/JavaScript_typed_arrays/ArrayBufferView">ArrayBufferView</a> holding the data to write.</dd> + <dd>{{ Fx_minversion_note("37.0", "As of Firefox 37, this method will neuter the array buffer.") }}</dd> + <dt> </dt> + <dt><code>options</code></dt> + <dd>An object that may contain the following fields</dd> + <dt style="margin-left: 40px;"><code>tmpPath</code></dt> + <dd style="margin-left: 40px;">If <code>null</code> or unspecified, write the data directly to <code>path</code>. If specified, write the data to a temporary file called <code>tmpPath</code> and, once the write is complete, rename the file to replace <code>path</code>. Performing this operation is a little slower but also a little safer. {{ Fx_minversion_note("25.0", "tmpPath is required in Firefox 24 or lower version, but optional in Firefox 25 or higher version") }}</dd> + <dt style="margin-left: 40px;"><code>noOverwrite</code></dt> + <dd style="margin-left: 40px;">If specified and true, and if <code>path</code> already exists, this function will throw an error without overwriting <code>path</code>.</dd> + <dt style="margin-left: 40px;"><code>flush</code></dt> + <dd style="margin-left: 40px;">If <code>false</code> or unspecified, return immediately once the write is complete. If <code>true</code>, before writing, force the operating system to write its internal disk buffers to the disk. This is considerably slower (not just for the application but for the whole system) and more battery expensive but also safer: if the system shuts down improperly (typically due to a kernel freeze or a power failure) or if the device is disconnected before the buffer is flushed, the file has more chances of not being corrupted.</dd> + <dt style="margin-left: 40px;"><code>backupTo</code></dt> + <dd style="margin-left: 40px;">Available since Firefox 30. If specified, backup the destination file as <code>backupTo</code>. Note that this function renames the destination file before overwriting it. If the process or the operating system freezes or crashes during the short window between these operations, the destination file will have been moved to its backup.</dd> + <dt style="margin-left: 40px;"><code>encoding</code></dt> + <dd style="margin-left: 40px;">Available since Firefox 22. Instead of using <code>TextEncoder</code>, you can supply a string to this option. For example, instead of: + <pre class="brush: js">let encoder = new TextEncoder(); +let array = encoder.encode("This is some text"); +let promise = OS.File.writeAtomic("file.txt", array, {tmpPath: "file.txt.tmp"});</pre> + You can simply do: + + <pre class="brush: js">let promise = OS.File.writeAtomic("file.txt", "This is some text", { encoding: "utf-8", tmpPath: "file.txt.tmp" })</pre> + </dd> +</dl> + +<div class="warning"><strong>Limitations</strong><br> +In a few extreme cases (hardware failure during the write, user unplugging disk during the write, etc.), data may be corrupted. If your data is user-critical (e.g., preferences, application data), you may wish to consider adding options <code>tmpPath</code> and/or <code>flush</code> to reduce the likelihood of corruption, as detailed above. Note that no combination of options can be guaranteed to totally eliminate the risk of corruption.<br> + </div> + +<div class="warning"><strong>Use with caution:</strong> Modifying the contents of <code>data</code> before the operation is complete is a <strong>very bad idea</strong>.</div> + +<h5 id="Promise_can_be_rejected_with_13">Promise can be rejected with</h5> + +<dl> + <dt><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></dt> + <dd>In case of any error, in particular if the destination file cannot be overwritten, or if <code>tmpPath</code> is not on the same device as <code>path</code>.</dd> +</dl> + +<h2 id="Instances_of_OS.File">Instances of OS.File</h2> + +<p>To obtain an instance of OS.File, use function <a href="#OS.File.open" title="#OS.File.open">OS.File.open</a>.</p> + +<h3 id="Methods_overview">Methods overview</h3> + +<table style="height: 321px; width: 942px;"> + <tbody> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.prototype.close" title="#OS.File.prototype.close">close</a>()</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.prototype.flush" title="#OS.File.prototype.flush">flush</a>()</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><number> <a href="#OS.File.prototype.getPosition" title="#OS.File.prototype.getPosition">getPosition</a>()</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><number> <a href="#OS.File.prototype.read" title="#OS.File.prototype.read">read</a>([optional] in number bytes)</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.prototype.setDates">setDates</a>(in Date|number accessDate, in Date|number modificationDate);</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><void> <a href="#OS.File.prototype.setPosition" title="#OS.File.prototype.setPosition">setPosition</a>(in number bytes)</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><<a href="/en-US/docs/JavaScript_OS.File/OS.File.Info" title="/en-US/docs/JavaScript_OS.File/OS.File.Info">File.Info</a>> <a href="#OS.File.prototype.stat" title="#OS.File.prototype.stat">stat</a>()</code></td> + </tr> + <tr> + <td><code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a><number> <a href="#OS.File.prototype.write" title="#OS.File.prototype.write">write</a>(in <a href="/en-US/docs/JavaScript_typed_arrays/ArrayBufferView" title="/en-US/docs/JavaScript_typed_arrays/ArrayBufferView">ArrayBufferView</a> source, [optional] in object options)</code></td> + </tr> + </tbody> +</table> + +<h3 id="Methods_2">Methods</h3> + +<h4 id="close()">close()<a name="OS.File.prototype.close"></a></h4> + +<p>Close a file and release any associated resource.</p> + +<p>Once the file is closed, any attempt to call methods of the file object will raise an error.</p> + +<p>An example is seen <a href="#Example: Append to File">here</a>. In this example the contents is not written to file until .close is called.</p> + +<div class="warning">Note that the operating system limits the number of files that can be opened simultaneously by one process, so do not forget to <a href="/#OS.File.prototype.close" title="#OS.File.prototype.close"><code>close</code></a> that file once you have finished it to make sure that you are not blocking the rest of the process.</div> + +<pre class="brush: js">Promise<void> close()</pre> + +<h3 id="flush()">flush()</h3> + +<p>Flushes the file's internal buffers, ensuring that all data still in these buffers is now written to disk.</p> + +<p>Disk flushes are very expensive and therefore should be used carefully, sparingly, and only in scenarios where it is vital that data survives<span class="difflineplus"> system crashes. Even though the function will be executed off the main-thread, it might still affect the overall performance of any running application.</span></p> + +<pre class="brush: js">Promise<void> flush()</pre> + +<h4 id="getPosition()"><a name="OS.File.prototype.getPosition">getPosition</a>()</h4> + +<p>Return the current position in the file.</p> + +<pre>Promise<number> getPosition() +</pre> + +<h5 id="Promise_resolves_to_8">Promise resolves to</h5> + +<p>The current position in the file, as a number of bytes from the start.</p> + +<h5 id="Promise_can_be_rejected_with_14">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>If the file is closed.</dd> +</dl> + +<h4 id="read()">read()<a name="OS.File.prototype.read"></a></h4> + +<p>Read bytes from this file to a new buffer. Bytes are read from the current position in the file and the position is advanced accordingly.</p> + +<pre>Promise<Uint8Array> read( + [optional] in number bytes +)</pre> + +<h5 id="Arguments_18">Arguments</h5> + +<dl> + <dt><code>bytes</code></dt> + <dd>If specified, read <code>bytes</code> bytes, or less if the file does not contain that many bytes. If unspecified, read all the remaining bytes from this file.</dd> +</dl> + +<h5 id="Promise_resolves_to_9">Promise resolves to</h5> + +<p>An array containing the bytes read.</p> + +<div class="note">If you need to convert the result of this function to a string, you may do so by using the <a href="http://wiki.whatwg.org/wiki/StringEncoding" title="http://wiki.whatwg.org/wiki/StringEncoding">StringEncoding API</a>.</div> + +<h5 id="Promise_can_be_rejected_with_15">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of I/O error.</dd> +</dl> + +<h4 id="setDates()">setDates()<a name="OS.File.prototype.setDates"></a></h4> + +<p>Set the last access and modification date of the file.</p> + +<p>The time stamp resolution is one second at best, but might be worse depending on the platform, file system, etc.</p> + +<pre class="brush: js">Promise<void> setDates( + in Date|number accessDate, + in Date|number modificationDate +)</pre> + +<h5 id="Arguments_19">Arguments</h5> + +<dl> + <dt>accessDate</dt> + <dd>The last access date. If numeric, milliseconds since epoch. If omitted or null, the current date will be used.</dd> + <dt>modificationDate</dt> + <dd>The last modification date. If numeric, milliseconds since epoch. If omitted or null, the current date will be used.</dd> +</dl> + +<h5 id="Promise_can_be_rejected_with_16">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error, in particular if the path does not represent an existing file.</dd> +</dl> + +<h4 id="setPosition()">setPosition()<a name="OS.File.prototype.setPosition"></a></h4> + +<p>Change the current position in the file.</p> + +<pre>Promise<void> setPosition( + in number offset, + in object origin +) +</pre> + +<h5 id="Arguments_20">Arguments</h5> + +<dl> + <dt><code>offset</code></dt> +</dl> + +<dl> + <dd>The new position, as a number of bytes from the origin.</dd> + <dt><code>origin</code></dt> + <dd>One of the following: + <ul> + <li><code>OS.File.POS_START</code> (bytes are counted from the start of the file)</li> + <li><code>OS.File.POS_CUR</code> (bytes are counted from the current position in the file)</li> + <li><code>OS.File.POS_END</code> (bytes are counted from the end of the file)</li> + </ul> + </dd> +</dl> + +<h5 id="Promise_can_be_rejected_with_17">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error, in particular if the new position is before the start of the file, or if the file is closed.</dd> +</dl> + +<h4 id="stat()">stat()<a name="OS.File.prototype.stat"></a></h4> + +<p>Obtain information about the file, such as size, creation date, etc.</p> + +<pre class="brush: js">Promise<<a href="/en-US/docs/JavaScript_OS.File/OS.File.Info" title="/en-US/docs/JavaScript_OS.File/OS.File.Info">File.Info</a>> stat()</pre> + +<h5 id="Promise_resolves_to_10">Promise resolves to</h5> + +<p class="brush: js">An instance of <a href="/en-US/docs/JavaScript_OS.File/OS.File.Info" title="/en-US/docs/JavaScript_OS.File/OS.File.Info">File.Info</a> holding information about the file.</p> + +<h5 id="Promise_can_be_rejected_with_18">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any error, in particular if the file is closed.</dd> +</dl> + +<h4 id="write()">write()<a name="OS.File.prototype.write"></a></h4> + +<p>Write bytes from a buffer to this file.</p> + +<p>Note that, by default, this function may perform several I/O operations to ensure that the buffer is fully written.</p> + +<p>An example is seen <a href="#Example: Append to File">here</a>.</p> + +<pre>Promise<number> write( + in <a href="/en-US/docs/JavaScript_typed_arrays/ArrayBufferView" title="/en-US/docs/JavaScript_typed_arrays/ArrayBufferView">ArrayBufferView</a> source + [optional] in object options +)</pre> + +<h5 id="Arguments_21">Arguments</h5> + +<dl> + <dt><code>source</code></dt> + <dd>The array in which the the bytes are stored.</dd> + <dd>{{ Fx_minversion_note("37.0", "As of Firefox 37, this method will neuter the array buffer.") }}</dd> + <dt><code>options</code> {{optional_inline()}}</dt> + <dd>An object that may contain some of the following fields:</dd> + <dt style="margin-left: 40px;"><code>bytes</code></dt> + <dd style="margin-left: 40px;">An upper bound to the number of bytes to write to the file. If unspecified, write up to <code>source.byteLength</code> bytes. If specified, this must be less than <code>source.byteLength</code>.</dd> +</dl> + +<h5 id="Promise_resolves_to_11">Promise resolves to</h5> + +<p>The number of bytes effectively written to the file.</p> + +<h5 id="Promise_can_be_rejected_with_19">Promise can be rejected with</h5> + +<dl> + <dt><code><a href="/en-US/docs/JavaScript_OS.File/OS.File.Error" title="/en-US/docs/JavaScript_OS.File/OS.File.Error">OS.File.Error</a></code></dt> + <dd>In case of any I/O error.</dd> + <dt><code>TypeError</code></dt> + <dd>If <code>options.bytes</code> is specified and is larger than <code>source.byteLength</code>.</dd> +</dl> diff --git a/files/fr/mozilla/javascript_code_modules/services.jsm/index.html b/files/fr/mozilla/javascript_code_modules/services.jsm/index.html new file mode 100644 index 0000000000..5db295d311 --- /dev/null +++ b/files/fr/mozilla/javascript_code_modules/services.jsm/index.html @@ -0,0 +1,283 @@ +--- +title: Services.jsm +slug: Mozilla/JavaScript_code_modules/Services.jsm +tags: + - Add-ons + - Extensions + - Interface + - JavaScript + - Modules + - Services + - XPCOM +translation_of: Mozilla/JavaScript_code_modules/Services.jsm +--- +<p>{{ gecko_minversion_header("2") }}</p> + +<p><span class="seoSummary">Le service Sercices.jsm Javascript module code offre un large assortiment de getters paresseux qui simplifient les processus d'obtention la reference des services communement utilisé.</span></p> + +<p>Pour l'utiliser, vous devez en premier importer le code module dans l'environement Javascript: </p> + +<pre class="eval"><span class="nowiki">Components.utils.import("resource://gre/modules/Services.jsm");</span> +</pre> + +<p>Then you can obtain references to services by simply accessing them from the <code>Services</code> object exported by the code module. For example, to obtain a reference to the preferences service:</p> + +<pre class="brush: js">var prefsService = Services.prefs; +</pre> + +<h2 id="Provided_service_getters">Provided service getters</h2> + +<table class="standard-table" style="width: auto;"> + <tbody> + <tr> + <td class="header">Service accessor</td> + <td class="header">Service interface</td> + <td class="header">Service name</td> + </tr> + <tr> + <td><code>androidBridge</code></td> + <td>{{ interface("nsIAndroidBridge") }}</td> + <td><sup><a href="#note1">1</a></sup></td> + </tr> + <tr> + <td><code>appinfo</code></td> + <td>{{ interface("nsIXULAppInfo") }}<br> + {{ interface("nsIXULRuntime") }}</td> + <td>Application information service</td> + </tr> + <tr> + <td><code>appShell</code></td> + <td>{{ interface("nsIAppShellService") }}</td> + <td>Application shell service</td> + </tr> + + <tr> + <td><code>blocklist</code></td> + <td>{{ interface("nsIBlocklistService") }}</td> + <td>Blocklist service</td> + </tr> + <tr> + <td><code>cache</code></td> + <td>{{ interface("nsICacheService") }}</td> + <td>Cache service</td> + </tr> + <tr> + <td><code>cache2</code></td> + <td>{{ interface("nsICacheStorageService") }}</td> + <td>Cache storage service</td> + </tr> + <tr> + <td><code>clipboard</code></td> + <td>{{ interface("nsIClipboard") }}</td> + <td>Clipboard</td> + </tr> + <tr> + <td><code>console</code></td> + <td>{{ interface("nsIConsoleService") }}</td> + <td>Error console service</td> + </tr> + <tr> + <td><code>contentPrefs</code></td> + <td>{{ interface("nsIContentPrefService") }}</td> + <td>Content Preferences service</td> + </tr> + <tr> + <td><code>cookies</code></td> + <td>{{ interface("nsICookieManager2") }}</td> + <td>Cookie Manager 2 service</td> + </tr> + <tr> + <td>cpmm</td> + <td>{{ interface("nsIMessageSender") }}</td> + <td><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Message_manager_overview#Child_process_message_manager">Child process message manager</a><sup><a href="#note4">4</a></sup></td> + </tr> + <tr> + <td><code>crashmanager</code></td> + <td><a class="external" href="http://dxr.mozilla.org/mozilla-central/source/toolkit/components/crashes/CrashManager.jsm">CrashManager.jsm</a></td> + <td> </td> + </tr> + <tr> + <td><code>dirsvc</code></td> + <td>{{ interface("nsIDirectoryService") }}<br> + {{ interface("nsIProperties") }}</td> + <td>Directory service</td> + </tr> + <tr> + <td><code>domStorageManager</code></td> + <td>{{ interface("nsIDOMStorageManager") }}</td> + <td>DOM Storage Manager</td> + </tr> + <tr> + <td><code>DOMRequest</code></td> + <td>{{ interface("nsIDOMRequestService") }}</td> + <td>DOMRequest service</td> + </tr> + <tr> + <td><code>downloads</code></td> + <td>{{ interface("nsIDownloadManager") }}</td> + <td>Download manager</td> + </tr> + <tr> + <td><code>droppedLinkHandler</code></td> + <td>{{ interface("nsIDroppedLinkHandler") }}</td> + <td>Dropped link handler service</td> + </tr> + <tr> + <td><code>els</code></td> + <td>{{ interface("nsIEventListenerService") }}</td> + <td>Event listener service</td> + </tr> + <tr> + <td><code>eTLD</code></td> + <td>{{ interface("nsIEffectiveTLDService") }}</td> + <td>EffectiveTLD service</td> + </tr> + <tr> + <td><code>focus</code></td> + <td>{{ interface("nsIFocusManager") }}</td> + <td>Focus manager</td> + </tr> + <tr> + <td><code>io</code></td> + <td>{{ interface("nsIIOService") }}<br> + {{ interface("nsIIOService2") }}</td> + <td>I/O Service</td> + </tr> + <tr> + <td><code>locale</code></td> + <td>{{ interface("nsILocaleService") }}</td> + <td>Locale service</td> + </tr> + <tr> + <td><code>logins</code></td> + <td>{{ interface("nsILoginManager") }}</td> + <td>Password Manager service</td> + </tr> + <tr> + <td><code>metro</code></td> + <td>{{ interface("nsIWinMetroUtils") }}</td> + <td><sup><a href="#note2">2</a></sup></td> + </tr> + <tr> + <td>mm</td> + <td>{{ interface("nsIMessageBroadcaster") }}<br> + {{ interface("nsIFrameScriptLoader") }}</td> + <td><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Message_manager_overview#Global_frame_message_manager">Global frame message manager</a><sup><a href="#note3">3</a></sup></td> + </tr> + <tr> + <td><code>obs</code></td> + <td>{{ interface("nsIObserverService") }}</td> + <td>Observer service</td> + </tr> + <tr> + <td><code>perms</code></td> + <td>{{ interface("nsIPermissionManager") }}</td> + <td>Permission manager service</td> + </tr> + <tr> + <td>ppmm</td> + <td>{{ interface("nsIMessageBroadcaster") }}<br> + {{ interface("nsIProcessScriptLoader") }}</td> + <td><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Message_manager_overview#Global_parent_process_message_manager">Global parent process message manager</a><sup><a href="#note3">3</a></sup></td> + </tr> + <tr> + <td><code>prefs</code></td> + <td>{{ interface("nsIPrefBranch") }}<br> + {{ interface("nsIPrefBranch2") }}<br> + {{ interface("nsIPrefService") }}</td> + <td>Preferences service</td> + </tr> + <tr> + <td><code>prompt</code></td> + <td>{{ interface("nsIPromptService") }}</td> + <td>Prompt service</td> + </tr> + <tr> + <td><code>scriptloader</code></td> + <td>{{ interface("mozIJSSubScriptLoader") }}</td> + <td>JavaScript subscript loader service</td> + </tr> + <tr> + <td><code>scriptSecurityManager</code></td> + <td>{{ interface("nsIScriptSecurityManager") }}</td> + <td>Script security manager</td> + </tr> + <tr> + <td><code>search</code></td> + <td>{{ interface("nsIBrowserSearchService") }}</td> + <td>Browser search service</td> + </tr> + <tr> + <td><code>startup</code></td> + <td>{{ interface("nsIAppStartup") }}</td> + <td>Application startup service</td> + </tr> + <tr> + <td><code>storage</code></td> + <td>{{ interface("mozIStorageService") }}</td> + <td><a href="/en-US/Storage" title="en-US/Storage">Storage API</a> service</td> + </tr> + <tr> + <td><code>strings</code></td> + <td>{{ interface("nsIStringBundleService") }}</td> + <td>String bundle service</td> + </tr> + <tr> + <td><code>sysinfo</code></td> + <td>{{ interface("nsIPropertyBag2") }}</td> + <td>System info service</td> + </tr> + <tr> + <td><code>telemetry</code></td> + <td>{{ interface("nsITelemetry") }}</td> + <td>Telemetry service</td> + </tr> + <tr> + <td><code>tm</code></td> + <td>{{ interface("nsIThreadManager") }}</td> + <td><a href="/en-US/The_Thread_Manager" title="en-US/The Thread Manager">Thread Manager</a> service</td> + </tr> + <tr> + <td><code>uriFixup</code></td> + <td>{{ interface("nsIURIFixup") }}</td> + <td>URI Fixup service</td> + </tr> + <tr> + <td><code>urlFormatter</code></td> + <td>{{ interface("nsIURLFormatter") }}</td> + <td>URL Formatter service</td> + </tr> + <tr> + <td><code>vc</code></td> + <td>{{ interface("nsIVersionComparator") }}</td> + <td>Version comparator service</td> + </tr> + <tr> + <td><code>wm</code></td> + <td>{{ interface("nsIWindowMediator") }}</td> + <td>Window mediator service</td> + </tr> + <tr> + <td><code>ww</code></td> + <td>{{ interface("nsIWindowWatcher") }}</td> + <td>Window watcher service</td> + </tr> + </tbody> +</table> + +<p><a id="note1" name="note1"><sup>1</sup> Mobile only</a><br> + <a id="note2" name="note2"><sup>2</sup> Windows only</a><br> + <a id="note3" name="note3"><sup>3</sup> Main process only</a><br> + <a id="note4" name="note4"><sup>4</sup> Child process only</a></p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a class="internal" href="/en-US/JavaScript_code_modules/Using" title="en-US/JavaScript code modules/Using + JavaScript code + modules">Using JavaScript code modules</a></li> + <li><a class="internal" href="/en-US/JavaScript_code_modules" title="en-US/JavaScript code + modules">JavaScript code modules</a></li> + <li><a class="internal" href="/en-US/XPCOM/mozilla::services_namespace" title="mozilla::services C++ namespace">mozilla::services C++ namespace</a></li> + <li><a href="http://dxr.mozilla.org/mozilla-central/source/toolkit/modules/Services.jsm">Services.jsm source on DXR</a></li> +</ul> diff --git a/files/fr/mozilla/javascript_code_modules/sqlite.jsm/index.html b/files/fr/mozilla/javascript_code_modules/sqlite.jsm/index.html new file mode 100644 index 0000000000..bf799c2781 --- /dev/null +++ b/files/fr/mozilla/javascript_code_modules/sqlite.jsm/index.html @@ -0,0 +1,360 @@ +--- +title: Sqlite.jsm +slug: Mozilla/JavaScript_code_modules/Sqlite.jsm +translation_of: Mozilla/JavaScript_code_modules/Sqlite.jsm +--- +<p>{{ gecko_minversion_header("20.0") }}</p> + +<p>Le module de code JavaScript <code>Sqlite.jsm </code> offre une interface de stockage/SQLite. <code> Sqlite.jsm </code> fonctionne avec des interfaces XPCOM de stockage de bas niveau:</p> + +<ul> + <li>la gestion de la déclaration est automatique. Sqlite.jsm va créer, gérer et détruire les instances d'instructions pour vous. Vous ne devez pas vous soucier de la mise en cache des instances des états créés, les détruire lorsque vous avez terminé, etc. Cela se traduit par moins de lignes de code pour communiquer avec SQLite.</li> + <li>Toutes les opérations sont asynchrones. Utilisation des API de stockage synchrones est déconseillée, car ils bloquent le thread principal. Toutes les fonctionnalités de <code>Sqlite.jsm</code> sont asynchrone.</li> + <li>La gestion de la mémoire est plus facile. <code>Sqlite.jsm</code> gère les déclarations pour vous, il peut effectuer des actions intelligentes comme purger toutes les déclarations mises en cache qui ne sont pas utilisés, ce qui libère la mémoire dans le processus. Il y a même une API <code>shrinkMemory </code> qui permettra de minimiser automatiquement l'utilisation de la mémoire de la connexion.</li> + <li>Des opérations sont simples. Sqlite.jsm utilise une API de transaction construit avec <a href="/fr/docs/Mozilla/JavaScript_code_modules/Task.jsm" title="/fr/docs/Mozilla/JavaScript_code_modules/Task.jsm">task.jsm</a> qui permet aux transactions d'être écrites en tant que fonctions de procédure JavaScript (par opposition à une série d'opérations motrices de rappel). Si la fonction est lancée, la transaction est automatiquement annulée. Cela rend le code facile à lire et à écrire.</li> + <li><code>Sqlite.jsm </code> est un module JavaScript pur. Les complexités de XPCOM sont la plupart du temps cachés. Les programmeurs JavaScript doivent se sentir à l'aise en l'utilisant.</li> +</ul> + +<p>{{ note("Le module de code de Javascript Sqlite.jsm peut seulement être utilisé du chrome.") }}</p> + +<p>Avant de pouvoir utiliser ce module, vous devez l'importer dans votre champ d'application:</p> + +<pre>let { Cu } = require('chrome') +<span class="brush: js">Cu.import("resource://gre/modules/Sqlite.jsm")</span></pre> + +<h2 id="Obtention_d'une_connexion">Obtention d'une connexion</h2> + +<p><code>Sqlite.jsm </code> exporte le symbole <code>Sqlite</code>. Ce symbole est un objet avec une seule fonction: <code>openConnection</code>. Cette fonction prend un objet dictionnaire définissant les options de connexion:</p> + +<dl> + <dt>path</dt> + <dd>(Obligatoire) Le fichier de base de données à ouvrir. Cela peut être un chemin absolu ou relatif. Si un chemin relatif est donné, il est interprété comme relatif au répertoire du profil actuel. Si le chemin n'existe pas, une nouvelle base de données SQLite sera créé. La nom se termine généralement par <code>.sqlite</code>.</dd> + <dt>sharedMemoryCache</dt> + <dd>(En option) booléenne indiquant si plusieurs connexions à la base de données partagent la même mémoire cache. Toutefois, le partage nécessite également des connexions pour obtenir un verrou, rendant éventuellement l'accès de base de données plus lente. Par défaut, <code>true</code>.</dd> + <dt>shrinkMemoryOnConnectionIdleMS</dt> + <dd>(En option) Si défini, le de connexion va tenter de minimiser son utilisation de la mémoire après un grand nombre millisecondes de connexion inactive. La connexion est inactive lorsque aucun états n'est exécuter. Noter que ceci n'est pas une minuterie qui pourrait se déclencher pendant que l'Application est active.</dd> +</dl> + +<p><code>openConnection(options)</code> retourne une <a href="https://fr.wikipedia.org/wiki/Futures_(informatique)">promise</a> d'une instance de connexion ouverte ou est rejetée si une erreur survient lors de l'ouverture de la base de données.</p> + +<p>Voici un exemple:</p> + +<pre class="brush: js">let { Cu } = require('chrome') +Cu.import("resource://gre/modules/Sqlite.jsm"); + +Sqlite.openConnection({ path: "myDatabase.sqlite", sharedMemoryCache: false }).then( + function onConnection(connection) { + // connection is the opened SQLite connection (see below for API). + }, + function onError(error) { + // The connection could not be opened. error is an Error describing what went wrong. + } +); +</pre> + +<h2 id="Utilisation_des_connexions_ouvertes">Utilisation des connexions ouvertes</h2> + +<p>Les connexions ouvertes sont ce que vous interfacer avec <code>Sqlite.jsm</code>. Les sections suivantes détaillent l'API d'une instance de connexion ouverte.</p> + +<h3 id="Gestion_des_connexions">Gestion des connexions</h3> + +<p>Ces API sont utilisées pour gérer et vérifier l'état de la connexion.</p> + +<h4 id="close()">close()</h4> + +<p>Ferme la connexion de base de données. <strong> Doit </strong> être appelé pour chaque connexion ouverte.</p> + +<p>Cette fonction retourne une promise qui sera résolu lorsque la base de données sera fermée.</p> + +<p>Si une transaction est en cours d'execution au moment où cette fonction est appelée, la transaction sera annulée.</p> + +<p>Si des déclarations sont en cours au moment où cette fonction est appelée, elles seront annulées.</p> + +<p>Les utilisateurs ne doivent pas tenter d'utiliser la connexion après avoir appelé cette méthode que la connexion sera inutilisable.</p> + +<h4 id="clone_(readOnly)">clone (readOnly)</h4> + +<p>Cette fonction retourne un clone de la connexion-promise actuelle.</p> + +<p>Ces fonctions reçoivent l' argument:</p> + +<dl> + <dt>readOnly</dt> + <dd>(En option) Si <code>true</code> le clone sera en lecture seule,<code> false</code> par défaut. Si la connexion d'origine est déjà en lecture seule, le clone le sera, indépendamment de cette option. Si la connexion d'origine utilise le cache partagé, ce paramètre sera ignoré et le clone sera aussi privilégié que la connexion d'origine.</dd> +</dl> + +<h4 id="transactionInProgress">transactionInProgress</h4> + +<p>Cette propriété booléenne indique si une opération est en cours. Cela est rarement nécessaire par les appelants externes.</p> + +<h4 id="shrinkMemory()">shrinkMemory()</h4> + +<p>Cette fonction peut être appelée pour diminuer l'utilisation de la mémoire de la connexion. Ceci est un <a href="https://fr.wikipedia.org/wiki/Adaptateur_(patron_de_conception)">wrapper</a> utilisé dans le <code><a href="https://www.sqlite.org/pragma.html">PRAGMA</a> shrink_memory</code>, qui impose à SQLite la réduiction d'utilisation de la mémoire (par les caches de compensation, etc.).</p> + +<p>Elle peut rendre votre base de données plus lent. Par conséquent, il faut être prudent avant d'appeler cette fonction.</p> + +<p>Cela renvoie une promise qui est résolu lorsque l'opération est terminée.</p> + +<h4 id="discardCachedStatements()">discardCachedStatements()</h4> + +<p>Cette fonction est utilisée pour éliminer les instances d'instructions mises en cache, ce qui libère la mémoire dans le processus. Les déclarations de cache actifs ne seront pas effacées. Peut être appeler à tout moment.</p> + +<p>Cela renvoie le nombre de déclarations mises en cache qui ont été rejetés.</p> + +<h3 id="Table_et_gestion_du_schéma">Table et gestion du schéma</h3> + +<p>Ces API traitent de la gestion des tables et le schéma de base de données.</p> + +<h4 id="getSchemaVersion()">getSchemaVersion()</h4> + +<p>La version définie par l'utilisateur associé au schéma de la base de données actuelle. Retourne 0 si aucune version de schéma a été défini.</p> + +<h4 id="setSchemaVersion(value)">setSchemaVersion(value)</h4> + +<p>Definie la valeur <code>value</code> de la nouvelle version associée au schéma de la base de données actuelle. Ceci est un wrapper autour de <code>PRAGMA user_version</code>.</p> + +<h4 id="tableExists(name)">tableExists(name)</h4> + +<p>Cette fonction détermine si une table existe dans la base de données actuelle. Elle renvoie une promise qui est résolu avec une valeur booléenne indiquant si la table existe.</p> + +<h4 id="indexExists(name)">indexExists(name)</h4> + +<p>Cette fonction détermine si un index nommé existe dans la base de données actuelle. Elle renvoie une promesse qui est résolu avec une valeur booléenne indiquant si l'index existe.</p> + +<h3 id="Déclaration_d'exécution">Déclaration d'exécution</h3> + +<p>Ces API facilitent l'exécution des instructions de connexion.</p> + +<h4 id="executeCached(sql_params_onRow)">executeCached(sql, params, onRow)</h4> + +<h4 id="execute(sql_params_onRow)">execute(sql, params, onRow)</h4> + +<p>Ces fonctions similaires sont utilisés pour exécuter une instruction SQL unique sur la connexion. Comme vous l'avez deviné par le nom, il y a 2 options: mises en cache et non mis en cache. En dehors de cela, ils se comportent de manière identique.</p> + +<p>Ces fonctions reçoivent les arguments suivants:</p> + +<dl> + <dt>sql</dt> + <dd>(Obligatoire) chaîne SQL à exécuter. Le point-virgule final n'est pas nécessaire.</dd> + <dt>params</dt> + <dd>(En option) Paramètres liés à cette déclaration. Cela peut être un tableau ou un objet. Voir les notes ci-dessous.</dd> + <dt>onRow</dt> + <dd>(En option) Fonction qui est appelée lorsqu'une ligne a été reçue.</dd> +</dl> + +<p>La valeur de retour est une promise qui est résolu lorsque l'instruction a terminé l'exécution.</p> + +<p>Quand une instruction est exécutée via <code>executeCached()</code>, l'objet instruction préparée est mis en cache à l'intérieur de la connexion ouverte. La prochaine fois que cette même instruction SQL est exécutée (<code>sql </code> argument est identique à celui passé avant), l'ancien objet de la déclaration est réutilisée. Cela permet d'économiser du temps associé à l'analyse de l'instruction SQL et la création d'un nouvel objet de déclaration. Inconvénient: l'objet de la déclaration en cache persiste dans la connexion ouverte, en prenant de la mémoire.</p> + +<p>Quand une instruction est exécutée via <code>execute()</code>, l'objet de la déclaration sous-jacente est jeté au terme de l'exécution.</p> + +<p><code>executeCached()</code> est recommandé pour les déclarations qui seront exécutées plusieurs fois. <code>execute()</code> est recommandé pour les déclarations qui seront exécutées rarement ou une fois.</p> + +<p>Noter que les utilisateurs ne doivent pas préparer les états manuellement avant l'exécution. Il suffit d'appeler <code>executeCached()</code> et la déclaration sera préparée pour vous automatiquement.</p> + +<p>Les paramètres peuvent être liés à la déclaration faite par la définition de l'argument <code>params </code>. Cet argument peut être un tableau de paramètres ordonnées ou un objet de type dicionnaire. Si la déclaration ne contient pas de paramètres liés, cet argument peut être omis ou spécifié comme nulle.</p> + +<p>{{ note("Les utilisateurs sont fortement encouragés à utiliser des paramètres liés au lieu de créer dynamiquement des instructions SQL pour des raisons de sécurité.") }}</p> + +<div class="line">{{ note("Les utilisateurs sont encouragés à passer des objets type dictionnaire plutôt que des tableaux pour les paramètres liés car ils empêchent de s'emeler les pinceaux.") }}</div> + +<div class="line"> </div> + +<div class="line">Lorsque <code>onRow </code> n'est pas défini, les résultats complets de l'opération sont tamponnés avant que l'appelant soit informé de la déclaration d'achèvement. Pour <code>INSERT</code>, <code>UPDATE</code> et <code>DELETE</code>, ce n'est pas pertinentes. Cependant, il peut y avoir des conséquences importante pour <code>SELECT </code>. Si votre déclaration <code>SELECT </code> retourne beaucoup de données, cette mise en mémoire tampon peut entraîner une utilisation excessive de la mémoire. Par conséquent, il est recommandé d'utiliser <code>onRow </code> avec <code>SELECT</code>.</div> + +<div class="line"> +<div class="line"> </div> + +<div class="line" id="LC396">Si <code>StopIteration </code> est emis lors de l'exécution d'un gestionnaire <code>onRow</code>, l'exécution de l'instruction est immédiatement annulée. Les lignes suivantes ne seront pas traitées. La promise est résolu immédiatement.</div> + +<div class="line" id="LC397"> </div> + +<div class="line" id="LC400">Si une exception <code>StopIteration </code> est levée par le gestionnaire <code>onRow </code>, l'exception est enregistré et le traitement des lignes suivantes se poursuit normalement. La promise est toujours résolue (pas rejetée).</div> + +<p>La promise sera rejeté avec une <code>Error </code>, si la déclaration n'a pas terminé l'exécution complète. L'<code>Error </code> peut avoir une propriété <code>errors</code>. Si elle est définie, ce sera un tableau d'objets décrivant les erreurs. Chaque objet possède les propriétés <code>result</code> et <code>message</code>. <code>result </code> est un code d'erreur numérique et <code>message</code> est une chaîne décrivant le problème.</p> + +<p>Si <code>onRow </code> est spécifié, la promise sera résolu avec un booléen indiquant si le gestionnaire onRow a été appelé. Sinon, la valeur réglée sera un tableau de <a href="/fr/docs/MozIStorageRow" title="/fr/docs/MozIStorageRow"> <code>mozIStorageRow</code> </a>.</p> + +<h4 id="executeTransaction(func_type)">executeTransaction(func, type)</h4> + +<p>Cette fonction est utilisée pour exécuter une transaction de base de données. Une transaction est une série de déclarations connexes traités comme une seule unité fonctionnelle. Si la transaction réussit, toutes les déclarations contenues dedans sont engagés comme une seule unité. Si la transaction échoue, la base de données revient à son état avant le début de la transaction.</p> + +<p>Cette fonction reçoit les arguments suivants:</p> + +<dl> + <dt>func</dt> + <dd>La fonction définissant le corps de la transaction.</dd> + <dt>type</dt> + <dd>Le type de transaction à effectuer. Ce doit être l'une des constantes de <a href="https://www.sqlite.org/lang_transaction.html">TRANSACTION_*</a> sur l'instance de connexion ouverte. Les valeurs valides sont <code>TRANSACTION_DEFERRED</code> , <code>TRANSACTION_IMMEDIATE</code> , <code>TRANSACTION_EXCLUSIVE</code> . Consultez la documentation SQLite pour leur signification. La valeur par défaut est <code>TRANSACTION_DEFERRED</code>.</dd> +</dl> + +<p>La fonction passée est une fonction de générateur compatible Task.jsm. Lorsqu'elle est appelée, la fonction reçoit comme argument l'instance de connexion actuelle. Cette fonction de générateur devrait produire des promises, probablement ceux qui sont renvoyés en appelant <code>executeCached()</code> et <code>execute()</code>.</p> + +<p>Si nous arrivons à la fin de la fonction de générateur sans erreur, la transaction est validée. Si une erreur se produit, la transaction est abandonnée.</p> + +<p>La valeur retournée par cette fonction est une promise qui est résolu lorsque la transaction a été exécutée ou rejetée si la transaction a été annulée.</p> + +<h2 id="Exemples">Exemples</h2> + +<h3 id="Open_Execute_Close">Open, Execute, Close</h3> + +<p>Dans cet exemple, nous ouvrons une connexion, exécutons une instruction simple, puis fermons la connexion.</p> + +<pre class="brush: js">Sqlite.openConnection({path: "MyDB.sqlite"}).then( + function onOpen(conn) { + conn.execute("SELECT 1").then( + function onStatementComplete(result) { + conn.close().then( + function onClose() { + alert("We are done!"); + } + ) + } + ) + } +) +</pre> + +<p>Ce n'est pas un excellent exemple parce qu'il ne comprend pas la gestion des erreurs et est un peu difficile à lire.</p> + +<p>Voici la même chose mais avec <a href="/fr/docs/Mozilla/JavaScript_code_modules/Task.jsm">Task.jsm</a>:</p> + +<pre class="brush: js">Task.spawn(function* demoDatabase() { + let conn = yield Sqlite.openConnection({path: "MyDB.sqlite"}); + + try { + let result = yield conn.execute("SELECT 1"); + } finally { + yield conn.close(); + } +});</pre> + +<h3 id="Bound_Parameters">Bound Parameters</h3> + +<p>Voici quelques exemples montrant des paramètres liés. Supposons que nous ouvrons une connexion avec la variable <code>conn</code>.</p> + +<pre class="brush: js">let dataToInsert = [ + ["foo", "bar"], + ["biz", "baz"], + ["yo", "ho"], +]; + +Task.spawn(function* doInsert() { + for (let data of dataToInsert) { + yield conn.executeCached("INSERT INTO myTable VALUES (?, ?)", data); + } +});</pre> +</div> + +<p>Et la même chose avec des paramètres nommés.</p> + +<pre class="brush: js">let dataToInsert = [ + {paramA: "foo", paramB: "bar"}, + {paramA: "biz", paramB: "baz"}, + {paramA: "yo", paramB: "ho"}, +]; + +Task.spawn(function* doInsert() { + for (let data of dataToInsert) { + yield conn.executeCached("INSERT INTO myTable VALUES (:paramA, :paramB)", data); + } +});</pre> + +<h3 id="Transactions">Transactions</h3> + +<p>Ces exemples montrent comment fonctionnent les transactions.</p> + +<pre class="brush: js">conn.executeTransaction(function* simpleTransaction() { + yield conn.execute("INSERT INTO myTable VALUES (?, ?)", ["foo", "bar"]); + yield conn.execute("INSERT INTO myTable VALUES (?, ?)", ["biz", "baz"]); +});</pre> + +<p>L'exemple ci-dessus se traduira par 2 instructions INSERT dans une transaction différée (en supposant que les inserts procèdent sans erreur, bien sûr).</p> + +<p>Voici un exemple où nous voulons forcer une annulation de la transaction.</p> + +<pre class="brush: js">conn.executeTransaction(function* complexTransaction() { + yield conn.execute("INSERT INTO myTable VALUES (?, ?)", ["foo", "bar"]); + let data = yield conn.execute("SELECT * FROM myTable"); + if (data.length < 5) { + throw new Error("We don't have the expected 5 rows to perform the next operation!"); + } + + // ... +});</pre> + +<h3 id="Sélection_et_retour_des_données">Sélection et retour des données</h3> + +<p>Ces exemples montrent comment accéder aux données qui sont retournées.</p> + +<p>Cet exemple montre plusieurs lignes d'une table retournées en utilisant le paramètre <code>onRow</code>.</p> + +<pre class="brush: js">let accounts = []; +let accountId, userName; + +let statement = "SELECT account_id, username FROM accounts ORDER BY username ASC"; + +conn.executeCached(statement, null, function(row) { + accountId = row.getResultByName("account_id"); + userName = row.getResultByName("username"); + accounts.push({ accountId: accountId, userName: userName }); +}).then(function onStatementComplete(result) { + // All accounts returned successfully, so do something with them. +<span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">result</span><span class="pun">);</span><span class="pln"> </span><span class="com">// It worked!</span> + if (callback) { + callback(null, accounts); + } +}, +function onError(err) { + // An error occurred. +<span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="pln">err</span><span class="pun">);</span><span class="pln"> </span><span class="com">// Error, Oh noes!</span> + if (callback) { + callback(err); + } +});</pre> + +<div class="note"> +<p><strong>Remarque: </strong>les> paramètres <strong> <code>then</code> </strong> peuvent être des fonctions anonymes (i.e. <strong> <code>function()</code> </strong>) , les seulements nomées sont <strong> <code>onStatementComplete</code> </strong> et <strong> <code>onError</code> </strong> pour la lisibilité.</p> +</div> + +<p>Cet exemple démontre la récupération d'une ligne sans utiliser le paramètre <code>onRow</code>, en utilisant le résultat de <code>conn.execute</code>. Cet exemple montre également la récupération de la clé primaire de la dernière ligne insérée.</p> + +<pre class="brush: js">Task.spawn(function* () { + try { + conn = yield Sqlite.openConnection({ path: dbFile.path }); + + let statement = "INSERT INTO accounts (username, details) VALUES (:username, :details)" + let params = { username:"LordBusiness", details: "All I'm asking for is total perfection." }; + + yield conn.execute(statement,params); + + // Get accountId of the INSERT. + statement = "SELECT last_insert_rowid() AS lastInsertRowID"; + result = yield conn.execute(statement); + + // Only one row is returned. + let row = result[0]; + let accountId = row.getResultByName("lastInsertRowID"); + + if (callback) { + callback(null, accountId); + } + } catch (err) { + if (callback) { + callback(err); + } + } finally { + conn.close(); + } +});</pre> + +<div class="note"> +<p><strong>Remarque: </strong> La valeur retournée par<strong> last_insert_rowid()</strong> l'est par connexion, de sorte que vous devrez peut-être ouvrir des connexions séparées lorsque vous faites plusieurs <code>INSERT</code> à différents endroits, pour être sûr que l'identifiant de ligne qui est retourné corresponde.</p> +</div> + +<h2 id="Voir_aussi">Voir aussi</h2> + +<ul> + <li><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/modules/Sqlite.jsm">Sqlite.jsm source on DXR</a></li> + <li><a href="/fr/docs/Storage">Storage</a></li> +</ul> diff --git a/files/fr/mozilla/localization/index.html b/files/fr/mozilla/localization/index.html new file mode 100644 index 0000000000..28764f5298 --- /dev/null +++ b/files/fr/mozilla/localization/index.html @@ -0,0 +1,25 @@ +--- +title: Localisation +slug: Mozilla/Localization +tags: + - Localisation + - Mozilla + - Paramètres régionaux + - Traduction + - l10n +translation_of: Mozilla/Localization +--- +<p><span class="seoSummary">La <strong>localisation</strong> (L10n) est le processus de traduction de l’interface utilisateur d’un logiciel d’une langue à une autre, en l’adaptant à la culture étrangère. Ces ressources sont destinées à tous ceux intéressés par les aspects techniques de la localisation.</span> Elles concernent aussi bien les développeurs que les autres contributeurs.</p> + + + +<h2 id="Voir_aussi">Voir aussi</h2> + +<dl> + <dt><a href="https://developer.mozilla.org/fr/docs/MDN/Contribute/Localize">Localisation de MDN</a></dt> + <dd>Cette ressource couvre la localisation de la documentation ici, sur MDN</dd> + <dt><a href="https://developer.mozilla.org/fr/Apps/Build/Localization">Localization des applications</a></dt> + <dd><span id="result_box" lang="fr"><span>Cet ensemble de documents s'applique plus spécifiquement à la localisation d'applications, y compris les applications Firefox OS.</span></span></dd> + <dt><a href="https://developer.mozilla.org/fr/Apps/Build/Localization">L10n</a></dt> + <dd><span id="result_box" lang="fr"><span>Documentation de référence pour l'API L10n utilisée par Mozilla pour localiser Firefox OS.</span></span></dd> +</dl> diff --git a/files/fr/mozilla/localization/index/index.html b/files/fr/mozilla/localization/index/index.html new file mode 100644 index 0000000000..5176c7de8f --- /dev/null +++ b/files/fr/mozilla/localization/index/index.html @@ -0,0 +1,8 @@ +--- +title: Index +slug: Mozilla/Localization/Index +tags: + - Localisation +translation_of: Mozilla/Localization/Index +--- +<p>{{Index("/fr/docs/Mozilla/Localization")}}</p> diff --git a/files/fr/mozilla/localization/l10n_style_guide/index.html b/files/fr/mozilla/localization/l10n_style_guide/index.html new file mode 100644 index 0000000000..8313c380b9 --- /dev/null +++ b/files/fr/mozilla/localization/l10n_style_guide/index.html @@ -0,0 +1,357 @@ +--- +title: Guide stylistique de localisation de Mozilla +slug: Mozilla/Localization/L10n_Style_Guide +translation_of: Mozilla/Localization/L10n_Style_Guide +--- +<h3 id="Introduction"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">Introduction</span></h3> + +<div id="magicdomid8"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">Les guides stylistiques définissent la norme selon laquelle peut être mesurée la qualité d'une traduction. Ils contiennent des règles qui sont établies à la fois par Mozilla et par les communautés de localisation de Mozilla sur la meilleure manière de traduire les textes dans les produits, sites et autre projets de Mozilla. Les guides stylistiques sont utilisés à la fois pour traduire et pour évaluer la qualité d'une traduction. En suivant ces règles, un traducteur a plus de chances de produire une traduction de qualité qui représente les valeurs et la culture de Mozilla. Voici quelques exemples de guides stylistiques créés par d'autres organisations :</span></div> + +<ul> + <li id="magicdomid9"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq url"><a href="https://help.apple.com/asg/mac/2013/ASG_2013.pdf">https://help.apple.com/asg/mac/2013/ASG_2013.pdf</a></span></li> + <li id="magicdomid10"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq url"><a href="https://www.microsoft.com/Language/en-US/StyleGuides.aspx">https://www.microsoft.com/Language/en-US/StyleGuides.aspx</a></span></li> + <li><a href="https://www.facebook.com/translations/style_guides">https://www.facebook.com/translations/style_guides</a></li> +</ul> + +<div><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">Ce guide stylistique est composé de deux parties : la première contient les règles qui sont spécifiques à la langue et sont définies par chacune des communautés de localisation de Mozilla (entre autres concernant le niveau de langue, la terminologie et les unités de mesure) ; la seconde contient des règles générales que Mozilla a déterminées pour les traducteurs dans toutes les langues qui peuvent vous aider à traduire correctement. La première partie de ce guide stylistique est à adapter pour les règles de votre communauté. Là où c'est possible, faites-y référence à des normes nationales ou internationales pour les unités, règles orthographiques et grammaticales.</span></div> + +<h3 id="sect1"> </h3> + +<h2 id="Style_propre_à_la_langue_de_localisation_de_Mozilla">Style propre à la langue de localisation de Mozilla</h2> + +<ol style="margin-left: 80px;"> +</ol> + +<h3 id="Style">Style</h3> + +<p>Il revient principalement à votre communauté de localisation de définir son propre style. Celui-ci fait partie des instructions et recommandations pour la traduction de texte au sein des différents types de projets. Cela concerne différents éléments comme le ton et le niveau de langage, le traitement des références culturelles, d'expressions idiomatiques, et le maintien d'une certaine cohérence au sein de Mozilla et des guides et conventions stylistiques de produits tiers<span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">. Voici les différents aspects à aborder concernant le style.</span></p> + +<div id="magicdomid17"> </div> + +<h5 id="Ton_et_formalisme">Ton et formalisme</h5> + +<div id="magicdomid18"><span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">Pour déterminer le ton ou le formalisme d'un projet de localisation de Mozilla dans votre langue, posez-vous ces questions :</span></div> + +<ul> + <li>Quel est le public cible pour ce projet ?</li> + <li>Comment un utilisateur de ce public cible s'attendrait-il à interagir avec le projet ? Par exemple, d'une manière légère et sympathique ?</li> + <li>Est-ce qu'un certain formalisme s'impose pour tous vos projets de localisation de Mozilla ou seulement certains d'entre-eux ? Lesquels ?</li> + <li>Un ton plus léger peut-il être approprié pour tous vos projets de localisation de Mozilla ou seulement certains d'entre-eux ? Lesquels ?</li> +</ul> + +<div><span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">En définitive, votre localisation ne devrait pas utiliser un niveau de langue ou de formalisme différent de celui défini dans votre guide stylistique. Par exemple, vous pourriez vouloir utiliser </span>« <span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">cliquez sur le lien</span> »<span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z"> (pas très formel) plutôt que </span>« <span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">veuillez cliquer sur le lien</span> »<span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z"> (un peu plus formel). De même, le ton employé au sein d'un même projet de localisation devrait toujours rester cohérent. </span></div> + +<div> </div> + +<h5 id="Expression_naturelle">Expression naturelle</h5> + +<p>L'utilisation d'expressions courantes peut faire en sorte de donner à votre localisation un air plus naturel pour vos utilisateurs. Si votre traduction ne suit pas les recommandations communautaires pour la traduction d'expressions locales ou naturelles, cela peut donner des résultats médiocres ou boiteux. Il est important pour vos équipes de garder ces règles en tête et de les traiter au cours du processus de traduction. Un exemple d'expression naturelle dans une traduction serait la phrase espagnole « <span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">En ocho días</span> ».<span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z"> En français, on pourrait la traduire littéralement par </span>« <span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">dans huit jours</span> »<span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z"> mais aussi par </span>« <span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">dans une semaine</span> »<span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">. La seconde traduction est plus naturelle bien que les deux puissent être considérées comme correctes.</span></p> + +<div>Dans cette section de votre guide, établissez des recommandations sur la manière de produire une localisation plus naturelle. Cela peut prendre du temps et nécessiter pas mal d'expérience pour trouver les bons exemples dans votre langue<span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">.</span></div> + +<div> </div> + +<h5 id="Traiter_les_références_culturelles_les_expressions_idiomatiques_et_l'argot">Traiter les références culturelles, les expressions idiomatiques et l'argot</h5> + +<p><span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">L'utilisation de référenes culturelles, d'expressions idiomatiques et d'argot nécessite une très bonne compréhension de ces références tant dans la culture de votre langue source que dans votre langue de destination. Un exemple de référence culturelle en anglais serait la phrase </span>« <span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">kick-off meeting</span> »<span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">. Celle-ci est une référence à un terme de football américain et signifie une réunion pour lancer un nouveau projet. Pour la traduire, deux approches sont possibles :</span></p> + +<ol> + <li><span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">Trouver une phrase avec une référence équivalente dans votre langue.</span></li> + <li><span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">Retirer la référence culturelle et traduire uniquement le sens concret (par exemple, </span>« <span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">une réunion de lancement</span> »<span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">) </span></li> +</ol> + +<p><span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">Définissez une politique pour traiter ces références que vous pouvez appliquer au sain de tous vos projets. Évaluez différentes ressources complémentaires pour trouver des équivalents culturels et donnez-en une liste dans cette section de vore guide stylistique (par exemple, un guide des expressions argotiques dans votre langue). </span></p> + +<h5 id="Cohérence_du_style">Cohérence du style</h5> + +<div id="magicdomid22"><span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">N'oubliez pas que d'autres recommandations et guides stylistiques ou des règles d'utilisation de marques, spécifiques à Mozilla ou externes, doivent également être respectés. Vous trouverez plus d'informations à propos de l'utilisation des marques de Mozilla ici : </span><span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z url"><a href="https://www.mozilla.org/en-US/styleguide/identity/firefox/branding/">https://www.mozilla.org/en-US/styleguide/identity/firefox/branding/</a></span><span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">. Par exemple, certains noms de marque comme </span>« <span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z">Firefox</span> »<span class="author-a-nz76zz86zs2xc75rz78zz66zz80zxz85zz71z"> ne devraient jamais être traduits. Pour d'autres marques qui n'ont pas de politique explicitement définie, c'est à votre communauté de définir s'il est approprié de les traduire. Faites particulierèment attention aux règles et recommandations des marques avant de décider de traduire un nom (qu'il s'agisse de Mozilla d'un autre organisme) et listez les dans cette section de votre guide stylistique.</span></div> + +<div> </div> + +<div> +<h3 id="Terminologie"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd b"><strong>Terminologie</strong></span></h3> + +<div id="magicdomid29"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">Voici une série de bases terminologiques existantes que vous pouvez utiliser notamment pour les termes et définitions liés aux logiciels et à Internet :</span></div> + +<ul> + <li id="magicdomid30"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">Microsoft key terms and target languages : </span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq url"><a href="https://www.microsoft.com/Language/en-US/Default.aspx">https://www.microsoft.com/Language/en-US/Default.aspx</a></span></li> + <li id="magicdomid31"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">La liste des termes de Pootle : </span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq url"><a href="https://mozilla.locamotion.org/xx/terminology/essential.po">https://mozilla.locamotion.org/xx/terminology/essential.po</a></span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> (remplacer *xx* par un code de locale comme </span>« <span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">fr</span> »<span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">)</span></li> +</ul> + +<div id="magicdomid33"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">L'utilisation de bases terminologiques appropriées dans votre langue devrait être systématique. Celles-ci peuvent être développées et approuvées par la communauté elle-même, ou provenir d'autres organismes qui adhèrent à certaines normes nationales, internationales ou locales pour la terminologie informatique</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">. Évitez en particulier d'utiliser </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">:</span></div> + +<ul> + <li id="magicdomid34"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">une terminologie incohérente au sein du projet</span></li> + <li id="magicdomid35"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">une terminologie qui ne correspond pas aux bases choisies</span></li> + <li id="magicdomid36"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">une terminologie non harmonisée entre vos différents projets</span></li> + <li id="magicdomid37"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">une terminologie non adaptée au sujet</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd"> (par exemple, n'utilisez pas de termes médicaux dans Firefox)</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">.</span></li> +</ul> + +<h5 id="Astuces_sur_la_traductiond_de_concepts_difficiles"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq b"><strong>Astuces sur la traductiond de concepts difficile</strong></span><strong>s</strong></h5> + +<div id="magicdomid40"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">Translating terms representing difficult concepts is a tricky task. Here are some ideas to help you translate terms that do not have equivalents in your language:</span></div> + +<ul> + <li id="magicdomid41"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">Understand the meaning of the term in English. Definitions of a few key terms </span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq url"><a href="http://techterms.com/category/internet">http://techterms.com/category/internet</a></span></li> + <li id="magicdomid42"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">Know your product and understand the function of the feature. </span></li> + <li id="magicdomid43"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">Consider similar ideas for those functions in your culture.</span></li> + <li id="magicdomid44"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">Associate a culturally specific image with the meaning and function of the term.</span></li> +</ul> + +<h5 id="Developing_new_term_bases"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq b"><strong>Developing new term base</strong></span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd b"><strong>s</strong></span></h5> + +<div id="magicdomid47"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">What is your </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">community's</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> process </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">for</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> identifying and creating a new t</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">ermbase</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">? Here are a few things to keep in mind:</span></div> + +<ul> + <li id="magicdomid48"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">Avoid </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">o</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">verly borrowing English expressions</span></li> + <li id="magicdomid49"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">Referenc</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">ing</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> another language f</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">rom</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> the same language </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">family</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> may inspire you to come up with your own terms</span></li> + <li id="magicdomid50"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">Consider the product target audience (age</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">,</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> level of literacy, education</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">,</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> social </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">and</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> economic status)</span></li> + <li id="magicdomid51"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Will you use l</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">oan words</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd"> from another language</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">or coin new terms in your language to maintain</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">language purity?</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> Is there government requirement or policy to encourage creating new terms for new concepts</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">, o</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">r </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">will </span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">loan words </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">be sufficient to</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> reach broader masses </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">and</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> expedite new technology adoption</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">?</span></li> + <li id="magicdomid52"><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">If there are two acceptable scripts commonly used by the general public, what is the commonly used script on the web or government sites? What is the script used by major web technology companies?</span></li> +</ul> + +<h3 id="Unités_et_grammaire"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Unités</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> et grammaire </span></h3> + +<div id="magicdomid57"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Many elements of unit or grammar do not exist or apply to all languages. If you find one of these elements that does not apply to your language, please remove it from your style guide.</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> For those definitions of units and grammar that apply document the reference used or how it will be applied to the translation.</span></div> + +<div id="magicdomid58"> </div> + +<div id="magicdomid59"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">The translation should strive to achieve proper unit conversions for currency, measurements, etc. for the target audience.</span></div> + +<div id="magicdomid60"> </div> + +<h4 id="Units_and_Unit_Conversion"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Units and Unit Conversion</span></h4> + +<h5 id="Date_Format"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Date Format</span></h5> + +<div id="magicdomid64"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">How are the date formats for weeks and months expressed in the following forms: </span></div> + +<ul> + <li><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">1). Fully spelled out</span> 2).<span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> 2 or 3 letters </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">3). Single letter</span></li> + <li id="magicdomid65"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">What is the order of Year, Month and Day? </span></li> +</ul> + +<div id="magicdomid66"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Reference material can be find here: </span>https://en.wikipedia.org/wiki/Date_format_by_country</div> + +<div> </div> + +<h5 id="Calendar_view"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">C</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">alendar</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> view: </span></h5> + +<ul> + <li id="magicdomid68"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> Which date is considered the first day of the week, Sunday or Monday? </span></li> + <li id="magicdomid69"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> Is Lunar calendar observed? Other regional calendar observed?</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> </span></li> +</ul> + +<h5 id="Time_Format"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Time Format</span></h5> + +<div id="magicdomid72"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">How is time expressed in your language? </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">I</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">ncluding 0-24 hr expression, hour, minute and second.</span></div> + +<div> </div> + +<h5 id="Numerals"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Numerals </span></h5> + +<div id="magicdomid76"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">How are numerals an</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">d percentages</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> expressed in your language? </span></div> + +<div><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> Example: 1.23 (decimal separator) or 1,000 (thousand separator) using comma or period. </span></div> + +<div> </div> + +<h5 id="Currency"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Currency </span></h5> + +<div><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">What are other widely used currency and symbols used in your country/language for paid apps. </span></div> + +<div id="magicdomid79"> </div> + +<h5 id="Units"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Units</span></h5> + +<div id="magicdomid81"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Do you use the imperial, metric or nautical system for measuring weight, distance, etc.? Source strings will use the imperial system (e.g., miles, pounds, feet, gallons, etc.). Target translations should convert imperial metrics to their measurement system.</span></div> + +<div id="magicdomid82"> </div> + +<h5 id="Names"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Name</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">s</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> </span></h5> + +<div id="magicdomid84"> +<p><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">What are the order of family name and given name in your language</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">?</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> Here is the guideline on the naming convention from w3c.org:</span></p> +</div> + +<h5 id="Address_and_Postal_Code_Format"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Address and Postal Code Format </span></h5> + +<div id="magicdomid87"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">What is the format in your language? </span></div> + +<div id="magicdomid88"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> Example: most Asian countries start from big to small: [Country] [postal code][state/province][city][district][street number and name][building and suite numbers][addressee]</span></div> + +<div id="magicdomid89"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> Countries of European languages start from small to big: [addressee][street number and name][building and suite numbers][district][city][state/province][postal code][Country]</span></div> + +<div id="magicdomid90"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> </span></div> + +<h5 id="Telephone_Number_format"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Telephone Number format</span></h5> + +<div id="magicdomid92"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Space separators between digits can be different for area codes such as State (Province) and City, </span></div> + +<div id="magicdomid94"> </div> + +<h4 id="Spelling_And_Grammar_Checks"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj b"><strong>Spelling And Grammar Checks</strong></span></h4> + +<div id="magicdomid96"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Many languages have national or international standards that define spelling and grammar rules. When defining these rules for your community, make reference to those standards wherever possible. </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Do you have automated tests for spell checking and grammar</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">?</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">List those tools and dictionaries here and how regularly they should be used.</span></div> + +<div id="magicdomid97"> </div> + +<h5 id="Tense"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj b"><strong>Tense</strong></span></h5> + +<div id="magicdomid99"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Do you have standards for verb forms that indicate or express the time, such as past, present, or future, of the action or state</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">? What is your policy on tense consistency for certain use cases? For example, for phrases that ask a user to make an action (like "Download Firefox"), do you use a future tense, a command tense, or a neutral tense? </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> (See: </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj url"><a href="https://en.wikipedia.org/wiki/Grammatical_tense">https://en.wikipedia.org/wiki/Grammatical_tense</a></span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> )</span></div> + +<div id="magicdomid100"> </div> + +<h4 id="Word_Forms"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj b"><strong>Word Forms</strong></span></h4> + +<h5 id="Pluralization"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Pluralization </span></h5> + +<div id="magicdomid106"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">What is the appropriate form of expressing pluralization in your language? </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">L</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">ist all forms of plural forms and examples if there is more than one. </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Additional discussions can be found Here. </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj url"><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals">https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals</a></span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> and here: </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj url"><a href="http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html">http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html</a></span></div> + +<div id="magicdomid107"> </div> + +<h5 id="Abbreviations"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Abbreviations </span></h5> + +<p><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">How are abbreviations expressed in your language?</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd"> </span><br> + <span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd"> Example, in English, abbreviations are made by removing most vowels and only using the first 3-5 consonants followed by a period (e.g., abbreviation = abbr.).</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> (see: </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj url"><a href="https://en.wikipedia.org/wiki/Abbreviation%29">https://en.wikipedia.org/wiki/Abbreviation)</a></span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd"> </span></p> + +<p><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">If your language does not have a standard way of expressing abbreviations, do you simply leave them in English?</span></p> + +<h5 id="Acronyms"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Acronyms </span></h5> + +<div id="magicdomid113"> +<p><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Are there standard</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> translat</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">ions of</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> widely accepted acronyms such as CD, DVD, MB</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd"> in your language? If not, do they remain in English?</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> (see: </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj url"><a href="https://en.wikipedia.org/wiki/Acronym">https://en.wikipedia.org/wiki/Acronym</a></span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> )</span></p> +</div> + +<h5 id="Punctuation"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj b"><strong>Punctuation</strong></span></h5> + +<div id="magicdomid117"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Do you use different punctuation rules in your Firefox localization than what your language standard defines? </span></div> + +<div><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd"> Example: do you use a period at the end of every user interface element translation or only some? </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">W</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">hat is the international/national standard for punctuation in your language</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">?</span></div> + +<div id="magicdomid118"> </div> + +<h5 id="Emphasis"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Emphasis</span></h5> + +<p><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Is there an international/national standard for capitalization</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> in your language? </span></p> + +<ul> + <li><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">If so, do those standard rules apply in all product translations? </span></li> + <li><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">I</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">f this doe</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq">sn</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">'t apply, how </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">do you</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> indicate importance or name of a movie, book title, product UIs (</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq u"><u>S</u></span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">ave, </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj u"><u>F</u></span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">ile...)</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd"> in your language?</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> </span></li> + <li><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">How does your language handle the use of bold, italic, or underline types to express emphasis?</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> ( See: </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj url"><a href="https://en.wikipedia.org/wiki/Italic_type">https://en.wikipedia.org/wiki/Italic_type</a></span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> )</span></li> +</ul> + +<h5 id="Hyphens_and_compounds"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Hyphens and compounds </span></h5> + +<div id="magicdomid123"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">What is the appropriate </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">way</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> of </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">using</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> hyphens and compounds in your language? ( </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj url"><a href="https://en.wikipedia.org/wiki/Compound_%28linguistics%29">https://en.wikipedia.org/wiki/Compound_%28linguistics%29</a></span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> ) </span></div> + +<div id="magicdomid124"> </div> + +<h5 id="Prepositions_and_articles"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Prepositions and articles</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> </span></h5> + +<div id="magicdomid126"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">What is the appropriate form of expressing prepositions and articles in your language?</span></div> + +<div id="magicdomid127"> </div> + +<h5 id="Diacritics_and_Special_characters"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Diacritics and </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Special characters</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> </span></h5> + +<div id="magicdomid129"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Does your language use</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> any special </span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">or accented characters</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> and will they be applied and preserved in sort orders, and other aspects of the translation</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">?</span><span class="author-a-z87zt8dz75zn14z76zz71z8z82zz86z2uq"> </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> (see: </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj url"><a href="https://en.wikipedia.org/wiki/Diacritic">https://en.wikipedia.org/wiki/Diacritic</a></span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> )</span></div> + +<div id="magicdomid130"> </div> + +<h5 id="Quotes"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Quotes </span></h5> + +<div id="magicdomid132"> +<p><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Does your language have a standard use for quotation marks, parenthesis, or brackets?</span></p> +</div> + +<h5 id="Whitespace"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Whitespace </span></h5> + +<div id="magicdomid135"> +<p><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Does your language require the</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> use of white space around words, sentences, paragraphs, etc</span><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">.? If so, in what ways?</span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> (see: </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj url"><a href="https://en.wikipedia.org/wiki/Sentence_spacing_in_language_and_style_guides">https://en.wikipedia.org/wiki/Sentence_spacing_in_language_and_style_guides</a></span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> )</span></p> +</div> + +<h5 id="User_Interface_Elements"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj b"><strong>User Interface Elements</strong></span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj"> </span></h5> + +<div id="magicdomid139"> </div> + +<ul> + <li id="magicdomid140"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Titles : Should be brief and precise. Localizers can assume that source content reaches 2/3 of the total available line space. This allows localization text to expand and not be truncated or resolved through ellipsis. Title on the final page (meaning no more click through) should allow enough room to display full text. </span></li> + <li id="magicdomid142"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Buttons: Capitalize the first letter of each word. Limit to one or two words. Use verbs that precisely describe the button's action. For example, "Cancel", "Clear History", "Add Email", "Select All", etc. </span></li> + <li id="magicdomid144"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Value Selector Lists: Capitalize the first letter of the first word and the first letter of any proper nouns. Limit to one or two words. </span></li> + <li id="magicdomid147"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Articles: </span><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Avoid them where possible. Articles (such as the word "the" in English) should be avoided wherever possible. User interface elements have limited space available for text. Avoiding articles will help ensure that your translations will be accommodated within the user interface. </span></li> + <li id="magicdomid149"><span class="author-a-z66zuz70zqiz67zz73z3z90zhp4z68zz73zpj">Ellipsis: Ellipsis are often inserted automatically in the UI where strings are truncated. Ellipsis should only be used at high level of UI pages, but not be on the final page (after a series of click-through) where detailed instruction is given. Ellipsis should not be used as a way to solve truncation issue. Focus on making the UI short and precise. The sequence of the sentence structure in another language may not translate well, when a sentence is half finished as such. </span></li> +</ul> +</div> + +<h2 id="General_Mozilla_l10n_style">General Mozilla l10n style</h2> + +<h3 id="Accuracy">Accuracy</h3> + +<h4 id="Meaning-based_translation"><span class="author-p-1460 b"><strong>Meaning-based translation</strong></span></h4> + +<div id="magicdomid3"><span class="author-p-1460">When it comes to translation, meaning is everything. A translator needs to understand the source text's meaning exactly. You then find its most closely linked equivalent in your own language, without adding or subtracting meaning in your translation. Finding meaning-based equivalents between languages can be difficult. To help concentrate your thoughts, ask yourself questions like:</span></div> + +<ul> + <li><span class="author-p-1460">What does this word/sentence/string mean in English?</span></li> + <li><span class="author-p-1460">What is the message the author is trying to send?</span></li> + <li><span class="author-p-1460">How would I express that meaning in my own language?</span></li> +</ul> + +<p><span class="author-p-1460">Sometimes translation memory and machine translation tools can offer bad suggestions for a translation. If you use either as part of your translation workflow, make sure to correct the suggestions before submitting them. Avoid literal translation at all costs. Watch out for words that might sound or look the same between English and your language, but have a different meaning. </span></p> + +<h4 id="Should_not_be_translated">Should not be translated</h4> + +<h5 id="Shortcuts_and_accesskeys">Shortcuts and accesskeys</h5> + +<p>In Firefox and other software it's possible to use keyboard shortcuts to invoke a specific command. For example, to open a file in Firefox you can press the combination of keys <code>CTRL+O</code> (<code>Cmd+O</code> on Mac). The accelerator key depends on the operative system, but the letter itself is normally localizable. This is what is called a shortcut, or commandkey. For example, the <code>Open File…</code> menu item is stored as</p> + +<pre class="sourcelines stripes"><span id="l61"><span class="k"><!ENTITY</span> <span class="ni">openFileCmd.label</span> <span class="s2">"Open File…"</span><span class="k">></span></span> +<span id="l62"><span class="k"><!ENTITY</span> <span class="ni">openFileCmd.accesskey</span> <span class="s2">"O"</span><span class="k">></span></span> +<span id="l63"><span class="k"><!ENTITY</span> <span class="ni">openFileCmd.commandkey</span> <span class="s2">"o"</span><span class="k">></span></span></pre> + +<p>The commandkey is stored in <code>openFileCmd.commandkey</code> (sometimes the string has <code>.key</code> in the identifier). Normally you should not localize this key, since shortcuts are often common across the entire operative system (e.g. <code>CTRL+S</code> to Save) or similar products (<code>CTRL+T</code> to open a new tab in most browsers). But it needs to be localized if the letter is not available in your keyboard layout. For example, in Italian the character <code>[</code> can be accessed through <code>ALT+è</code>, a command key <code>[</code> would not work.</p> + +<p>In the code fragment above you see also an accesskey defined for <code>Open File…</code>. Accesskeys are used to access a UI element from the keyboard. Example: if File menu has an accesskey F, and the Open file… menu has O, you can press ALT+F to access the menu, and then O to open a file.</p> + +<p>If the label is File, and the accesskey is F, it will be displayed as "<u>F</u>ile" on Windows and Linux, with an underscored F. If the accesskey was "O", so a character not available in the original label, it will be displayed underlined between parenthesis: "File (<u>O</u>)".</p> + +<p>One important thing to determine is if, for your locale, it makes sense to have localized accesskeys: for example, if most users will use a keyboard with a different layout (English), it might make sense to keep the English original accesskey instead of using a letter available in your localization.</p> + +<p>Accesskeys, like commandkeys, have their own lines within .dtd and .properties files and are usually identified by .accesskey in the string ID.</p> + +<h5 id="Variables"><span class="author-p-1460">Variables</span></h5> + +<p><span class="author-p-1460">Variables should never be translated. You can recognize a variable within a string by its beginning with a specific character (e.g., <span class="author-p-1460">$, #, %, etc.)</span> followed by a combination of words without spacing. For example, $BrandShortName and %S are variables. </span>You can move a variable around within a string, if the translation of the string requires it.</p> + +<h5 id="Brands_copyright_and_trademark"><strong><span class="author-p-1460">Brands, copyright, and trademark</span></strong></h5> + +<p><span class="author-p-1460">Brand names, as well as copyright and trademarks should never be translated, nor transliterated into a non-Latin based script. See the <a href="https://www.mozilla.org/en-US/styleguide/communications/translation/">Mozilla branding guide</a> for more details.</span></p> + +<p><span style="font-family: open sans light,helvetica,arial,sans-serif; font-size: 1.286rem; letter-spacing: -0.014em; line-height: 1;">Translating c</span><span style="font-family: open sans light,helvetica,arial,sans-serif; font-size: 1.286rem; letter-spacing: -0.014em; line-height: 1;">ulture-specific references</span></p> + +<p>At times there will be English content included in Mozilla products or web projects (e.g., marketing campaigns) that makes references to American culture and concepts. When translating these, it is best to find an equivalent cultural reference within your own culture that accurately conveys the meaning of the English reference. For example, an American might say, "Good job, home run!" A home run is a baseball reference for a successful outcome. An appropriate translation would be an equivalent metaphor within your culture. Using soccer as an example, you might translate "Good job, home run!" into "Good job, nice goal!" in your language.</p> + +<p>[Add a note about Mozilla culture.]</p> + +<h4 id="Legal_content">Legal content</h4> + +<p>Mozilla projects will often contain legal content in the form of user agreements, privacy statements, etc. When reviewing the translation of legal content, Mozilla localizers should do so according to the criteria concerning accuracy, fluency, style, and terminology found within this style guide and according to Mozilla culture and values.</p> + +<h3 id="Fluency"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Fluency</span></h3> + +<div id="magicdomid153"> </div> + +<div id="magicdomid154"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">To produce a fluent translation, not only should the translation follow the language's standard grammar, punctuation, and spelling rules, but it should avoid being ambiguous, incoherent, or inconsistent, and unintelligible.</span></div> + +<div id="magicdomid155"> </div> + +<div id="magicdomid156"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">To avoid ambiguity, the translator must thoroughly understand the meaning behind the source text, including any references that text might include. For example, if the English source text uses the word, "it", the translator must know what "it" is to avoid an ambiguous translation. Clearly understanding the source text will also allow a translator to make the source text's logical connections in their own translation. This helps to keep the translation coherent.</span></div> + +<div id="magicdomid157"> </div> + +<div id="magicdomid158"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Inconsistency can pop up in many forms. A translator must be consistent in their use of abbreviations, references, and links within each localization project. They must also be consistent with Mozilla and the localization communities' style guides and approved terminology. Abbreviations, like terminology, should come from either a standard reference (like a dictionary of abbreviations) or should follow your language's rules for creating abbreviations. Once used, the abbreviation must remain consistent every place that it is used in the translation. Cross-references (or links) must also be consistently used within a translation. If a text contains a hyperlink URL to a support article in English, the translation should also contain a hyperlink to a translation of that support article (if available) or the English version. Links should not redirect to other pages nor should they be broken and unusable.</span></div> + +<div id="magicdomid159"> </div> + +<div id="magicdomid160"><span class="author-a-w6z79zlakz82zxz85zz65zz86zz78zz89zz122zz89zd">Finally, there are times that a translation simply doesn't make sense. It's hard to put your finger on what exactly is wrong with it, but you know it is unintelligible and not fluent. While this is uncommon, it's important to report these unintelligible translations and offer suggestions to correct them.</span></div> diff --git a/files/fr/mozilla/localization/localiser_avec_pontoon/index.html b/files/fr/mozilla/localization/localiser_avec_pontoon/index.html new file mode 100644 index 0000000000..c030325093 --- /dev/null +++ b/files/fr/mozilla/localization/localiser_avec_pontoon/index.html @@ -0,0 +1,135 @@ +--- +title: Localiser avec Pontoon +slug: Mozilla/Localization/Localiser_avec_Pontoon +translation_of: Mozilla/Localization/Localizing_with_Pontoon +--- +<p><a href="https://pontoon.mozilla.org" title="https://pontoon.mozilla.org">Pontoon</a> est un outil de localisation (l10n) sur le Web qui est en WYSIWYG, c'est-à-dire vous permet de voir directement ce que sera le résultat de votre travail. Chez Mozilla, nous utilisons Pontoon pour localiser tous les produits Mozilla ainsi que les sites web, depuis Firefox jusqu'à Mozilla.org. Pontoon est d'un accès facile et d'un maniement intuitif : il n'est pas nécessaire de disposer de grandes compétences techniques pour l'utiliser dans un processus de l10n. Nous allons aborder la façon d'utiliser Pontoon pour localiser des projets, depuis la manière de s'inscrire sur le site jusqu'à la phase finale de vos contributions. Chemin faisant, nous verrons quelques fonctionnalités sympathiques qui vous rendront plus efficace et faciliteront vos contributions de traduction et localisation.</p> + +<div class="note"> +<p><strong>Vous êtes développeur ?</strong> Parcourez l'article <a href="/en-US/docs/Implementing_Pontoon_Mozilla">implementing Pontoon in your project</a> ou apprenez comment vous impliquer sur le <a href="https://github.com/mozilla/pontoon">GitHub</a>.</p> +</div> + +<h2 id="Premiers_pas">Premiers pas</h2> + +<p><a href="https://pontoon.mozilla.org" title="https://pontoon.mozilla.org">La page d'accueil de Pontoon</a> est d'un usage très simple. Pour commencer, cliquez sur le lien « <strong>Sign in</strong> » et validez votre inscription avec votre compte Firefox (<em>Firefox account</em>). Ensuite, il vous suffit de sélectionner le projet sur lequel vous voulez travailler et la locale (votre langue) en la sélectionnant dans les menus déroulants. Pontoon ouvre alors automatiquement le projet désiré dans votre langue et vous allez pouvoir commencer. Notez que pour les besoins de cet article, nous utiliserons le site web <a href="https://affiliates.mozilla.org/">Firefox Affiliates</a> pour explorer les fonctionnalités de Pontoon et son processus. Et voici Pontoon qui s'ouvre :</p> + +<p><em><img alt="Browser app and workspace" src="https://mdn.mozillademos.org/files/8323/affiliates.png" style="height: 558px;"></em></p> + +<h3 id="Barre_d'outils_principale">Barre d'outils principale</h3> + +<p>Comme vous pouvez le voir, la majeure partie de l'interface est occupée par le site web qui est en cours de traduction. Seule la barre d'outils dans la partie supérieure appartient à Pontoon et comprend les éléments suivants (de gauche à droite) :</p> + +<p><img alt="Main toolbar" src="https://mdn.mozillademos.org/files/8325/toolbar.png"></p> + +<h4 id="Liste_des_chaînes">Liste des chaînes</h4> + +<p>Ouvre un panneau latéral qui contient la liste de toutes les chaînes à traduire.</p> + +<h4 id="Sélecteur_de_projets"><span id="cke_bm_939S" style="display: none;"> </span>Sélecteur de projets</h4> + +<p>Permet de passer d'un projet de traduction à l'autre.</p> + +<h4 id="Sélecteur_de_ressources"><span id="cke_bm_940S" style="display: none;"> </span>Sélecteur de ressources</h4> + +<p>Permet de passer d'une ressource à l'autre pour un projet à traduire, par exemple des pages secondaires ou des fichiers. Cette entrée est masquée s'il n'existe aucune ressource pour le projet.</p> + +<h4 id="sect1"><span id="cke_bm_941S" style="display: none;"> </span></h4> + +<dl> +</dl> + +<h4 id="Sélecteur_de_locale">Sélecteur de locale</h4> + +<p>Permet de changer la langue-cible de traduction.</p> + +<h4 id="Go">Go</h4> + +<p>Ouvre la sélection qui combine projet-ressource-langue</p> + +<h4 id="Indicateur_de_progression">Indicateur de progression</h4> + +<p>Affiche l'avancement de votre travail de traduction pour la ressource. La fenêtre popup vous donne davantage de détails.</p> + +<dl> +</dl> + +<h4 id="Menu_utilisateur"><span id="cke_bm_943S" style="display: none;"> </span>Menu utilisateur</h4> + +<p>Permet d'exécuter des tâches spécifiques, telles que <em>commiter</em> sur un dépôt, télécharger des fichiers et se déconnecter.</p> + +<h4 id="Menu_d'information">Menu d'information</h4> + +<p>Fournit des informations importantes, telles que la chronologie du projet et une liste des raccourcis clavier.</p> + +<dl> +</dl> + +<p>Bon, et si on traduisait un peu maintenant ?<span id="cke_bm_608E" style="display: none;"> </span></p> + +<dl> +</dl> + +<h2 id="Traduction_des_chaînes">Traduction des chaînes</h2> + +<p>Quand vous utilisez Pontoon pour la localisation, vous disposez de plusieurs options pour traduire vos chaînes. Vous pouvez en effet traduire en contexte, hors-contexte, ou les deux à la fois. Commençons par la traduction en contexte.</p> + +<h3 id="En_contexte">En contexte</h3> + +<p>Le mode de traduction en contexte de Pontoon's est un atout qui le distingue d'autres plateformes de traduction. Pontoon ouvre une page web (ou une application web) et permet de la modifier en temps réel. Voici comment vous pouvez traduire votre première chaîne :</p> + +<p><img alt="In-context localization" src="https://mdn.mozillademos.org/files/8331/in-context.png"></p> + +<ol> + <li>Survolez au pointeur de votre souris le texte que vous souhaitez traduire.</li> + <li>Une icône de modification (un crayon) apparaît sur la zone de texte. Cliquez et vous activez le mode traduction.</li> + <li>Remplacez le texte original par sa traduction dans votre langue.</li> + <li>Cliquez sur l'icône d'enregistrement (une disquette) pour sauvegarder votre traduction.</li> +</ol> + +<div> +<h3 id="Hors-contexte">Hors-contexte</h3> + +<p>Certaines chaînes ne sont pas traduisibles en contexte, telles que les balises <title> des pages web et les chaînes ayant différents accords. En cliquant sur l'icône hamburger de la principale barre d'outils, la liste des chaînes et traductions disponibles apparaît en barre latérale. Utilisez alors la barre latérale pour inscrire une localisation hors-contexte:</p> + +<p><img alt="Out-of-context localization: list" src="https://mdn.mozillademos.org/files/8337/out-of-context-1.png"> <img alt="Out-of-context localization: translate" src="https://mdn.mozillademos.org/files/8335/out-of-context-2.png"></p> + +<ol> + <li>Cliquez sur la chaîne à traduire.</li> + <li>Apparaît alors, dans le panneau de traduction, la chaîne originale et ses détails (tels que des commentaires).</li> + <li>Traduisez la chaîne dans l'espace de traduction situé en dessous.</li> + <li>Cliquez sur enregistrer pour enregistrer votre traduction.</li> +</ol> + +<p>En traduisant des chaînes hors contexte, les traductions apparaîssent sur la page web si elles sont également traduisibles en contexte.</p> + +<h3 id="Outils_d'aide_à_la_traduction">Outils d'aide à la traduction</h3> +</div> + +<p>Comme vous le voyez, vous pouvez profiter des suggestions de l'historique et de la mémoire de traduction, de la traduction automatique et des autres locales également disponibles dans le panneau hors-contexte. Nous appelons ces outils des aides la traduction. Voici dans le détail ce que chacun d'eux peut vous apporter dans votre processus de traduction :</p> + +<p><img alt="Translation helpers: History" src="https://mdn.mozillademos.org/files/8339/helpers-history.png"> <img alt="Translation helpers: Machinery" src="https://mdn.mozillademos.org/files/8341/helpers-machinery.png"> <img alt="Translation helpers: Other locales" src="https://mdn.mozillademos.org/files/8343/helpers-locales.png"> <img alt="Translation helpers: Search" src="https://mdn.mozillademos.org/files/8345/helpers-menu.png"></p> + +<h4 id="Historique">Historique</h4> + +<p>Affiche les traductions suggérées pécédemment, y compris celles d'autres utilisateurs.</p> + +<h4 id="Machinery">Machinery</h4> + +<p>Displays matches from various services: internal translation memory, <a href="http://transvision.mozfr.org/">Mozilla Transvision</a>, <a href="https://amagama-live.translatehouse.org/">open source translation memory</a>, <a href="http://www.microsoft.com/Language/">Microsoft terminology</a> and <a href="http://www.bing.com/translator">machine translation</a>.</p> + +<h4 id="Autres_locales">Autres locales</h4> + +<p>Affiche les traductions correspondantes dans d'autres langues.</p> + +<h4 id="Recherche">Recherche</h4> + +<p>Fonctionne presque comme <em>Machinery</em>, mais utilise le mot-clé fourni comme paramètre au lieu de la chaîne de caractères originale.</p> + +<p>En cliquant sur une suggestion, vous la copiez dans la zone de traduction.</p> + +<dl> +</dl> + +<h2 id="Publier_sa_localisation">Publier sa localisation</h2> + +<p>Pour publier votre travail de localisation (l10n), vous voudrez normalement l'inscrire dans un dépôt. Et Pontoon s'en charge! En réalité, il synchronise vos changements avec le dépôt t<span class="short_text" id="result_box" lang="fr"><span>outes les heures. </span></span>Félicitez-vous donc avec une tape dans le dos, une petite danse, une sieste ou autre chose pour célébrer votre travail!</p> diff --git a/files/fr/mozilla/localization/localization_notes/index.html b/files/fr/mozilla/localization/localization_notes/index.html new file mode 100644 index 0000000000..e391ccb006 --- /dev/null +++ b/files/fr/mozilla/localization/localization_notes/index.html @@ -0,0 +1,25 @@ +--- +title: Notes de traduction +slug: Mozilla/Localization/Localization_notes +tags: + - Guide + - Internationalisation + - Mozilla + - Traduction +translation_of: Mozilla/Localization/Localization_notes +--- +<p><span class="seoSummary">Les traducteurs travaillent la plupart du temps sur les fichiers à traduire sans le contexte des fichiers sources, y compris les chaînes traduites ; il est donc important d'ajouter des commentaires dans ces mêmes fichiers à traduire. Ces commentaires sont généralement appelés <em>notes de traduction</em>. Il existe un format établi pour ces documents, qui est détaillé dans le document actuel.</span></p> + +<p>Il est important de suivre le format au plus possible. De nombreux outils analysent automatiquement les commentaires afin d'en simplifier la lecture et de faciliter le travail des traducteurs.</p> + +<h2 id="Fichiers_DTD">Fichiers DTD</h2> + +<pre class="eval"><!-- NOTE DE TRADUCTION (nom de l'entité): commentaire --> +</pre> + +<h2 id="Fichiers_de_propriétés">Fichiers de propriétés</h2> + +<pre class="eval"># NOTE DE TRADUCTION (clé): commentaire +</pre> + +<p>Les commentaires pour l'ensemble du fichier doivent utiliser le même format, être en haut du fichier (après l'en-tête de la licence, évidemment) et simplement indiquer la référence (<em>nom de l'entité/clé</em>).</p> diff --git a/files/fr/mozilla/localization/localizing_with_verbatim/index.html b/files/fr/mozilla/localization/localizing_with_verbatim/index.html new file mode 100644 index 0000000000..32d877555a --- /dev/null +++ b/files/fr/mozilla/localization/localizing_with_verbatim/index.html @@ -0,0 +1,169 @@ +--- +title: Localiser avec Verbatim +slug: Mozilla/Localization/Localizing_with_Verbatim +tags: + - Comment + - Démarrer + - Guide + - Localisation + - MDN + - Mozilla + - Participer + - Traduction + - Traduire + - Verbatim +translation_of: Mozilla/Localization/Localizing_with_Pontoon +--- +<p><span class="seoSummary">Verbatim est un outil en ligne (plus précisément, il s'agit d'une instance Pootle hébergée par Mozilla) conçu pour localiser le contenu des pages Web de Mozilla. Tous les projets Mozilla peuvent en profiter, quelle que soit la langue utilisée. Ce guide vous aidera à localiser votre premier projet Mozilla.</span> Il vous expliquera les bases de Verbatim pour traduire tous les projets Mozilla que vous voudriez voir apparaître dans votre langue au sein de la communauté Mozilla. Plusieurs points seront abordés, notamment les types de projet utilisés avec Verbatim, comment démarrer avec Verbatim ainsi que les différentes tâches accomplies grâce à Verbatim.</p> + +<h2 id="Démarrer_avec_Verbatim">Démarrer avec Verbatim</h2> + +<p>Puisque Verbatim est un outil en ligne, le traducteur doit être connecté à Internet pour l'utiliser. Vous pouvez l'utiliser de deux manières différentes : démarrez une nouvelle localisation ou rejoignez une communauté de localisation déjà existante. Quelque soit votre choix, suivez les étapes ci-dessous pour commencer à travailler sur un projet Verbatim.</p> + +<table style="border-color: rgb(0,0,0); border-style: solid; width: 100%;"> + <thead> + <tr style="text-align: center;"> + <th scope="col" style="text-align: center;"><strong>Démarrer une nouvelle localisation</strong></th> + <th scope="col" style="text-align: center;"><strong>Rejoindre une communauté existante</strong></th> + </tr> + </thead> + <tbody> + <tr> + <td> + <ol> + <li>Rendez-vous à l'adresse <a class="external" href="http://localize.mozilla.org/">https://localize.mozilla.org</a>, la page d'accueil de Verbatim.</li> + </ol> + </td> + <td> + <ol> + <li>Rendez-vous à l'adresse <a class="external" href="http://localize.mozilla.org/">https://localize.mozilla.org</a>, la page d'accueil de Verbatim.</li> + </ol> + </td> + </tr> + <tr> + <td> + <ol start="2"> + <li>Si vous avez un compte Mozilla <a dir="ltr" href="https://wiki.mozilla.org/Directory" id="LDAP" lang="en-US" title="LDAP Description">LDAP</a> (Lightweight Directory Access Protocol), connectez-vous simplement avec les identifiants de ce compte. Sinon, créez un compte, et connectez-vous avec les identifiants de ce compte. Vous trouverez les liens pour vous enregistrer ou vous identifier dans le coin en haut à droite de cette page.</li> + </ol> + </td> + <td> + <ol start="2"> + <li>Si vous avez un compte Mozilla <a dir="ltr" href="https://wiki.mozilla.org/Directory" id="LDAP" lang="en-US" title="LDAP Description">LDAP</a> (Lightweight Directory Access Protocol), connectez-vous simplement avec les identifiants de ce compte. Sinon, créez un compte, et connectez-vous avec les identifiants de ce compte. Vous trouverez les liens pour vous enregistrer ou vous identifier dans le coin en haut à droite de cette page.</li> + </ol> + </td> + </tr> + <tr> + <td> + <ol start="3"> + <li>Rapportez un bogue en utilisant <a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?alias=&assigned_to=nobody%40mozilla.org&blocked=&bug_file_loc=https%3A%2F%2Flocalize.mozilla.org%2F&bug_severity=normal&bug_status=NEW&cf_blocking_191=---&cf_blocking_192=---&cf_status_191=---&cf_status_192=---&cf_status_firefox10=---&cf_status_firefox11=---&cf_status_firefox8=---&cf_status_firefox9=---&cf_tracking_firefox10=---&cf_tracking_firefox11=---&cf_tracking_firefox8=---&cf_tracking_firefox9=---&comment=I%20would%20like%20to%20request%20that%20you%20add%20the%20%5Binsert%20your%20locale%20code%20here%5D%20as%20a%20new%20localization%20in%20Verbatim.%0D%0A%0D%0A%5BAdd%20any%20other%20comments%20you%20may%20have%20here.%5D&component=Verbatim&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&defined_groups=1&dependson=&description=&flag_type-4=X&flag_type-607=X&form_name=enter_bug&keywords=&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=All&priority=--&product=Webtools&qa_contact=verbatim%40webtools.bugs&rep_platform=All&requestee_type-325=&requestee_type-4=&requestee_type-607=&short_desc=Request%20for%20new%20localization%20on%20Verbatim&status_whiteboard=&target_milestone=---&version=Trunk" title="https://bugzilla.mozilla.org/enter_bug.cgi?alias=&assigned_to=nobody%40mozilla.org&blocked=&bug_file_loc=https%3A%2F%2Flocalize.mozilla.org%2F&bug_severity=normal&bug_status=NEW&cf_blocking_191=---&cf_blocking_192=---&cf_status_191=---&cf_status_192=---&cf_status_firefox10=---&cf_status_firefox11=---&cf_status_firefox8=---&cf_status_firefox9=---&cf_tracking_firefox10=---&cf_tracking_firefox11=---&cf_tracking_firefox8=---&cf_tracking_firefox9=---&comment=I%20would%20like%20to%20request%20that%20you%20add%20the%20%5Binsert%20your%20locale%20code%20here%5D%20as%20a%20new%20localization%20in%20Verbatim.%0D%0A%0D%0A%5BAdd%20any%20other%20comments%20you%20may%20have%20here.%5D&component=Verbatim&contenttypeentry=&contenttypemethod=autodetect&contenttypeselection=text%2Fplain&data=&defined_groups=1&dependson=&description=&flag_type-4=X&flag_type-607=X&form_name=enter_bug&keywords=&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=All&priority=--&product=Webtools&qa_contact=verbatim%40webtools.bugs&rep_platform=All&requestee_type-325=&requestee_type-4=&requestee_type-607=&short_desc=Request%20for%20new%20localization%20on%20Verbatim&status_whiteboard=&target_milestone=---&version=Trunk">ce modèle bugzilla</a> pré-rempli. Ajoutez vos paramètres régionaux et votre langue dans le champ "Description", ainsi que toute information que vous jugez utile. Voir l'exemple ci-dessous.</li> + </ol> + + <div class="note"><strong>Exemple </strong>: J'aimerais vous demander d'ajouter fr-FR comme nouveau code de localisation dans Verbatim. La langue est le <strong>français</strong>. J'aime aussi les cookies. J'adore les cookies. Toutes les pâtisseries me motivent en fait.</div> + </td> + <td> + <ol start="3"> + <li><a class="link-https" href="https://wiki.mozilla.org/L10n:Teams:fr" title="https://wiki.mozilla.org/Category:L10n_Teams">Contactez la communauté</a> pour connaître les projets qui ont le plus besoin d'attention en ce moment. Lisez l'exemple ci-dessous pour vous faire une idée du message que vous pourriez envoyer aux responsables de la communauté.</li> + </ol> + + <div class="note"><strong>Exemple </strong>: J'aimerais vous rejoindre pour vous aider à traduire dans cette langue. Par où puis-je commencer ? J'aimerais aussi vous offrir un verre pour vous motiver à me laisser rejoindre votre communauté !</div> + </td> + </tr> + </tbody> +</table> + +<p>Vous voilà enregistré(e) et identifié(e). Nous allons maintenant décrire le processus général de traduction en nous servant de la <a href="https://localize.mozilla.org/projects/mdn">page des projets MDN</a> comme exemple.</p> + +<h2 id="Traduire">Traduire</h2> + +<p>Tout d'abord, il faut trouver des sources qui ne sont pas encore traduites.</p> + +<ol> + <li>Rendez-vous sur la <a class="link-https" href="https://localize.mozilla.org/projects/mdn" title="https://localize.mozilla.org/projects/mdn/">page des projects MDN</a>.</li> + <li>Sélectionnez votre langue dans l'onglet <strong>Overview</strong>.</li> + <li>Cliquez sur le répertoire <strong>LC Messages</strong> pour voir apparaître les fichiers <code>.po</code> qui contiennent les chaînes à traduire.</li> + <li>Choisissez un fichier .po dont certaines sources sont encore à traduire.</li> + <li>Une page s'affiche avec le résumé de ce fichier. Cliquez sur <strong>Continue translation</strong> et vous êtes redirigé vers l'onglet <strong>Translate</strong> pour commencer directement à traduire.</li> +</ol> + +<p>Vous êtes maintenant prêt à nous aider, vous allez voir, c'est très facile. Vous pouvez le faire de deux manières :</p> + +<ol> + <li>Insérez votre traduction en dessous de la chaîne en anglais.</li> + <li>Cliquez sur <strong>Suggest</strong>. Si vous avez les autorités pour approuver une traduction, cliquez sur <strong>Submit.</strong> la chaîne suivante apparaît.</li> + <li>Hourra ! Vous traduisez ! Répétez les étapes 1 et 2 pour toutes les chaînes à traduire.</li> +</ol> + +<div class="note"><strong>Remarque </strong>: Si une suggestion a déjà été faite pour l'une des chaînes à traduire, vous pouvez toujours proposer la vôtre, si vous la trouvez plus correcte.</div> + +<h3 id="Verbatim_offre_des_options_très_sympas">Verbatim offre des options très sympas</h3> + +<p>Verbatim offre des fonctionnalités intéressantes que vous pouvez voir dans la capture d'écran ci-dessous.</p> + +<p><a href="/@api/deki/files/5930/=Translate_Tab.png" title="Translate Tab.png"><img alt="Translate Tab.png" class="default internal" src="/@api/deki/files/5930/=Translate_Tab.png" style="height: 221px; width: 1113px;"></a></p> + +<ul> + <li>L'icône <strong>Copy </strong>vous permet de copier directement le texte source en anglais dans la ligne de traduction.</li> + <li>L'icône <strong>Google Translate</strong> vous permet d'importer directement la traduction à partir du service de Google.</li> + <li>Les boutons <strong>Next</strong> et <strong>Previous</strong> vous permettent de naviguer entre les lignes à traduire.</li> + <li>Vous pouvez atteindre une chaîne à traduire directement en insérant son numéro en bas de l'écran à gauche.</li> + <li>Vous pouvez marquer une traduction comme <strong>Fuzzy</strong> si vous pensez qu'il est possible de l'améliorer. Cette marque permettra de la retrouver plus facilement plus tard et de la modifier. Notez que seules les chaînes soumises seront validées dans le dépôt de localisation, mais pas les chaînes fuzzy. Si des chaînes restent à l'état fuzzy, leur version source apparaîtront dans votre version localisée, en lieu et place de votre traduction.</li> + <li>La partie <strong>Translator Comments</strong> vous permet d'ajouter des remarques à une chaîne précise.</li> + <li>Lorsqu'il existe une forme singulière et une forme plurielle d'une chaîne, vous verrez deux zones de traduction, labellées respectivement <strong>Plural Form 0</strong> (singulier) et <strong>Plural Form 1</strong> (pluriel).</li> +</ul> + +<h2 id="Possibilités_supplémentaires">Possibilités supplémentaires</h2> + +<p>Si vous avez l'autorité d'approuver les traductions, vous pourrez également accéder aux fonctionnalités suivantes.</p> + +<h3 id="Relire_les_traductions_suggérées">Relire les traductions suggérées</h3> + +<ol start="1"> + <li>Cliquez sur l'onglet <strong>Review</strong>. Vous verrez alors apparaître le nombre de chaînes en attente de révision pour chaque fichier <code>.po</code>.<a href="/@api/deki/files/5931/=Review_Tab1.png" title="Review Tab1.png"><img alt="Review Tab1.png" class="internal rwrap" src="/@api/deki/files/5931/=Review_Tab1.png?size=webview" style="float: right; height: 145px; width: 274px;"></a></li> + <li>Sélectionnez <strong style="font-weight: bold;">Review</strong><strong> suggestions</strong> pour commencer à approuver les suggestions.</li> + <li>Vous pouvez soit accepter la suggestion en cliquant sur le "V" vert ou la rejeter en cliquant sur le "X" rouge (voir capture d'écran de la section précédente).</li> +</ol> + +<p>il est important de noter que seules les chaînes soumises apparaîtront dans vos pages localisées, pas les suggestions, ni les traductions fuzzy. Avant de valider votre projet localisé, vérifiez que toutes les chaînes aient bien été soumises.</p> + +<h3 id="Utiliser_VCS_avec_Verbatim">Utiliser VCS avec Verbatim</h3> + +<p>VCS (<strong>V</strong>ersion <strong>C</strong>ontrol <strong>S</strong>ystem) est le système de dépôt utilisé pour mettre à jour les chaînes des projets ou pour mettre en ligne le contenu traduit, selon le lien utilisé.</p> + +<p><img alt="VCS.png" class="internal rwrap" src="/@api/deki/files/5925/=VCS.png" style="float: right;">Pour publier vos traductions et voir vos modifications, cliquez sur le lien <strong>Commit to VCS</strong> en dessous de chaque nom de fichier. Comptez environ une heure avant de voir apparaître vos changements sur le site du projet.</p> + +<p>Pour mettre à jour vos fichiers <code>.po</code> avec de nouvelles traductions, cliquez sur le lien <strong>Update from VCS</strong> en dessous de chaque nom de fichier.</p> + +<p> </p> + +<div class="note"><br> +<strong>Remarque </strong>: Certains projets sont mis à jour automatiquement durant la nuit, alors que d'autres nécessitent une mise à jour manuelle pour recevoir du nouveau contenu. Faites-y très attention car cela peut influencer votre travail.</div> + +<h2 id="Traduire_les_fichiers_de_Verbatim_avec_une_application_externe">Traduire les fichiers de Verbatim avec une application externe</h2> + +<p>Dans l'onglet <strong>Translate</strong>, vous avez la possibilité d'exporter les fichiers <code>.po</code> et <code>.xliff</code> et de les traduire avec une application externe (p.ex. un éditeur de texte ou une mémoire de traduction).</p> + +<ol> + <li>Pour télécharger le fichier <code>.po</code>, cliquez sur le lien <strong>Download </strong>sous chaque nom de fichier, pour le fichier .<code>xliff</code>, cliquez sur le lien <strong>Download XLIFF</strong>.</li> + <li>Traduisez les chaînes avec l'outil de votre choix.</li> +</ol> + +<p>Lorsque le fichier est traduit, vous devez le renvoyer sur le serveur de Verbatim, vous pouvez le faire à partir de l'onglet<strong> Translate</strong>.</p> + +<ol> + <li>Naviguez jusqu'à la partie <strong>Upload File</strong> à la fin de la liste de fichiers.</li> + <li>Cliquez sur le bouton <strong>Browse</strong> et sélectionnez le fichier que vous souhaitez envoyer.</li> + <li>Sélectionnez un mode d'envoi selon les options disponibles.</li> + <li>Cliquez sur <strong>Upload</strong>.</li> +</ol> + +<div class="warning"> +<p class="warning"><strong>Important</strong> : Dans le passé, il y a eu quelques problèmes lorsque certains membres de la communauté mettaient à jour leurs sources alors que d'autres traduisaient en même temps l'ancienne version de ces mêmes sources. Ce faisant, certaines chaînes peuvent échapper au processus de traduction et apparaître en langue source dans un projet localisé. Coordonnez ces mises à jour manuelle entre les membres de votre communauté pour éviter ce problème.</p> +</div> + +<h2 id="Voilà_on_y_est_!">Voilà, on y est !</h2> + +<p>Waouw ! Nous y sommes ! Il est temps d'appliquer ce que vous avez appris et d'aider les gens de votre région à comprendre et connaître Mozilla. Faites-vous plaisir et n'hésitez pas à nous <a class="link-mailto" href="mailto:l10n-drivers@mozilla.com" title="l10n-drivers@mozilla.com">signaler</a> le moindre problème, nous serons ravis de vous aider.</p> + +<p> </p> + +<p><a href="/fr/docs/MDN/Contribute/Localize/Translating_pages" lang="fr-FR" title="Traduire les pages MDN">Retour : Traduire les pages MDN</a></p> diff --git a/files/fr/mozilla/marketplace/index.html b/files/fr/mozilla/marketplace/index.html new file mode 100644 index 0000000000..cbe5fffb5e --- /dev/null +++ b/files/fr/mozilla/marketplace/index.html @@ -0,0 +1,127 @@ +--- +title: Firefox Marketplace +slug: Mozilla/Marketplace +tags: + - Applications + - Débutant + - Firefox OS + - Introduction + - Landing + - Marketplace +translation_of: Archive/Mozilla/Marketplace +--- +<div class="summary">Le <em>Marketplace</em> Firefox est un marché en ligne pour les applications web. <span class="seoSummary">Dans cette section de MDN, vous trouverez les informations relatives à la préparation et à la publication d'applications sur le <em>Marketplace</em> Firefox. Vous pourrez en savoir plus sur la bonne construction d'une application, les façons de la diffuser et de la mettre à jour et vous trouverez également des informations à propos des API permettant d'exploiter les fonctionnalités du <em>Marketplace</em>.</span></div> + +<div class="column-container"> +<p>Grâce aux technologies web standards et à certains outils, le <a href="https://marketplace.firefox.com/"><em>Marketplace </em>Firefox</a> vous permet de publier <a href="/fr/Apps">des applications <em>open web</em></a>. Ces applications peuvent être empaquetées pour être utilisées au sein de Firefox OS ou bien être hébergées sur votre propre serveur web. Les applications publiées sont disponibles pour l'ensemble des utilisateurs de Firefox OS. Le <em>Marketplace</em> permet de découvrir les différentes applications par catégories, via un outil de recherche ou via les applications du moment. Les utilisateurs peuvent ainsi installer des applications gratuites immédiatement ou des applications payantes avec le paiement via l'opérateur téléphonique.</p> +</div> + +<div class="row topicpage-table"> +<div class="section"> +<h2 class="Community" id="Les_clés_du_succès"><a href="/fr/Marketplace/Prepare">Les clés du succès</a></h2> + +<dl> + <dd>Que ce soit pour le plaisir ou dans un cadre plus professionnel, les utilisateurs doivent pouvoir découvrir votre application, l'utiliser et en profiter. Dans cette section, nous voyons comment construire une communauté d'utilisateurs satisfaits.</dd> +</dl> + +<h2 class="Community" id="Les_options_de_publication"><a href="/fr/Marketplace/Options">Les options de publication</a></h2> + +<dl> + <dd>Empaquetées ou hébergées ? Telle est la question. On voit ici comment rendre l'application disponible et les différentes options envisageables afin qu'elle soit également utilisable sur Android et les ordinateurs de bureau (en plus de Firefox OS).</dd> +</dl> + +<h2 class="Community" id="Publier_des_applications"><a href="/fr/Marketplace/Publishing/Introduction">Publier des applications</a></h2> + +<dl> + <dd>Ici, on voit comment publier une application sur le <em>Marketplace</em> Firefox (l'envoi initial, le processus de revue, la mise à jour, le suivi des performances et la gestion des retours utilisateur).</dd> +</dl> +</div> + +<div class="section"> +<dl> +</dl> + +<h2 class="Tools" id="Outils_de_développement">Outils de développement</h2> + +<dl> + <dt><a href="/fr/Marketplace/APIs">Les bibliothèques et API du Firefox Marketplace</a></dt> + <dd>Un aperçu et des liens à propos des API et bibliothèques disponibles pour ajouter aux applications des fonctionnalités relatives au <em>Marketplace</em>.</dd> + <dt><a href="/fr/Apps/Tools_and_frameworks/App_developer_tools">Les outils destinés aux développeurs d'application</a></dt> + <dd>Une liste exhaustive d'outils qui peuvent être utilisés pour développer des applications web efficacement.</dd> + <dt><a href="/fr/docs/Tools/WebIDE">WebIDE</a></dt> + <dd>L'outil principal pour tester, déployer et déboguer des applications Firefox OS grâce au <a href="/fr/docs/Tools/Firefox_OS_Simulator">simulateur Firefox OS</a> ou sur un appareil Firefox OS.</dd> +</dl> +</div> +</div> + +<h2 id="Subnav">Subnav</h2> + +<ol> + <li><a href="/fr/Marketplace/Prepare">Les clés du succès</a> + + <ol> + <li><a href="/fr/Marketplace/Prepare/Introduction">Introduction</a></li> + <li><a href="/fr/Marketplace/Prepare/Deciding_what_to_build">Quoi construire ?</a></li> + <li><a href="/fr/Marketplace/Prepare/Getting_to_know_your_users">Apprendre à connaître les utilisateurs</a></li> + <li><a href="/fr/Marketplace/Prepare/Choosing_your_business_model">Choisir le modèle économique</a></li> + <li><a href="/fr/Marketplace/Prepare/Localizing_your_apps">Traduire son application</a></li> + <li><a href="/fr/Marketplace/Prepare/Promoting_your_app">Promouvoir son application</a></li> + <li><a href="/fr/Marketplace/Prepare/Creating_your_community">Créer une communauté</a></li> + </ol> + </li> + <li><a href="/fr/Marketplace/Options">Les options de publication</a> + <ol> + <li><a href="/fr/Marketplace/Options/Introduction">Introduction</a></li> + <li><a href="/fr/Marketplace/Options/Packaged_apps">Les applications empaquetées</a></li> + <li><a href="/fr/Marketplace/Options/Hosted_apps">Les applications hébergées</a></li> + <li><a href="/fr/Marketplace/Options/Packaged_or_hosted">Empaquetée ou hébergée ?</a></li> + <li><a href="/fr/Marketplace/Options/Mobile_optimized_websites">Les sites web optimisés pour le mobilewebsites</a></li> + <li><a href="/fr/Marketplace/Options/Self_publishing">Publier soi-même son application</a></li> + </ol> + </li> + <li><a href="/fr/Marketplace/Publishing">Le processus de publication</a> + <ol> + <li><a href="/fr/Marketplace/Publishing/Introduction">Introduction</a></li> + <li><a href="/fr/Marketplace/Publishing/Submission_checklist">Le <em>checklist</em> pour l'envoi</a></li> + <li><a href="/fr/Marketplace/Publishing/Marketplace_review_criteria" title="An explanation of the criteria an app must meet in order to be published on the Firefox Marketplace">Les critères de revue du <em>Marketplace</em></a></li> + <li><a href="/fr/Marketplace/Publishing/Marketplace_showcase_criteria">Un exemple d'illustration</a></li> + <li><a href="/fr/Marketplace/Publishing/Adding_a_subdomain" title="For security reasons, each app must have its own domain (or subdomain) on the Web. This article covers how to go about creating a subdomain for your app.">Ajouter un sous-domaine pour une application</a></li> + <li><a href="/fr/Marketplace/Publishing/Policies_and_Guidelines">Règles et lignes directrices</a> + <ol> + <li><a href="/fr/Marketplace/Publishing/Policies_and_Guidelines/Introduction">Introduction</a></li> + <li><a href="/fr/Marketplace/Publishing/Policies_and_Guidelines/Marketplace_screenshot_criteria" title="Some guidelines on how to create an effective screenshot for marketplace submission">Capture d'écran pour les critères</a></li> + <li><a href="/fr/Marketplace/Publishing/Policies_and_Guidelines/Privacy_policies" title="Your users' privacy is very important, so you need to develop and adhere to a reasonable privacy policy to engender their trust. This article provides a guide to developing privacy policies.">Politique de confidentialité</a></li> + <li><a href="/fr/Marketplace/Publishing/Policies_and_Guidelines/Testing_and_troubleshooting">Test et débogage des applications</a></li> + </ol> + </li> + </ol> + </li> + <li><a href="/fr/Marketplace/Publishing/Submit">Soumettre son application</a> + <ol> + <li><a href="/fr/Marketplace/Publishing/Submit/Overview">Aperçu</a></li> + <li><a href="/fr/Marketplace/Publishing/Submit/Sign-in_to_your_developer_account" title="This step-by-step guide will help you successfully submit your app to the Firefox Marketplace.">Première étape : s'inscrire</a></li> + <li><a href="/fr/Marketplace/Publishing/Submit/Load_your_app">Deuxième étape : charger l'application</a></li> + <li><a href="/fr/Marketplace/Publishing/Submit/Enter_your_apps_details">Troisième étape : lister les détails</a></li> + <li><a href="/fr/Marketplace/Publishing/Submit/Next_steps">Quatrième étape : les prochaines étapes</a></li> + <li><a href="/fr/Marketplace/Publishing/Submit/Rating_Your_Content">Cinquième étape : le système de notation des applications</a></li> + <li><a href="/fr/Marketplace/Publishing/Submit/Define_your_team">Sixième étape : définir les membres d'une équipe</a></li> + <li><a href="/fr/Marketplace/Publishing/Submit/Edit_other_localizations">Septième étape : éditer les localisations</a></li> + </ol> + </li> + <li><a href="/fr/Marketplace/Publishing/Managing_your_apps">Gérer et mettre à jour une application publiée</a> + <ol> + <li><a href="/fr/Marketplace/Publishing/Managing_your_apps/Introduction_Managing_your_apps">Introduction</a></li> + <li><a href="/fr/Marketplace/Publishing/Managing_your_apps/Status___Versions">L'état de l'application</a></li> + <li><a href="/fr/Marketplace/Publishing/Updating_apps" title="Information about how both hosted and packaged app updates are handled, and what you need to do to ensure that your app properly supports updating.">Mettre à jour une application</a></li> + <li><a href="/fr/Marketplace/Publishing/Managing_your_apps/App_Statistics">Les statistiques d'une application</a></li> + </ol> + </li> + <li><a href="/fr/docs/Mozilla/Marketplace/Add-on_submission">Soumettre un module complémentaire</a> + <ol> + <li><a href="/fr/docs/Mozilla/Marketplace/Add-on_submission">Un aperçu de l'envoi</a></li> + <li><a href="/fr/docs/Mozilla/Marketplace/Add-on_submission/Review_criteria">Les critères de revue pour un module complémentaire</a></li> + </ol> + </li> + <li><a href="/fr/Marketplace/APIs">API et bibliothèques</a></li> + <li><a href="/fr/Marketplace/FAQ">FàQ sur le <em>Marketplace </em>Firefox</a></li> +</ol> diff --git a/files/fr/mozilla/marketplace/index/index.html b/files/fr/mozilla/marketplace/index/index.html new file mode 100644 index 0000000000..84ea48e865 --- /dev/null +++ b/files/fr/mozilla/marketplace/index/index.html @@ -0,0 +1,8 @@ +--- +title: Index +slug: Mozilla/Marketplace/Index +tags: + - Index +translation_of: Archive/Mozilla/Marketplace/Index +--- +<p>{{Index("/fr/Marketplace")}}</p> diff --git a/files/fr/mozilla/marketplace/monetisation/index.html b/files/fr/mozilla/marketplace/monetisation/index.html new file mode 100644 index 0000000000..64edbd3706 --- /dev/null +++ b/files/fr/mozilla/marketplace/monetisation/index.html @@ -0,0 +1,73 @@ +--- +title: Monétisation +slug: Mozilla/Marketplace/Monetisation +tags: + - Applications + - Firefox OS + - moentization + - paiement +translation_of: Archive/Marketplace/Monetization +--- +<div class="summary"> +<p><span id="result_box" lang="fr"><span class="hps">Vous avez travaillé dur</span> <span class="hps">pour coder</span><span class="hps"> votre</span> <span class="hps">dernière application</span></span>, <span id="result_box" lang="fr"><span class="hps">mais comment</span> <span class="hps">pouvez-vous obtenir</span> <span class="hps">quelque chose en retour</span> <span class="hps">lors de la publication </span></span>? Cette section présente tous les informations dont vous aurez besoin pour implémenter le <span class="short_text" id="result_box" lang="fr"><span class="hps">paiement</span> <span class="hps">d'application</span></span>, <span id="result_box" lang="fr"><span class="hps">que ce soit</span> <span class="hps">les paiements</span> <span class="hps">depuis le marketplace</span> <span class="hps">ou des paiements</span> <span class="hps">dans l'application</span></span>.</p> +</div> + +<div class="row topicpage-table"> +<div class="section"> +<dl> + <dt><a href="https://developer.mozilla.org/en-US/docs/Apps/Tutorials/General/Profiting_from_your_app">Tirer profit de votre application</a></dt> + <dd><span id="result_box" lang="fr"><span class="hps">Ce</span> <span class="hps">guide détaillé</span> <span class="hps">contient</span> <span class="hps">des discussions</span> <span class="hps">préliminaires</span> <span class="hps">sur la façon de</span> <span class="hps">monétiser vos</span> <span class="hps">applications</span></span>, <span id="result_box" lang="fr"><span class="hps">y compris</span> <span class="hps">les applications payantes</span><span>, les prix et</span> la gestion d<span class="hps">es paiements</span></span>.</dd> + <dt><a href="/en-US/Marketplace/Monetization/App_payments_guide">Guide du paiement d'application</a></dt> + <dd><span id="result_box" lang="fr"><span class="hps">Cet article couvre les</span> aspects <span class="hps">techniques</span> <span class="hps">des applications</span> <span class="hps">payées</span></span>.</dd> + <dt><a href="/en-US/docs/Web/Apps/Publishing/In-app_payments">Paiements dans les application</a></dt> + <dd><span id="result_box" lang="fr"><span class="hps">Un guide détaillé</span> <span class="hps">pour</span> <span class="hps">la mise en œuvre</span> <span class="hps">d</span><span class="hps">es paiements dans les</span> <span class="hps">applications</span> <span class="hps">dans votre application</span> <span class="hps">Web</span></span>.</dd> + <dt><a href="/en-US/docs/Web/Apps/Publishing/Validating_a_receipt">Valider un reçu</a></dt> + <dd><span id="result_box" lang="fr"><span class="hps">Un guide pour</span> <span class="hps">savoir quand </span><span class="hps">et</span> <span class="hps">comment faire</span> <span class="hps">valider</span> <span class="hps">le reçu</span> de paiement <span class="hps">de votre application</span></span>, que<span id="result_box" lang="fr"><span class="hps"> vous vouliez</span> <span class="hps">mettre en œuvre</span> <span class="hps">la validation</span> <span class="hps">vous-même</span> <span class="hps">ou</span> <span class="hps">utiliser une bibliothèque</span> <span class="hps">préexistante</span></span>.</dd> + <dt><a href="/en-US/docs/Web/Apps/Publishing/App_pricing" title="/en-US/docs/Web/Apps/Publishing/App_pricing">Guide des prix</a></dt> + <dd><span id="result_box" lang="fr"><span class="hps">Un</span> <span class="hps">tour d'horizon des</span> <span class="hps">points de</span> <span class="hps">fixation du prix que</span><span> vous pouvez choisir</span> <span class="hps">pour vos</span> <span class="hps">applications payantes</span></span>, <span id="result_box" lang="fr"><span class="hps">et</span> <span class="hps">comment ceux-ci</span> <span class="hps">varient selon les</span> <span class="hps alt-edited">différentes devises</span></span>, <span id="result_box" lang="fr"><span class="hps">ainsi que des informations</span> <span class="hps">utiles sur</span> <span class="hps">la gestion</span><span class="hps"> des paiements</span></span>.</dd> + <dt><a href="/en-US/docs/Web/Apps/Publishing/Payments_Status" title="/en-US/docs/Web/Apps/Publishing/Payments_Status">Statuts de paiements</a></dt> + <dd>Un résumé des pays qui bénéficient de nos services de paiement — <span id="result_box" lang="fr"><span class="hps">essentiellement</span><span>,</span> <span class="hps">où</span> <span class="hps">peuvent</span> <span class="hps">être distribuées</span> les <span class="hps">applications payantes</span></span>?</dd> +</dl> +</div> + +<div class="section"> +<h5 class="Tools" id="Tools" name="Tools">Tools for app developers</h5> +<ul> + <li><a href="https://marketplace.firefox.com/developers/">Visit Firefox Marketplace Developer Hub</a></li> + <li><a href="/en-US/docs/Mozilla/Firefox_OS/Using_Firefox_OS_Simulator">Firefox OS Simulator</a></li> + <li><a href="/en-US/docs/Apps/App_developer_tools">App developer tools</a></li> +</ul> +<h5 class="Documentation" id="Documentation" name="Documentation">Technology reference documentation</h5> +<div class="twocolumns"> + <ul> + <li><a href="/en-US/docs/Web/CSS">CSS</a></li> + <li><a href="/en-US/docs/DOM">DOM</a></li> + <li><a href="/en-US/docs/Web/HTML">HTML</a></li> + <li><a href="/en-US/docs/JavaScript">JavaScript</a></li> + <li><a href="/en-US/docs/WebAPI">WebAPI</a></li> + <li><a href="/en-US/docs/Web/WebGL">WebGL</a></li> + <li><a href="/en-US/docs/SVG">SVG</a></li> + <li><a href="https://www.mozilla.org/en-US/apps/">Open Web Apps overview site</a></li> + <li><a href="https://wiki.mozilla.org/Apps">Apps project wiki page</a></li> + </ul> +</div> +<h5 class="Community" id="Community" name="Community">Getting help from the community</h5> +<p>If you still aren't sure how to do what you're trying to get done, feel free to join the conversation!</p> +<ul> + <li>Consult the webapps forum: <ul> + <li><a href="https://lists.mozilla.org/listinfo/dev-webapps"> Liste de diffusion</a></li> + + + <li><a href="http://groups.google.com/group/mozilla.dev.webapps"> newsgroup</a></li> + <li><a href="http://groups.google.com/group/mozilla.dev.webapps/feeds"> Flux de syndication</a></li> +</ul> + <ul> + <li>Ask your question on the Open Web Apps IRC channel: <a class="link-irc" href="irc://irc.mozilla.org/openwebapps">#openwebapps</a></li> + </ul> + </li> +</ul> +<p><span class="alllinks"><a href="http://www.catb.org/~esr/faqs/smart-questions.html" rel="external">Don't forget about the <em>netiquette</em>...</a></span></p> +</div> +</div> + +<p> </p> diff --git a/files/fr/mozilla/marketplace/options/creating_a_store/index.html b/files/fr/mozilla/marketplace/options/creating_a_store/index.html new file mode 100644 index 0000000000..0543168c72 --- /dev/null +++ b/files/fr/mozilla/marketplace/options/creating_a_store/index.html @@ -0,0 +1,66 @@ +--- +title: Creating your own store +slug: Mozilla/Marketplace/Options/Creating_a_store +translation_of: Archive/Marketplace/Options/Creating_a_store +--- +<div class="summary"> +<p><span id="result_box" lang="fr"><span class="hps">La méthode</span> <span class="hps">d'installation et de</span> <span class="hps">gestion des</span> <span class="hps">applications</span> <span class="hps">dans Firefox</span> <span class="hps">OS</span><span>,</span> <span class="hps">Firefox</span> <span class="hps">pour Android</span> <span class="hps">et</span> <span class="hps">Firefox</span> <span class="hps">pour PC de bureau</span> <span class="hps">est indépendant</span> <span class="hps">de</span> <span class="hps">Firefox</span> <span class="hps">Marketplace.</span> <span class="hps">Cela ouvre</span> <span class="hps">la possibilité</span> <span class="hps">pour vous de</span> <span class="hps">non seulement</span> <span class="hps atn">auto-</span><span>publier</span> <span class="hps">des applications</span><span>,</span> <span class="hps">mais aussi</span> <span class="hps">pour créer</span> <span class="hps">et</span> <span class="hps">héberger votre propre</span> <span class="hps">marché</span><span>.</span> <span class="hps">En fin de compte</span><span>, vous pouvez aussi</span> <span class="hps">mettre en place un</span> <span class="hps">marché</span> <span class="hps">indépendant en utilisant</span> <span class="hps">le logiciel</span> <span class="hps">open source</span><span>.</span> <span class="hps">Cette page décrit</span> <span class="hps">les options</span> <span class="hps">et</span> <span class="hps">donne un aperçu</span> <span class="hps">de</span> <span class="hps">la mise en œuvre</span> <span class="hps">de chaque</span><span>.</span></span></p> +</div> + +<p><span id="result_box" lang="fr"><span class="hps">vos options</span><br> + <br> + <span class="hps">Les trois</span> <span class="hps">principales</span> <span class="hps">options que vous</span> <span class="hps">pouvez utiliser pour</span> <span class="hps">créer votre propre boutique</span> <span class="hps">sont</span><span>:</span><br> + <br> + <span class="hps">Procédé</span> <span class="hps">d'annuaire</span><br> + <span class="hps">méthode de</span> <span class="hps">magasin</span><br> + <span class="hps">remplir</span> <span class="hps">la mise en œuvre</span> <span class="hps">du marché</span><br> + <br> + <span class="hps">Ces options sont décrites</span> <span class="hps">plus en détail</span> <span class="hps">ci-dessous.</span><br> + <br> + <span class="hps">Remarque:</span> <span class="hps">les applications</span> <span class="hps">peuvent être limités à</span> <span class="hps">l'installation</span> <span class="hps">à partir d'une</span> <span class="hps">liste des</span> <span class="hps">origines</span> <span class="hps">autorisés avec</span> <span class="hps">la</span> <span class="hps">installs_allowed_from</span> <span class="hps">bien</span> <span class="hps">manifeste</span><span>.</span> <span class="hps">Vous aurez besoin de</span> <span class="hps">confirmer que cette</span> <span class="hps">propriété n'est pas définie</span> <span class="hps">pour exclure</span> <span class="hps">l'origine de</span> <span class="hps">votre magasin</span> <span class="hps">lors de l'inscription</span> <span class="hps">applications</span><span>.</span></span></p> + +<h3 id="Directory_method">Directory method</h3> + +<p>Here you create a directory of apps served by the Firefox Marketplace, making use of the <a href="http://firefox-marketplace-api.readthedocs.org/en/latest/">Firefox Marketplace API</a> to retrieve information on the apps. You would then need to implement your own Web pages to display details of the apps and trigger their installation. With this method you can serve any app that is available on Firefox Marketplace, but you won't generate a revenue stream for paid apps.<br> + You can find an example of this method of store creation in <a href="http://thecount.paas.allizom.org/home">TheCount</a>. At the time of writing, to see the example in action click <a href="http://thecount.paas.allizom.org/listing/num_ratings/30">apps with at least 30 ratings</a> and open any of the listed apps. In the app's details page you'll see an install button directly below the title, as shown below.</p> + +<p><img alt="The installation button for an app with at least 30 ratings in TheCount, a stats and reporting website. " height="350" src="https://mdn.mozillademos.org/files/7917/TheCount_Install_Button.png" width="718"></p> + +<p>You can find the code used to implement the button in <a href="https://github.com/wfwalker/thecount">the project's Github repository</a>.</p> + +<h3 id="Store_method">Store method</h3> + +<p>Here you work independently of the Firefox Marketplace providing a list of self-published apps that are installed using {{ domxref("Apps.install") }} or {{ domxref("Apps.installPackage") }}. The self-published apps can either be hosted by you or another developer. This method limits you to apps that can be <a href="/en-US/Marketplace/Options/Self_publishing">self-published</a>, that is, you cannot serve <a href="/en-US/Marketplace/Options/Packaged_apps">Packaged Apps</a> using <a href="/en-US/Apps/Build/App_permissions">Privileged and Certified APIs</a>.</p> + +<h3 id="Full_Marketplace_implementation">Full Marketplace implementation</h3> + +<p>Here you implement the various components of Marketplace (<a href="https://github.com/mozilla/zamboni">zamboni</a> plus other components such as <a href="https://github.com/mozilla/solitude">Solitude</a> and <a href="https://github.com/mozilla/webpay">WebPay</a>, if you want to implement payments). For more information, please see the <a href="http://zamboni.readthedocs.org/en/latest/index.html">zamboni documentation</a>.</p> + +<h2 id="Useful_APIs">Useful APIs</h2> + +<p>When implementing the directory or store methods, you'll find the following APIs of use.</p> + +<h3 id="Interacting_with_Marketplace">Interacting with Marketplace</h3> + +<p>When using the directory method you'll need to access and use details of the apps available in Marketplace. The key APIs for these tasks are:</p> + +<ul> + <li>App lists — <a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/search.html#search-api"><code>GET /api/v1/apps/search/</code></a> — this API enables you to get a list of Marketplace apps based on a query string, similar to the query strings you see when searching the Web version of Marketplace.</li> + <li>App's details — <a href="http://firefox-marketplace-api.readthedocs.org/en/latest/topics/apps.html#get--api-v1-apps-app-%28int-id%29|%28string-slug%29-"><code>GET /api/v1/apps/app/</code></a> — this API enables you to get the details of an individual app, such as its author and icons.</li> +</ul> + +<p>To find more information on these APIs and others that might be useful, please see the <a href="http://firefox-marketplace-api.readthedocs.org/en/latest/">Firefox Marketplace API</a> documentation.</p> + +<h3 id="Managing_apps_on_a_device">Managing apps on a device</h3> + +<p>You'll probably be familiar with {{ domxref("Apps.install") }} or {{ domxref("Apps.installPackage") }} already, the APIs used to install Packaged Apps and Hosted Apps. These APIs are part of the {{ domxref("navigator.mozApps") }} JavaScript object, which includes several other APIs that can communicate with a Firefox OS device or browser to gather information on installed apps.</p> + +<p>For example, the <a href="/en-US/docs/Web/API/Apps.getInstalled"><code>navigator.mozApps.getInstalled()</code></a> method enables you to get a list of the apps that were installed in the current user agent by your domain. You'll not see apps installed by other domains, only the ones that you put there. You can use this method to determine whether the user's installed apps match your expectations, or to implement a "resync" feature if the user signs into your site from a new profile.</p> + +<p>For more details, please see <a href="/en-US/Apps/Developing/JavaScript_API">App Installation and Management APIs.</a></p> + +<h2 id="Other_information">Other information</h2> + +<p>If you're delivering Hosted Apps, you can easily maintain a session with the user to track preferences, proof-of-purchase, or other additional services. If you're providing services to a remotely Hosted App, you'll need to do some additional work to support a distributed authentication system.</p> + +<div id="dc_vk_code" style="display: none;"> </div> diff --git a/files/fr/mozilla/marketplace/options/index.html b/files/fr/mozilla/marketplace/options/index.html new file mode 100644 index 0000000000..43e9966338 --- /dev/null +++ b/files/fr/mozilla/marketplace/options/index.html @@ -0,0 +1,21 @@ +--- +title: Your publication options +slug: Mozilla/Marketplace/Options +tags: + - Structure only + - TopicStub +translation_of: Archive/Mozilla/Marketplace/Options/Introduction +--- +<p>Dans <a href="/en-US/Marketplace/Options/Introduction">cette section</a>, vous découvrirez :</p> + +<ul> + <li>Les formats dans lesquels vous pouvez fournir des applications Web ouvertes ‐ sous forme d'application <a href="/en-US/Marketplace/Options/Packaged_apps">packagée</a> ou <a href="/en-US/Marketplace/Options/Hosted_apps">hébergée</a> ‐ ainsi que des détails sur la <a href="/en-US/Marketplace/Options/Packaged_or_hosted_">façon de faire le choix entre ces formats</a>.</li> + <li>Comment les fonctionnalités d'<a href="/en-US/Marketplace/Options/Open_web_apps_for_android">Open Web Apps pour Android</a> et d'<a href="/en-US/Marketplace/Options/Open_web_apps_for_desktop">Open Web Apps pour Desktop</a> fournissent vos applications au appareils Android et aux PC Linux / Mac / Windows.</li> + <li>Informations sur le choix entre des périphériques avec différentes quantités de mémoire.</li> + <li>Vos options pour <a href="/en-US/Marketplace/Options/Self_publishing">publier des applications vous-même</a>, en dehors de Firefox Marketplace.</li> + <li>Comment vous pouvez <a href="/en-US/Marketplace/Options/Creating_a_store">créer votre propre Marketplace</a>.</li> +</ul> + +<div class="warning"> +<p>Le contenu de cette section est toujours en cours de développement.</p> +</div> diff --git a/files/fr/mozilla/marketplace/options/introduction/index.html b/files/fr/mozilla/marketplace/options/introduction/index.html new file mode 100644 index 0000000000..51cee4b8c5 --- /dev/null +++ b/files/fr/mozilla/marketplace/options/introduction/index.html @@ -0,0 +1,25 @@ +--- +title: Introduction — vos options de publications +slug: Mozilla/Marketplace/Options/Introduction +translation_of: Archive/Mozilla/Marketplace/Options/Introduction +--- +<div class="summary"> +<p><span id="result_box" lang="fr"><span class="hps">Le</span> <span class="hps">Marketplace de</span> <span class="hps">Firefox</span> <span class="hps">fournit</span> <span class="hps">un canal</span> <span class="hps">à travers lequel vous</span> <span class="hps">pouvez publier vos</span> <span class="hps">applications</span> <span class="hps">et</span> <span class="hps">les rendre facilement</span> <span class="hps">détectables</span> <span class="hps">par les utilisateurs</span> <span class="hps">de</span> <span class="hps">Firefox</span> <span class="hps">OS</span><span>.</span> <span class="hps">Cependant, ce n'est</span> <span class="hps">pas votre seule</span> <span class="hps">option pour rendre</span> disponibles <span class="hps">vos</span> <span class="hps">applications</span><span>.</span> Cette section vous aidera à comprendre les idées de base sur les formats utilisables pour les applications et les diverses options pour leur publication.</span></p> +</div> + +<h2 id="Vos_options_de_publications">Vos options de publications</h2> + +<dl> + <dt><a href="https://developer.mozilla.org/fr/Marketplace/Options/Packaged_apps">Application packagée</a></dt> + <dd>Choisissez votre méthode préférée de<span id="result_box" lang="fr"><span class="hps"> livraison pour vos</span> <span class="hps">applications</span> <span class="hps">-</span> </span><span lang="fr"><span class="hps">une option qui vous offre l'accès à des API privilégiées et sécurisées</span></span></dd> + <dt><a href="/en-US/Marketplace/Options/Hosted_apps">Hosted apps</a></dt> + <dd>Découvrez comment rendre vos applications disponibles à partir d'un serveur, tout en donnant aux utilisateurs les avantages d'une application installée.</dd> + <dt><a href="/en-US/Marketplace/Options/Packaged_or_hosted_">Packaged or hosted?</a></dt> + <dd><span id="result_box" lang="fr"><span class="hps">Utilisez cette liste</span> de contrôle <span class="hps">pour déterminer</span> <span class="hps">le format</span> <span class="hps">qui</span> <span class="hps">convient le mieux à</span><span class="hps"> votre application</span><span>.</span></span></dd> + <dt><a href="/fr/Marketplace/Options/Self_publishing">Auto-publication d'application</a></dt> + <dd>Dans certains cas, vous voudrez peut-être publier vos applications en dehors de Firefox Marketplace, peut-être pour les rendre disponibles aux tests ou les distribuer dans votre entreprise. Découvrez les options que vous avez et comment les mettre en œuvre.</dd> + <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Marketplace/Options/Mobile_optimized_websites">Mobile-optimized websites</a></dt> + <dd>Le Marketplace Firefox a la possibilité de répertorier les sites web optimisés pour mobile (MOW) - simplement des sites web qui fonctionnent bien dans les appareils et plates-formes mobiles - juste à côté des applications. Cet article explique ce que cette nouvelle fonctionnalité implique, comment vous pouvez l'utiliser et ce que les différentes phases de publication future mettront à disposition.</dd> +</dl> + +<p> </p> diff --git a/files/fr/mozilla/marketplace/options/open_web_apps_for_android/index.html b/files/fr/mozilla/marketplace/options/open_web_apps_for_android/index.html new file mode 100644 index 0000000000..3a37fc5c26 --- /dev/null +++ b/files/fr/mozilla/marketplace/options/open_web_apps_for_android/index.html @@ -0,0 +1,216 @@ +--- +title: Open Web Apps for Android +slug: Mozilla/Marketplace/Options/Open_web_apps_for_android +translation_of: Archive/Marketplace/Options/Open_web_apps_for_android +--- +<div class="summary"> +<p>Users of Firefox for Android install Marketplace apps as 'normal' Android apps, gaining the benefit of powerful open web features. This ability is enabled by the creation of APKs by the APK Factory. Installed apps are run by the <strong>Web Runtime for Android,</strong> which is included in Firefox for Android. By making your apps accessible to Firefox for Android users, you gain an additional distribution opportunity, expanding the potential audience for your work.</p> +</div> + +<h2 id="What_is_Open_Web_Apps_for_Android">What is Open Web Apps for Android?</h2> + +<p>Open Web Apps for Android enables free Marketplace apps to be packaged into an APK (Android installation package), which is then installed and run in the same way as any other Android app. The APK package consists of web content (in the case of packaged apps) or a pointer to web content (in the case of hosted apps). This content is then enclosed in a thin Java/Android wrapper, which provides the integration with the Android OS. Once installed on an Android device the app is executed by Web Runtime for Android, a component of Firefox for Android.</p> + +<p>These packages are created by the <a href="https://github.com/mozilla/apk-factory-service">APK Factory Service</a>, which is run as a web service by Marketplace. The APK Factory Service makes use of the <a href="https://github.com/mozilla/apk-factory-library">APK Factory Library</a> to create the actual package and the <a href="https://github.com/mozilla/apk-signer">APK Signer</a> to digitally sign the APK. This service is available to <a href="/en-US/Marketplace/Publishing/Creating_a_store">your own Marketplace</a>, should you choose to create one.</p> + +<p>You don't need any knowledge of Android development, or to take any extra development steps, to use Open Web Apps for Android: you simply select the option for distribution to Firefox Mobile or Firefox Tablet when submitting your apps to the <a href="https://marketplace.firefox.com/">Firefox Marketplace</a>.</p> + +<div class="note"> +<p><strong>Note</strong>: Open Web Apps for Android provides support for hosted apps in Firefox for Android xx or later, packaged apps are supported in Firefox for Android 29 or later. Only free apps are available for Android from the Firefox Marketplace at this time.</p> +</div> + +<p>Web Runtime for Android supports 12 APIs to access device capabilities, such as vibration, geolocation, and battery status. You can see a <a href="https://wiki.mozilla.org/WebAPI#APIs">complete list of supported APIs here</a>: APIs showing "A" under "Availability" are those APIs available on Android, with green cells indicating that the API is available in full. You can also mouseover individual cells to get tooltips containing more information.</p> + +<p>Web Runtime for Android will continue to add support for other APIs in future releases. Some of the APIs planned are:</p> + +<ul> + <li>Alarm API</li> + <li>SimplePush API</li> + <li>Web Activities</li> +</ul> + +<div class="note"> +<p><strong>Note</strong>: Android users may be using devices with higher resolutions, greater pixel densities (DPI), and larger screen sizes than those found on Firefox OS devices. Apps that haven't used responsive design may therefore provide a poor experience, and you may want to design your apps with this in mind. For more information on responsive design see the <a href="/en-US/docs/Apps/Design">Design section of the App Center</a>.</p> +</div> + +<h2 id="Using_Open_Web_Apps_for_Android_from_Firefox_Marketplace">Using Open Web Apps for Android from Firefox Marketplace</h2> + +<p>This section provides details on how you make use of Open Web Apps for Android from Firefox Marketplace, how they affect the Marketplace experience, and information on app updates.</p> + +<h3 id="Submitting_an_app">Submitting an app</h3> + +<p>When you <a href="/en-US/Marketplace/Submission/Submitting_an_app">submit an app to the Firefox Marketplace</a>, you choose the option of making your app available for Firefox Mobile or Firefox Tablet. Choosing either or both of these options will automatically deliver your app as an APK on Android devices.</p> + +<h3 id="Approving_an_app">Approving an app</h3> + +<p>When your app is reviewed, the reviewer installs your app from the reviewer section in Firefox Marketplace. When they do this from an Android device, the "review" instance of the APK Factory service is invoked to create an APK signed in Android debug mode. This version of the APK is then installed on the app reviewer's device and they complete the review process.</p> + +<p>If the app is approved, the "release" instance of the APK Factory service is invoked to generate and sign the APK with a unique APK Signing Key. The resulting signed APK is then cached for delivery when a user chooses to install the app.</p> + +<h3 id="Installing_an_app">Installing an app</h3> + +<p>When a user selects your app in the Marketplace on their Android device, installation works as follows:</p> + +<ol> + <li><a href="https://marketplace.firefox.com/">Firefox Marketplace</a> displays the app's details and <strong>Free</strong> install button as normal.</li> + <li>When the user taps <strong>Free</strong>, {{ domxref("Apps.install") }} or {{ domxref("Apps.installPackage") }} is invoked as usual (depending on whether it's a hosted or packaged app) and a call is made to the APK Factory service to request the APK.</li> + <li>The APK is downloaded to the Android device and the standard Android app installation process invoked.</li> + <li>If the user hasn't enabled the <strong>Security</strong> setting <strong>Unknown sources</strong>, Android will alert the user and give them the option to cancel the installation or open <strong>Settings</strong>.</li> + <li>Once <strong>Unknown sources</strong> is enabled, the user is shown an install confirmation dialog. The dialog lists the permissions requested by privileged apps.</li> + <li>If the user taps <strong>Install</strong> the app is installed.</li> + <li>Once the app has been installed, the user is given the option to <strong>Open</strong> the app and in Firefox Marketplace the <strong>Free</strong> button is replaced with a <strong>Launch</strong> button.</li> +</ol> + +<p>Subsequently the user will find the application in their Apps screen. In addition, the process to use and remove the app is the same as they'd expect for other Android apps. Firefox for Android provides a list of installed apps under <strong>Apps</strong> on the <strong>Tools</strong> menu as well.</p> + +<h3 id="Keeping_apps_up_to_date">Keeping apps up to date</h3> + +<p>Firefox for Android provides a mechanism installing update apps.</p> + +<p>If your app is hosted, whenever you make a change on its server, users will pick up changes the next time they run your app.</p> + +<p>For all other changes, you need to add a new version to the Firefox Marketplace:</p> + +<ul> + <li>For a hosted app, the link to the app's hosting server containing the updated manifest file.</li> + <li>For a packaged app, a zip file containing the updated app manifest and app content.</li> +</ul> + +<p>Firefox for Android makes a daily check on the version number in the app’s manifest and if it has changed silently applies the update.</p> + +<h2 id="Using_Open_Web_Apps_for_Android_from_your_own_Marketplace">Using Open Web Apps for Android from your own Marketplace</h2> + +<p>You're able to create <a href="/en-US/Marketplace/Publishing/Creating_a_store">your own Marketplace</a>. Such a Marketplace consists of either a directory of apps in Firefox Marketplace or your own hosted content (app descriptions with the main manifest of hosted apps or the mini manifest with app zip archive in the case of packaged apps).</p> + +<p>Your Marketplace will pass the URL of the manifest to be installed to {{ domxref("Apps.install") }} / {{ domxref("Apps.installPackage") }} that then invokes APK Factory, meaning you don't have to do anything to enable Open Web Apps for Android in your Marketplace. You do, however, need to ensure that your Marketplace only serves apps that include APIs supported by the Web Runtime for Android.</p> + +<h2 id="How_the_APK_Factory_works">How the APK Factory works</h2> + +<p>This section describes how the APK Factory works.</p> + +<ul> + <li>When the APK Factory is invoked, as described above, it determines whether there is a cached copy of the app's APK file. If a cached copy isn't available, APK Factory: + <ol> + <li>Requests the app's manifest file from the hosting server (the Firefox Marketplace, or wherever else the app is hosted): + <ul> + <li>The main manifest in the case of hosted apps.</li> + <li>The mini manifest in the case of packaged apps.</li> + </ul> + </li> + <li>Detects whether the app is hosted or packaged.</li> + <li>If the app is packaged, APK Factory requests the app's zip archive from the Marketplace or other hosting server.</li> + <li>Creates the APK by performing some metadata transcoding for elements such as icons and security requirements, after which it: + <ul> + <li>Wraps the hosting URL in an Android Java container for hosted apps.</li> + <li>Wraps the app's content in an Android Java container for packaged apps.</li> + </ul> + </li> + <li>Passes the APK to be signed by the secure <strong><a href="https://github.com/mozilla/apk-signer">APK Signer</a></strong> service: + <ul> + <li>"Review" APKs are signed in Android debug mode.</li> + <li>"Release" APKs are signed with an <strong>APK signing key</strong>.</li> + </ul> + </li> + <li>Caches the signed APK.</li> + </ol> + </li> + <li>Delivers the signed APK file to the device for installation.</li> +</ul> + +<p>The following diagrams offer an alternative representation of the workflow of the APK Factory:</p> + +<p style="text-align: center;"><img alt="Web Sequence diagram showing the operation of the APK factory" src="https://mdn.mozillademos.org/files/7849/APK%20factory%20operation.png" style="height: 827px; width: 749px;"></p> + +<h2 id="Package_naming_and_APK_signing_keys">Package naming and APK signing keys</h2> + +<p>On installation of an APK the Android device checks the Java package name and signature. It verifies the signature the first time an app is installed (there is no central authority it checks with). Future updates must then have the same package name and signature. If the package name and signature aren't the same, the Android device won't update the installation.</p> + +<h3 id="Package_naming">Package naming</h3> + +<p>The package name for an APK consists of the hosting site and a unique serial number, for example:</p> + +<ul> + <li>For a hosted app: org.mykzilla.p362b12c70d0556c124908a3c125d3d02:</li> + <li>For a packaged app: com.firefox.marketplace.p0604c71abc0d4091829d19be9a50453c</li> +</ul> + +<h3 id="APK_signing_keys">APK signing keys</h3> + +<p>Each APK needs to be identified by an APK signing key before it can be installed on an Android device. APK signing keys are created and owned by the <strong><a href="https://github.com/mozilla/apk-signer">APK Signer</a></strong> service. These signing keys are sensitive, and stored securely in the APK Signer.</p> + +<p>This service creates a unique key for each app, applying it to the original release and subsequent updates. The reuse of the key on updated app APKs is important, as without a match in the package name and key Android won't install an update over an earlier version of the app. If you create your own Marketplace, the APK will retain the same name and keys, so that either version will be able to update the other.</p> + +<div class="note"> +<p><strong>Note</strong>: Mozilla assumes no responsibility for the credibility of the APK signing keys. That is, the keys provide no information about the authenticity of the app or developer beyond the fact that they have been approved for release in Marketplace, if the app is hosted there. The service is not tied to Google or any other central authority.</p> +</div> + +<h2 id="FAQ">FAQ</h2> + +<p>Here are answers to some frequently asked questions about APKs for Open Web Apps for Android.</p> + +<h3 id="What_about_re-installation_of_apps_installed_as_bookmarks">What about re-installation of apps installed as bookmarks?</h3> + +<p>When a user updates to Firefox for Android version 29 or later, their bookmark-style apps will continue to work, and Firefox will prompt users to update apps to their Open Web Apps for Android version.</p> + +<h3 id="How_will_in-app_purchases_work">How will in-app purchases work?</h3> + +<p>The APK is given access to the trusted UI, <a href="/en-US/docs/Web/API/Navigator.mozPay">mozPay</a>, and all payment processes for in-app purchases, so in-app payments will function as normal.</p> + +<h3 id="How_do_I_download_a_copy_of_my_app's_APK">How do I download a copy of my app's APK?</h3> + +<p>You can download a copy of your app from the APK Factory service by retrieving a URL in the format:</p> + +<p style="margin-left: 40px;"><code>https://controller.apk.firefox.com/application.apk?manifestUrl=ESCAPED_URL_TO_MANIFEST</code></p> + +<p>where <code>ESCAPED_URL_TO_MANIFEST</code> is an escaped URL to the app's manifest or mini-manifest. That URL causes the APK Factory to return the cached copy of the APK, or create a new one if the app hasn't been submitted to Marketplace.</p> + +<h4 id="Examples">Examples</h4> + +<p>For a hosted app:</p> + +<p><code>> wget https://controller.apk.firefox.com/application.apk?manifestUrl=http%3A%2F%2Fmykzilla.org%2Fapp%2Fmanifest.webapp -O mykzilla.apk</code></p> + +<p>For a packaged app:</p> + +<p><code>> wget https://controller.apk.firefox.com/application.apk?manifestUrl=https%3A%2F%2Fmarketplace.firefox.com%2Fapp%2Fa22e0277-35bc-434d-9371-1568c75fc726%2Fmanifest.webapp -O cuttherope.apk</code><br> + </p> + +<h3 id="Can_I_generate_an_APK_manually_from_a_different_URL">Can I generate an APK manually from a different URL?</h3> + +<p>Yes, by providing the URL to any location for your manifest or mini-manifest files. However, be aware that because the APK is generated from a different URL, the package name will differ from that created when you submit the app to Firefox Marketplace, so the Firefox Marketplace version will be installed as a separate app.</p> + +<h3 id="If_I_setup_my_own_copy_of_the_APK_Factory_can_I_use_the_APKs_it_generates">If I setup my own copy of the APK Factory can I use the APKs it generates?</h3> + +<p>You can, but be aware that the signing keys will differ from those assigned to the APKs generated by Firefox Marketplace. As a result Android will refuse to install whichever version the user tries to install second. (See <a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Open_web_apps_for_android#If_I_also_have_an_Android_native_version_of_my_app.2C_can_both_be_installed_on_an_Android_device.3F">If I also have an Android native version of my app, can both be installed on an Android device?</a> for more information.)</p> + +<h3 id="Can_I_submit_an_APK_created_by_the_APK_Factory_to_Google_Play_or_other_Android_store">Can I submit an APK created by the APK Factory to Google Play or other Android store?</h3> + +<p>You can submit an APK generated by APK Factory to Google Play or an alternative Android store. However, it's your responsibility to:</p> + +<ul> + <li>Confirm that your app complies with the policies of the store you're submitting it to. Approval for distribution in Firefox Marketplace doesn't imply any approval for Google Play or another Android marketplace.</li> + <li>When you update your app you'll have to update the APK on any stores you have submitted the APK to; there is no automatic process to deliver updated APKs to Android stores.</li> +</ul> + +<h3 id="Can_I_use_my_Android_signing_keys_to_sign_the_APK_and_choose_the_package_name">Can I use my Android signing keys to sign the APK and choose the package name?</h3> + +<p>At present you cannot use your own signing keys to sign an APK generated by APK Factory or choose the package name. This is an option being considered. If this is of interest to you, join the discussion on the <a href="https://lists.mozilla.org/listinfo/dev-marketplace">dev-marketplace mailing list</a>, or the <a href="irc://irc.mozilla.org/marketplace">Marketplace IRC channel</a>.</p> + +<h3 id="If_I_also_have_an_Android_native_version_of_my_app_can_both_be_installed_on_an_Android_device">If I also have an Android native version of my app, can both be installed on an Android device?</h3> + +<p>Unless you choose to use the APK package name created by APK Factory for your native Android app, both can be installed on an Android device. If you choose to use the same package name for your native Android app (which you'll sign with your own key) Android will refuse to install whichever version the user tries to install second. This is because the package names are the same but the signing keys are different, so Android considers the apps to be the same, but from different sources. Therefore Android will refuse to update one app with the other, since that would allow one developer to override another's app. The user will end up with the first version installed on their device.</p> + +<div class="warning"> +<p>Because of the issues it may cause for users, it's highly recommended that you don't reuse the package name the APK Factory assigns to your app for a native Android version of your app.</p> +</div> + +<h3 id="How_can_I_testdebug_APKs">How can I test/debug APKs?</h3> + +<p>We're working on a toolchain for testing and debugging an app on an Android device. The initial version will include a Node-based command-line tool for generating an APK you can install on the device and debug using Firefox's Remote Developer Tools.</p> + +<h2 id="Also_see">Also see</h2> + +<ul> + <li>Hacks blog: <a href="https://hacks.mozilla.org/2014/06/firefox-os-apps-run-on-android/">Firefox OS Apps run on Android</a></li> + <li>Hack blog: <a href="https://hacks.mozilla.org/2014/06/testing-your-native-android-app/" rel="bookmark" title="Permanent link to “Testing Your Native Android App”">Testing Your Native Android App</a></li> +</ul> diff --git a/files/fr/mozilla/marketplace/options/packaged_apps/index.html b/files/fr/mozilla/marketplace/options/packaged_apps/index.html new file mode 100644 index 0000000000..465763857c --- /dev/null +++ b/files/fr/mozilla/marketplace/options/packaged_apps/index.html @@ -0,0 +1,92 @@ +--- +title: Application packagée +slug: Mozilla/Marketplace/Options/Packaged_apps +translation_of: Archive/Mozilla/Marketplace/Options/Packaged_apps +--- +<div class="summary"> +<p><span class="seoSummary">Une application packagée est un .zip contenant toutes les ressources nécessaires (HMTL, CSS, JavaScript, manifest, etc.) au format Open Web APP plutôt que laisser les ressources sur un serveur web. Cet article contient une introduction aux applications packagée et des liens vers tout ce dont vous avez besoin de connaitre en tant que developpeur.</span></p> +</div> + +<p>Une application packagée est un fichier .zip qui contient tous les fichiers nécessaires au bon fonctionnement des Open Web App ainsi que le <a href="/en-US/Apps/Build/Manifest">manifeste</a> au dossier racine du zip. Le manifeste fournis les détails de l'application tels que la description, l'icône qui identifie l'application,... Le package est alors utilisé pour installer l'application dans Firefox OS, Firefox pour android et Firefox pour ordinateur. Une fois installée, l'app fonctionne sur l'appareil de l'utilisateur, mais est toujours capable d'accéder a des ressources externes, comme une base de données externe.</p> + +<p>Il y a trois types d'<a name="#types_of_packaged_apps">application packagée</a> : les applications web, les applications privilégiées et les applications certifiées. Alors que les applications web sont distribuables sans contraintes, les applications privilégiées et certifiées sont numériquement signées pour permettre l'utilisation de <a href="/en-US/Apps/Build/App_permissions">privilèges et d'API certifiées</a>. Les applications privilégiées sont signées durant le processus de revue des applications Marketplace, ce qui certifie qu'elles sont signées par des constructeurs d'appareils ou des opérateurs.</p> + +<p>En plus de ces possibilitées, les applications packagées permettent un temps de démarrage plus court car toutes les ressources sont déjà téléchargées car installées. Cette fonctionalité fait des applications packagées l'approche recomandée pour fournir des Open Web App aux téléphones Firefox OS et Android et pour Firefox pour ordinateur.</p> + +<div class="note"> +<p><strong>Note :</strong> Actuellement, Firefox Marketplace supporte les applications web et privilégiées. De plus, Firefox Marketplace supporte les applications payantes pour Firefox OS seulement et les applications gratuites pour Firefox pour Android et Firefox pour ordinateur. Le support des applications payantes pour toutes le plateformes est en développement.</p> +</div> + +<h2 id="Type_d'applications_packagées"><a name="types_of_packaged_apps">Type d'applications packagées</a></h2> + +<p>Il y a trois types d'application packagée : les applications web, les applications privilégiées et les applications certifiées. Chaque type d'application packagée correspond a un niveau du modèle de <a href="/en-US/docs/Mozilla_Web_Services_Security_Model#App_Security">sécurité des applications</a> implémenté dans Firefox OS. Cette section fourni des informations sur chaque type d'application packagée.</p> + +<h3 id="Application_Web">Application Web</h3> + +<p>Une application web est celle qui n'utilise pas de privilège ou de certification. Quand elle est soumise au Marketplace, elle est signée, mais cela ne permet pas d'utiliser les privilèges ou les certifications. Ces applications ne sont pas sujettes aux <a href="/en-US/Apps/CSP">politiques de sécurité des contenus</a> nécessaires aux applications certifiées et privilégiées.</p> + +<p>Ce type d'application packagée ne requière pas le champ <code>field</code> dans son fichier <code>manifest.webapp</code> car la valeur par défaut (<code>web</code>) est correcte.</p> + +<p>Les applications web peuvent être <a href="/en-US/Marketplace/Options/Self_publishing">auto-publiées</a> ou distribuées <em>via</em> le Firefox Marketplace. Elles peuvent aussi être fournies aux utilisateurs via le mécanisme d'<a href="/en-US/Marketplace/Options/Hosted_apps">application hébergée</a>.</p> + +<h3 id="Application_privilégiée">Application privilégiée</h3> + +<p>Une application privilégiée peut-être considérée comme l'équivalent des applications natives sur des plateformes comme iOS et Android. Durant sa soumission au Firefox Marketplace, ce type d'application passe par un processus spécial. En effet, cela donne au utilisateurs de ces applications l'assurance qu'elles ont été soigneusement revues pour de potentiels problèmes de sécurité, de vie privée ou de fonctionnement.</p> + +<p>Pour spécifier qu'une application est privilégiée, ajoutez le <a href="/en-US/Apps/Build/Manifest">type</a> <code>field</code> dans le <code>manifest.webapp</code> et passez-le à <code>privileged</code>. Chaque API privilégiée que votre application nécessite doit être spécifiée dans le champ <code>permissions</code> du manifeste.</p> + +<p>Vous devez mettre les <a href="/en-US/Apps/CSP">CSP</a> suivantes dans le manifeste d'une application privilégiée :</p> + +<pre class="brush: js">"default-src *; script-src 'self'; object-src 'none'; style-src 'self' 'unsafe-inline'"</pre> + +<p>Ces applications ne peuvent être distribuées que <code>via</code> le Firefox Marketplace.</p> + +<h3 id="Application_certifiée">Application certifiée</h3> + +<div class="geckoVersionNote"> +<p>Les applications certifiées ne sont généralement pas disponibles pour les développeurs tiers et ne sont pas distribuées <em>via</em> le Firefox Marketplace. Le but sur le long terme est que toutes les API nécessitant le niveau certifié ne nécessitent plus que le niveau privilégié. Si vous voulez voir une API particulière devenir disponible, venez nous en parler sur la mailling list <a href="https://lists.mozilla.org/listinfo/dev-webapps">dev-webapps</a>.</p> +</div> + +<p>Une application certifiée permet l'utilisation d'API certifiées, qui permettent d'accéder aux fonctions critiques du système. Contrairement aux applications privilégiées, les permissions d'API pour les applications certifiées sont implicites et donc toutes activées par défaut sans l'approbation explicite de l'utilisateur. Une application certifiée doit être approuvée pour un constructeur ou un opérateur.</p> + +<p>Pour spécifiée qu'elle est certifiée, l'application doit contenir le champ <code>field</code> avec la valeur <code>certified</code> dans le <code>manifest.webapp</code>. Chaque API privilégiée que votre application nécessite doit être spécifiée dans le champs <code>permissions</code> du manifeste.</p> + +<p>Vous devez mettre les <a href="/en-US/Apps/CSP">CSP</a> suivantes dans le manifeste d'une application privilégiées :</p> + +<pre class="brush: js">"default-src *; script-src 'self'; object-src 'none'; style-src 'self'"</pre> + +<p>Ceci a pour effet d'implémenter des règles plus strictes pour les CSP par rapport aux applications certifiées. Si vous voulez comprendre les raisons derrières ces motivations, lisez la <a href="https://wiki.mozilla.org/Apps/Security#Default_CSP_policy">politique des CSP par défaut</a> et le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=768029">bug 768029</a>.</p> + +<p>Les applications certifiées sont pré-chargées dans les appareils par les constructeurs et les opérateurs.</p> + +<h2 id="Tester_des_applications_packagées">Tester des applications packagées</h2> + +<p>Pour installer des applications dans le simulateur Firefox OS ou directement dans un téléphone, voyez le guide d'utilisation du <a href="/en-US/Firefox_OS/Using_the_App_Manager">manager d'application</a>. Vous pouvez aussi installer sur un appareil via un serveur web en suivant le guide pour <a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">publier des applications</a> par vous-mêmes. N'oubliez pas que si vous déployez par vous-même, seules les applications web pourront être installées.</p> + +<h2 id="Publiez_votre_application_packagée">Publiez votre application packagée</h2> + +<p>Vous avez deux options pour publier vos applications : le Firefox Marketplace ou par vous-même.</p> + +<h3 id="Publier_sur_le_Firefox_Marketplace">Publier sur le Firefox Marketplace</h3> + +<p>Le processus pour publier une application packagée est décrit dans la section parlant de la <a href="/en-US/Marketplace/Publishing">publication d'application</a>.</p> + +<p>Quand vous soumettez votre application, le fichier zip est stockée sur le Firefox Marketplace et celui-ci génère un nouveau manifest appellé <strong>mini-manifeste</strong>, basé sur votre manifeste. Quand un utilisateur installe votre application, le mini-manifeste est passé à la fonction <a href="/en-US/docs/Web/API/Apps.installPackage"><code>Apps.installPackage()</code></a> qui va l'installer. Ce mini-manifeste est utilisé seulement pour des questions d'installation et de mise à jour et n'est pas utilisé par votre application pour fonctionner.</p> + +<h3 id="La_publier_vous-même">La publier vous-même</h3> + +<p>Il est possible de publier vous-même votre application en dehors du Firefox Marketplace via votre propre serveur web. Vous trouverez des détails sur la page dédiée à <a href="https://developer.mozilla.org/en-US/Marketplace/Options/Self_publishing">ce sujet</a>.</p> + +<h2 id="Mettre_a_jour_votre_application">Mettre a jour votre application</h2> + +<p>Pour des informations sur la mise à jour d'application, voyez la page dédiée à <a href="/en-US/Marketplace/Publishing/Updating_apps">ce sujet</a>.</p> + +<h2 id="Plus_d'information">Plus d'information</h2> + +<ul> + <li><a href="/en-US/Firefox_OS/Security/Security_model">Firefox OS security Overview</a></li> + <li><a href="/en-US/Firefox_OS/Security/Application_security">Application Security</a></li> + <li><a href="https://github.com/robnyman/Firefox-OS-Boilerplate-App" title="https://github.com/robnyman/Firefox-OS-Boilerplate-App">Firefox OS Boilerplate App</a></li> +</ul> + +<p> </p> diff --git a/files/fr/mozilla/marketplace/options/self_publishing/index.html b/files/fr/mozilla/marketplace/options/self_publishing/index.html new file mode 100644 index 0000000000..cc1b852940 --- /dev/null +++ b/files/fr/mozilla/marketplace/options/self_publishing/index.html @@ -0,0 +1,144 @@ +--- +title: Auto-publication d'application +slug: Mozilla/Marketplace/Options/Self_publishing +translation_of: Archive/Mozilla/Marketplace/Options/Self_publishing +--- +<div class="summary"> + <p><span class="seoSummary">Il y a des circonstances où il n'est pas souhaitable de rendre une application disponible sur le Firefox Marketplace. C'est le cas, lorsque l'on veut distribuer l'application uniquement au membre d'une organisation ou bien lorsque l'application est encore en phase de test privé. Cette page explique comment publier sa propre application en dehors du Marketplace.</span></p> +</div> +<p>Les Open Web Apps sont installables sous Firefox OS, Firefox pour android et Firefox pour desktop en utilisant {{ domxref("Apps.install") }} ou {{ domxref("Apps.installPackage") }}. Dans les deux cas, ces APIs envoient l'URL du manifeste décrivant l'application à installer. Ainsi afin de publier soi-même son application, les pré-requis minimaux sont:</p> +<ol> + <li>Un serveur où le manifest de l'application est accessible.</li> + <li>Un serveur où l'application est accessible pour les applications hébergées et pour les applications empaquetées le fichier ZIP contenant l'application.</li> + <li>Un code sur un site web appelant {{ domxref("Apps.install") }} ou {{ domxref("Apps.installPackage") }} selon la situation.</li> +</ol> +<h2 id="Limitations">Limitations</h2> +<p>Avant de publier vous-même votre Open Web Apps, vous devriez garder en mémoires les limitations suivantes:</p> +<ul> + <li>Les applications auto-publiées ne peuvent pas avoir accés aux <a href="/fr/Apps/Build/App_permissions">APIs privilégiées</a>. Pour utiliser ces APIs, l'application doit être une application empaquetée et avoir son fichier ZIP signé en utilisant le systéme de soumission du Firefox Marketplace.</li> + <li> L'application ne peut pas utiliser les achats intégrés du Firefox MarketPlace.</li> + <li>Vous devrez faire connaitre votre application vous-même car elle ne sera pas visible sur le Firefox marketplace.</li> +</ul> +<h2 id="Auto-publication_d'applications_empaquetées">Auto-publication d'applications empaquetées</h2> +<p>Vous pouvez auto-publier votre application empaquetée en hébergeant son fichier ZIP ainsi qu'un mini-manifeste associé sur un serveur. Le mini-manifeste doit être dans le même dossier que le fichier ZIP car il permet d'identifier l'application lors de l'installation. Une fois le mini-manifeste créé, il ne reste plus qu'à créer un script invoquant {{ domxref("Apps.installPackage") }} avec l'url du mini-manifeste pour installer l'application. Voyons maintenant en détails les différentes étapes:</p> +<ol> + <li> + <p>Empaquetez le contenu de votre application dans une archive ZIP et donnez lui le nom <code>package.zip</code>. L'archive doit contenir toutes les ressources de l'application ainsi que que le <a href="/fr/Apps/Manifeste" title="Manifest documentation">manifeste</a> principal.</p> + <div class="warning"> + <p>Attention: Le manifeste doit être à la racine de l'archive.</p> + </div> + </li> + <li>Créez un fichier appelé <code>manifest.webapp</code> et ajoutez le contenu ci-dessous. Ce fichier est connu sous le nom de mini-manifeste, car il s'agit d'une version simplifiée du fichier manifeste contenu dans l'archive de l'application. Il est utilisé par {{ domxref("Apps.installPackage") }} pour entreprendre l'installation de l'application. Pour plus de détails, référez-vous à la documentation sur les <a href="#Champs du mini-manifeste">champs du mini-manifeste</a> ci-dessous. + <pre class="brush: js">{ + "name": "Le nom de mon application", + "package_path" : "<code class="language-js"><span class="token string"><a class="</span>LinkyMobile<span class="token operator">-</span>ext<span class="token string">" href="</span>http<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>my<span class="token operator">-</span>server<span class="token punctuation">.</span>com<span class="token operator">/</span>my<span class="token operator">-</span>app<span class="token operator">-</span>directory<span class="token operator">/</span>my<span class="token operator">-</span>app<span class="token punctuation">.</span>zip<span class="token string">" title="</span>Linkification<span class="token punctuation">:</span> http<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>my<span class="token operator">-</span>server<span class="token punctuation">.</span>com<span class="token operator">/</span>my<span class="token operator">-</span>app<span class="token operator">-</span>directory<span class="token operator">/</span>my<span class="token operator">-</span>app<span class="token punctuation">.</span>zip<span class="token string">">http://my-server.com/my-app-directory/package.zip</a></span></code>", + "version": "1", + "developer": { + "name": "A. Developpeur", + "url": "<code class="language-js"><span class="token string"><a class="</span>LinkyMobile<span class="token operator">-</span>ext<span class="token string">" href="</span>http<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>my<span class="token operator">-</span>server<span class="token punctuation">.</span>com<span class="token string">" title="</span>Linkification<span class="token punctuation">:</span> http<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>my<span class="token operator">-</span>server<span class="token punctuation">.</span>com<span class="token string">">http://my-server.com</a></span></code>" + } +}</pre> + </li> + <li>Créez le script qui installera l'application. Pour cela, l'exemple ci-dessous utilise une simple page HTML nommée<code> index.html</code> , mais vous pouvez invoquer le script dans n'importe qu'elle méthode de votre site web. Le javaScript de cette page appelle l'API d'installation d'application empaquetée ({{ domxref("Apps.installPackage") }}) et inclut des notifications indiquant si l'installation a réussi ou non. + <pre class="brush: html"><html> + <body> + <p>Page d'installation de l'application empaquetée</p> + <script> + // Cette URL doit être une URL compléte + var manifestUrl = '<code class="language-html"><span class="token script"><span class="token string"><a class="LinkyMobile-ext" href="http://my-server.com/my-app-directory/package.manifest" title="Linkification: http://my-server.com/my-app-directory/package.manifest">http://my-server.com/my-app-directory/manifest.webapp</a></span></span></code>'; + var req = navigator.mozApps.installPackage(manifestUrl); + req.onsuccess = function() { + alert(this.result.origin); + }; + req.onerror = function() { + alert(this.error.name); + }; + </script> + </body> +</html></pre> + </li> + <li>Copiez les fichiers <code>package.zip</code>, <code>package.manifest</code>, et <code>index.html</code> sur votre serveur dans le dossier choisi (<code>my-app-directory</code> dans cet exemple).</li> + <li>Maintenant vous pouvez installer l'application sur un appareil compatible. Ouvrez le fichier <code>index.html</code> (dans cet exemple le chemin de ce fichier est <code> <a class="LinkyMobile-ext" href="http://my-server.com/my-app-directory/package.manifest" title="Linkification: http://my-server.com/my-app-directory/package.manifest">http://mon-serveur.com/App-directory/index.html</a></code>) et vous aurez une fenêtre demandant une confirmation avant d'installer l'application. Une fois l'installation terminée, vous aurez une indication sur le résultat de l'installation.</li> +</ol> +<div class="note"> + <p>Astuce: Vous pouvez héberger localement une application empaquetée et le tester sur un appareil. Le serveur et l'appareil doivent pouvoir communiquer sur le réseau local. N'oubliez pas d'indiquer le numéro port si vous n'utilisez pas le port standard, par exemple: <code><a class="LinkyMobile-ext" href="http://10.10.12.1:8080/package.zip" title="Linkification: http://10.10.12.1:8080/package.zip">http://10.10.12.1:8080/package.zip</a></code>.</p> +</div> +<h3 id="Champs_du_mini-manifeste"><a name="Champs du mini-manifeste">Champs du mini-manifeste</a></h3> +<p>Dans le cas d'auto-publication, il est nécessaire de créer un mini-manifeste. Si l'application est est publiée sur le Firefox Marketplace, le mini-manifeste est généré automatiquement à partir du <a href="/fr/Apps/Build/Manifest">manifeste</a> de l'application.</p> +<p>Le meilleur moyen de créer le mini-manifeste est de copier le manifeste de l'application et de le modifer de maniére apropriée. Ainsi les champs<strong> <code>name</code>, <code>version</code>, <code>developer</code> et <code>locales</code> fields seront exactement les mêmes dans les deux manifestes</strong>. Il ne vous reste plus qu'à ajouter les champs <code>package_path</code>, <code>release_notes</code> et <code>size</code>:</p> +<dl> + <dt> + <code>package_path</code> (requis)</dt> + <dd> + Le chemin absolu (URL compléte: <code> <a class="LinkyMobile-ext" href="http://my-server.com/my-app-directory/package.manifest" title="Linkification: http://my-server.com/my-app-directory/package.manifest">http://mon-serveur.com/App-directory/manifest.webapp</a></code>) vers l'archive de l'application.</dd> + <dt> + <code>release_notes</code> (optionel)</dt> + <dd> + Notes de version de l'application. Sur le Firefox Marketplace cette information est fournie lors du processus de soumission.</dd> +</dl> +<dl> + <dt> + <code>size</code> (optionel)</dt> + <dd> + La taille de l'archive en octets. Cette information est utilisée par {{ domxref("Apps.installPackage") }} pour fournir une barre de progression lors de l'installation.</dd> +</dl> +<p>Voici un exemple d'un mini-manifeste:</p> +<pre class="brush: js">{ + "name": "My app", + "package_path": "<code class="language-js"><span class="token string"><a class="</span>LinkyMobile<span class="token operator">-</span>ext<span class="token string">" href="</span>http<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>thisdomaindoesnotexist<span class="token punctuation">.</span>org<span class="token operator">/</span>myapp<span class="token punctuation">.</span>zip<span class="token string">" title="</span>Linkification<span class="token punctuation">:</span> http<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>thisdomaindoesnotexist<span class="token punctuation">.</span>org<span class="token operator">/</span>myapp<span class="token punctuation">.</span>zip<span class="token string">">http://thisdomaindoesnotexist.org/myapp.zip</a></span></code>", + "version": "1.0", + "size": 172496, + "release_notes": "Première publication", + "developer": { + "name": "Dupont Michel", + "url": "<code class="language-js"><span class="token string"><a class="</span>LinkyMobile<span class="token operator">-</span>ext<span class="token string">" href="</span>http<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>thisdomaindoesnotexist<span class="token punctuation">.</span>org<span class="token operator">/</span><span class="token string">" title="</span>Linkification<span class="token punctuation">:</span> http<span class="token punctuation">:</span><span class="token operator">/</span><span class="token operator">/</span>thisdomaindoesnotexist<span class="token punctuation">.</span>org<span class="token operator">/</span><span class="token string">">http://thisdomaindoesnotexist.org/</a></span></code>" + }, + "locales": { + "fr-FR": { + "name": "Mon application" + }, + "se-SE": { + "name": "Min balla app" + } + }, + "icons": { + "16": "/icons/16.png", + "32": "/icons/32.png", + "256": "/icons/256.png" + } +} +</pre> +<p>Les autres champs de cet exemple sont:</p> +<dl> + <dt> + <code>name</code> (requis)</dt> + <dd> + Le nom de l'application. La longueur maximale est de 128 caractères.</dd> + <dt> + <code>version</code> (optionel)</dt> + <dd> + Le numéro de version de cette application.</dd> + <dt> + <code>developer</code> (optionel)</dt> + <dd> + Information sur le développeur, contenant les champs <code>name</code> (nom) et <code>url</code> (adresse). Les informations saisies doivent correspondre avec celles du fichier manifest dans l'archive ZIP.</dd> + <dt> + <code>locales</code> (optionel)</dt> + <dd> + Information sur le langage, au format <code>xx-YY</code>.</dd> + <dt> + <code>icons</code> (optionel)</dt> + <dd> + Les icones utilisés par cette application.</dd> +</dl> +<p>Les autres champs de l'exemple proviennent du manifeste de l'application voir la <a href="/fr/Apps/Build/Manifest" title="Manifest documentation">page associée</a> pour plus d'information.</p> +<h2 id="Auto-publication_d'application_hébergée">Auto-publication d'application hébergée</h2> +<p>L'auto-publication d'applications hébergé est similaire à celle des applications empaquetées. Il faut toujours créer un manifeste pour l'application voir la <a href="/fr/Apps/Build/Manifest" title="Manifest documentation">page associée</a>. Le code pour installer l'application hébergé est le même que les applications hébergées. La seule différence est que le manifeste peut utiliser des URLs relatives</p> +<h2 id="Voir_aussi">Voir aussi</h2> +<ul> + <li><a href="/fr/Apps/Build/JavaScript_API">Installation d'application et gestion des APIs</a></li> + <li>{{ domxref("Apps.install") }}</li> + <li>{{ domxref("Apps.installPackage") }}</li> + <li><a href="/fr/Apps/Build/Manifest" title="Manifest documentation">Manifeste de l'application</a></li> + <li><a href="/fr/Apps/Build/App_permissions">Permissions d'application</a></li> +</ul> diff --git a/files/fr/mozilla/marketplace/publication/index.html b/files/fr/mozilla/marketplace/publication/index.html new file mode 100644 index 0000000000..f9e798d4d7 --- /dev/null +++ b/files/fr/mozilla/marketplace/publication/index.html @@ -0,0 +1,9 @@ +--- +title: Publication +slug: Mozilla/Marketplace/Publication +tags: + - Structure seule + - 'l10n:priority' +translation_of: Archive/Mozilla/Marketplace/Publishing/Introduction +--- +<p>REDIRECTION <a class="redirect" href="/en-US/Marketplace/Publishing/Introduction">Introduction — App Publishing [en-US]</a> (<em>Introduction - publication d'applications</em>)</p> diff --git a/files/fr/mozilla/marketplace/publication/marketplace_critere_revue/index.html b/files/fr/mozilla/marketplace/publication/marketplace_critere_revue/index.html new file mode 100644 index 0000000000..ff2a0a5e2c --- /dev/null +++ b/files/fr/mozilla/marketplace/publication/marketplace_critere_revue/index.html @@ -0,0 +1,110 @@ +--- +title: Critères d'évaluation du Marketplace +slug: Mozilla/Marketplace/Publication/Marketplace_critere_revue +translation_of: Archive/Mozilla/Marketplace/Publishing/Marketplace_review_criteria +--- +<div class="summary"> +<p>Cet article décrit les différents prérequis qu'une application doit satisfaire avant de pouvoir être publiée par le Firefox Marketplace. Ces critères sont pensés pour répondre aux besoins des développeurs d'applications du Firefox Marketplace autant qu'à ceux de leurs utilisateurs. Les développeurs attendent des critères équitables, universels et réalistes auxquels ils peuvent se fier pour concrétiser leurs idées. D'un autre côté, les utilisateurs veulent être assurés que les applications soient sûres, fonctionnelles et fassent bien ce qu'elles sont censées faire. Les prérequis listés ci-dessous servent à trouver un équilibre délicat entre ces différents besoins.</p> +</div> + +<p>D'après Mozilla, les modalités d'une évaluation d'application sont :</p> + +<ul> + <li>Les critères doient être appliqués de manière équitable, juste et cohérente. Le processus d'évaluation d'application ne doit pas être un obstacle mais bien un point de contact qui fournit des commentaires permettant d'aider les développeurs à aboutir.</li> + <li>Les évaluateurs n'ont pas pour vocation d'être une équipe de contrôle de qualité ! Durant le processus d'évaluation, quelqu'un regardera le manifeste de l'application et passera quelques minutes à l'utiliser comme un utilisateur lambda.</li> + <li>Si l'application échoue, le développeur recevra une explication claire sur les problémes rencontrés ainsi que la maniére de les reproduire. Si possible, l'évaluateur indiquera au développeur la bonne direction par la fourniture de liens vers les documents pertinents ou de recommandations sur les changements nécessaires.</li> + <li>Les évaluateurs ne jugent pas l'apparence d'une application, mais seulement son fonctionnement. Par exemple, une application avec un paragraphe en texte rouge écrit sur fond orange ne sera pas rejetée parce qu'elle est hideuse mais pourra l'être si le paragraphe est illisible.</li> + <li>Nous laissons toujours le bénéfice du doute aux développeurs. Si nous hésitons à refuser une application, des évaluateurs poseront toujours des questions <em>avant</em> de la rejeter. Les applications ne sont pas (sciemment) refusées pour des problémes de compatibilité avec une platefoirme (qui ne sont pas contrôlables par les développeurs) ; cependant nous pouvons différer notre approbation si nous ne parvenons pas à faire fonctionner l'application.</li> +</ul> + +<h2 id="Sécurité">Sécurité</h2> + +<p>Tous les détails de l'architecture de sécurité des applications sont disponibles ici : <a href="https://wiki.mozilla.org/Apps/Security">https://wiki.mozilla.org/Apps/Security</a></p> + +<ul> + <li>Le manifeste d'application doit être disponible à la racine de l'application.</li> + <li>Le manifeste d'application doit contenir l'en-tête <code>Content-Type</code> de <code>application/x-web-app-manifest+json</code>.</li> + <li>Les applications ne doivent pas utiliser de redirection ou d'"iframes" pour charger le contenu que le développeur n'est pas autorisé à utiliser.</li> + <li>Les permissions requises doivent être spécifiées dans le manifeste de l'application, avec la description des raisons pour lesquelles ces autorisations sont nécessaires.</li> + <li>Les applications de <a href="https://developer.mozilla.org/fr/Apps/Manifeste#type">type </a><code>privileged</code> recevront des vérifications supplémentaires, incluant notamment un contrôle du code, pour vérifier l'absence d'activité malveillante et de perte de données utilisateur rendues possibles par les APIs<code> privileged.</code></li> + <li>La politique de sécurité du contenu (<a href="https://developer.mozilla.org/en-US/docs/Web/Security/CSP/Introducing_Content_Security_Policy">CSP</a>) définit, dans le manifeste d'application, ce que le code source de l'application peut faire. La valeur par défaut, si elle n'est pas spécifiée, pour les applications non privilégiées est la même que pour n'importe quel site Web ; les applications de <a href="https://developer.mozilla.org/fr/Apps/Manifeste#type">type </a><code>privileged</code> doivent répondre à une CSP plus <a href="https://developer.mozilla.org/en-US/Marketplace/Options/Packaged_apps#Privileged_app">restrictive</a>. Le rapport de validation créé à la soumission d'une application sur le Firefox Marketplace indiquera les violations potentielles de la CSP dans votre application - méfiez-vous malgré tout des faux positifs et des demandes de certains modules de bibliothèques tierces que vous n'utilisez pas.</li> +</ul> + +<h2 id="Confidentialité">Confidentialité</h2> + +<p>Le développeur devra fournir un lien vers la politique de confidentialité utilisée pour son application lors de sa soumission. Il n'y a, en revanche, pas de restriction concernant le format ou le contenu de cette politique de confidentialité. N'hésitez-pas à utiliser notre <a href="https://github.com/flamsmark/privacy-policy-template">modèle de politique de confidentialité</a>. Regardez également nos<a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Privacy_policies"> directives sur la politique de confidentialité</a>.</p> + +<h2 id="Contenu">Contenu</h2> + +<ul> + <li>Toutes les applications qui enfreignent nos <a href="#Directives_sur_le_contenu">directives de contenu</a>, spécifiées ci-après, ne seront pas autorisées. Si vous pensez être dans une situation limite, n'hésitez pas à demander des explications à l'équipe d'évaluation, et ce, même si l'application n'est pas encore prête pour une soumission. Nous voulons vous aider à rester sur la bonne voie, <span id="result_box" lang="fr"><span class="hps">plutôt que</span> <span class="hps">d'investir</span> <span class="hps">du temps de développement</span> <span class="hps">dans un contenu</span> <span class="hps">qui sera</span> <span class="hps">rejeté</span><span>.</span></span></li> + <li><span id="result_box" lang="fr"><span class="hps">A partir de janvier</span> <span class="hps">2014,</span> <span class="hps">toutes les applications</span> <span class="hps">doivent recevoir</span> <span class="hps">une</span> <span class="hps">note </span>de la part de l'International Age Rating Coalition (IARC)<span>.</span> <span class="hps">Pour obtenir cette</span> <span class="hps">note,</span> <span class="hps">nous</span> <span class="hps">vous dirigeons vers</span> <span class="hps">un bref questionnaire</span> <span class="hps">au cours du processus</span> <span class="hps">de soumission</span><span>,</span> <span class="hps">et vous recevrez immédiatement la note</span><span>.</span> <span class="hps">Des informations supplémentaires sur</span> <span class="hps">le processus</span> <span class="hps">d'évaluation</span> sont <span class="hps">disponibles</span> <a href="https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Rating_Your_Content"><span class="hps">ici</span></a><span>.</span> </span></li> + <li><span id="result_box" lang="fr"><span class="hps">Les captures d'écran</span> <span class="hps">et</span> <span class="hps">descriptions</span> <span class="hps">soumises sur le Firefox Marketplace </span><span class="hps">doivent</span> <span class="hps">représenter </span><span class="hps">l'application</span><span> avec précision.</span> <span class="hps">Vous</span> <span class="hps">pouvez inclure</span> <span class="hps">1 ou 2</span> <span class="hps">images</span> vendeuses, <span class="hps">qui prouvent </span><span class="hps">la compatibilité</span><span>,</span> <span class="hps">comparent les caractéristiques</span><span>,</span> <span class="hps">ou de manière générale, </span><span class="hps">suscitent l'intérêt</span><span>,</span> <span class="hps">mais</span> <span class="hps">il doit aussi y avoir</span> <span class="hps">au moins une</span> capture d'écran <span class="hps">de l'application</span> <span class="hps">en fonctionnement</span><span>, pour</span><span class="hps"> que les utilisateurs</span> puissent<span class="hps"> prévisualiser</span> <span class="hps">ce qu'ils</span> vont <span class="hps">réellement</span> <span class="hps">obtenir</span><span>.</span> <span class="hps">Si</span> <span class="hps">l'une de vos</span> <span class="hps">captures d'écran</span> <span class="hps">montre</span> un écran de démarrage ou <span class="hps">de lancement</span><span>, vous</span> <span class="hps">devez également inclure</span> <span class="hps">une capture d'écran</span> <span class="hps">de la partie fonctionnelle</span> <span class="hps">de l'application.</span></span></li> + <li><span lang="fr"><span class="hps">Dans le</span> <span class="hps">manifeste de l'application</span><span>,</span> <span class="hps">les clés </span><a href="https://developer.mozilla.org/fr/Apps/Manifeste#locales"><code>locale</code> </a><span class="hps">doivent correspondre aux</span> <span class="hps">localisations</span> <span class="hps">que votre application</span> <span class="hps">prend en charge.</span> <span class="hps">En spécifiant </span><span class="hps">une clé <code>locale </code></span><span class="hps">en polonais</span><span>, les utilisateurs</span> <span class="hps">s'attendent à ce que</span> <span class="hps">votre application</span> <span class="hps">soit disponible</span> <span class="hps">dans cette langue</span><span>.</span></span></li> + <li>L'icône de l'application doit suivre le <a href="https://www.mozilla.org/en-US/styleguide/products/firefox-os/icons/">Firefox OS app icons style guide</a>. Seule une icône 128x128 est obligatoire, mais nous vous recommandons également une icône 512x512 (pour plus de détails, voir <a href="https://developer.mozilla.org/en-US/Apps/Build/Icon_implementation_for_apps#Firefox_OS">Icon implementation for apps</a>.) À noter, ces icônes peuvent être rondes, carrées aux angles arrondis ou carrées, selon le guide de style.</li> +</ul> + +<h3 id="Règles_de_contenu">Règles de contenu</h3> + +<p><span id="result_box" lang="fr"><span class="hps">Cette liste</span> <span class="hps">décrit les types</span> <span class="hps">de contenu qui</span> <span class="hps">ne sont pas appropriés</span> sur le Firefox Marketplace<span>.</span> <span class="hps">Cette liste</span> <span class="hps">est</span> <span class="hps">indicative, non</span> <span class="hps">définitive</span><span>,</span> <span class="hps">et</span> <span class="hps">peut donc être</span> <span class="hps">mise à jour</span><span>.</span> </span><span lang="fr">Si une application est jugée contraire à ces règles de contenu, Mozilla a le droit de retirer immédiatement l'application du Marketplace Firefox.</span></p> + +<ul> + <li><span id="result_box" lang="fr"><span class="hps">Pas de matériaux</span> <span class="hps">pornographiques</span> <span class="hps">obscènes</span><span>,</span> <span class="hps">ou de représentations</span> <span class="hps">graphiques</span> <span class="hps">de sexualité</span> <span class="hps">ou de violence</span><span>.</span></span></li> + <li><span lang="fr"><span class="hps">Pas de contenu violant</span> <span class="hps">les droits de quelqu'un, y compris la propriété intellectuelle ou d'autres droits de propriété, ou les droits de confidentialité ou de publicité.</span></span></li> + <li><span lang="fr"><span class="hps">Pas de contenu</span> <span class="hps">visant à </span><span class="hps">nuire</span> à <span class="hps">Mozilla</span> ou à ses <span class="hps">utilisateurs</span> <span class="atn hps">(</span><span>tels que</span> du <span class="hps">code malveillant</span><span>, des virus</span><span>,</span> des <span class="hps">logiciels espions...</span><span>)</span><span>.</span></span></li> + <li><span lang="fr"><span class="hps">Pas de contenu </span><span class="hps">illégal</span> <span class="hps">ou faisant</span> <span class="hps">la promotion d'activités</span> <span class="hps">illégales</span><span>.</span></span></li> + <li><span lang="fr"><span class="hps">Pas de c</span><span class="hps">ontenu</span> <span class="hps">trompeur</span><span>,</span> <span class="hps">frauduleux</span>, <span class="hps">conçu pour</span> le phishing <span class="hps">ou</span> <span class="hps">autres</span> <span class="hps">vols d'identité.</span></span></li> + <li><span lang="fr"><span class="hps">Pas de contenu faisant l'apologie </span><span class="hps">des</span><span class="hps"> jeu</span><span>x d'argents.</span></span></li> + <li><span lang="fr"><span class="hps">Pas de contenu </span><span class="hps">faisant</span> <span class="hps">la publicité de produits</span> <span class="hps">ou services illicites</span> <span class="hps">ou contrôlés</span><span>.</span></span></li> + <li><span lang="fr">Pas de contenu <span class="hps">exploitant des enfants</span><span>.</span></span></li> + <li><span lang="fr"><span class="hps">Pas de c</span><span class="hps">ontenu qui</span> <span class="hps">dégrade</span><span>,</span> <span class="hps">intimide</span><span>,</span> menace, <span class="hps">incite à la violence</span><span>,</span> <span class="hps">ou</span> <span class="hps">encourage des actions</span> <span class="hps">préjudiciables</span> <span class="hps">contre</span> <span class="hps">quelqu'un ou un groupe</span> basées sur <span class="hps">l'âge</span><span>, le sexe</span><span>, la race</span><span>, l'origine ethnique</span><span>, l'origine nationale</span><span>, la religion</span><span>, l'orientation sexuelle</span><span>, le handicap</span><span>, la religion</span><span>, la situation géographique</span> <span class="hps">ou toute autre</span> <span class="hps">catégorie protégée, ou qui constitue un discours de haine</span></span>.</li> + <li><span lang="fr"><span class="hps">Aucun</span> contenu <span class="hps">qui trompe</span> <span class="hps">un utilisateur</span> <span class="hps">et le pousse à prendre une décision</span> <span class="hps">d'achat</span><span>.</span></span></li> +</ul> + +<h2 id="Fonctionnalité">Fonctionnalité</h2> + +<ul> + <li><span id="result_box" lang="fr"><span class="hps">L'évaluateur </span><span class="hps">doit</span> <span class="hps">être en mesure de mettre en oeuvre </span>l<span class="hps">es fonctionnalités</span> <span class="hps">annoncées</span> <span class="hps">de l'application</span><span>.</span> Les <span class="hps">défauts superficiels </span><span class="hps">et</span> <span class="hps">les inconvénients mineurs</span> <span class="hps">seront signalés </span><span class="hps">au développeur,</span> <span class="hps">mais</span> <span class="hps">n'empêcheront pas </span>l'approbation<span class="hps"> d'une application</span><span class="hps">.</span></span></li> + <li><span lang="fr"><span class="hps">L'application</span> <span class="hps">ne doit pas</span> <span class="hps">compromettre les performances</span> <span class="hps">ou</span> <span class="hps">la stabilité du système</span><span>.</span></span></li> +</ul> + +<h2 id="Ergonomie">Ergonomie</h2> + +<ul> + <li>Le développeur doit tenter raisonnablement d'optimiser la mise en page de l'application pour la plate-forme cible. L'objectif de cette exigence est d'empêcher des échecs évidents, tels que : + <ul> + <li>Une application soumise pour mobile qui est de façon évidente pour un site de bureau.</li> + <li>Une application qui visiblement ne s'étend pas pour remplir l'espace d'écran disponible (imaginez une application de 320x480 qui ne prend que le coin supérieur sur une tablette, le reste de l'écran demeurant vierge. Ce n'est certainement pas attendu !)</li> + </ul> + </li> + <li>L'application doit mettre en œuvre sa propre méthode de navigation et ne pas compter sur le bouton Chrome du navigateur ou un bouton arrière du matériel qui ne sera pas présent sur tous les périphériques. + <ul> + <li>Par exemple, une application sera rejetée si l'évaluateur navigue quelque part dans l'application et ne peut pas revenir en arrière. Les applications ne sont PAS nécessaires pour implémenter une barre de boutons commune aux applications natives.</li> + <li>Sur Firefox OS v1.1 et versions ultérieures, vous pouvez ajouter la propriété de manifeste <code><a href="https://developer.mozilla.org/en-US/Apps/Build/Manifest#chrome">chrome</a></code> pour ajouter des contrôles de navigation minimaux.</li> + </ul> + </li> + <li>Les éléments de navigation, tels que les boutons et les liens, doivent être faciles à cliquer ou à utiliser.</li> +</ul> + +<h2 id="Politique_de_blocage">Politique de blocage</h2> + +<p>Nous espérons que nous ne devrons jamais l'utiliser, mais nous nous réservons le droit de supprimer ("blocklist" (en) "liste noire" ou "liste de blocage" (fr)) toute application publiée qui est plus tard considérée comme contraire aux exigences de sécurité, de confidentialité ou de contenu ; ou des applications qui dégradent sérieusement les performances du système ou du réseau. Les développeurs seront informés de la situation avant qu'une application soit bloquée ; ils seront présupposés être de bons citoyens, à moins que nous ayons des preuves précises. Nous recevrons une assistance complète de l'équipe d'évaluation des applications pour communiquer sur ce qui se passe et résoudre le problème. Des exemples spécifiques, de situations où la liste de blocage est justifiée, comprennent :</p> + +<ul> + <li>Phishing</li> + <li>Spamming</li> + <li>Modification du contenu de "Images de poupées v1.0" à "Violence brutale v1.0" (sans actualiser la note de contenu)</li> + <li>Un mauvais comportement (grave) de l'application pour un grand pourcentage d'utilisateurs - dégradant les performances du téléphone, provoquant des redémarrages, provoquant une perte de données utilisateur, etc. - pour lequel les utilisateurs ne peuvent pas dire que c'est à cause de l'application et s'il n'est pas résolu en redémarrant l'appareil.</li> + <li>Une application utilisée pour des attaques sur le réseau, tel qu'un déni de service distribué (DDOS)</li> +</ul> + +<h2 id="Plus_d'informations">Plus d'informations</h2> + +<p><span id="result_box" lang="fr"><span>Les ressources suivantes fournissent plus d'informations sur le processus d'évaluation des applications et les commentaires :</span></span></p> + +<ul> + <li><a href="https://wiki.mozilla.org/Marketplace/Reviewers/Apps/Testing">Reviewers test criteria</a> — cette page décrit les tests que les évaluateurs effectueront sur votre application.</li> + <li><a href="https://wiki.mozilla.org/Marketplace/Reviewers/Apps">App reviewers</a> — comment contacter l'équipe d'évaluation et participer à l'examen des applications.</li> +</ul> + +<p> </p> diff --git a/files/fr/mozilla/marketplace/publication/updating_apps/index.html b/files/fr/mozilla/marketplace/publication/updating_apps/index.html new file mode 100644 index 0000000000..861bd4447f --- /dev/null +++ b/files/fr/mozilla/marketplace/publication/updating_apps/index.html @@ -0,0 +1,68 @@ +--- +title: Mises à jour des applications +slug: Mozilla/Marketplace/Publication/Updating_apps +translation_of: Archive/Mozilla/Marketplace/Publishing/Updating_apps +--- +<div class="summary"> +<p>Cet article explique le processus par lequel vous mettez à jour des applications publiées, auto-éditées ou publiées sur le<span class="seoSummary"> <a href="https://marketplace.firefox.com/">Firefox Marketplace</a>.</span></p> +</div> + +<div class="note"> +<p><span class="transpan"><span id="tran0">Une fois qu'une application a été installée par un utilisateur, il n'est plus possible de changer son nom par une mise à jour. De nouvelles installations cependant, prendront le nouveau nom de l'application. Ceci est une mesure de sécurité pour éviter les changements de nom sans scrupules.</span></span></p> +</div> + +<h2 id="Mise_à_jour_des_applications_hébergées"><span class="short_text" id="result_box" lang="fr"><span>Mise à jour de</span>s <span>applications hébergées</span></span></h2> + +<p><a href="/en-US/Marketplace/Options/Hosted_apps">Hosted Apps</a> <span id="result_box" lang="fr"><span>respectent</span> <span>les règles normales de</span> <span>mise en cache Web</span><span>,</span> <span>et peuvent</span> <span>utiliser des mécanismes</span> <span>avancés</span> <span>pour améliorer le démarrage</span><span> ou</span> <span>pour permettre</span> <span>une utilisation hors ligne</span><span>,</span> <span>tels que</span></span> <span class="transpan"><span style="background-color: #d3d8f1;"> </span></span> <a href="https://developer.mozilla.org/en-US/docs/HTML/Using_the_application_cache">AppCache</a>. Par conséquent<span id="result_box" lang="fr"><span>, il</span> <span>n'y a normalement pas</span> <span>de règles spéciales pour</span> <span>la mise à jour</span> <span>des</span> <span>applications</span> <span>-</span> <span>il vous suffit de</span> <span>mettre à jour l'</span><span>application sur votre</span> <span>site.</span></span></p> + +<p>Cependant, quelques changements sur vos applications peuvent impliquer des mises à jour du <a href="/en-US/Apps/Build/Manifest">manifeste.</a></p> + +<h3 id="Changer_le_contenu_d'un_manifeste">Changer le contenu d'un manifeste</h3> + +<p><span class="transpan"><span id="tran0">Pour mettre à jour les caractéristiques d'une application publiée - comme le nom d'application, le nom du développeur, les langues, les icônes - vous appliquez simplement ces changements au manifeste que vous hébergez. Si vous avez soumis l'application au Marketplace de Firefox et qu'un de ces changements est considéré comme significatif, l'application est marquée pour</span></span> <a href="#Re_review_of_updated_apps">évaluation</a>.</p> + +<p><span class="transpan"><span id="tran0">Les moments d'exécution sur le Web et l'OS de Firefox devraient automatiquement détecter ces changements et déclencher une mise à jour chez l'utilisateur. Cependant, vous pouvez manuellement déclencher des mises à jour en inscrivant un champ de version dans le manifeste d'application. Votre application peut alors vérifier la version en inspectant la valeur retournée {{ domxref ("Apps.getInstalled") }}</span></span> . <span class="transpan"><span id="tran0">Si la version installée de l'utilisateur n'est pas à jour, votre application peut déclencher une mise à jour utilisant {{ domxref ("Apps.install") }}. Notez que quelques changements à un manifeste, et en conséquence une installation, peuvent exiger l'approbation de l'utilisateur avant l'exécution de la mise à jour.</span></span></p> + +<p>La valeur de version n'est pas utilisée par l'OS de Firefox ni pendant les temps d'exécution sur le Web, donc vous pouvez utiliser n'importe quel schéma de version vous convenant.</p> + +<h3 id="Changement_de_l'emplacement_d'un_manifeste">Changement de l'emplacement d'un manifeste</h3> + +<p>Vous pouvez vouloir changer l'emplacement du fichier du manifeste de votre application. Typiquement, vous ferez cela pour déplacer l'application vers un nouveau domaine ou vers un sous-domaine qui vous permettront de livrer plusieurs applications hébergées.</p> + +<p><span class="transpan"><span id="tran0">Si vous voulez faire ceci pour des applications soumises au Marketplace de Firefox, retournez à la soumission d'application et dans la page "</span></span> Edit Details "<span class="transpan"><span> changez la valeur de l'URL du manifeste. La suite dépendra du statut de votre application :</span></span></p> + +<ul> + <li><span id="result_box" lang="fr"><span>pour une</span> application <span>publiée</span> <span>(</span><span>ou approuvée</span> <span>mais non publiée</span><span>)</span> <span>,</span> <span>l'application</span> <span>est marquée</span> <span>pour évaluation et</span> <span>vous serez</span> <span>contacté</span> <span>si</span> <span>(</span><span>et seulement si</span><span>) des</span> <span>problèmes ultérieurs</span> <span>sont découverts.</span></span></li> + <li>Pour des applications non approuvées, l'évaluation se déroulera normalement.</li> +</ul> + +<h3 id="Avis_sur_les_applications_mises_à_jour"><span class="short_text" id="result_box" lang="fr"><span>Avis sur</span> <span>les applications</span> <span>mises à jour</span></span></h3> + +<p><span id="result_box" lang="fr"><span>Lorsqu'une</span> <span>applicationi</span> <span>hébergé</span>e <span>est signalée</span> <span>pour évaluation</span> <span>à la suite d'</span><span>une mise à jour</span><span>, ce qui suit</span> <span>se produit </span><span>:</span></span></p> + +<ul> + <li>Le statut de l'application ne change pas, une application publiée reste publiée .</li> + <li><span id="result_box" lang="fr"><span>L'application</span> <span>est ajoutée à la</span> <span>file d'attente des évaluations à réaliser</span><span> et</span> <span>quand son tour arrive</span><span> (</span><span>entre</span><span> quelques</span> <span>heures et quelques</span> <span>jours plus tard</span><span>) un évaluateur</span> <span>examine</span> <span>les changements et </span><span>:</span></span> + <ul> + <li><span class="short_text" id="result_box" lang="fr"><span>efface</span> <span>le marquage (flag)</span></span> .</li> + <li><span id="result_box" lang="fr">la <span>rejette</span>, <span>si l'application</span> <span>est</span> <span>complètement cassée,</span></span><span lang="fr"> <span>et vous contacte.</span> <span>Cela supprimera l'application de Firefox Marketplace, si elle a été publiée.</span></span></li> + <li> <span class="short_text" id="result_box" lang="fr"><span>vous</span> <span>contacte pour</span> <span>de plus amples informations</span><span>.</span></span> </li> + </ul> + </li> +</ul> + +<div class="warning"> +<p><span id="result_box" lang="fr"><span>Dans la mesure du possible</span><span>, vous devez</span> <span>éviter de changer</span> <span>l'emplacement</span> <span>de l'application</span> <span>/</span> <span>manifeste</span> <span>après</span> <span>la publication</span> <span>dans le</span> <span>Marketplace de</span> <span>Firefox</span><span>,</span> <span>en raison de</span> <span>l'impact sur</span> <span>l'utilisateur.</span> <span>Un changement</span> <span>de l'</span><span>emplacement du manifeste</span> <span>se traduira par</span> <span>une nouvelle instance</span> <span>installée de</span> <span>l'</span><span>application lorsque</span></span> {{ domxref("Apps.install") }} <span class="short_text" id="result_box" lang="fr"><span>est invoquée</span></span> . <span id="result_box" lang="fr"><span>De nombreux utilisateurs</span> <span>trouveront cela</span> <span>perturbant.</span></span></p> +</div> + +<h2 id="Mise_à_jour_des_applications_empaquetées"><span class="short_text" id="result_box" lang="fr"><span>Mise à jour</span> <span>des applications</span> <span>empaquetées</span></span></h2> + +<p><span class="short_text" lang="fr"><span>Les </span></span><a href="/en-US/docs/Web/Apps/Packaged_apps">Packaged Apps</a> <span id="result_box" lang="fr"> <span>ont un processus</span> <span>de mise à jour</span> <span>différent de celui des</span> <span>applications hébergées</span><span>.</span> <span>Pour mettre à jour</span> <span>une</span> <span>application</span> <span>empaquet</span><span>ée,</span> <span>vous téléchargez</span> <span>une nouvelle version</span> du <span>fichier zip</span> <span>sur le</span> <span>Marketplace de</span> <span>Firefox</span><span>.</span> <span>L'</span><span>application mise à jour</span> <span>est ensuite</span> <span>évaluée et</span><span>,</span> <span>lorsqu'elle est approuvée</span><span>,</span> <span>publiée sur le</span> <span>Marketplace</span><span>.</span></span> <span id="result_box" lang="fr"><span>Cela déclenche</span> <span>une mise à jour</span> de <span>toutes les</span> <span>versions installées</span><span>.</span> <span>Les utilisateurs de l'OS</span> <span>Firefox</span><span> peuvent</span> <span>également demander</span> <span>une mise à jour</span> <span>en utilisant l'application</span> <span>Paramètres.</span> <span>Pour télécharger</span> <span>une nouvelle</span> <span>version de votre application</span><span>, connectez-vous</span> <span>au Marketplace</span> <span>avec le</span> <span>même compte que</span> pour <span>la présentation précédente,</span> <span>puis cliquez sur</span> <span>l'icône d'engrenage</span> <span>en haut à droite</span> <span>et cliquez sur</span> <span>«</span></span> My Submissions <span lang="fr"><span>» <em>(mes soumissions)</em>.</span></span> <span id="result_box" lang="fr"><span>Sous</span> <span>l'en-tête</span> <span>«</span></span> Manage My Submissions <span lang="fr"><span>» <em>(gérer mes soumissions)</em> et</span> pour <span>l'application en question</span><span>, cliquez sur</span> <span>"Status</span> <span>&</span> <span>Versions</span><span>.</span><span>"</span> <span>De là</span><span>, faites défiler</span> <span>vers le bas et</span> <span>cliquez sur "</span></span> Select a File " <em>(</em><span lang="fr"><em><span>Sélectionner un fichier</span></em><span><em>)</em> sous </span></span> "Upload New Version" <em><span lang="fr"><span>(</span><span>Télécharger</span> <span>la nouvelle version).</span></span></em> <span id="result_box" lang="fr"><span>À partir de là, vous</span> <span>pouvez</span> <span>choisir de ne pas</span> <span>avoir</span> <span>une </span> <span>publication</span> <span>automatique de votre application</span> <span>après son évaluation</span> <span>en décochant la case</span> <span> </span></span> "Publish my app in the Firefox Marketplace as soon as it's reviewed". <span lang="fr"> <span>Les appareils des utilisateurs</span> <span>vérifier</span>ont chaque<span> jour l'existence de</span><span> mises à jour</span> <span>d'applications</span><span>,</span> <span>et</span> <span>verront</span> <span>une notification</span> <span>d'une mise à jour</span> <span>disponible</span> <span>pour son téléchargement</span> <span>à leur discrétion.</span></span></p> + +<p><img alt="Would you like to publish to marketplace upon review?" src="https://mdn.mozillademos.org/files/8523/publish_checkbox.png" style="height: 232px; width: 1000px;"></p> + +<ul> + <li> <span id="result_box" lang="fr"><span>Lorsque l'application</span> <span>empaquetée</span> <span>mise à jour</span> <span>est publiée, le</span> <span>mini-</span><span>manifeste</span> <span>est mis à jour</span> <span>pour pointer vers le</span> <span>fichier zip</span> <span>mis à jour</span> <span>(</span><span>le mini-</span><span>manifeste n'est</span> <span>pas</span> <span>l'application principale</span> <span>manifeste)</span><span>.</span> <span>L'en-tête</span> </span> <code>ETag</code> <span lang="fr"> <span>est modifié,</span> <span>ce qui déclenche</span> <span>une mise à jour</span> <span>sur le téléphone</span> <span>Firefox</span> <span>OS</span><span>.</span></span></li> + <li>L'OS Firefox <span id="result_box" lang="fr"><span>vérifie</span> <span>une fois</span> <span>par jour par sondage téléphonique, les</span> <span>modifications apportées aux</span><span> applications</span><span>.</span> </span> <span id="result_box" lang="fr"><span>Pour ce faire, il examine l'URL du mini-manifeste, puis interroge l'URL dans le champ package_path dans le mini-manifeste.</span></span> <span lang="fr"> <span>Cela se fait</span> avec la méthode</span> <code>checkForUpdate()</code> dans la <a href="/en-US/docs/Web/API/App"><code>App</code> object</a>. <span id="result_box" lang="fr"><span>Lorsque</span> <span>l'en-tête</span> <span>ETag</span> <span>change, il</span> <span>sait que l'</span><span>application a été</span> <span>mise à jour</span><span>.</span> <span>Ensuite,</span> <span>il vérifie</span> <span>si le</span> <span>fichier zip</span> <span>a changé.</span></span></li> + <li>Firefox OS <span id="result_box" lang="fr"><span>contrôle</span> <span>le lot</span> <span>pour les mises à jour</span> <span>des applications</span><span>.</span></span></li> +</ul> diff --git a/files/fr/mozilla/marketplace/publish/index.html b/files/fr/mozilla/marketplace/publish/index.html new file mode 100644 index 0000000000..387fc894de --- /dev/null +++ b/files/fr/mozilla/marketplace/publish/index.html @@ -0,0 +1,25 @@ +--- +title: Publier sur le Firefox Marketplace +slug: Mozilla/Marketplace/Publish +translation_of: Archive/Mozilla/Marketplace/Publish +--- +<div class="summary"> +<p><span id="result_box" lang="fr"><span>Documentation pour la publication d'une application sur Firefox Marketplace.</span></span></p> +</div> + +<div class="row topicpage-table"> +<div class="section"> +<dl> + <dt><a href="/en-US/Marketplace/Submission/Testing_and_troubleshooting">App testing and troubleshooting</a></dt> + <dd>Un petit guide pour tester et <span id="result_box" lang="fr"><span>dépanner, à suivre avant de soumettre votre application sur Firefox Marketplace.</span></span></dd> + <dt><a href="https://developer.mozilla.org/fr/Apps/Publishing/Proposer_une_application">Proposer une application sur le Firefox Market</a></dt> + <dd>Ce guide étape par étape vous aidera à soumettre votre application avec succès à Firefox Marketplace.</dd> + <dt><a href="https://developer.mozilla.org/fr/Marketplace/Publication/Marketplace_critere_revue">Critères d'évaluation du Marketplace</a></dt> + <dd>Une explication des critères qu'une application doit respecter pour être publiée sur Firefox Marketplace; en suivant les règles énoncées dans cet article, vous pouvez faciliter le processus de publication de votre application.</dd> + <dt><a href="/en-US/docs/Web/Apps/Publishing/Marketplace_screenshot_criteria">Marketplace screenshot criteria</a></dt> + <dd>Règles pour les captures d'écran à soumettre avec votre application afin de maximiser son impact et sa qualité sur le marché.</dd> +</dl> +</div> +</div> + +<p> </p> diff --git a/files/fr/mozilla/marketplace/publishing/submit/index.html b/files/fr/mozilla/marketplace/publishing/submit/index.html new file mode 100644 index 0000000000..265a1ad776 --- /dev/null +++ b/files/fr/mozilla/marketplace/publishing/submit/index.html @@ -0,0 +1,10 @@ +--- +title: Submit +slug: Mozilla/Marketplace/Publishing/Submit +tags: + - NeedsTranslation + - TopicStub +translation_of: Archive/Mozilla/Marketplace/Publishing/Submit +--- +<p>This section describes the process for submitting an app to Firefox Marketplace</p> +<p>Residual details: <a href="/en-US/Marketplace/Publishing/Submit/Submitting_an_app">https://developer.mozilla.org/en-US/Marketplace/Publishing/Submit/Submitting_an_app</a></p> diff --git a/files/fr/mozilla/mathml_project/index.html b/files/fr/mozilla/mathml_project/index.html new file mode 100644 index 0000000000..c5286ce4ab --- /dev/null +++ b/files/fr/mozilla/mathml_project/index.html @@ -0,0 +1,99 @@ +--- +title: Mozilla MathML Project +slug: Mozilla/MathML_Project +tags: + - MathML + - MathML Project + - NeedsTranslation + - TopicStub +translation_of: Mozilla/MathML_Project +--- +<p>The Mozilla MathML project is Mozilla's project to build and enhance <a href="/en-US/docs/Web/MathML" title="/en-US/docs/Web/MathML">MathML</a> support within Firefox and other Mozilla-based applications. For a quick overview, see the <a href="http://fred-wang.github.io/MozSummitMathML/index.html">slides for the innovation fairs at Mozilla Summit 2013</a>.</p> + +<h2 id="Updates">Updates</h2> + +<p><img alt="Mathzilla" class="default internal" src="https://mdn.mozillademos.org/files/6281/mathzilla.svg" style="float: right; height: 150px; width: 150px;"></p> + +<ul> + <li><a href="/docs/Mozilla/MathML_Project/Status" title="Mozilla MathML Project/Status">Status of each tag</a></li> + <li><a href="/docs/Mozilla/MathML_Project/MathML3Testsuite" title="Mozilla MathML Project/MathML3Testsuite">Result of the MathML 3 Testsuite</a></li> + <li><a class="external" href="https://www.wg9s.com/mozilla/firefox/">Unofficial nightly builds with MathML patches applied</a> (maintained by Bill Gianopoulos)</li> + <li><a href="/docs/Mozilla/MathML_Project/Student_Projects" title="Mozilla_MathML_Project/Student_Projects">Student Projects</a></li> + <li><a href="/docs/Mozilla/MathML_Project/Updates" title="Mozilla_MathML_Project/Updates">All Updates...</a></li> +</ul> + +<h3 id="August_11_2013">August 11, 2013</h3> + +<p><a href="http://www.infogridpacific.com/blog/igp-blog-20130811-mathml-in-education-digital-content.html">Math(ML) in Education Digital Content</a></p> + +<h3 id="August_6_2013">August 6, 2013</h3> + +<p><a href="http://fiduswriter.org/2013/08/06/math-in-the-browser/">Math in the browser</a></p> + +<h3 id="May_3_2013">May 3, 2013</h3> + +<p><a href="http://www.maths-informatique-jeux.com/blog/frederic/?post/2013/05/03/Firefox-Nightly-passes-the-Acid2-test">Firefox Nightly passes the MathML Acid2 test</a> ; <a href="http://news.slashdot.org/story/13/05/04/0015241/firefox-is-the-first-browser-to-pass-the-mathml-acid2-test" title="http://news.slashdot.org/story/13/05/04/0015241/firefox-is-the-first-browser-to-pass-the-mathml-acid2-test">Slashdot article</a> ; <a href="http://www.ghacks.net/2013/05/04/firefox-first-browser-to-pass-mathml-acid-test-how-about-your-browser/" title="http://www.ghacks.net/2013/05/04/firefox-first-browser-to-pass-mathml-acid-test-how-about-your-browser/">ghacks</a> article.</p> + +<h3 id="January_10_2013">January 10, 2013</h3> + +<p>Chrome 24 has been released with basic MathML support!</p> + +<p><ins>update: MathML disabled again in Chrome 25 :-(</ins></p> + +<h3 id="December_1_2012">December 1, 2012</h3> + +<p>All the pages of the Mozilla MathML Project have now been <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=585142#c2" title="https://bugzilla.mozilla.org/show_bug.cgi?id=585142#c2">migrated to MDN</a>!</p> + +<h3 id="November_26_2012">November 26, 2012</h3> + +<p><a href="http://toc.oreilly.com/2012/11/math-typesetting.html" title="http://toc.oreilly.com/2012/11/math-typesetting.html">Math typesetting - Why are we leaving such an important issue to under-resourced volunteers and small organisations?</a></p> + +<h2 id="Community">Community</h2> + +<ul> + <li>View Mozilla forums... {{DiscussionList("dev-tech-mathml", "mozilla.dev.tech.mathml")}}</li> + <li><a class="link-irc" href="irc://irc.mozilla.org/%23mathml" rel="external" title="irc://irc.mozilla.org/%23mathml">IRC channel</a></li> + <li><a class="link-https" href="https://wiki.mozilla.org/MathML:Home_Page">Wiki used by contributors</a> - check out the latest developments and help us improving MathML in Mozilla.</li> +</ul> + +<h2 id="Links">Links</h2> + +<ul> + <li>Installing <a href="/docs/Mozilla/MathML_Project/Fonts" title="Mozilla MathML Project/Fonts">fonts for Mozilla's MathML engine</a></li> + <li><a class="external" href="https://www.w3.org/TR/MathML3/">MathML Version 3.0</a> - W3C Recommendation, 21 October 2010</li> + <li><a class="external" href="https://www.w3.org/Math/testsuite/"><abbr>W3C</abbr> <abbr>MathML</abbr> Test Suite</a> - Designed to check the implementation of each element one attribute (or built-in rendering behavior) at a time in a fairly thorough manner.</li> + <li><a href="/docs/Web/MathML" title="MathML">MathML in Mozilla Developer Network</a></li> +</ul> + +<h3 id="Sample_MathML_Documents">Sample <abbr>MathML</abbr> Documents</h3> + +<ul> + <li><a href="/docs/Mozilla/MathML_Project/Screenshots" title="Mozilla MathML Project/Screenshots">Screenshots</a></li> + <li><a href="/docs/Mozilla/MathML_Project/Start" title="Mozilla_MathML_Project/Start"><abbr>MathML</abbr> Start Page</a> - with translations in different languages ( <a href="/ar/docs/Mozilla_MathML_Project/Start" title="/ar/Mozilla_MathML_Project/Start">Arabic</a>, <a href="/zh-CN/docs/Mozilla_MathML_Project/Start" title="/zh-CN/Mozilla_MathML_Project/Start">Chinese</a>, <a href="/he/docs/Mozilla_MathML_Project/Start" title="/he/Mozilla_MathML_Project/Start">Hebrew</a>, <a href="/th/docs/Mozilla_MathML_Project/Start" title="/th/Mozilla_MathML_Project/Start">Thai</a>)</li> + <li><a class="external" href="/docs/Mozilla/MathML_Project/Basics">MathML Basics</a> - Document tailored to display correctly with just the Symbol font that is pre-installed by default on most OS configurations.</li> + <li><a class="external" href="/fr/docs/Mozilla/MathML_Project/MathML_Torture_Test"><abbr>MathML</abbr> Torture Test</a> - Comparative testing of MathML rendering against TeX.</li> + <li>Demo of some MathML tags: <a class="external" href="/docs/Mozilla/MathML_Project/mfrac">mfrac</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mo">mo</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mtable">mtable</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mspace">mspace</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mmultiscripts">mmultiscripts</a>, <a class="external" href="/docs/Mozilla/MathML_Project/roots">msqrt-mroot</a>.</li> + <li><a class="external" href="/docs/Mozilla/MathML_Project/Extras">MathML Extras</a> - Technology demonstration of some interesting upshots from building natively upon the browser environment.</li> + <li><a href="/docs/Mozilla/MathML_Project/Various" title="Mozilla_MathML_Project/Various">Various MathML Tests</a> - These pages were imported from <code>layout/mathml/tests/</code>.</li> + <li><a class="external" href="https://golem.ph.utexas.edu/~distler/blog/archives/000104.html">Blog</a> with comments that include MathML.</li> +</ul> + +<h3 id="Create_MathML_Documents">Create <abbr>MathML</abbr> Documents</h3> + +<ul> + <li><a href="/docs/Web/MathML/Authoring" title="Mozilla MathML Project/Authoring">Authoring MathML</a></li> + <li><a class="external" href="https://www.w3.org/Math/Software/mathml_software_cat_editors.html">Editors</a></li> + <li><a class="external" href="https://www.w3.org/Math/Software/mathml_software_cat_converters.html">Converters</a></li> + <li><a class="external" href="https://www.w3.org/Math/Software/mathml_software_cat_stylesheets.html">Stylesheets</a></li> +</ul> + +<div class="originaldocinfo"> +<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2> + +<ul> + <li>Author(s): Roger B. Sidje</li> + <li>Other Contributors: Frédéric Wang</li> + <li>Last Updated Date: April 4, 2010</li> + <li>Copyright Information: Portions of this content are © 1999–2010 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">Details</a>.</li> +</ul> +</div> diff --git a/files/fr/mozilla/mathml_project/mathml_torture_test/index.html b/files/fr/mozilla/mathml_project/mathml_torture_test/index.html new file mode 100644 index 0000000000..10e11ba7ce --- /dev/null +++ b/files/fr/mozilla/mathml_project/mathml_torture_test/index.html @@ -0,0 +1,1445 @@ +--- +title: Test de torture MathML +slug: Mozilla/MathML_Project/MathML_Torture_Test +tags: + - MathML +translation_of: Mozilla/MathML_Project/MathML_Torture_Test +--- +<h2 id="MathML_Torture_Test" name="MathML_Torture_Test">Test de torture de MathML</h2> +<div style="display: none;"> + <h3 id="HTML_Content">HTML Content</h3> + <pre class="brush: html"><p> + Render mathematics with: + <select name="MathFont" id="MathFont"> + <option value="Default" selected="selected">Default fonts</option> + <option value="Asana">Asana</option> + <option value="MathJax">MathJax</option> + <option value="STIX">STIX General</option> + <option value="AsanaExp">Asana (experimental)</option> + <option value="Cambria">Cambria (experimental)</option> + <option value="TeXGyreBonum">TeX Gyre Bonum (experimental) </option> + <option value="TeXGyrePagella">TeX Gyre Pagella (experimental) </option> + <option value="TeXGyreTermes">TeX Gyre Termes (experimental) </option> + <option value="LatinModern">Latin Modern (experimental) </option> + <option value="Lucida">Lucida (experimental) </option> + <option value="NeoEuler">Neo Euler (experimental) </option> + <option value="STIXWord">STIX Word (experimental) </option> + <option value="XITS">XITS (experimental) </option> + <option value="XITSRTL">XITS RTL (experimental) </option> + </select> <br/> +</p> + +<table> + +<tr> +<td></td> +<th scope="col">As rendered by TeX</th> +<th scope="col">As rendered by your browser</th></tr> + +<tr> +<td>1</td> + +<td><img src="https://developer.mozilla.org/@api/deki/files/4578/=ex1.png" width="38" height="22" +alt="TeXbook, 16.2-16.3" /></td> +<td> +<math display="block"> +<mrow> + <msup> + <mi>x</mi> + <mn>2</mn> + </msup> + <msup> + <mi>y</mi> + + <mn>2</mn> + </msup> +</mrow> +</math> +</td></tr> + +<tr> +<td>2</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4579/=ex2.png" width="30" height="17" alt="TeXbook, 16.2-16.3" /></td> +<td> +<math display="block"> +<!-- +<mrow> + <msub><mi></mi><mn>2</mn></msub> + <msub><mi>F</mi><mn>3</mn></msub> +</mrow> +--> +<mrow> + + <mmultiscripts> + <mi>F</mi> + <mn>3</mn><none/> + <mprescripts/> + <mn>2</mn><none/> + </mmultiscripts> +</mrow> +</math> + +</td></tr> + +<tr> +<td>3</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4586/=ex21.png" width="58" height="47" alt="TeXbook, 17-17.1" /></td> +<td> +<math display="block"> +<mrow> + <mfrac> + <mrow> + <mi>x</mi> + <mo>+</mo> + + <msup> + <mi>y</mi> + <mn>2</mn> + </msup> + </mrow> + <mrow> + <mi>k</mi> + + <mo>+</mo> + <mn>1</mn> + </mrow> + </mfrac> +</mrow> +</math> +</td></tr> + +<tr> +<td>4</td> + +<td><img src="https://developer.mozilla.org/@api/deki/files/4587/=ex22.png" width="76" height="25" alt="TeXbook, 17-17.1" /></td> +<td> +<math display="block"> +<mrow> + <mi>x</mi> + <mo>+</mo> + <msup> + <mi>y</mi> + <mfrac> + + <mn>2</mn> + <mrow> + <mi>k</mi> + <mo>+</mo> + <mn>1</mn> + </mrow> + </mfrac> + + </msup> +</mrow> +</math> +</td></tr> + +<tr> +<td>5</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4588/=ex23.png" width="30" height="42" alt="TeXbook, 17-17.1" /></td> +<td> +<math display="block"> +<mrow> + <mfrac> + <mi>a</mi> + + <mrow> + <mi>b</mi> + <mo>/</mo> + <mn>2</mn> + </mrow> + </mfrac> +</mrow> +</math> + +</td></tr> + +<tr> +<td>6</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4589/=ex24.png" width="220" height="138" alt="TeXbook, 17.5-17.6" /></td> +<td> +<math display="block"> +<mrow> + <msub> + <mi>a</mi> + <mn>0</mn> + + </msub> + <mo>+</mo> + <mfrac> + <mn>1</mn> + <mstyle displaystyle="true" scriptlevel="0"> + <msub> + <mi>a</mi> + + <mn>1</mn> + </msub> + <mo>+</mo> + <mfrac> + <mn>1</mn> + <mstyle displaystyle="true" scriptlevel="0"> + <msub> + + <mi>a</mi> + <mn>2</mn> + </msub> + <mo>+</mo> + <mfrac> + <mn>1</mn> + <mstyle displaystyle="true" scriptlevel="0"> + + <msub> + <mi>a</mi> + <mn>3</mn> + </msub> + <mo>+</mo> + <mfrac> + <mn>1</mn> + + <mstyle displaystyle="true" scriptlevel="0"> + <msub> + <mi>a</mi> + <mn>4</mn> + </msub> + </mstyle> + </mfrac> + </mstyle> + </mfrac> + + </mstyle> + </mfrac> + </mstyle> + </mfrac> +</mrow> +</math> +</td></tr> + +<tr> +<td>7</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4590/=ex25.png" width="200" height="85" alt="TeXbook, 17.5-17.6" /></td> +<td> + +<math> +<mrow> + <msub> + <mi>a</mi> + <mn>0</mn> + </msub> + <mo>+</mo> + <mfrac> + + <mn>1</mn> + <mrow> + <msub> + <mi>a</mi> + <mn>1</mn> + </msub> + <mo>+</mo> + + <mfrac> + <mn>1</mn> + <mrow> + <msub> + <mi>a</mi> + <mn>2</mn> + </msub> + + <mo>+</mo> + <mfrac> + <mn>1</mn> + <mrow> + <msub> + <mi>a</mi> + <mn>3</mn> + + </msub> + <mo>+</mo> + <mfrac> + <mn>1</mn> + <mrow> + <msub> + <mi>a</mi> + + <mn>4</mn> + </msub> + </mrow> + </mfrac> + </mrow> + </mfrac> + </mrow> + </mfrac> + + </mrow> + </mfrac> +</mrow> +</math> +</td></tr> + +<tr> +<td>8</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4591/=ex26.png" width="54" height="50" alt="TeXbook, 17.5-17.6" /></td> +<td> +<math display="block"> +<mrow> + <mo>(</mo> + + <mfrac linethickness="0"> + <mi>n</mi> + <mrow> + <mi>k</mi> + <mo>/</mo> + <mn>2</mn> + </mrow> + + </mfrac> + <mo>)</mo> +</mrow> +</math> +</td></tr> + +<tr> +<td>9</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4592/=ex27.png" width="237" height="50" alt="TeXbook, 17.7" /></td> +<td> +<math display="block"> +<mrow> + <mrow> + + + <mo>(</mo> + <mfrac linethickness="0"> + <mi>p</mi> + <mn>2</mn> + </mfrac> + <mo>)</mo> + </mrow> + + <msup> + <mi>x</mi> + <mn>2</mn> + </msup> + <msup> + <mi>y</mi> + <mrow> + + <mi>p</mi> + <mo>-</mo> + <mn>2</mn> + </mrow> + </msup> + <mo>-</mo> + <mfrac> + + <mn>1</mn> + <mrow> + <mn>1</mn> + <mo>-</mo> + <mi>x</mi> + </mrow> + </mfrac> + + <mfrac> + <mn>1</mn> + <mrow> + <mn>1</mn> + <mo>-</mo> + <msup> + <mi>x</mi> + + <mn>2</mn> + </msup> + </mrow> + </mfrac> +</mrow> +</math> +</td></tr> + +<tr> +<td>10</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4593/=ex29.png" width="116" height="63" alt="TeXbook, 17.7-17.8" /></td> + +<td> +<math display="block"> +<mrow> + <munder> + <mo>&sum;</mo> + <mrow> + <mfrac linethickness="0"> + <mrow> + <mn>0</mn> + <mo>&leq;</mo> + + <mi>i</mi> + <mo>&leq;</mo> + <mi>m</mi> + </mrow> + <mrow> + <mn>0</mn> + <mo>&lt;</mo> + + <mi>j</mi> + <mo>&lt;</mo> + <mi>n</mi> + </mrow> + </mfrac> + </mrow> + </munder> + <mi>P</mi> + + <mo stretchy="false">(</mo> + <mi>i</mi> + <mo>,</mo> + <mi>j</mi> + <mo stretchy="false">)</mo> +</mrow> +</math> + +</td></tr> + +<tr> +<td>11</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4580/=ex3.png" width="27" height="18" alt="TeXbook, 16.2-16.3" /></td> +<td> +<math display="block"> +<mrow> +<msup> + <mi>x</mi> + <mrow> + <mn>2</mn> + + <mi>y</mi> + </mrow> +</msup> +</mrow> +</math> +</td></tr> + +<tr> +<td>12</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4594/=ex30.png" width="175" height="61" alt="TeXbook, 17.8" /></td> +<td> +<math display="block"> +<mrow> + + <munderover> + <mo>&sum;</mo> + <mrow> + <mi>i</mi> + <mo>=</mo> + <mn>1</mn> + </mrow> + + <mi>p</mi> + </munderover> + <munderover> + <mo>&sum;</mo> + <mrow> + <mi>j</mi> + <mo>=</mo> + + <mn>1</mn> + </mrow> + <mi>q</mi> + </munderover> + <munderover> + <mo>&sum;</mo> + <mrow> + <mi>k</mi> + + <mo>=</mo> + <mn>1</mn> + </mrow> + <mi>r</mi> + </munderover> + <msub> + <mi>a</mi> + + <mrow> + <mi>i</mi> + <mi>j</mi> + </mrow> + </msub> + <msub> + <mi>b</mi> + + <mrow> + <mi>j</mi> + <mi>k</mi> + </mrow> + </msub> + <msub> + <mi>c</mi> + + <mrow> + <mi>k</mi> + <mi>i</mi> + </mrow> + </msub> +</mrow> +</math> +</td></tr> + +<tr> + +<td>13</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4595/=ex31.png" width="405" height="100" alt="TeXbook, 17.9-17.10" /></td> +<td> +<math display="block"> +<mrow> + <msqrt> + <mn>1</mn> + <mo>+</mo> + <msqrt> + <mn>1</mn> + + <mo>+</mo> + <msqrt> + <mn>1</mn> + <mo>+</mo> + <msqrt> + <mn>1</mn> + <mo>+</mo> + + <msqrt> + <mn>1</mn> + <mo>+</mo> + <msqrt> + <mn>1</mn> + <mo>+</mo> + <msqrt> + + <mn>1</mn> + <mo>+</mo> + <mi>x</mi> + </msqrt> + </msqrt> + </msqrt> + </msqrt> + + </msqrt> + </msqrt> + </msqrt> +</mrow> +</math> +</td></tr> + +<tr> +<td>14</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4596/=ex34.png" width="272" height="50" alt="TeXbook, 17.10" /></td> +<td> +<math display="block"> +<mrow> + + <mrow> + <mo>(</mo> + <mfrac> + <msup> + <mo>&part;</mo> + <mn>2</mn> + </msup> + <mrow> + + <mo>&part;</mo> + <msup> + <mi>x</mi> + <mn>2</mn> + </msup> + </mrow> + </mfrac> + <mo>+</mo> + + <mfrac> + <msup> + <mo>&part;</mo> + <mn>2</mn> + </msup> + <mrow> + <mo>&part;</mo> + <msup> + + <mi>y</mi> + <mn>2</mn> + </msup> + </mrow> + </mfrac> + <mo>)</mo> + </mrow> + + <msup> + <mrow> + <mo minsize="1.5">|</mo> + <mi>&#x3C6; <!-- \varphi --></mi> + <mo stretchy="false">(</mo> + <mi>x</mi> + <mo>+</mo> + + <mi mathvariant="normal">i</mi> + <mi>y</mi> + <mo stretchy="false">)</mo> + <mo minsize="1.5">|</mo> + </mrow> + <mn>2</mn> + + </msup> + <mo>=</mo> + <mn>0</mn> +</mrow> +</math> +</td></tr> + +<tr> +<td>15</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4581/=ex4.png" width="31" height="22" alt="TeXbook, 16.2-16.3" /></td> +<td> + +<math display="block"> +<mrow> + <msup> + <mn>2</mn> + <msup> + <mn>2</mn> + <msup> + <mn>2</mn> + + <mi>x</mi> + </msup> + </msup> + </msup> +</mrow> +</math> +</td></tr> + +<tr> +<td>16</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4597/=ex40.png" width="55" height="49" alt="TeXbook, 18.10-18.11" /></td> + +<td> +<math display="block"> +<mrow> + <msubsup> + <mo stretchy="false">&int;</mo> + <mn>1</mn> + <mi>x</mi> + </msubsup> + <mfrac> + + <mrow><mi>d</mi><mi>t</mi></mrow> + <mi>t</mi> + </mfrac> +</mrow> +</math> +</td></tr> + +<tr> +<td>17</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4599/=ex41.png" width="91" height="47" alt="TeXbook, 18.12-18.13" /></td> +<td> + +<math display="block"> +<mrow> + <msub> + <mo>&#x222C; <!-- \iint --></mo> + <mi>D</mi> + </msub> + <mi>d</mi><mi>x</mi> + <space width="thinmathspace"/> + + <mi>d</mi><mi>y</mi> +</mrow> +</math> +</td></tr> + +<tr> +<td>18</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4600/=ex43.png" width="250" height="66" alt="TeXbook, 18.23" /></td> +<td> +<math display="block"> +<mrow> + <mi>f</mi> + + <mo stretchy="false">(</mo> + <mi>x</mi> + <mo stretchy="false">)</mo> + <mo>=</mo> + <mrow> + <mo>{</mo> + + <mtable> + <mtr> + <mtd columnalign="center"> + <mrow> + <mn>1</mn> + <mo>/</mo> + <mn>3</mn> + + </mrow> + </mtd> + <mtd columnalign="left"> + <mrow> + <mtext>if&nbsp;</mtext> + <mn>0</mn> + <mo>&leq;</mo> + <mi>x</mi> + + <mo>&leq;</mo> + <mn>1</mn> + <mo>;</mo> + </mrow> + </mtd> + </mtr> + <mtr> + <mtd columnalign="center"> + + <mrow> + <mn>2</mn> + <mo>/</mo> + <mn>3</mn> + </mrow> + </mtd> + <mtd columnalign="center"> + + <mrow> + <mtext>if&nbsp;</mtext> + <mn>3</mn> + <mo>&leq;</mo> + <mi>x</mi> + <mo>&leq;</mo> + <mn>4</mn> + + <mo>;</mo> + </mrow> + </mtd> + </mtr> + <mtr> + <mtd columnalign="center"> + <mn>0</mn> + </mtd> + + <mtd columnalign="left"> + <mtext>elsewhere.</mtext> + </mtd> + </mtr> + </mtable> + </mrow> +</mrow> +</math> +</td></tr> + +<tr> +<td>19</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4601/=ex44.png" width="101" height="44" alt="TeXbook, 18.23-18.24" /></td> +<td> +<math display="block"> +<mover> + <mrow> + <mi>x</mi> + <mo>+</mo> + <mo>...</mo> + + <mo>+</mo> + <mi>x</mi> + </mrow> + <mover> + <mo>&OverBrace;</mo> + <mrow><mi>k</mi> <mspace width="thinmathspace"/> <mtext>times</mtext></mrow> + </mover> + +</mover> +</math> +</td></tr> + +<tr> +<td>20</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4582/=ex5.png" width="25" height="13" alt="TeXbook, 16.2-16.3" /></td> +<td> +<math display="block"> +<mrow> + <msub> + <mi>y</mi> + <msup> + + <mi>x</mi> + <mn>2</mn> + </msup> + </msub> +</mrow> +</math> +</td></tr> + +<tr> +<td>21</td> + +<td><img src="https://developer.mozilla.org/@api/deki/files/4602/=ex51.png" width="253" height="56" alt="TeXbook, 18.40" /></td> +<td> +<math display="block"> +<mrow> + <munder> + <mo>&sum;</mo> + <mrow> + <mi>p</mi> + <mtext>&nbsp;prime</mtext> + </mrow> + + </munder> + <mi>f</mi> + <mo stretchy="false">(</mo> + <mi>p</mi> + <mo stretchy="false">)</mo> + <mo>=</mo> + + <msub> + <mo stretchy="false">&int;</mo> + <mrow> + <mi>t</mi> + <mo>&gt;</mo> + <mn>1</mn> + </mrow> + </msub> + + <mi>f</mi> + <mo stretchy="false">(</mo> + <mi>t</mi> + <mo stretchy="false">)</mo> + <mspace width="thinmathspace"/> + <mi>d</mi> + <mi>&pi;</mi> + <mo stretchy="false">(</mo> + <mi>t</mi> + <mo stretchy="false">)</mo> +</mrow> +</math> +</td></tr> + +<tr> +<td>22</td> + +<td><img src="https://developer.mozilla.org/@api/deki/files/4603/=ex52.png" width="159" height="81" alt="TeXbook, 18.41" /></td> +<td> +<math display="block"> +<mrow> + <mo stretchy="false">{</mo> + <munder> + <mrow> + <mover> + <mrow> + <mpadded width="0em"><mphantom><mo>(</mo></mphantom></mpadded> + <mi>a</mi> + <mo>,</mo> + <mo>...</mo> + <mo>,</mo> + <mi>a</mi> + </mrow> + + <mover> + <mo>&OverBrace;</mo> + <mrow> + <mi>k</mi> + <mtext>&nbsp;</mtext> + <mi>a</mi> + <mtext>'s</mtext> + + </mrow> + </mover> + </mover> + <mo>,</mo> + <mover> + <mrow> + <mpadded width="0em"><mphantom><mo>(</mo></mphantom></mpadded> + <mi>b</mi> + <mo>,</mo> + <mo>...</mo> + <mo>,</mo> + <mi>b</mi> + </mrow> + + <mover> + <mo>&OverBrace;</mo> + <mrow> + <mi>&ell;</mi> + <mtext>&nbsp;</mtext> + <mi>b</mi> + <mtext>'s</mtext> + </mrow> + + </mover> + </mover> + </mrow> + <munder> + <mo>&UnderBrace;</mo> + <mrow> + <mi>k</mi> + <mo>+</mo> + + <mi>&ell;</mi> + <mtext>&nbsp;elements</mtext> + </mrow> + </munder> + </munder> + <mo stretchy="false">}</mo> +</mrow> +</math> +</td></tr> + +<tr> +<td>23</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4604/=ex53.png" width="213" height="108" alt="TeXbook, 18.42" /></td> +<td> +<math display="block"> +<mrow> + <mo>(</mo> + <mtable> + <mtr> + <mtd columnalign="center"> + + <mrow> + <mo>(</mo> + <mtable> + <mtr> + <mtd columnalign="center"> + <mi>a</mi> + </mtd> + <mtd columnalign="center"> + + <mi>b</mi> + </mtd> + </mtr> + <mtr> + <mtd columnalign="center"> + <mi>c</mi> + </mtd> + <mtd columnalign="center"> + + <mi>d</mi> + </mtd> + </mtr> + </mtable> + <mo>)</mo> + </mrow> + </mtd> + <mtd columnalign="center"> + + <mrow> + <mo>(</mo> + <mtable> + <mtr> + <mtd columnalign="center"> + <mi>e</mi> + </mtd> + <mtd columnalign="center"> + + <mi>f</mi> + </mtd> + </mtr> + <mtr> + <mtd columnalign="center"> + <mi>g</mi> + </mtd> + <mtd columnalign="center"> + + <mi>h</mi> + </mtd> + </mtr> + </mtable> + <mo>)</mo> + </mrow> + </mtd> + </mtr> + + <mtr> + <mtd columnalign="center"> + <mn>0</mn> + </mtd> + <mtd columnalign="center"> + <mrow> + <mo>(</mo> + <mtable> + + <mtr> + <mtd columnalign="center"> + <mi>i</mi> + </mtd> + <mtd columnalign="center"> + <mi>j</mi> + </mtd> + </mtr> + + <mtr> + <mtd columnalign="center"> + <mi>k</mi> + </mtd> + <mtd columnalign="center"> + <mi>l</mi> + </mtd> + </mtr> + + </mtable> + <mo>)</mo> + </mrow> + </mtd> + </mtr> + </mtable> + <mo>)</mo> +</mrow> + +</math> +</td></tr> + +<tr> +<td>24</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4605/=ex54.png" width="344" height="130" alt="TeXbook, 18.43" /></td> +<td> +<math display="block"> +<mrow> + <mi>det</mi> + <mo>|</mo> + <mtable> + + <mtr> + <mtd columnalign="center"> + <msub> + <mi>c</mi> + <mn>0</mn> + </msub> + </mtd> + <mtd columnalign="center"> + + <msub> + <mi>c</mi> + <mn>1</mn> + </msub> + </mtd> + <mtd columnalign="center"> + <msub> + <mi>c</mi> + + <mn>2</mn> + </msub> + </mtd> + <mtd columnalign="center"> + <mo>&mldr;</mo> + </mtd> + <mtd columnalign="center"> + <msub> + + <mi>c</mi> + <mi>n</mi> + </msub> + </mtd> + </mtr> + <mtr> + <mtd columnalign="center"> + <msub> + + <mi>c</mi> + <mn>1</mn> + </msub> + </mtd> + <mtd columnalign="center"> + <msub> + <mi>c</mi> + + <mn>2</mn> + </msub> + </mtd> + <mtd columnalign="center"> + <msub> + <mi>c</mi> + <mn>3</mn> + + </msub> + </mtd> + <mtd columnalign="center"> + <mo>&mldr;</mo> + </mtd> + <mtd columnalign="center"> + <msub> + <mi>c</mi> + + <mrow> + <mi>n</mi> + <mo>+</mo> + <mn>1</mn> + </mrow> + </msub> + </mtd> + + </mtr> + <mtr> + <mtd columnalign="center"> + <msub> + <mi>c</mi> + <mn>2</mn> + </msub> + </mtd> + + <mtd columnalign="center"> + <msub> + <mi>c</mi> + <mn>3</mn> + </msub> + </mtd> + <mtd columnalign="center"> + <msub> + + <mi>c</mi> + <mn>4</mn> + </msub> + </mtd> + <mtd columnalign="center"> + <mo>&mldr;</mo> + </mtd> + <mtd columnalign="center"> + + <msub> + <mi>c</mi> + <mrow> + <mi>n</mi> + <mo>+</mo> + <mn>2</mn> + </mrow> + + </msub> + </mtd> + </mtr> + <mtr> + <mtd columnalign="center"> + <mo>&#x22EE;</mo> + </mtd> + <mtd columnalign="center"> + <mo>&#x22EE;</mo> + + </mtd> + <mtd columnalign="center"> + <mo>&#x22EE;</mo> + </mtd> + <mtd columnalign="center"> + </mtd> + <mtd columnalign="center"> + <mo>&#x22EE;</mo> + </mtd> + + </mtr> + <mtr> + <mtd columnalign="center"> + <msub> + <mi>c</mi> + <mi>n</mi> + </msub> + </mtd> + + <mtd columnalign="center"> + <msub> + <mi>c</mi> + <mrow> + <mi>n</mi> + <mo>+</mo> + <mn>1</mn> + + </mrow> + </msub> + </mtd> + <mtd columnalign="center"> + <msub> + <mi>c</mi> + <mrow> + <mi>n</mi> + + <mo>+</mo> + <mn>2</mn> + </mrow> + </msub> + </mtd> + <mtd columnalign="center"> + <mo>&mldr;</mo> + </mtd> + + <mtd columnalign="center"> + <msub> + <mi>c</mi> + <mrow> + <mn>2</mn> + <mi>n</mi> + </mrow> + + </msub> + </mtd> + </mtr> + </mtable> + <mo>|</mo> + <mo>&gt;</mo> + <mn>0</mn> +</mrow> + +</math> +</td></tr> + +<tr> +<td>25</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4598/=ex6.png" width="25" height="14" alt="TeXbook, 16.2-16.3" /></td> +<td> +<math display="block"> +<msub> + <mi>y</mi> + <msub> + <mi>x</mi> + + <mn>2</mn> + </msub> +</msub> +</math> +</td></tr> + +<tr> +<td>26</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4583/=ex7.png" width="90" height="23" alt="TeXbook, 16.4-16.5" /></td> +<td> +<math display="block"> +<mrow> + <msubsup> + + <mi>x</mi> + <mn>92</mn> + <mn>31415</mn> + </msubsup> + <mo>+</mo> + <mi>&pi;</mi> +</mrow> + +</math> +</td></tr> + +<tr> +<td>27</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4584/=ex8.png" width="27" height="36" alt="TeXbook, 16.4-16.5" /></td> +<td> +<math display="block"> +<msubsup> + <mi>x</mi> + <msubsup> + <mi>y</mi> + + <mi>b</mi> + <mi>a</mi> + </msubsup> + <msubsup> + <mi>z</mi> + <mi>c</mi> + <mi>d</mi> + + </msubsup> +</msubsup> +</math> +</td></tr> + +<tr> +<td>28</td> +<td><img src="https://developer.mozilla.org/@api/deki/files/4585/=ex9.png" width="24" height="22" alt="TeXbook, 16.4-16.5" /></td> +<td> +<math display="block"> +<msubsup> + <mi>y</mi> + <mn>3</mn> + + <mrow> + <mo>&prime;</mo> + <mo>&prime;</mo> + <mo>&prime;</mo> + </mrow> +</msubsup> +</math> + +</td></tr> +</table></pre> + <h3 id="CSS_Content">CSS Content</h3> + <pre class="brush: css"> /* Table style */ + + body { + text-align: center; + } + + table + { + border: solid thin; + border-collapse: collapse; + margin-left: auto; + margin-right: auto; + } + + th + { + background-color: #ddf; + border: solid thin; + color: black; + padding: 5px; + } + + td + { + border: solid thin; + padding: 5px; + text-align: center; + } + + /* Asana */ + + .Asana ::-moz-math-stretchy { + font-family: Asana Math; + } + + .Asana math, .Asana [mathvariant] { + font-family: Asana Math; + } + + .Asana [mathvariant="sans-serif"], + .Asana [mathvariant="bold-sans-serif"], + .Asana [mathvariant="sans-serif-italic"], + .Asana [mathvariant="sans-serif-bold-italic"] { + font-family: sans-serif; + } + + .Asana [mathvariant="monospace"] { + font-family: monospace; + } + + /* MathJax */ + + .MathJax ::-moz-math-stretchy { + font-family: MathJax_Main; + } + + .MathJax math, .MathJax [mathvariant] { + font-family: MathJax_Main; + } + + .MathJax [mathvariant="sans-serif"], + .MathJax [mathvariant="bold-sans-serif"], + .MathJax [mathvariant="sans-serif-italic"] + .MathJax [mathvariant="sans-serif-bold-italic"] { + font-family: MathJax_SansSerif; + } + + .MathJax [mathvariant="monospace"] { + font-family: MathJax_Typewriter; + } + + .MathJax [mathvariant="fraktur"], + .MathJax [mathvariant="bold-fraktur"] { + font-family: MathJax_Fraktur; + } + + .MathJax [mathvariant="script"], + .MathJax [mathvariant="bold-script"] { + font-family: MathJax_Script; + } + + .MathJax [mathvariant="double-struck"] { + font-family: MathJax_AMS; + } + + /* STIX */ + + .STIX ::-moz-math-stretchy { + font-family: STIXNonUnicode, STIXSizeOneSym, STIXSize1, STIXGeneral; + } + + .STIX math, .STIX [mathvariant] { + font-family: STIXGeneral; + } + + .STIX [mathvariant="sans-serif"], + .STIX [mathvariant="bold-sans-serif"], + .STIX [mathvariant="sans-serif-italic"], + .STIX [mathvariant="sans-serif-bold-italic"] { + font-family: sans-serif; + } + + .STIX [mathvariant="monospace"] { + font-family: monospace; + } + + /**** Experimental Open Type MATH fonts ****/ + + /* AsanaExp */ + .AsanaExp math { + font-family: Asana Math; + } + + /* Cambria */ + .Cambria math { + font-family: Cambria Math; + } + + /* TeXGyreBonum */ + .TeXGyreBonum math { + font-family: TeX Gyre Bonum Math; + } + + /* TeXGyrePagella */ + .TeXGyrePagella math { + font-family: TeX Gyre Pagella Math; + } + + /* TeXGyreTermes */ + .TeXGyreTermes math { + font-family: TeX Gyre Termes Math; + } + + /* LatinModern */ + .LatinModern math { + font-family: Latin Modern Math; + } + + /* Lucida */ + .Lucida math { + font-family: Lucida Bright Math; + } + + /* NeoEuler */ + .NeoEuler math { + font-family: Neo Euler; + } + + /* STIXWord */ + .STIXWord math { + font-family: STIX Math; + } + + /* XITS */ + .XITS math { + font-family: XITS Math; + } + + /* XITS RTL */ + .XITSRTL math { + font-family: XITS Math; + direction: rtl; + } + +</pre> + <h3 id="JavaScript_Content">JavaScript Content</h3> + <pre class="brush: js"> function updateMathFont() + { + var mathFont = document.getElementById("MathFont").value; + if (mathFont == "Default") { + document.body.removeAttribute("class"); + } else { + document.body.setAttribute("class", mathFont); + } + } + + function load() + { + document.getElementById("MathFont"). + addEventListener("change", updateMathFont, false) + } + + window.addEventListener("load", load, false); + +</pre> +</div> +<p>Note: Afin d'obtenir le meilleur rendu pour les équations ci-dessous, assurez-vous d'avoir les <a href="/en-US/docs/Mozilla_MathML_Project/Fonts" title="/en-US/docs/Mozilla_MathML_Project/Fonts">polices mathématiques</a> installées. Cette page contient également plus d'informations sur les <a href="https://developer.mozilla.org/en-US/docs/Mozilla/MathML_Project/Fonts#Experimental_Fonts_with_a_MATH_table">polices expérimentales avec une table MATH</a>, qui ne sont pas encore supportées ( voir aussi cette <a href="http://www.maths-informatique-jeux.com/ulule/mathml_torture_test/">version utilisant les Web fonts</a>).</p> +<p> </p> +<p>{{ EmbedLiveSample('MathML_Torture_Test', '100%', '2500px') }}</p> +<div id="cke_pastebin" style="position: absolute; top: 74.6667px; width: 1px; height: 1px; overflow: hidden; left: -1000px;"> + <br> + </div> diff --git a/files/fr/mozilla/mobile/balise_meta_viewport/index.html b/files/fr/mozilla/mobile/balise_meta_viewport/index.html new file mode 100644 index 0000000000..d1914b3c92 --- /dev/null +++ b/files/fr/mozilla/mobile/balise_meta_viewport/index.html @@ -0,0 +1,80 @@ +--- +title: >- + Utiliser la balise meta viewport pour contrôler la mise en page sur les + navigateurs mobiles +slug: Mozilla/Mobile/Balise_meta_viewport +translation_of: Mozilla/Mobile/Viewport_meta_tag +--- +<p>Les nouvelles fonctionnalités de la version à venir de <a class="link-https" href="https://wiki.mozilla.org/Mobile/Fennec">Firefox Mobile (Fennec)</a>, 1.1, ont amélioré le support pour la balise <code><meta name="viewport"></code>. Les versions précédentes supportaient les propriétés <code>width</code>, <code>height</code>, et <code>initial-scale</code> de la balise <em>viewport</em>, mais étaient <a class="external" href="http://starkravingfinkle.org/blog/2010/01/perils-of-the-viewport-meta-tag/">problématiques</a> avec certains sites prévus pour les navigateurs iPhone et Android. Nous supportons désormais les mêmes propriétés que Safari Mobile, et nous avons également amélioré Fennec pour permettre au rendu d'être plus cohérent entre les différentes tailles et résolutions d'écrans.</p> + +<p class="caption">touch.facebook.com avant :</p> + +<p class="figure"><img alt="05-11-fennec-meta-viewport-2.png" class="default internal" src="/@api/deki/files/4371/=05-11-fennec-meta-viewport-2.png"></p> + +<p class="caption">touch.facebook.com après :</p> + +<p class="figure"><img alt="05-11-fennec-meta-viewport-1.png" class="default internal" src="/@api/deki/files/4372/=05-11-fennec-meta-viewport-1.png"></p> + +<p>Vous pouvez tester les changements par vous-même dans la dernière version de <a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-1.9.2/">Fennec (1.1)</a> et les dernières <a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-trunk/">principales</a> <em>nightly builds</em> pour Maemo, Windows, Mac, et Linux.</p> + +<h2 id="Trame">Trame</h2> + +<p>Les navigateurs mobiles tels que Fennec affichent les pages dans une « fenêtre » virtuelle (le <em>viewport</em>), souvent plus large que l'écran, afin d'éviter de devoir rétrécir chaque configuration de page dans une petite fenêtre (ce qui provoquerait un mauvais affichage de beaucoup de sites non-optimisés pour les mobiles). Les utilisateurs peuvent ensuite se déplacer et zoomer pour visualiser les différentes parties de la page.</p> + +<p>Safari Mobile a créé la « balise meta <em>viewport</em> » pour permettre aux développeurs web de contrôler la taille et l'échelle du <em>viewport</em>. Beaucoup d'autres navigateurs mobiles supportent désormais cette balise, bien qu'elle ne soit pas standardisée. La <a class="external" href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html#//apple_ref/doc/uid/TP40006509-SW29" style="line-height: 1.5;">documentation</a><span style="line-height: 1.5;"> de Apple explique plutôt bien comment les développeurs peuvent utiliser ce tag, mais nous avons du effectuer des recherches plus approfondies pour trouver la bonne implémentation pour Fennec. Par exemple, la documentation de Safari dit que le contenu de la balise est une « liste de valeurs séparées par des virgules », mais les navigateurs existants utilisent en fait n'importe quel mélange de virgules, points-virgules et d'espaces en tant que séparateurs.</span></p> + +<p>Apprenez-en plus sur les <em>viewports</em> dans les différents navigateurs mobiles dans l'article <a class="external" href="http://www.quirksmode.org/mobile/viewports2.html" title="http://www.quirksmode.org/mobile/viewports2.html">A Tale of Two Viewports (en)</a> sur quirksmode.org.</p> + +<h2 id="Les_bases_du_viewport">Les bases du <em>viewport</em></h2> + +<p>La plupart des sites optimisés pour les mobiles utilisent une balise comme la suivante :</p> + +<pre class="notranslate"><meta name="viewport" content="width=device-width, initial-scale=1.0"></pre> + +<p>La propriété <code>width</code> contrôle la taille du <em>viewport</em>. Elle peut être réglée à une valeur précise de pixels, comme <code>width=600</code>, ou bien à la valeur spéciale <code>device-width</code> qui correspond à la largeur de l'écran en pixels CSS à l'échelle 100%. (Il existe les propriétés et valeurs <code>height</code> et <code>device-height</code> correspondantes, qui peuvent être utiles pour les pages contenant des éléments qui changent de taille ou de position en fonction de la hauteur du <em>viewport</em>.)</p> + +<p>La propriété <code>initial-scale</code> contrôle le niveau de zoom lorsque la page est chargée pour la première fois. Les propriétés <code>maximum-scale</code>, <code>minimum-scale</code>, et <code>user-scalable</code> contrôlent la manière dont les utilisateurs sont autorisés à zoomer ou dézoomer une page.</p> + +<div class="blockIndicator warning"> +<p>Empêcher le zoom peut poser des problèmes d'accessibilité aux usagers avec une déficience visuelle.</p> +</div> + +<h2 id="Un_pixel_nest_pas_un_pixel">Un pixel n'est pas un pixel</h2> + +<p>L'iPhone et beaucoup de téléphones Android possèdent des écrans 3 à 4 pouces (7 à 10 cm) avec 320 à 480 pixels (environ 160 dpi). Firefox pour Maemo s'exécute sur le Nokia N900, qui a la même taille mais entre 480 et 800 pixels (environ 240 dpi). À cause de cela, la précédente version de Fennec affichait beaucoup de pages un tiers plus petit (en taille réelle) que l'iPhone ou les systèmes Android. Cela causait des problèmes de lecture et d'utilisation sur beaucoup de sites optimisés pour le tactile. Peter-Paul Koch a écrit sur ce sujet dans son article <a class="external" href="http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html" style="line-height: 1.5;">A pixel is not a pixel is not a pixel (en)</a><span style="line-height: 1.5;">.</span></p> + +<p>Fennec 1.1 pour Maemo utilisera 1,5 pixels matériels pour chaque « pixel » CSS, suivant ainsi le comportement des navigateurs pour Android basés sur WebKit. Cela signifie qu'une page à<span style="line-height: 1.5;"> </span><code style="font-size: 14px;">initial-scale=1</code><span style="line-height: 1.5;"> sera affichée pratiquement à la même taille réelle sur Fennec pour Maemo, Safari Mobile pour iPhone et le navigateur Android sur les téléphones </span><a class="external" href="http://developer.android.com/guide/practices/screens_support.html#range" style="line-height: 1.5;">HDPI et MDPI (en)</a>, ce qui coïncide avec la<span style="line-height: 1.5;"> </span><a class="external" href="http://www.w3.org/TR/CSS2/syndata.html#length-units" style="line-height: 1.5;">spécification CSS 2.1</a>,<span style="line-height: 1.5;"> qui dit :</span></p> + +<blockquote> +<p>Si la résolution du périphérique d'affichage est vraiment différente de celle moyenne des ordinateurs, le navigateur doit remettre à l'échelle les valeurs des pixels. Il est recommandé que l'unité des pixels renvoie à l'unité la plus proche du celle référence correspondant au nombre total des pixels de l'appareil. Il est également recommandé que l'unité de référence soit de l'envergure visuelle d'un pixel sur un périphérique avec une résolution de 96 dpi à une distance d'un bras du lecteur.</p> +</blockquote> + +<p>Pour les développeurs, cela signifie que 320 pixels doivent être en pleine largeur en mode portrait à une échelle 1 sur tous les périphériques de poche mentionnés ci-dessus, et qu'ils peuvent, en sachant cela, redimensionner leurs mises en page et images. Mais rappelez-vous que tous les périphériques mobiles ne sont pas de la même largeur ; vous devriez également vous assurer que vos pages fonctionnent correctement en mode paysage, et sur tous les appareils plus larges tels que l'iPad et les tablettes Android.</p> + +<p>Sur des écrans à 240 dpi, les pages à<span style="line-height: 1.5;"> </span><code style="font-size: 14px;">initial-scale=1</code><span style="line-height: 1.5;"> seront mis à échelle 1,5 par Fennec et Android WebKit. Leur texte sera lissé et mis à l'échelle en conséquence, mais leurs images pourraient ne pas tirer profit de la résolution plein-écran. Pour obtenir des images plus nettes sur ces écrans, les développeurs web peuvent prévoir les images - ou les mises en pages complètes - à une échelle 150% (ou 200% pour supporter les périphériques à 320 dpi comme les iPhone à écrans retina) puis réduire leur échelle par la suite à l'aide de propriétés du <em>viewport</em> ou de CSS.</span></p> + +<p>Le ratio par défaut dépend de la résolution. Lorsqu'elle est inférieure à 200 dpi, le ratio sera de 1,0. Entre 200 et 300 dpi, il s'élèvera à 1,5. Au delà, il vaut <code>floor(densité / 150 dpi)</code>. Notez que le ratio par défaut est avéré uniquement lorsque l'échelle du <em>viewport</em> vaut 1. Sinon, la relation entre pixels CSS et pixels matériels dépend du niveau de zoom actuel.</p> + +<h2 id="Largeur_du_viewport_et_largeur_de_lécran">Largeur du <em>viewport</em> et largeur de l'écran</h2> + +<p>Beaucoup de sites configurent leur <em>viewport</em> à <code style="font-size: 14px;">"width=320, initial-scale=1"</code><span style="line-height: 1.5;"> pour correspondre précisément à la configuration d'un iPhone en mode portrait. Comme mentionné ci-dessus, cela a provoqué des</span><span style="line-height: 1.5;"> </span><a class="external" href="http://starkravingfinkle.org/blog/2010/01/perils-of-the-viewport-meta-tag/" style="line-height: 1.5;">problèmes</a><span style="line-height: 1.5;"> lors du rendu de ces sites sous Fennec 1.0, tout particulièrement en mode paysage. Pour empêcher cela, Fennec 1.1 étendra la largeur du <em>viewport</em> si nécessaire pour remplir l'écran à l'échelle définie. Cela suit le comportement d'Android et de Safari Mobile, et est surtout utile sur les périphériques à écrans larges comme l'iPad. (Allen Pike en fournit une bonne éxplication pour les développeurs dans son article </span><a class="external" href="http://www.antipode.ca/2010/choosing-a-viewport-for-ipad-sites/" style="line-height: 1.5;">Choosing a viewport for iPad sites</a>.)</p> + +<p>Pour les pages qui définissent une largeur initiale ou maximale, cela signifie que la propriété <code>width</code> est en réalité interprétée en tant qu'une largeur <strong>minimale<em> </em></strong>du <em>viewport</em>. Par exemple, si votre mise en page nécessite au moins 500 pixels de largeur, vous pouvez utiliser le code suivant. Lorsque l'écran est plus grand que 500 pixels, le navigateur étendra le <em>viewport</em> (au lieu de zoomer) jusqu'à la largeur de l'écran :</p> + +<pre class="notranslate"><meta name="viewport" content="width=500, initial-scale=1"></pre> + +<p>Fennec 1.1 supporte également <code>minimum-scale</code>, <code>maximum-scale</code>, and <code>user-scalable</code>, avec les défauts et les limites de <a class="external" href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html">Safari</a>. Ces propriétés affectent l'échelle et la largeur initiales, en plus de limiter les changements dans le niveau de zoom.</p> + +<p>Les navigateurs mobiles gèrent les changements d'orientation différemment. Par exemple, Safari Mobile zoome souvent simplement sur la page lors du changement portrait vers paysage, au lieu d'afficher la page telle qu'elle aurait du l'être si elle avait été chargée à la base en paysage. Si les développeurs web souhaitent garder une certaine logique dans leurs paramètres de mise à l'échelle lors du changement d'orientation sur iPhone, ils doivent ajouter une valeur <code>maximum-scale</code> pour empêcher ce zoom, ce qui empêche parfois les utilisateurs de zoomer :</p> + +<pre class="notranslate"><meta name="viewport" content="initial-scale=1, maximum-scale=1"></pre> + +<p>Cela n'est pas nécessaire sur Fennec : lorsque le périphérique change d'orientation, Fennec rafraîchit la taille du <em>viewport</em>, la mise en page, et les propriétés JavaScript/CSS telles que <code>device-width</code>, en fonction des nouvelles dimensions de la fenêtre.</p> + +<h2 id="Tailles_communes_de_viewport_pour_les_périphériques_mobiles_et_tablettes">Tailles communes de <em>viewport</em> pour les périphériques mobiles et tablettes</h2> + +<p>Si vous souhaitez connaître les largeurs de <em>viewport</em> des périphériques mobiles et tablettes les plus communs, il existe une liste complète des<span style="line-height: 1.5;"> </span><a href="https://docs.adobe.com/content/help/fr-FR/target/using/experiences/vec/mobile-viewports.translate.html" style="line-height: 1.5;" title="http://i-skool.co.uk/mobile-development/web-design-for-mobiles-and-tablets-viewport-sizes/">tailles de <em>viewport</em> sur mobiles et tablettes ici</a><span style="line-height: 1.5;">. Elle vous donnera des informations telles que la largeur du <em>viewport</em> en orientation portrait et paysage, ainsi que la taille physique de l'écran, le système d'exploitation et la résolution du périphérique.</span></p> + +<h2 id="Standardisation">Standardisation</h2> + +<p>Il y a une claire demande à propos de la balise meta <em>viewport</em>, puisqu'elle est supportée par la plupart des navigateurs mobiles populaires et utilisée par des milliers de sites web. Il serait bien d'avoir un standard réel pour le contrôle des propriétés du <em>viewport</em> sur les pages. D'après la spécification HTML5, les extensions à la balise <font face="Courier New, Andale Mono, monospace"><span style="line-height: normal;">meta</span></font> doivent d'abord être enregistrées sur le <a class="external" href="http://wiki.whatwg.org/wiki/MetaExtensions" style="line-height: 1.5;">wiki WHATWG</a><span style="line-height: 1.5;"> avant d'entrer dans le processus de standardisation W3C. Si cela arrive, Mozilla s'assurera d'implémenter tout changement fait pendant la standardisation.</span></p> diff --git a/files/fr/mozilla/mobile/index.html b/files/fr/mozilla/mobile/index.html new file mode 100644 index 0000000000..7a31704260 --- /dev/null +++ b/files/fr/mozilla/mobile/index.html @@ -0,0 +1,22 @@ +--- +title: Mobile +slug: Mozilla/Mobile +translation_of: Mozilla/Mobile +--- +<h2 id="Firefox_OS"><a href="/fr/docs/Archive/B2G_OS" title="Boot to Gecko">Firefox OS</a></h2> + +<p>Firefox OS est un système d'exploitation pour mobile Open Source qui utilise Linux et le moteur de rendu de Mozilla, Gecko pour fournir une interface utilisateur et un ensemble d'applications entièrement écrites en HTML, CSS et JavaScript.<br> + <br> + Apprenez à installer Firefox OS et à développer des applications pour ce dernier.</p> + +<h2 id="Firefox_pour_Android"><a href="/fr/docs/Mozilla/Firefox_pour_Android" title="/fr/docs/Mozilla/Firefox_for_Android">Firefox pour Android</a></h2> + +<p>Firefox pour Android est le navigateur web de Mozilla. Il a été récemment réécrit pour utiliser l'interface utilisateur native d'Android, le rendant ainsi plus rapide, plus léger et plus réactif. Il offre le support de puissantes APIs pour accéder aux capacités de l'appareil telles que l'appareil photo ou la pile de téléphonie.<br> + <br> + Découvrez comment aider à développer Firefox pour Android, comment utiliser ses APIs et comment créer des modules complémentaires pour mobile.</p> + +<h2 id="Développement_Web_pour_mobiles"><a href="/fr/docs/Mobile/Mobile_Web_Development" title="https://developer.mozilla.org/fr/docs/Mobile/Mobile_Web_Development">Développement Web pour mobiles</a></h2> + +<p>Les appareils mobiles ont des caractéristiques physiques très différentes de celles d'un ordinateur de bureau ou d'un ordinateur portable et nombre d'APIs utilisées pour interragir avec eux sont toujours en cours de standardisation.</p> + +<p>Apprenez à développer des sites web avec un bon rendu sur appareils mobiles et profitez des nouvelles possibilités qu'ils vous offrent. Apprenez à rendre vos sites web compatibles avec différents navigateurs web.</p> diff --git a/files/fr/mozilla/mode_presque_standard_de_gecko/index.html b/files/fr/mozilla/mode_presque_standard_de_gecko/index.html new file mode 100644 index 0000000000..98b15c4dca --- /dev/null +++ b/files/fr/mozilla/mode_presque_standard_de_gecko/index.html @@ -0,0 +1,75 @@ +--- +title: Mode presque standard de Gecko +slug: Mozilla/Mode_presque_standard_de_Gecko +tags: + - Développement_Web + - Gecko + - Standards_du_Web +translation_of: Mozilla/Gecko_Almost_Standards_Mode +--- +<p><br> + Depuis Mozilla 1.0.1 et 1.1 beta, un nouveau mode de rendu appelé « presque standard » existe. Celui-ci s'ajoute aux modes « <a href="/fr/docs/Web/HTML/Quirks_Mode_and_Standards_Mode">quirks</a> » et « standard » qui existaient depuis un bout de temps.</p> + +<p>Le mode de rendu « presque standard » est exactement le même que le mode « standard » en tous points sauf un : le calcul de la hauteur pour les boites de ligne et certains des éléments en ligne dans celles-ci. Un cas courant de l’impact de cela est le placement des images à l'intérieur des cellules de tableaux. Cela signifie que les mises en page avec des découpages d'images dans des tableaux seront moins probablement mis en pièces dans les navigateurs basés sur Gecko à partir du moteur de rendu de Mozilla 1.0.1 ou supérieur, que ce soit en mode « quirks » ou « presque standard ». (Consultez l'article "<a href="/fr/docs/Archive/Misc_top_level/Images,_tableaux_et_d%C3%A9calages_myst%C3%A9rieux">Images, tableaux et décalages mystérieux</a>" pour une explication détaillée du traitement de ces mises en pages particulières en mode « standard ».)</p> + +<p>En détaillant légèrement plus, voici grossièrement ce qui diffère dans le mode presque standard : les boites en ligne qui n’ont pas de texte hors espaces blancs comme enfant et qui n’ont pas de bordure, <em>padding</em> ou marges :</p> + +<ul> + <li>n’influencent pas la taille de la boite de ligne (autrement dit, leur <a href="/fr/docs/Web/CSS/line-height">hauteur de ligne</a> est ignorée) ;</li> + <li>ne prennent pas une hauteur (par exemple pour leur arrière plan) plus large que celle de leurs descendants, même si leur taille de police est plus large (s’ils n’ont pas de descendant, ils sont positionés à leur ligne de base avec une taille nulle).</li> +</ul> + +<p>À part cette différence, les mode « presque standard » et « standard » sont exactement pareils en termes de mise en page et autres comportements.</p> + +<h3 id="D.C3.A9clenchement_du_mode_.C2.AB_presque_standard_.C2.BB" name="D.C3.A9clenchement_du_mode_.C2.AB_presque_standard_.C2.BB">Déclenchement du mode « presque standard »</h3> + +<p>Les déclarations DOCTYPE qui déclencheront le mode « presque standard » sont celles qui contiennent :</p> + +<ul> + <li>L'identificateur public "<code>-//W3C//DTD XHTML 1.0 Transitional//EN</code>"</li> + <li>L'identificateur public "<code>-//W3C//DTD XHTML 1.0 Frameset//EN</code>"</li> + <li>L'identificateur public "<code>-//W3C//DTD HTML 4.01 Transitional//EN</code>", avec un identificateur système</li> + <li>L'identificateur public "<code>-//W3C//DTD HTML 4.01 Frameset//EN</code>", avec un identificateur système</li> + <li>L'identificateur système IBM "<code><span class="nowiki">http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd</span></code>"</li> +</ul> + +<p>Un DOCTYPE complet contient un identificateur public et un identificateur système. En parlant de DOCTYPE, beaucoup se réfèreront à un DOCTYPE comme étant « avec URI » ou « sans URI ». L'URI est l'identificateur système. Par exemple, examinons le DOCTYPE qui suit :</p> + +<pre><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"></pre> + +<p>Les parties sont les suivantes :</p> + +<ul> + <li>Identificateur public : "<code>-//W3C//DTD HTML 4.01 Transitional//EN</code>"</li> + <li>Identificateur système : "<code><span class="nowiki">http://www.w3.org/TR/html4/loose.dtd</span></code>"</li> +</ul> + +<p>Par conséquent, tout DOCTYPE HTML 4.01 Transitional ou Frameset avec une URI (identificateur système) déclenchera le mode « presque standard », tout comme tout DOCTYPE XHTML 1.0 Transitional ou Frameset, avec ou sans URI. Les auteurs ne faisant pas partie d'IBM n'ont aucune raison de se préoccuper du DOCTYPE personnalisé qui déclenchera aussi le mode « presque standard ».</p> + +<h3 id="Recommandations" name="Recommandations">Recommandations</h3> + +<ul> + <li>Pour les auteurs qui tentent de migrer vers un balisage valide, que ce soit en HTML 4.01 ou XHTML 1.0, et qui utilisent toujours des concepts de mise en page basés sur des images dans des tableaux, assurez-vous d'utiliser un DOCTYPE qui déclenchera le mode « presque standard ».</li> +</ul> + +<h3 id="Aussi_sur_MDC" name="Aussi_sur_MDC">Aussi sur MDC</h3> + +<ul> + <li><a href="/fr/docs/Archive/Misc_top_level/Images,_tableaux_et_d%C3%A9calages_myst%C3%A9rieux">Images, tableaux et décalages mystérieux</a></li> + <li><a href="/fr/docs/Archive/Standards_du_Web/Le_sniffing_de_DOCTYPE_dans_Mozilla">Le sniffing de DOCTYPE dans Mozilla</a></li> + <li><a href="/fr/docs/Web/HTML/Quirks_Mode_and_Standards_Mode">Mode quirks de Mozilla</a></li> +</ul> + + + +<div class="originaldocinfo"> +<h3 id="Informations_sur_le_document_origninal" name="Informations_sur_le_document_origninal">Informations sur le document origninal</h3> + +<ul> + <li>Auteur(s) : Eric A. Meyer, Netscape Communications</li> + <li>Date de dernière mise à jour : Publié le 8 novembre 2002</li> + <li>Copyright : Copyright © 2001-2003 Netscape. Tous droits réservés.</li> + <li>Note : Cet article a été réédité et faisait originellement partie du site DevEdge.</li> +</ul> +</div> diff --git a/files/fr/mozilla/participer_au_projet_mozilla/index.html b/files/fr/mozilla/participer_au_projet_mozilla/index.html new file mode 100644 index 0000000000..168b8847f6 --- /dev/null +++ b/files/fr/mozilla/participer_au_projet_mozilla/index.html @@ -0,0 +1,9 @@ +--- +title: Participer au projet Mozilla +slug: Mozilla/Participer_au_projet_Mozilla +translation_of: Mozilla/Participating_in_the_Mozilla_project +--- +<p>Si vous avez envie d'aider à corriger des bugs et en général de travailler sur le code sur lequel repose la plateforme Mozilla, c'est ici que vous trouverez la documentation qui vous pointera dans la bonne direction.</p> +<table class="mainpage-table"> <tbody> <tr> <td> <h2 id="Documentation">Documentation</h2> <dl> <dt><a class="internal" href="/fr/Guide_de_d%C3%A9veloppement" title="fr/Guide de développement">Guide de développement de Mozilla<br> </a></dt> <dd>Astuces et guides de développement pour contribuer au code de Mozilla.</dd> <dt><a class="internal" href="/fr/Developer_Guide/Source_Code" title="fr/Code source de Mozilla">Code source de Mozilla</a><br> </dt> <dd>Informations sur l'obtention du code de Mozilla, par téléchargement ou contrôle de version, et sur la manière d'y faire incorporer votre code.<br> </dd> <dt><a class="internal" href="/fr/Guide_de_d%C3%A9veloppement/Instructions_de_compilation" title="fr/Documentation sur la compilation">Documentation sur la compilation</a><br> </dt> <dd>Informations sur la compilation des différents projets Mozilla, dont Firefox et Thunderbird.<br> </dd> <dt><a class="internal" href="/fr/La%20plateforme%20Mozilla" title="fr/La plateforme Mozilla">La plateforme Mozilla</a><br> </dt> <dd>Informations sur la plateforme Mozilla, toutes ses technologies et API, ainsi que la manière de les utiliser dans vos propres projets.</dd> <dt><a class="internal" href="/Project:fr/Comment_aider" title="Project:fr/Comment aider">Documentation de Mozilla</a><br> </dt> <dd>Aidez-nous à créer et améliorer notre documentation pour Mozilla et le web ouvert.</dd> <dt><a class="internal" href="/fr/D%C3%A9bogage" title="fr/Débogage">Débogage</a><br> </dt> <dd>Astuces et recommandations à suivre lors du débogage du code de Mozilla.</dd> <dt><a class="internal" href="/fr/Qualit%C3%A9" title="fr/Qualité">Assurance qualité</a><br> </dt> <dd>Informations sur les tests et le suivi des bugs.</dd> <dt><a class="internal" href="/fr/Localisation" title="fr/Localisation">Localisation</a><br> </dt> <dd>Documentation sur la traduction des projets Mozilla, de la documentation, et d'autres informations dans de nombreuses langues.</dd> </dl> </td> <td> <h2 id="Outils">Outils</h2> <dl> <dt><a class="link-https" href="https://bugzilla.mozilla.org/" title="https://bugzilla.mozilla.org/">Bugzilla</a><br> </dt> <dd>La base de données <a class="internal" href="/fr/Bugzilla" title="fr/Bugzilla">Bugzilla</a> utilisée pour suivre les problèmes dans les projets Mozilla.<br> </dd> <dt><a class="external" href="http://mxr.mozilla.org/" title="http://mxr.mozilla.org/">MXR</a><br> </dt> <dd>Parcourir et effectuer des recherches dans le référentiel du code source de Mozilla sur le web.<br> </dd> <dt><a class="external" href="http://bonsai.mozilla.org/cvsqueryform.cgi" title="http://bonsai.mozilla.org/cvsqueryform.cgi">Bonsai</a><br> </dt> <dd>L'outil <a class="internal" href="/fr/Bonsai" title="fr/Bonsai">Bonsai</a> permet de savoir qui a changé quel fichier du référentiel, et dans quel but.<br> </dd> <dt><a class="external" href="http://tinderbox.mozilla.org/showbuilds.cgi" title="http://tinderbox.mozilla.org/showbuilds.cgi">Tinderbox</a><br> </dt> <dd><a class="internal" href="/fr/Tinderbox" title="fr/Tinderbox">Tinderbox</a> affiche l'état de l'arbre afin de savoir s'il est actuellement en état de compiler. À vérifier avant d'intégrer ou de récupérer du code, pour s'assurer de travailler avec un arbre fonctionnel.</dd> <dt><a class="internal" href="/fr/Rapports_de_plantage" title="fr/Rapports de plantage">Rapports de plantage</a><br> </dt> <dd>Informations sur les systèmes de rapports de plantages <a class="link-https" href="https://crash-reports.mozilla.com/reports" title="https://crash-reports.mozilla.com/reports">Socorro</a> et <a class="external" href="http://talkback-public.mozilla.org/search/start.jsp" title="http://talkback-public.mozilla.org/search/start.jsp">Talkback</a>.</dd> <dt><a class="external" href="http://graphs.mozilla.org/" title="http://graphs.mozilla.org/">Suivi des performances</a><br> </dt> <dd>Consultez des informations de performances à propos des projets Mozilla.</dd> <dt><a class="external" href="http://www.mozilla.org/community/developer-forums.html" title="http://www.mozilla.org/community/developer-forums.html">Forums de développement</a><br> </dt> <dd>Une liste de forums de discussion classés par sujet où vous pouvez parler de vos problèmes de développement liés à Mozilla.<br> </dd> </dl> </td> </tr> </tbody> +</table> +<p> {{ languages( { "en": "en/Participating_in_the_Mozilla_project", "ja": "ja/Participating_in_the_Mozilla_project"} ) }}</p> diff --git a/files/fr/mozilla/preferences/index.html b/files/fr/mozilla/preferences/index.html new file mode 100644 index 0000000000..fe792aff80 --- /dev/null +++ b/files/fr/mozilla/preferences/index.html @@ -0,0 +1,53 @@ +--- +title: Preferences +slug: Mozilla/Preferences +tags: + - TopicStub +translation_of: Mozilla/Preferences +--- +<p>Le système de préférences permet de stocker des données pour les applications Mozilla à l'aide d'un système d'appariement clé / valeur. Ces articles fournissent des informations sur l'utilisation du système de préférences.</p> + +<table class="topicpage-table"> + <tbody> + <tr> + <td> + <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2> + + <dl> + <dt><a href="/en-US/docs/Preferences/Preferences_system" title="Preferences/Preferences system">Système de préférences</a></dt> + <dd>Une introduction à l'utilisation du système de préférences dans Mozilla.</dd> + <dt><a href="/en-US/docs/XUL_School/Handling_Preferences" title="XUL School/Handling Preferences">XUL School: gestion des préférences</a></dt> + <dd>Le chapitre du tutoriel XUL School sur les préférences.</dd> + <dt><a href="/en-US/docs/Preferences/Preference_reference" title="Preferences/Preference_reference">Référence de préférence Mozilla</a></dt> + <dd>Un guide de référence pour toutes les préférences de Mozilla; actuellement un travail en cours.</dd> + <dt><a href="/en-US/docs/Preferences/A_brief_guide_to_Mozilla_preferences" title="Preferences/A brief guide to Mozilla preferences">Un bref guide des préférences de Mozilla</a></dt> + <dd>Un guide d'introduction sur l'emplacement de stockage des préférences et d'autres informations utiles sur le système de préférences de base.</dd> + <dt><a href="/en-US/docs/Preferences/Using_preferences_from_application_code" title="Preferences/Using preferences from application code">Utilisation des préférences du code d'application</a> {{gecko_minversion_inline("6.0")}}</dt> + <dd>Firefox 6 Firefox 6 a introduit des fonctions statiques pour accéder efficacement aux préférences à partir du code d'application. Cette API n'est pas disponible pour les modules complémentaires, mais si vous travaillez sur une application Gecko, cette API est le moyen préféré d'accéder aux préférences.</dd> + <dt><a href="/en-US/docs/Preferences/Mozilla_networking_preferences" title="Preferences/Mozilla networking preferences">Préférences de mise en réseau de Mozilla</a></dt> + <dd>Un guide des principales préférences liées au réseautage.</dd> + <dt><a href="/en-US/docs/Preferences/Mozilla_preferences_for_uber-geeks" title="Preferences/Mozilla preferences for uber-geeks">Préférences de Mozilla pour les super-geeks</a></dt> + <dd>Un guide des préférences avec lesquelles seuls les geeks d'élite devraient jouer.</dd> + </dl> + + <p><span class="alllinks"><a href="/en-US/docs/tag/Preferences" title="tag/Preferences">Afficher toutes les pages marquées avec "Préférences"...</a></span></p> + </td> + <td> + <h2 class="Community" id="Examples" name="Examples">Exemples</h2> + + <dl> + <dt><a href="/en-US/docs/Code_snippets/Preferences" title="Code snippets/Preferences">Extraits de code</a></dt> + <dd>Extraits de code liés aux préférences.</dd> + <dt><a href="/en-US/docs/Adding_preferences_to_an_extension" title="Adding preferences to an extension">Ajout de préférences à une extension</a></dt> + <dd>Comment ajouter des préférences à une extension existante.</dd> + </dl> + + <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Rubriques connexes</h2> + + <ul> + <li><a href="/en-US/docs/XUL" title="XUL">XUL</a>, <a href="/en-US/docs/JavaScript" title="JavaScript">JavaScript</a>, <a href="/en-US/docs/XPCOM" title="XPCOM">XPCOM</a>, <a href="/en-US/docs/Extensions" title="Extensions">Extensions</a>, <a href="/en-US/docs/Developer_Guide" title="Developing_Mozilla">Développement de Mozilla</a></li> + </ul> + </td> + </tr> + </tbody> +</table> diff --git a/files/fr/mozilla/projects/emscripten/index.html b/files/fr/mozilla/projects/emscripten/index.html new file mode 100644 index 0000000000..842caea844 --- /dev/null +++ b/files/fr/mozilla/projects/emscripten/index.html @@ -0,0 +1,37 @@ +--- +title: Emscripten +slug: Mozilla/Projects/Emscripten +translation_of: Mozilla/Projects/Emscripten +--- +<p><span class="seoSummary">Emscripten est un compilateur depuis LLVM vers le JavaScript. Il prend du bytecode LLVM (p. ex. généré depuis le C/C++ en utilisant Clang, ou depuis un autre langage) et le compile en JavaScript, qui peut être exécuté sur le Web.</span></p> + +<div class="warning"> +<p><strong>Important</strong> : Cette page fournit une brève introduction à ce qu'est Emscripten. Pour démarrer avec Emscripten, <a href="http://kripken.github.io/emscripten-site/index.html">allez sur le Wiki officiel d'Emscripten</a>.</p> +</div> + +<p>Avec Emscripten, vous pouvez</p> + +<ul> + <li>Compiler du code C et C++ en JavaScript</li> + <li>Compiler n'importe quel autre code qui peut être traduit depuis du bytecode LLVM vers du JavaScript.</li> + <li>Compiler les environnements d'exécution C/C++ d'autres langages, en JavaScript et ensuite exécuter du code dans ces langages indirectement (ceci a déjà été fait pour Python et Lua) !</li> +</ul> + +<p>Emscripten rend le code natif disponible immédiatement sur le Web : qui est une plateforme basée sur les standards, a de nombreuses implémentations indépendentes mais compatibles et qui s'exécute partout, depuis les PCs jusqu'aux iPads.</p> + +<p>Avec Emscripten, les développeurs C/C++ n'ont pas à supporter le coût élevé d'un portage manuel vers le JavaScript — il n'ont même pas à l'apprendre. Les développeurs Web en bénéficient également, puisqu'ils peuvent utilser dans leurs sites Web, les quelques milliers d'utilitaires et bibliothèques nativent qui existent déjà.</p> + +<p>À peu près n'importe quelle base de code portable, en C ou C++, peut être compilée en JavaScript à l'aide d'Emscripten, depuis les jeux haute performance qui doivent faire du rendu graphique, jouer du son et charger et traiter des fichiers, jusqu'aux cadriciels d'applications tels que Qt.</p> + +<p>Emscripten génère du code rapide — sa sortie par défaut est <a href="/en-US/docs/Games/Tools/asm.js">asm.js</a>, un sous-ensemble hautement optimizable du JavaScript qui s'exécute à une vitesse proche de celle du code natif, dans beaucoup de cas.</p> + +<div class="note"> +<p><strong>Note</strong>: Intéressant n'est-ce pas ? <a href="http://kripken.github.io/emscripten-site/docs/introducing_emscripten/about_emscripten.html">Lisez-en plus à propos d'Emscripten et essayez quelques démos</a>, puis <a href="http://kripken.github.io/emscripten-site/docs/getting_started/index.html">commencez à l'utiliser</a>.</p> +</div> + +<h2 id="Autres_articles_intéressants_sur_MDN">Autres articles intéressants sur MDN</h2> + +<ul> + <li>Notre <a href="/en-US/docs/Games">zone de jeux</a> propose du contenu intéressant lié au développement de jeux, qui est un domaine où Emscripten est fréquemment utilisé.</li> + <li>Notre page de <a href="/en-US/docs/Mozilla/Projects/Emscripten/Techniques">techniques avec Emscripten</a> est un endroit pratique pour stocker les idées utiles liées à Emscripten, qui n'ont pas encore été ajoutées au Wiki d'Emscripten.</li> +</ul> diff --git a/files/fr/mozilla/projects/index.html b/files/fr/mozilla/projects/index.html new file mode 100644 index 0000000000..408359ca13 --- /dev/null +++ b/files/fr/mozilla/projects/index.html @@ -0,0 +1,15 @@ +--- +title: Projects +slug: Mozilla/Projects +tags: + - Mozilla + - NeedsContent + - Projects + - TopicStub +translation_of: Mozilla/Projects +--- +<p>{{ draft() }}</p> + +<p><span class="tlid-translation translation" lang="fr"><span title="">Mozilla a un certain nombre de projets autres que <a href="/fr/docs/Mozilla/Firefox">Firefox</a> lui-même.</span> <span title="">Beaucoup d'entre eux sont des composants de Firefox ou sont des outils utilisés pour créer Firefox, mais peuvent également être utilisés par d'autres projets.</span> <span title="">Vous trouverez ici des liens vers de la documentation sur ces projets.</span></span></p> + +<p>{{ LandingPageListSubpages() }}</p> diff --git a/files/fr/mozilla/projects/rhino/examples/index.html b/files/fr/mozilla/projects/rhino/examples/index.html new file mode 100644 index 0000000000..2347013026 --- /dev/null +++ b/files/fr/mozilla/projects/rhino/examples/index.html @@ -0,0 +1,32 @@ +--- +title: Rhino Examples +slug: Mozilla/Projects/Rhino/Examples +translation_of: Mozilla/Projects/Rhino/Examples +--- +<p>Examples have been provided that show how to control the JavaScript engine and to implement scriptable host objects. All the examples are in the git tree at <code><a href="https://github.com/mozilla/rhino/tree/master/examples/">mozilla/js/rhino/examples</a></code>.</p> +<h2 id="Scripts_Simple"><a id="sample" name="sample">Scripts Simple</a></h2> +<p>Le script <code><a href="https://github.com/mozilla/rhino/tree/master/examples/unique.js">unique.js</a></code> permet d'écrirer une seul ligne depuis un fichier.</p> +<p>Le script <code><a href="https://github.com/mozilla/rhino/tree/master/examples/liveConnect.js">liveConnect.js</a></code> montre un usage simple de LiveConnect (connectivité Java-vers-JavaScript).</p> +<p>Le script <code><a href="https://github.com/mozilla/rhino/tree/master/examples/jsdoc.js">jsdoc.js</a></code> est un analogue en JavaScript de la<code> javadoc</code>. Il permet un usage régulier des "regular expressions".</p> +<p>Le script <code><a href="https://github.com/mozilla/rhino/tree/master/examples/checkParam.js">checkParam.js</a></code> est un outil utile pour vérifier les tags<code> @param</code> dans les commentaires documentation Java qui corresponde au paramètres dans la méthode Java correspondante.</p> +<p>The <code><a href="https://github.com/mozilla/rhino/tree/master/examples/enum.js">enum.js</a></code> script is a good example of using a JavaAdapter to implement a Java interface using a JavaScript object.</p> +<p>The <a href="https://github.com/mozilla/rhino/tree/master/examples/NervousText.js">NervousText.js</a> script is a JavaScript implementation of the famous NervousText applet using JavaScript compiled to Java classes using <a href="jsc.html">jsc</a>. It can be run in the HTML page <a href="https://github.com/mozilla/rhino/tree/master/examples/NervousText.html">NervousText.html</a>.</p> +<h2 id="Controlling_the_JavaScript_Engine"><a id="controlling" name="controlling">Controlling the JavaScript Engine</a></h2> +<h4 id="The_RunScript_class">The RunScript class</h4> +<p><code><a href="https://github.com/mozilla/rhino/tree/master/examples/RunScript.java">RunScript.java</a></code> is a simple program that executes a script from the command line.</p> +<h4 id="The_Control_class">The Control class</h4> +<p><code><a href="https://github.com/mozilla/rhino/tree/master/examples/Control.java">Control.java</a></code> is a program that executes a simple script and then manipulates the result.</p> +<h4 id="JavaScript_Shell">JavaScript Shell</h4> +<p><code><a href="https://github.com/mozilla/rhino/tree/master/examples/Shell.java">Shell.java</a></code> is a program that executes JavaScript programs; it is a simplified version of the shell in the <code>tools</code> package. The programs may be specified as files on the command line or by typing interactively while the shell is running.</p> +<h4 id="PrimitiveWrapFactory">PrimitiveWrapFactory</h4> +<p><a href="https://github.com/mozilla/rhino/tree/master/examples/PrimitiveWrapFactory.java">PrimitiveWrapFactory.java</a> is an example of a WrapFactory that can be used to control the wrapping behavior of the Rhino engine on calls to Java methods.</p> +<h4 id="Multithreaded_Script_Execution">Multithreaded Script Execution</h4> +<p><code><a href="https://github.com/mozilla/rhino/tree/master/examples/DynamicScopes.java">DynamicScopes.java</a></code> is a program that creates a single global scope object and then shares it across multiple threads. Sharing the global scope allows both information to be shared across threads, and amortizes the cost of Context.initStandardObjects by only performing that expensive operation once.</p> +<h2 id="Implementing_Host_Objects">Implementing Host Objects</h2> +<p>First check out the <a href="/en/docs/Rhino/Embedding_tutorial">tutorial</a> if you haven't already.</p> +<h4 id="The_Foo_class_-_Extending_ScriptableObject">The Foo class - Extending ScriptableObject</h4> +<p><code><a href="https://github.com/mozilla/rhino/tree/master/examples/Foo.java">Foo.java</a></code> is a simple JavaScript host object that includes a property with an associated action and a variable argument method.</p> +<h4 id="The_Matrix_class_-_Implementing_Scriptable">The Matrix class - Implementing Scriptable</h4> +<p><code><a href="https://github.com/mozilla/rhino/tree/master/examples/Matrix.java">Matrix.java</a></code> provides a simple multidimensional array by implementing the Scriptable interface.</p> +<h4 id="The_File_class_-_An_advanced_example">The File class - An advanced example</h4> +<p><code><a href="https://github.com/mozilla/rhino/tree/master/examples/File.java">File.java</a></code> extends ScriptableObject to provide a means of reading and writing files from JavaScript. A more involved example of host object definition.</p> diff --git a/files/fr/mozilla/projects/rhino/index.html b/files/fr/mozilla/projects/rhino/index.html new file mode 100644 index 0000000000..1618f7abb1 --- /dev/null +++ b/files/fr/mozilla/projects/rhino/index.html @@ -0,0 +1,25 @@ +--- +title: Rhino +slug: Mozilla/Projects/Rhino +tags: + - JavaScript + - Mozilla + - NeedsUpdate + - Rhino +translation_of: Mozilla/Projects/Rhino +--- +<p><img alt="Image:rhino.jpg" class="internal" src="/@api/deki/files/832/=Rhino.jpg"></p> + +<p><strong>Rhino</strong> est un moteur <a href="/fr/docs/Web/JavaScript/" title="en/JavaScript">JavaScript</a> <em>open-source</em> entièrement écrit en Java. Il est généralement intégré dans des applications Java afin de permettre l'utilisation de scripts aux utilisateurs finaux. Il est intégré dans J2SE 6 en tant que moteur JavaScript par défaut.</p> + +<h4 id="Télécharger_Rhino">Télécharger Rhino</h4> + +<p><a class="internal" href="/fr/docs/Mozilla/Projects/Rhino/Download_Rhino" title="en/RhinoDownload">Comment obtenir les sources et exécutables</a>. </p> + +<h4 id="La_documentation_de_Rhino">La documentation de Rhino</h4> + +<p><a href="/fr/docs/Mozilla/Projects/Rhino/Documentation" title="en/Rhino_documentation">Des informations relatives à Rhino</a> pour écrire des scripts ou embarquer le moteur dans des applications Java.</p> + +<h4 id="L'aide_de_Rhino">L'aide de Rhino</h4> + +<p><a href="/fr/docs/Mozilla/Projects/Rhino/Community" title="en/Rhino/Community">Différentes ressources utiles</a> si vous êtes bloqué.</p> diff --git a/files/fr/mozilla/projects/talos/index.html b/files/fr/mozilla/projects/talos/index.html new file mode 100644 index 0000000000..f42f2c3303 --- /dev/null +++ b/files/fr/mozilla/projects/talos/index.html @@ -0,0 +1,8 @@ +--- +title: Talos +slug: Mozilla/Projects/Talos +translation_of: Mozilla/Projects/Talos +--- +<p>Talos est un framework de <a href="/en-US/docs/Mozilla_automated_testing" title="/en-US/docs/Mozilla_automated_testing">test</a> de performance <a href="/en-US/docs/Python" title="/en-US/docs/Python">python</a> qui est inusable sur Windows, Mac et Linux. Talos est notre framework de test de performance polyvalente que nous utilisons à Mozilla. Il a été créé pour servir comme coureur de test pour le test de performance existant que Mozilla courait en 2007 en plus de fournir un framework extensible pour des nouveaux tests comme ils étaient en cours de création.</p> + +<p>S'il te plait regarde <a href="https://wiki.mozilla.org/TestEngineering/Performance/Talos">Talos's home page</a> pour plus de détails.</p> diff --git a/files/fr/mozilla/projects/thunderbird/thunderbird_localisation/index.html b/files/fr/mozilla/projects/thunderbird/thunderbird_localisation/index.html new file mode 100644 index 0000000000..a97de22c9b --- /dev/null +++ b/files/fr/mozilla/projects/thunderbird/thunderbird_localisation/index.html @@ -0,0 +1,95 @@ +--- +title: Localisation Thunderbird +slug: Mozilla/Projects/Thunderbird/Thunderbird_Localisation +translation_of: Mozilla/Projects/Thunderbird/Thunderbird_Localization +--- +<p>Cette page est destinée aux localisateurs actuels et futurs de Thunderbird, le client de messagerie électronique et usenet de Mozilla Messaging. Il couvre de nombreux aspects qu'un localisateur de Thunderbird doit connaître comme les outils nécessaires, comment obtenir des informations sur les événements pertinents pour la localisation et divers autres sujets d'intérêt.</p> + +<h2 id="Création_dune_localisation_Thunderbird"><span class="mw-headline">Création d'une localisation Thunderbird</span></h2> + +<p><a href="/en/Bootstrapping_a_New_Locale" title="Fr/Création_d'une_nouvelle_localisation_(Mercurial)">Création d'une nouvelle localisation (Mercurial)</a> - Cet article décrit comment créer une nouvelle localisation pour Thunderbird.</p> + +<h3 id="À_propos_des_répertoires_et_des_branches">À propos des répertoires et des branches</h3> + +<p>Il y a 3 référentiels actifs pour le développement de Thunderbird. Le travail de développement de Thunderbird est fusionné d'une branche à l'autre toutes les six semaines.</p> + +<ul> + <li>comm-central - aussi connu sous le nom de Tronc ou "Daily". + <ul> + <li>C'est là que le développement régulier de Thunderbird a lieu. Les chaînes changent à tout moment.</li> + <li>Seules quelques langues sont attendues pour traduire sur cette branche.</li> + </ul> + </li> + <li>comm-aurora - aussi connu sous le nom de "Earlybird" + <ul> + <li>C'est là que le développement d'une version particulière commence à être stabilisé.</li> + <li>Aucune nouvelle fonctionnalité n'est autorisée et les chaînes sont gelées.</li> + <li>Les localisations devraient progresser le plus possible dans cette branche et obtenir leur approbation.</li> + <li>Le travail effectué ici sera automatiquement fusionné en version bêta et publié toutes les 6 semaines..</li> + </ul> + </li> + <li>comm-beta - voie "Beta" + <ul> + <li>C'est ici que nous donnons un aperçu du développement de Thunderbird à un grand nombre d'utilisateurs.</li> + <li>Les stabilisations finales sont effectuées.</li> + <li>Peu ou pas de travail l10n est fait ici.</li> + </ul> + </li> +</ul> + +<p>La plupart des localisations travailleront sur comm-aurora. Ce référentiel ou branche est stable en ce qui concerne les chaînes pour chaque période de six semaines. Terminer le travail ici signifie qu'il est prêt pour la première version bêta, et vous n'aurez pas besoin d'accéder à la branche bêta. Votre travail sera également reporté automatiquement.</p> + +<h3 id="Exigences_en_matière_de_localisation">Exigences en matière de localisation</h3> + +<p>Il n'y a pas de restrictions significatives pour l'évolution des localisations. Cependant, nous devons œuvrer de concert pour fournir aux utilisateurs de Thunderbird des moteurs de recherche qu'ils pourront utiliser pour trouver le bon équilibre avec le jeu d'options appropriées. Pour de plus amples informations <a href="/en/Thunderbird_Localization/Productization" title="fr/Thunderbird_Localisation/Production">consultez cette page </a>.</p> + +<h3 id="Tableau_de_bord_de_localisation"><span class="mw-headline">Tableau de bord de localisation </span></h3> + +<p>Le <a class="external text" href="https://l10n.mozilla.org/teams/" rel="nofollow" title="https://l10n.mozilla.org/teams/">tableau de bord de localisation</a> pour Thunderbird donne aux localisateurs un aperçu précis de l'état actuel de leur tâche. Des renseignements détaillés sont disponibles sur la <a class="link-https" href="https://wiki.mozilla.org/Thunderbird:Localization:Dashboard" title="https://wiki.mozilla.org/Thunderbird:Localization:Dashboard">page du tableau de bord l10n </a>.</p> + +<p>Une localisation sera ajoutée au tableau de bord l10n sur demande, lorsqu'elle aura atteint un niveau d'achèvement minimal de 80% - comme le montre la sortie de <a href="https://wiki.developer.mozilla.org/en/Compare-locales" title="Fr/Comparer-langues">comparer-langues</a>. Pour demander l'ajout de votre langue au tableau de bord, déposez un bogue dans le produit Thunderbird ou le composant Build Config.</p> + +<h2 id="Obtenir_des_informations_pertinentes_pour_l10n"><span class="mw-headline">Obtenir des informations pertinentes pour l10n </span></h2> + +<h3 id="Groupes_de_discussion_listes_de_diffusion"><span class="mw-headline">Groupes de discussion </span>&<span class="mw-headline"> listes de diffusion</span></h3> + +<p>Les localisateurs de Thunderbird devraient lire les groupes de discussion sur la localisation (<a class="external" href="http://groups.google.de/group/mozilla.dev.l10n.announce" title="http://groups.google.de/group/mozilla.dev.l10n.announce">mozilla.dev.l10n.announce</a> <a class="external text" href="http://groups.google.de/group/mozilla.dev.l10n" rel="nofollow" title="http://groups.google.de/group/mozilla.dev.l10n">mozilla.dev.l10n</a>) pour se tenir au courant des articles spécifiques à Thunderbird et ceux d'ordre général relatifs à l10n qui les intéressent. Ils sont également encouragés à s'intéresser au groupe de discussion sur le développement de Thunderbird. (<a class="external text" href="http://groups.google.de/group/mozilla.dev.apps.thunderbird" rel="nofollow" title="http://groups.google.de/group/mozilla.dev.apps.thunderbird">mozilla.dev.apps.thunderbird</a>) pour être informés des dernières nouveautés.</p> + +<p>Ces groupes de discussion sont également accessibles via les listes de diffusion <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-l10n-announce" title="https://lists.mozilla.org/listinfo/dev-l10n-announce">dev-l10n-announce@lists.mozilla.org</a>, <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-l10n" title="https://lists.mozilla.org/listinfo/dev-l10n">dev-l10n@lists.mozilla.org</a> (liste de diffusion de localisation) ou <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-apps-thunderbird" title="https://lists.mozilla.org/listinfo/dev-apps-thunderbird">dev-apps-thunderbird@lists.mozilla.org</a> (liste de diffusion du développement de Thunderbird), qui reflètent les groupes de discussion mentionnés ci-dessus. Vous pouvez vous abonner ou vous désabonner à ces listes de diffusion via l'interface web à l'adresse suivante <a class="link-https" href="https://lists.mozilla.org/listinfo" title="https://lists.mozilla.org/listinfo">lists.mozilla.org</a>.</p> + +<h3 id="Bugzilla"><span class="mw-headline">Bugzilla </span></h3> + +<p>Les localisateurs devraient surveiller l'adresse électronique <a href="mailto:thunderbird@localization.bugs" rel="freelink">thunderbird@localization.bugs</a> (ou de son alias :tb-l10n) pour se tenir au courant des bugs qui pourraient les affecter sur Thunderbird. Ceci peut être réalisé en ajoutant cette adresse à la "Surveillance des utilisateurs". de vos <a href="https://bugzilla.mozilla.org/userprefs.cgi?tab=email" title="https://bugzilla.mozilla.org/userprefs.cgi?tab=email">préférences e-mail dans bugzilla</a>.</p> + +<h3 id="Quelques_liens_utiles"><span class="mw-headline">Quelques liens utiles </span></h3> + +<ul> + <li><a class="external text" href="https://bugzilla.mozilla.org/buglist.cgi?product=MailNews+Core&product=Thunderbird&keywords_type=allwords&keywords=l12y&bug_status=UNCONFIRMED,NEW,ASSIGNED,REOPENED" rel="nofollow" title="https://bugzilla.mozilla.org/buglist.cgi?product=MailNews+Core&product=Thunderbird&keywords_type=allwords&keywords=l12y&bug_status=UNCONFIRMED,NEW,ASSIGNED,REOPENED">Ouvrir des bugs avec le mot-clé l12y (localisation)</a></li> + <li><a class="external text" href="https://bugzilla.mozilla.org/buglist.cgi?product=MailNews+Core&product=Thunderbird&bug_status=UNCONFIRMED,NEW,ASSIGNED,REOPENED&emailcc1=1&emailtype1=exact&email1=thunderbird@localization.bugs" rel="nofollow" title="https://bugzilla.mozilla.org/buglist.cgi?product=MailNews+Core&product=Thunderbird&bug_status=UNCONFIRMED,NEW,ASSIGNED,REOPENED&emailcc1=1&emailtype1=exact&email1=thunderbird%40localization.bugs">Ouvrir des bugs qui nécessitent l'attention du localisateur (thunderbird@localization.bugs a été averti à propos de ce bug)</a></li> +</ul> + +<h2 id="Niveaux_des_langues"><span class="mw-headline">Niveaux des langues</span></h2> + +<p>Les niveaux des langues restituent les langues pour lesquelles nous avons besoin d'avoir un bon développement pour la version. Il y a 10 langues dans le niveau 1, qui sont les plus importantes pour Thunderbird, en raison de leur nombre d'utilisateurs ou de leur potentiel de croissance.</p> + +<p>Ces langues sont traitées comme des entités de première classe, aussi importantes que en-US, c'est-à-dire que toute langue de niveau 1 qui ne répond pas aux critères peut bloquer une version finale de Thunderbird.</p> + +<h3 id="Niveau_1"><span class="mw-headline">Niveau 1 </span></h3> + +<p>Les langues suivantes sont en P1 (priorité 1) par prépondérence :</p> + +<pre>* de - allemand +* fr - français +* ja, ja-JP-mac - japonais +* en-GB - anglais britannique +* es-ES - espagnol (continent européen) +* it - italien +* pl - polonais +* ru - russe +* nl - hollandais +* pt-BR - portugais brésilien +</pre> + +<h3 id="Niveau_2"><span class="mw-headline">Niveau 2 </span></h3> + +<p>Toutes les autres langues supportées sont dans la catégorie de niveau 2.</p> diff --git a/files/fr/mozilla/rejoindre/index.html b/files/fr/mozilla/rejoindre/index.html new file mode 100644 index 0000000000..ab23ca6481 --- /dev/null +++ b/files/fr/mozilla/rejoindre/index.html @@ -0,0 +1,94 @@ +--- +title: '{Re}Joindre Mozilla' +slug: Mozilla/Rejoindre +tags: + - Mozilla +translation_of: Mozilla/Connect +--- +<div class="summary"> +<p><span class="seoSummary">Inspirez, collaborez, mettez en œuvre vos compétences afin de faire du Web « la » plateforme des appareils connectés.</span></p> +</div> + + +<div> +<div class="column-container dev-program-callouts dev-program-block dev-program-first dev-program-column-wrapper"> +<div class="dev-program-callout"> +<div class="callout-link-container"> +<h2 id="Blog_Hacks">Blog Hacks</h2> + +<p>Une ressource essentielle pour les personnes dévelopant pour le Web ouvert, le blog Mozilla Hacks offre actualités et discussions sur les dernières technologies Web, et les fonctionnalités des navigateurs.<a class="callout-link ignore-external" href="https://hacks.mozilla.org/" style="white-space: normal;">Lire le blog</a></p> +</div> +</div> + +<div class="dev-program-callout"> +<div class="callout-link-container"> +<h2 id="Aide_Questions_Réponses">Aide Questions / Réponses</h2> + +<p>Rejoignez les discussions à propos du Web et des applications web sur Stack Overflow, où vous pouvez échanger des idées avec d'autres développeurs Web.<br> + <span class="smaller"><strong>{{anch("Developer discussions", "Cherchez parmi les Q&R ci-dessous")}}</strong></span></p> + +<div class="callout-link-wrapper"><a class="callout-link ignore-external" href="http://stackoverflow.com/r/mozilla" style="white-space: normal;">Mozilla Q&R sur Stack Overflow</a></div> +</div> +</div> + +<div class="dev-program-callout"> +<div class="callout-link-container"> +<h2 id="Rejoignez_MDN">Rejoignez MDN</h2> + +<p>Inscrivez-vous sur MDN ! Vous pourrez <a href="/fr/docs/MDN/Contribute">éditer la documentation</a>, créer un profil pour mettre en avant vos contributions et tester les nouvelles fonctionnalités.</p> + +<div class="callout-link-wrapper"><a class="callout-link" href="/profile/edit" style="white-space: normal;">S'inscrire ou se connecter</a></div> +</div> +</div> +</div> + +<div class="dev-program-explanation dev-program-block"> +<h2 id="Entrer_en_contact_avec_Mozilla">Entrer en contact avec Mozilla</h2> + +<p>Chez Mozilla, nous croyons que les développeurs contribuent au futur en créant des services de qualité et des applications destinées au grand public. Notre but est de les aider en proposant des technologies standardisées et ouvertes. Afin d'aider les développeurs et leur permettre de former des relations sur le long terme, nous avons créé le Mozilla Developer Program (MDP) en plus de la documentation présente sur MDN.<br> + <br> + Nous offrons de l'aide à travers les questions-réponses (Q&R) sur Stack Overflow, pour aider à résoudre des problèmes technique spécifiques ou des défis que vous pouvez rencontrer. Nous avons également une <a href="https://marketplace.firefox.com/developers/#newsletter-signup" title="https://marketplace.firefox.com/developers/#newsletter-signup">newsletter</a> pour vous tenir informé des derniers événements autour du Web et des applications web.<br> + <br> + Nos idées sont nombreuses pour agrandir le Mozilla Developer Program et vous impliquer autant que nous le sommes ! Pour participer : <a href="http://stackoverflow.com/r/mozilla">suivez les tags sur Stack Overflow</a>, <a href="https://hacks.mozilla.org/">abonnez vous au blog Hacks</a>, et <a href="/profile/edit">créez un compte MDN </a>!</p> +</div> + +<div class="column-container dev-program-block"> +<div class="column-half" id="Developer_discussions"> +<h2 id="QR_sur_Stack_OverflowVoir_toutes_les_QR...">Q&R sur Stack Overflow<a class="heading-link" href="http://stackoverflow.com/r/mozilla">Voir toutes les Q&R...</a></h2> + +<p>Nous avons des Q&R pour discuter des défis et problèmes liés au développement, plus particulièrement autour de Firefox OS et du Web sur mobile. Elles sont actuellement disponibles sur Stack Overflow à cette adresse <a href="http://stackoverflow.com/r/mozilla">http://stackoverflow.com/r/mozilla</a>.</p> + + +<div class="stack-form">Stack form</div> + +<h3 id="Dernières_Questions-Réponses">Dernières Questions-Réponses</h3> +</div> + +<div class="column-half dev-program-hacks dev-program-block"> </div> +</div> + +<p class="dev-program-block"><img alt="Développeurs lors d'un événement Firefox OS à Madrid" src="https://mdn.mozillademos.org/files/7479/PhonesUp.jpg" style="display: block; height: 359px; margin: 0px auto; max-width: 100%; width: 720px;"></p> + +<div class="column-container dev-program-block"> +<div class="column-7 dev-program-events"> +<h2 id="Où_se_trouve_Mozilla_Voir_les_conférenciers_et_plus_d'informations_sur_la_page_des_évènements...">Où se trouve Mozilla ? <a class="heading-link" href="https://developer.mozilla.org/en/events">Voir les conférenciers et plus d'informations sur la page des évènements...</a></h2> +</div> + +<div class="column-5"> +<h2 id="Autres_ressources">Autres ressources</h2> + +<ul class="no-bullets"> + <li><a href="http://www.youtube.com/user/mozhacks">Mozilla Hacks sur YouTube</a> + + <ul> + <li><a href="http://www.youtube.com/playlist?list=PLo3w8EB99pqIHIUUv08hBCHq1OgPKhdo0">Vidéos Firefox OS</a></li> + <li><a href="http://www.youtube.com/playlist?list=PLo3w8EB99pqLZNY22xKbTEzMfYo9PXAlm">Vidéos sur les outils de développement Firefox Developer Tools</a></li> + </ul> + </li> + <li><a href="https://twitter.com/mozhacks">@mozhacks on Twitter</a></li> +</ul> +</div> +</div> +</div> + +<p> </p> diff --git a/files/fr/mozilla/rust/index.html b/files/fr/mozilla/rust/index.html new file mode 100644 index 0000000000..7ec000ae43 --- /dev/null +++ b/files/fr/mozilla/rust/index.html @@ -0,0 +1,47 @@ +--- +title: Le langage de programmation Rust +slug: Mozilla/Rust +tags: + - Développement Web + - Langages + - Mozilla + - Parallélisme + - rust + - systèmes +translation_of: Mozilla/Rust +--- +<p><img alt="Rust logo" src="https://www.rust-lang.org/logos/rust-logo-blk.svg" style="float: left; height: 150px; width: 150;"><a href="https://www.rust-lang.org/">Rust</a> est un nouveau langage de programmation open source créé par Mozilla et une communauté de volontaires, conçu pour aider les développeurs à concevoir des applications ultra-rapides et sécurisées qui utilisent avantageusement les puissantes fonctionnalités offertes par les processeurs multi-cœurs modernes. Il permet d'éviter les erreurs de segmentation et assure la sécurité des threads, le tout avec une syntaxe facile à assimiler.</p> + +<p>En outre, Rust offre des abstractions à coût zéro, déplacement des sémantiques, garanti la sécurité de la mémoire, des threads sans concurence des données, trait-based generics, pattern matching, inférence de type et des liaisons C efficace, avec un minimum de taille d'exécution.</p> + +<p>Pour en apprendre plus sur Rust, vous pouvez :</p> + +<ul> + <li>Regarder les vidéos ci-dessous pour découvrir attentivement toute la puissance et les avantages offerts par Rust.</li> + <li>Lire le livre <em><a href="https://doc.rust-lang.org/book/">The Rust Programming Language</a></em> en ligne.</li> + <li>Télécharger le compilateur Rust, voir des exemples et apprendre tout ce que vous souhaitez savoir sur <a href="https://www.rust-lang.org/">le site officiel de Rust</a>.</li> +</ul> + +<h2 id="Rust_et_le_futur_de_la_programmation_des_systèmes">Rust et le futur de la programmation des systèmes</h2> + +<p>{{EmbedYouTube("8EPsnf_ZYU0")}}</p> + +<h2 id="Débloquez_le_pouvoir_du_parallélisme_avec_Rust">Débloquez le pouvoir du parallélisme avec Rust</h2> + +<p>{{EmbedYouTube("cNeIOt8ZdAY")}}</p> + +<h2 id="Rust_pour_les_développeurs_web">Rust pour les développeurs web</h2> + +<p>{{EmbedYouTube("FfoXFnzZbBM")}}</p> + +<h2 id="Programmation_des_systèmes_sécurisée_avec_Rust">Programmation des systèmes sécurisée avec Rust</h2> + +<p>{{EmbedYouTube("P3sfNGtpuxc")}}</p> + +<h2 id="Agrandir_la_communauté_Rust">Agrandir la communauté Rust</h2> + +<p>{{EmbedYouTube("duv0tuPAnO0")}}</p> + +<h2 id="Mettre_Rust_en_production_chez_Mozilla">Mettre Rust en production chez Mozilla</h2> + +<p>{{EmbedYouTube("2RhbYpgVpg0")}}</p> diff --git a/files/fr/mozilla/security/index.html b/files/fr/mozilla/security/index.html new file mode 100644 index 0000000000..99a342c74c --- /dev/null +++ b/files/fr/mozilla/security/index.html @@ -0,0 +1,30 @@ +--- +title: Browser security +slug: Mozilla/Security +tags: + - Accueil + - Firefox + - Mozilla + - Sécurité +translation_of: Mozilla/Security +--- +<p><span class="seoSummary">Un aspect important du développement de code pour n'importe quel navigateur, y compris Firefox, ainsi que n'importe quel projet orienté Web, est sa sécurité. Ces articles offrent d'importants guides et références pour asurer que le code que vous écrivez est sécurisé, y compris aussi bien les recommandations en matière de design que de guides de testing.</span></p> + +<p>{{LandingPageListSubpages}}</p> + +<section id="Quick_Links"> +<ol> + <li><a href="https://www.mozilla.org/en-US/security/bug-bounty/" title="We appreciate all bug reports, but we back up our appreciation of reports of severe security problems with a $3000 reward!">Bug bounty program</a></li> + <li><a href="http://www.mozilla.org/projects/security/known-vulnerabilities.html" title="Learn from our past mistakes.">Known vulnerabilities and fixes in Mozilla</a></li> + <li><a href="/en-US/docs/Mozilla/Security">Debugging and testing</a> + <ol> + <li>{{Link("/en-US/docs/Clang_Static_Analysis")}}</li> + <li>{{Link("/en-US/docs/Debugging_Mozilla_with_Valgrind")}}</li> + <li>{{Link("/en-US/docs/Mozilla/Testing/Firefox_and_Address_Sanitizer")}}</li> + <li>{{Link("/en-US/docs/Mozilla/QA/Fuzzing")}}</li> + </ol> + </li> + <li>{{Link("/en-US/docs/Mozilla/Developer_guide")}}</li> + <li>{{Link("/en-US/docs/Web/Security")}}</li> +</ol> +</section> diff --git a/files/fr/mozilla/tech/index.html b/files/fr/mozilla/tech/index.html new file mode 100644 index 0000000000..c624ad5a70 --- /dev/null +++ b/files/fr/mozilla/tech/index.html @@ -0,0 +1,13 @@ +--- +title: Technologies de Mozilla +slug: Mozilla/Tech +tags: + - Mozilla + - Reference + - Régionalisation + - XUL +translation_of: Mozilla/Tech +--- +<p>Mozilla a plusieurs technologies utilisées en composantes de ses projets. Celles-ci sont documentées ici.</p> + +<p>{{LandingPageListSubpages}}</p> diff --git a/files/fr/mozilla/tech/visualisation_et_recherche_du_code_source_mozilla_en_ligne/index.html b/files/fr/mozilla/tech/visualisation_et_recherche_du_code_source_mozilla_en_ligne/index.html new file mode 100644 index 0000000000..bdbde7f35c --- /dev/null +++ b/files/fr/mozilla/tech/visualisation_et_recherche_du_code_source_mozilla_en_ligne/index.html @@ -0,0 +1,37 @@ +--- +title: Visualisation et recherche du code source Mozilla en ligne +slug: Mozilla/Tech/Visualisation_et_recherche_du_code_source_Mozilla_en_ligne +tags: + - Developper avec Mozilla + - Mozilla Code source +translation_of: Mozilla/Tech/Viewing_and_searching_Mozilla_source_code_online +--- +<p><span id="result_box" lang="fr"><span class="hps">Le code source pour</span> <span class="hps">tous les projets</span> <span class="hps">de Mozilla</span> <span class="hps">hébergés</span> <span class="hps">dans</span> <span class="hps">le dépôt Mercurial</span> <span class="hps">et</span> <span class="hps">CVS</span> <span class="hps">peut être recherché</span> <span class="hps">et</span> <span class="hps">consulté en ligne</span> <span class="hps">à l'aide de</span> </span><a class="external external-icon" href="http://dxr.mozilla.org">DXR</a>.<span lang="fr"> C'<span class="hps">est</span> <span class="hps">une variante</span> <span class="hps">renforcée et</span> <span class="hps">améliorée de l'outil</span> <span class="hps">original </span><span class="hps">Linux Cross</span> <span class="hps">Reference</span><span>.</span></span></p> + +<p><span lang="fr"><span class="hps">Ne téléchargez pas</span> <span class="hps">le code source</span> <span class="hps">en parcourant toutes les pages du site </span><span class="hps">DXR</span><span> ;</span> <span class="hps">téléchargez plutôt</span> <a href="https://developer.mozilla.org/fr/docs/T%C3%A9l%C3%A9chargement_du_code_source_de_Mozilla">une archive</a> <span class="hps">ou</span> <span class="hps">utilisez</span> <a href="/fr/docs/Code_source_de_Mozilla_(Mercurial)">Mercurial</a> <span class="hps">ou <a href="/fr/docs/Code_source_de_Mozilla_(CVS)">CVS</a></span> à la <span class="hps">place.</span><br> + <br> + <span class="hps">DXR<span> </span>indexe</span> <span class="hps">plusieurs</span> <span class="hps">branches CVS</span> <span class="hps">et modules</span><span>;</span> <span class="hps">la racine</span> <span class="hps">MXR</span> la <span class="hps">plus intéressant</span> <span class="hps">pour un</span> <span class="hps">contributeur</span> <span class="hps">Mozilla</span> <span class="hps">est</span> </span><a class="external external-icon" href="http://dxr.mozilla.org/comm-central/">comm-central</a>,<span lang="fr"> <span class="hps">qui contient le</span> <span class="hps">dernier code source</span> <span class="hps">pour la plupart des</span> <span class="hps">produits Mozilla</span> <span class="atn hps">(</span><span>y compris</span> <span class="hps">Firefox</span><span>,</span> <span class="hps">Thunderbird</span><span>,</span> <span class="hps">SeaMonkey</span><span>,</span> <span class="hps">Sunbird</span> <span class="hps">/</span> <span class="hps">Lightning</span> <span class="hps">Chatzilla</span><span>,</span> <span class="hps">DOM</span> Inspector <span class="hps">et</span> <span class="hps">Venkman JavaScript</span> <span class="hps">debugger</span><span>) et est</span> <span class="hps">fréquemment mise à jour</span><span class="hps">.</span></span></p> + +<p><span class="short_text" id="result_box" lang="fr"><span class="hps">Certaines</span> <span class="hps">autres</span> <span class="hps">racines</span> <span class="hps">d'intérêt MXR</span></span><span class="short_text" lang="fr"><span class="hps"> sont:</span></span></p> + +<ul> + <li><a class="link-https" href="https://hg.mozilla.org/mozilla-central/">"mozilla-central"</a> <span id="result_box" lang="fr"><span title='"mozilla-central" contains current Firefox and Gecko development.'>contient le développement actuel de Firefox et Gecko. </span><span title="Releases branch off of this repository.">mets a disposition la branche de sortie de ce </span></span>dépôt<span lang="fr"><span title="Releases branch off of this repository.">. </span><span title='Also known as "Trunk" . + '>Aussi connu comme «Trunk».</span></span></li> + <li><a class="external" href="http://dxr.mozilla.org/comm-central/">"comm-central"</a> <span id="result_box" lang="fr"><span title='"comm-central" contains current Thunderbird, SeaMonkey and Calendar development.'>contient le développement </span></span><span lang="fr"><span title='"comm-central" contains current Thunderbird, SeaMonkey and Calendar development.'> actuelle de Thunderbird, SeaMonkey et de Calendar. </span><span title="Also contains a mirror of mozilla-central.">Il contient également une copie de mozilla-central. </span></span><span id="result_box" lang="fr"><span title="Releases branch off of this repository.">mets </span></span><span lang="fr"><span class="hps">à </span><span title="Releases branch off of this repository.">disposition la branche de sortie de ce </span></span>dépôt<span lang="fr"><span title="Releases branch off of this repository.">.</span></span></li> + <li><a class="link-https" href="https://hg.mozilla.org/releases/mozilla-1.9.1/">"mozilla-1.9.1"</a> <span id="result_box" lang="fr"><span title='"mozilla-1.9.1" contains Branch development on Firefox 3.5 and Gecko 1.9.1. + '>contient la branche de développement sur Firefox 3.5 et Gecko 1.9.1 .</span></span></li> + <li><a class="link-https" href="https://hg.mozilla.org/releases/comm-1.9.1/">"comm-1.9.1"</a> <span id="result_box" lang="fr"><span title='"mozilla-1.9.1" contains Branch development on Firefox 3.5 and Gecko 1.9.1. + '>contient la branche de développement pour</span></span> Thunderbird 3, SeaMonkey 2 et Sunbird 1 avec Gecko 1.9.1. <span id="result_box" lang="fr"><span title="Also contains a mirror of mozilla-1.9.1. + ">Il contient également une partie de</span></span> mozilla-1.9.1.</li> + <li><a class="external" href="http://mxr.mozilla.org/seamonkey/">"mozilla root '</a> <span id="result_box" lang="fr"><span class="hps">contient</span> <span class="hps">le code</span> <span class="hps">de 1,9</span> <span class="hps">branche,</span> <span class="atn hps">comme "</span><span>SeaMonkey</span><span>"</span><span>, mais</span> indexe <span class="hps">une</span> <span class="hps">plus grande</span> <span class="hps">partie du</span> </span>dépôt<span lang="fr"><span class="hps"> et</span> <span class="hps">est mis à jour</span> <span class="hps">moins souvent</span><span>.</span></span></li> + <li><a class="external" href="http://mxr.mozilla.org/mozilla1.8/">Mozilla 1.8 root</a> <span id="result_box" lang="fr"><span class="hps">contient</span> <span class="hps">Firefox</span><span>,</span> <span class="hps">Thunderbird</span> <span class="hps">2.0.0.x</span><span>,</span> <span class="hps">et</span> <span class="hps">SeaMonkey</span></span> 1.1.x</li> + <li><a class="external" href="http://mxr.mozilla.org/mozilla1.8.0/">Mozilla 1.8.0 root</a> <span id="result_box" lang="fr"><span class="hps">contient</span> <span class="hps">Firefox</span><span>,</span> <span class="hps">Thunderbird</span> <span class="hps">1.5.0.x</span><span>,</span> <span class="hps">SeaMonkey</span></span> <span id="result_box" lang="fr"><span class="hps">1.0.x</span> </span></li> + <li><a class="external" href="http://mxr.mozilla.org/aviary101branch/">Aviary 1.0.1 root</a> <span id="result_box" lang="fr"><span class="hps">Firefox et Thunderbird</span> <span class="hps">1.0.0.x</span></span></li> + <li><a class="external" href="http://mxr.mozilla.org/mozilla1.7/">Mozilla 1.7 root</a> <span id="result_box" lang="fr"><span class="hps">contient</span> <span class="hps">Mozilla</span> <span class="hps">Suite</span> <span class="hps">1.7.x</span></span></li> +</ul> + +<p><a href="/en/Mozilla_Source_Code_Directory_Structure" title="en/Mozilla_Source_Code_Directory_Structure">Mozilla Source Code Directory Structure</a> <sup>(page en Anglais) </sup><span id="result_box" lang="fr"><span class="hps">contient une courte</span> <span class="hps">description du code</span> <span class="hps">dans chaque</span> <span class="hps">répertoire source</span> <span class="hps">de l'arbre</span><span>.</span></span></p> + +<h3 id="Resources" name="Resources">Ressources</h3> + +<p><a href="/en/CVS_Tags" title="en/CVS_Tags">CVS Tags</a></p> diff --git a/files/fr/mozilla/tech/xpcom/guide/creating_components/an_overview_of_xpcom/index.html b/files/fr/mozilla/tech/xpcom/guide/creating_components/an_overview_of_xpcom/index.html new file mode 100644 index 0000000000..35e8dd51a0 --- /dev/null +++ b/files/fr/mozilla/tech/xpcom/guide/creating_components/an_overview_of_xpcom/index.html @@ -0,0 +1,504 @@ +--- +title: Un aperçu de XPCOM +slug: Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM +translation_of: Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM +--- +<p></p><div class="prevnext" style="text-align: right;"> + <p><a href="/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Preface" style="float: left;">« Précédent</a><a href="/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Using_XPCOM_Components">Suivant »</a></p> +</div><p></p> + +<p>Cette section est présentée comme un tutoriel sur la création de composants XPCOM, mais elle couvre tous les principaux aspects, les concepts et la terminologie du modèle de composant XPCOM tout au long de sa conception.</p> + +<p>Ce chapitre fournit un rapide tour d'horizons sur XPCOM - une introduction aux concepts de base, des technologies XPCOM et du développement de composants. Les paragraphes de ce chapitre présentent des concepts de haut niveaux, de sorte que nous puissions les approfondir et de les utiliser avec plus de familiarité dans le tutoriel lui-même, qui décrit la création d'un composant Mozilla appelé <strong>WebLock</strong> .</p> + +<h3 id="La_solution_XPCOM">La solution XPCOM</h3> + +<p>Le Cross Platform Component Object Module (XPCOM) est un cadre qui permet aux développeurs de fractionner un projets monolithiques en morceaux modulaires. Ces morceaux, appelés <em>composants</em> , sont ensuite assemblés de nouveau ensemble à l'exécution.</p> + +<p>Le but de XPCOM est de mettre au point les différentes parties de logiciel en les construisant indépendamment les uns des autres. Afin de permettre l'interopérabilité entre les composants d'une application, XPCOM sépare la <em>mise en œuvre</em> d'un composant de l'<a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM#Interfaces">Interface</a> . Mais XPCOM fournit également plusieurs outils et bibliothèques qui permettent le chargement et la manipulation de ces composants, des services qui aident le développeur à écrire du code modulaire multi-plateforme, et le soutien des versions, de sorte que les composants peuvent être remplacés ou mis à niveau sans casser ou avoir à recréer l'application . En utilisant XPCOM, les développeurs créent des composants qui peuvent être réutilisés dans différentes applications ou qui peut être remplacé pour changer la fonctionnalité des applications existantes.</p> + +<p>XPCOM soutient non seulement le développement de composant logiciels, il fournit également une grande partie des fonctionnalité de la plate-forme de développement fournit, tels que:</p> + +<ul> + <li>la gestion de composant</li> + <li>le fichier abstrait</li> + <li>l'objet message</li> + <li>la gestion de la mémoire</li> +</ul> + +<p>Nous allons décrire les éléments ci-dessus en détail dans les chapitres à venir, mais pour l'instant, il peut être utile de penser à XPCOM en tant que <em>plate-forme pour le développement de composants</em> , dans lequel des caractéristiques telles que celles énumérées ci-dessus sont fournis.</p> + +<h3 id="Gecko">Gecko</h3> + +<p>Bien qu'il soit à certains égards structurellement similaires à Microsoft COM, XPCOM est conçu pour être utilisé principalement au niveau de l'application. L'utilisation la plus importante de XPCOM est dans <em>Gecko</em> , open source, conforme aux standards, navigateur Web intégrable et boîte à outils pour la création de navigateurs Web et autres applications.</p> + +<p>XPCOM est le moyen d'accéder aux fonctionnalités de la bibliothèque Gecko pour l'utilisation ou l'extension de Gecko. Ce livre met l'accent sur l'extension mais les explications de ce livre seront important pour le développeurs d'application Gecko embarquées.</p> + +<p>Gecko est utilisé dans de nombreuses applications internet, la plupart des navigateurs et notamment Mozilla Firefox.</p> + +<h3 id="Composants">Composants</h3> + +<p>XPCOM vous permet de briser les gros projets logiciels en petits morceaux connus en tant que composants. Ils sont généralement contenus dans des bibliothèques binaires réutilisables (<abbr>DLL</abbr> sur Windows, <abbr>DSO</abbr> sur Unix), qui peuvent comprendre un ou plusieurs composants. Lorsque deux ou plusieurs composants connexes sont regroupées dans une bibliothèque binaire, la bibliothèque est appelée <em>module</em>.</p> + +<p>Modulaire, la programmation à base de composants logiciels rend plus facile le développement et la maintenance:</p> + +<table class="standard-table"> + <tbody> + <tr> + <td class="header">Avantage</td> + <td class="header">Description</td> + </tr> + <tr> + <td>Réutilisation</td> + <td>Code modulaire peut être réutilisé dans d'autres applications et d'autres contextes.</td> + </tr> + <tr> + <td>Mises à jour</td> + <td>Vous pouvez mettre à jour les composants sans avoir à recompiler l'application entière.</td> + </tr> + <tr> + <td>Performance</td> + <td>Lorsque le code est modulaire, les modules qui ne sont pas nécessaires immédiatement peuvent être chargées partiellement, ou pas chargés du tout, ce qui peut améliorer les performances de votre application.</td> + </tr> + <tr> + <td>Maintenance</td> + <td>Même lorsque un composant est obsolète, la conception de votre application modulaire vous permet plus facilement de maintenir les parties de l'application que vous intéressent.</td> + </tr> + </tbody> +</table> + +<p>Mozilla a plus de quatre millions de lignes de code, et pas une seule personne ne comprend l'ensemble du code source. La meilleure façon d'aborder un projet de cette taille est de le diviser en modules. La bibliothèque de réseau, par exemple, est constitué de composants pour chacun des protocoles, HTTP, FTP, et d'autres, qui sont groupés et liés dans une seule bibliothèque. Cette bibliothèque est le module de gestion de réseau, également appelé "necko."</p> + +<p>Mais il n'est pas toujours souhaitable de diviser les choses. Le composant <abbr>HTTP</abbr> de Gecko n'expose pas les classes privés qu'elle utilise comme des composants séparés. Les objets interne au composante reste interne, et ne soit pas manipulables par XPCOM.</p> + +<h3 id="Interfaces">Interfaces</h3> + +<p>Comment segmenter du code? L'idée de base est d'identifier les segments fonctionnellement liés et comprendre comment ils communiquent entre eux. Les canaux de communication entre les différentes composants forment ces limites, et lorsque ces limites sont formalisées on parle d'<em>interfaces</em> .</p> + +<p>Les interfaces ne sont pas une idée nouvelle en programmation. Nous avons tous l'habitude interfacer depuis notre premier programme "HelloWorld", où est l'interface entre le code que nous avons écrit - le code d'application - et le code d'impression. Le code d'application utilisé une interface à partir d'une bibliothèque, <code>stdio</code> , et imprime la texte "hello world" sur l'écran. La différence ici est que l'application "HelloWorld" dans XPCOM trouve cette fonctionnalité d'affichage à l'exécution et n'a pas à connaître <code>stdio</code> quand il est compilé.</p> + +<p>Interfaces permettent aux développeurs d' <em>encapsuler</em> la mise en œuvre et de fonctionnement interne de leur logiciel, et permettent aux clients d'ignorer la façon dont les choses sont faites, il suffit d'utiliser ce logiciel.</p> + +<div class="side-note"> +<h4 id="Interfaces_et_programmation_par_contrat">Interfaces et programmation par contrat</h4> + +<p>Une interface forme un accord contractuel entre les composants et les clients. Il n'y a pas de code qui oblige ces accords, mais les ignorer peut être fatal. Dans la programmation à base de composants, un composant garantit que les interfaces qu'il fournit seront <em>immuable</em> - qu'ils vont offrir le même accès aux mêmes méthodes à travers différentes versions du composante - l'établissement d'un contrat avec les logiciels clients qui l'utilisent. À cet égard, la programmation basé sur l'interface est souvent désigné comme <em>la programmation par contrat</em> .</p> +</div> + +<h4 id="Interfaces_et_Encapsulation">Interfaces et Encapsulation</h4> + +<p>Aux limites des composants, l'abstraction est crucial pour la maintenabilité du logiciel et la réutilisabilité. Considérons, par exemple, une classe mal encapsulé. L'utilisation d'une méthode d'initialisation publique librement disponibles, comme l'exemple ci-dessous, peut causer des problèmes.</p> + +<h4 id="SomeClass_Class_Initialization">SomeClass Class Initialization</h4> + +<pre>class SomeClass{ + public: + // Constructeur + SomeClass(); + // Destructeur virtuel + virtual ~SomeClass(); + // method init + void Init(); + void DoSomethingUseful(); +}; +</pre> + +<p>Pour que ce système fonctionne correctement, l'utilisateur de cette classe doit porter une attention particulière à tout ce que le créateur de cette classe a établi. C'est l'accord contractuel avec cette classe non encapsulé: un ensemble de règles qui définissent quand chaque méthode peut être appelée et ce qu'elle est censé faire. Une règle peut spécifier que <code>DoSomethingUseful</code> ne peut être appelé après un appel à <code>init ()</code> . La méthode <code>DoSomethingUseful</code> peut veiller à ce que la condition soit satisfaite.</p> + +<p>En plus du code correctement commenté pour les règles d'utilisation de <code>Init()</code> , le développeur peut prendre quelques mesures pour que ce contrat soit plus clair. Tout d'abord, le constructeur d'un objet peut être encapsulé, et une <em>classe virtuelle</em><code> DoSomethingUseful</code> peut être mis à disposition. De cette façon, le constructeur et l'initialisation peuvent être complètement cachés des utilisateurs de la classe. Dans cette situation, "semi-encapsulé", la seule partie de la classe qui est exposé est une liste bien définie des méthodes appelables (i.e, l'interface). Une fois que la classe est encapsulé, la seule interface que le client verra est la suivante:</p> + +<h4 id="Encapsulation_de_SomeInterface">Encapsulation de SomeInterface</h4> + +<pre>class SomeInterface{ + public: + virtual void DoSomethingUseful() = 0; +}; +</pre> + +<p>La mise en œuvre peut alors dériver de cette classe par l'utilisation de la méthode virtuelle. Les utilisateurs de ce code peuvent ensuite créer l'objet (voir <a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM#Factories">utilisation</a> ) et encapsuler aussi la mise en œuvre. Avec XPCOM, les usagers sont ignorant du fonctionnement du composants et comptent sur l'interface pour donner accès aux fonctionnalités nécessaires.</p> + +<h4 id="L'interface_de_base_nsISupports">L'interface de base <code>nsISupports</code></h4> + +<p>Les deux fondamentaux de la programmation composant sont basé sur<em> component lifetime</em>(durée de vie), appelé aussi <em>object ownership</em>, et <em>interface querying</em>, sois l'identification des interfaces d'un composant prises en charge lors de l'exécution. Ce chapitre présente la mère de toutes les interfaces XPCOM - <code>nsISupports</code> , qui fournit les solutions à ces deux problèmes pour les développeurs XPCOM.</p> + +<h4 id="Object_Ownership">Object Ownership</h4> + +<p>Avec XPCOM, parce que les composants peuvent mettre en œuvre un certain nombre d'interfaces, ils doivent être <em>référencés</em> . Quand un composant est créé, un entier interne au composant est incrémenté - connu comme compteur de référence. Au cours de la vie du composant, le compteur de référence augmente et diminue. Lorsque le composant n'a plus d'utilité, le compteur de références atteint zéro, et le composant est détruit.</p> + +<p>Lorsque les clients utilisent des interfaces de façon responsable, cela peut être un processus très simple. XPCOM dispose d'outils pour rendre encore cela plus facile. Il peut soulever des problèmes réels de maintenance lorsque, par exemple, un client utilise une interface et oublie de decrémenter le nombre de références. Lorsque cela se produit, les interfaces ne peuvent jamais être libérés et provoqueront des fuites de mémoire. Le système de comptage de référence est, comme beaucoup de choses dans XPCOM, un contrat entre les clients et les implémentations. Il fonctionne quand les utilisateur le respecte, mais quand ils ne le font pas, les choses peuvent aller mal. C'est le rôle de la fonction qui crée le pointeur d'interface pour ajouter la référence initiale, ou <em>owning reference</em>, d'éviter ces problemes.</p> + +<div class="side-note"> +<h4 id="Pointeurs_avec_XPCOM">Pointeurs avec XPCOM</h4> + +<p>Dans XPCOM, <em>les pointeurs</em> se réfèrent à l'interface pointeurs. La différence est subtile, puisque les pointeurs d'interface et les pointeurs réguliers sont tout simplement deux adresses dans la mémoire. Mais un pointeur d'interface est connu pour mettre en œuvre l'interface de base nsISupports, et peut donc être utilisé pour appeler des méthodes telles que <code>AddRef</code>, <code>Release,</code> ou<code> QueryInterface</code>.</p> +</div> + +<p><code>nsISupports</code>, illustré ci-dessous, fournit les fonctionnalités de base pour faire face à la création d'interface et de comptage de référence. Les membres de cette interface,<code> QueryInterface</code>, <code>AddRef</code> et <code>Release</code> , fournissent les moyens de base pour obtenir la bonne interface d'un objet, incrémenter le compteur de référence, et de libérer les objets une fois qu'ils ne sont plus utilisés.</p> + +<h4 id="L'interface_nsISupports">L'interface <code>nsISupports</code></h4> + +<pre>class Sample: public nsISupports{ + private: + nsrefcnt mRefCnt; + public: + Sample(); + virtual ~Sample(); + NS_IMETHOD QueryInterface(const nsIID &aIID, void **aResult); + NS_IMETHOD_(nsrefcnt) AddRef(void); + NS_IMETHOD_(nsrefcnt) Release(void); +}; +</pre> + +<p>Les différents types utilisés de l'l'interface sont décrites dans la section <a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM#XPCOM_Types">Types XPCOM</a>. La mise en œuvre complète de<code> </code><code>nsISupports</code> est indiquée ci-dessous. Voir <a class="external external-icon" href="http://www.mozilla.org/projects/xpcom/QI.html">Une implémentation de référence de QueryInterface</a> pour des informations détaillées.</p> + +<h4 id="Mise_en_œuvre_de_l'interface_nsISupports">Mise en œuvre de l'interface nsISupports</h4> + +<pre>// <code class="language-html">Initialiser le compteur de référence à 0</code> +Sample::Sample() : mRefCnt(0){ +} +Sample::~Sample(){ +} +// <code class="language-html">la mise en œuvre générique de QI</code> +NS_IMETHODIMP Sample::QueryInterface(const nsIID &aIID, + void **aResult){ + if (!aResult) { + return NS_ERROR_NULL_POINTER; + } + *aResult = NULL; + if (aIID.Equals(kISupportsIID)) { + *aResult = (void *) this; + } + if (!*aResult) { + return NS_ERROR_NO_INTERFACE; + } + // ajoute une reference + AddRef(); + return NS_OK; +} +NS_IMETHODIMP_(nsrefcnt) Sample::AddRef(){ + return ++mRefCnt; +} +NS_IMETHODIMP_(nsrefcnt) Sample::Release(){ + if (--mRefCnt == 0) { + delete this; + return 0; + } + // optional: retourn le nombre de reference + return mRefCnt; +} +</pre> + +<h4 id="Object_Interface_Discovery">Object Interface Discovery</h4> + +<p><em>Héritage</em> est un autre sujet très important dans la programmation orientée objet. L'héritage est le moyen par lequel une classe est dérivée d'une autre. Quand une classe hérite d'une autre classe, la classe hérite peut <em>remplacer</em> les comportements par défaut de la classe de base sans avoir à copier tout le code de cette classe et créer ainsi une classe plus spécifique, comme dans l'exemple suivant:</p> + +<h4 id="Héritage_de_classe_simple">Héritage de classe simple</h4> + +<pre>class Shape{ + private: + int m_x; + int m_y; + public: + virtual void Draw() = 0; + Shape(); + virtual ~Shape(); +}; +class Circle : public Shape{ + private: + int m_radius; + public: + virtual Draw(); + Circle(int x, int y, int radius); + virtual ~Circle(); +}; +</pre> + +<p><code>Circle(cercle</code>) est une classe dérivée de <code>Shape(forme)</code> . Un <code>cercle</code> est une <code>forme</code> , en d'autres termes, mais une<code> forme</code> n'est pas nécessairement un <code>cercle</code> . Dans ce cas, <code>forme</code> est la <em>classe de base</em> et <code>cercle</code> est une <em>sous-classe</em> de <code>forme</code> .</p> + +<p>Avec XPCOM, toutes les classes dérivent de l'interface <code>nsISupports</code>, de sorte que tous les objets héritent de <code>nsISupports</code>. Avec <a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM#Simple_Class_Inheritance">Héritage Class simple</a> , par exemple, vous êtes en mesure de savoir si la <code>forme</code> est un <code>cercle</code> et dans ce cas de l'utiliser comme un cercle. Ces à quoi la caractéristique <code>QueryInterface</code> de <code>nsISupports</code> est destinée: elle permet aux utilisateurs de trouver et d'accéder aux différentes interfaces en fonction de leurs besoins.</p> + +<p>En C++, vous pouvez utiliser une fonctionnalité assez avancé connu sous le nom de <a href="https://fr.wikipedia.org/wiki/Dynamic_cast">dynamic_cast<></a> , qui lève une exception si l'objet <code>f</code><code>orme</code> n'est un <code>cercle</code> . Mais les exceptions levants <a href="https://fr.wikipedia.org/wiki/Run-time_type_information">RTTI(</a>Run-time type information<a href="https://fr.wikipedia.org/wiki/Run-time_type_information">)</a> ne sont pas une option en raison de la lourdeur et de la compatibilité sur de nombreuses plates-formes, XPCOM fait les choses différemment.</p> + +<div class="side-note"> +<h4 id="Exceptions_avec_XPCOM">Exceptions avec XPCOM</h4> + +<p>Les exceptions C++ ne sont pas pris en charge directement par XPCOM. Les exceptions doivent être manipulés dans le composant XPCOM, avant de franchir les frontières de l'interface. Toutes les méthodes de l'interface doivent retourner une valeur d'erreur <code>nsresult </code>(voir <a href="https://developer.mozilla.org/en-US/docs/XPCOM_API_Reference">référence de l'API XPCOM</a> pour une liste de ces codes d'erreur). Ces résultats de code d'erreur deviennent les «exceptions» que gère XPCOM.</p> +</div> + +<p>Au lieu de tirer parti de RTTI du C++, XPCOM utilise la méthode <code>QueryInterface</code> qui passe l'objet à la bonne interface, si cette interface est pris en charge.</p> + +<p>Chaque interface est pourvu d'un identifiant qui est généré à partir d'un outil nommée <a href="https://fr.wikipedia.org/wiki/Universal_Unique_Identifier">"uuidgen"</a>. Cet identifiant universel unique (UUID) est un numéro unique de 128 bits appelé <em>IID</em>. Ce n'est pas la même chose que l'ID d'un composant.</p> + +<p>Quand un client veut découvrir si un objet prend en charge une interface donnée, le client passe l'IID assignée à cette interface dans la méthode <code>QueryInterface</code> de cet objet. Si l'objet prend en charge l'interface demandée, il ajoute une référence à lui-même et repasse un pointeur sur cette interface. Si l'objet ne prend pas en charge l'interface une erreur est renvoyée.</p> + +<pre>class nsISupports { + public: + long QueryInterface(const nsIID & uuid, + void **result) = 0; + long AddRef(void) = 0; + long Release(void) = 0; +}; +</pre> + +<p>Le premier paramètre de <code>QueryInterface</code> est une référence à une classe nommée <code>nsIID</code> , qui est une encapsulation de base de l'IID. Parmi les trois méthodes sur de la classe <code>nsIID</code>, <code>Equals</code> ,<code>Parse</code> et <code>ToString</code> , <code>Equal</code> est de loin le plus important, car elle est utilisé pour comparer deux<code> nsIID</code> dans le processus d'interrogation d'interface.</p> + +<p>Lorsque vous implémentez la classe <code><a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsISupports">nsISupports</a></code> (et vous le verrez dans le chapitre <a href="https://developer.mozilla.org/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier">Utilitaires XPCOM pour faciliter les choses</a> comment les macros peuvent rendre ce processus beaucoup plus facile), vous devez vous assurer que les méthodes de la classe renvoient un résultat valable lorsque le client appelle <code>QueryInterface</code> avec le <code>nsISupports</code> IID.<code> QueryInterface</code> devrait soutenir toutes les interfaces que le composant soutient.</p> + +<p>Dans les implémentations de <code>QueryInterface</code>, l'argument IID est comparer à la classe <code>nsIID</code>. Si il y a une corespondence, l'objet <code>this</code> pointeur est converti en <code>void</code>, le compteur de référence est incrémenté, et l'interface renvoyée à l'appelant. Si il n'y a pas de correspondance, la classe retourne une erreur et la valeur de sortie est <code>null</code> .</p> + +<p>Dans l'exemple ci-dessus, il est assez facile d'utiliser un C-style cast. Mais le casting peut devenir plus compliqué et vous devez d'abord passer <code>void</code> avec le type demandé, parce que vous devez retourner le pointeur d'interface dans la <abbr>table virtuelle(vtable)</abbr> correspondant à l'interface demandée. Castings peut devenir un problème quand il y a une hiérarchie d'héritage ambigu.</p> + +<h3 id="Identifiants_XPCOM">Identifiants XPCOM</h3> + +<p>En plus de l'identifiant d'interface IID discuté dans la section précédente, XPCOM utilise deux autres identificateurs très important pour distinguer les classes et les composants.</p> + +<div class="side-note"> +<h4 id="Classes_XPCOM_Identifier">Classes XPCOM Identifier</h4> + +<p>La classe <code>nsIID</code> est en fait un typedef de la classe <code>nsID</code>. Les autres typedefs de <code>nsID</code> , CID et IID, se réfèrent respectivement à des implémentations spécifiques d'une classe concrète et d'une interface spécifique.</p> + +<p>La classe <code>nsID</code> fournit des méthodes comme <code>Equals</code> pour comparer les identificateurs dans le code. Voir <a href="https://developer.mozilla.org/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Identifiers_in_XPCOM">identificateurs XPCOM</a> pour plus d'information sur <code>ns</code><code>ID</code>.</p> +</div> + +<h4 id="CID">CID</h4> + +<p>Un CID est un nombre de 128 bits qui identifie de manière unique une classe ou un composant de la même manière qu'un IID identifie de manière unique une interface. Le CID pour <code>nsISupports</code> ressemble à ceci:</p> + +<p><code>00000000-0000-0000-C000-000000000046</code></p> + +<p>La longueur d'un CID peut être lourd à traiter dans le code, de sorte que très souvent, vous verrez #defines pour les CID et les autres identifiants utilisés, comme dans cet exemple:</p> + +<pre>#define SAMPLE_CID \ +{ 0x777f7150, 0x4a2b, 0x4301, \ +{ 0xad, 0x10, 0x5e, 0xab, 0x25, 0xb3, 0x22, 0xaa}} +</pre> + +<p>Vous verrez utilisé aussi <code>NS_DEFINE_CID</code>. Cette macro déclare une constante avec la valeur du CID:</p> + +<pre>static NS_DEFINE_CID(kWebShellCID, NS_WEB_SHELL_CID); +</pre> + +<p>Un CID est parfois aussi désigné comme un <em>identificateur de classe</em> . Si la classe à laquelle un CID se réfère a plus d'une interface, il garanties que la classe implémente cette ensemble d'interfaces quand elle est publiée ou fixée.</p> + +<h4 id="Contrat_ID">Contrat ID</h4> + +<p>Un contract ID est une chaîne lisible utilisé pour accéder à un composant. Un CID ou un contract ID peuvent être utilisés pour accéder à un composant dans gestionnaire de composant. Le contract ID est utilisé pour le composant <a href="https://fr.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol#Op.C3.A9rations">LDAP Opération</a> :</p> + +<pre>"@mozilla.org/network/ldap-operation;1" +</pre> + +<p>Le format du contract ID est formé du <em>domaine</em>, du <em>module, du</em> <em>nom du composant</em> séparés par des barres obliques et du <em>numéro de version</em>.</p> + +<p>Comme un CID, un contract ID se réfère à une mise en œuvre plutôt qu'à une interface à l'instar IID. Mais un contract ID n'est pas liée à une mise en œuvre spécifique, contrairement au CID, il est donc plus général. Au lieu de cela, un contract ID spécifie seulement un ensemble donné d'interfaces qu'il met en œuvre, et un certain nombre de CID diffèrent peuvent intervenir en complément. Cette différence entre un contract ID et un CID est ce qui rend possible de remplacer des composants.</p> + +<h3 id="Utilisation">Utilisation</h3> + +<p>Une fois que le code est divisé en composants, le code client utilise habituellement l'opérateur <code>new</code> pour instancier des objets:</p> + +<pre>SomeClass* component = new SomeClass(); +</pre> + +<p>Ce modèle exige que le client connaisse le composant. Le <a href="https://fr.wikipedia.org/wiki/Fabrique_(patron_de_conception)">factory design pattern</a> peut être utilisé pour encapsuler la construction de l'objet. L'objectif du procédé est de créer un objet sans exposer les clients à la mise en œuvre et l'initialisation de cet objet. Dans l'exemple <code>SomeClass</code>, la construction et l'initialisation de <code>SomeClass</code> , qui implémente la classe abstraite <code>SomeInterface</code>, est contenu par la fonction <code>New_SomeInterface</code>:</p> + +<h4 id="Encapsuler_le_constructeur">Encapsuler le constructeur</h4> + +<pre>int New_SomeInterface(SomeInterface** ret){ +<code class="language-html"> // Créer l'objet</code> + SomeClass* out = new SomeClass(); + if (!out) return -1; +<code class="language-html"> // Initialisation de l'objet</code> + if (out->Init() == FALSE){ + delete out; + return -1; + } + // conversion de types de l'interface + *ret = static_cast<SomeInterface*>(out); + return 0; +} +</pre> + +<p>Factory est la classe qui gère effectivement la création des instances distinctes d'un composant. Dans XPCOM, les factories sont mises en œuvre par l'interface <code>nsIFactory</code>. Le modèle de conception utilise l'abstraction et encapsulalion de la construction et de l'initialisation de l'objet.</p> + +<p>L'exemple de <a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM#Encapsulating_the_Constructor">l'encapsulation du constructeur</a> est une version simple et sans état de factories, mais la programmation réel est généralement plus compliquée, ou les factories ont besoin de stocker l'état. Au minimum, la factory a besoin de préserver l'information des objets qu'elle a créée. Quand une factory gère les instances d'une classe construite dans une bibliothèque dynamique partagée, par exemple, elle doit savoir quand elle peut décharger la bibliothèque. Quand la factory conserve l'état, vous pouvez demander si il y a des références et savoir si la factory a créé des objets.</p> + +<p>Un autre état utile est de savoir si oui ou non un objet est un <em>singleton</em> . Par exemple, si la factory crée un objet qui est censé être un singleton, les appels suivants doivent retourner le même objet. Bien qu'il existe des outils et de meilleures façons de gérer les singletons (dont nous parlerons lorsque nous parlons de l'<code>nsIServiceManager</code>), un développeur peut vouloir utiliser cette information pour s'assurer que seul un objet singleton peut exister quelque soit l'usage.</p> + +<p>Les exigences d'une classe factory peuvent être traitées de manière strictement fonctionnel, l'état étant détenu par des variables globales, mais il y a des avantages à utiliser des classes pour les factory. Lorsque vous utilisez une classe pour implémenter la fonctionnalité d'une factory, par exemple, vous utilisez <code>nsISupports</code>, qui vous permet de gérer la durée de vie de l'objets lui-mêmes. Ceci est important quand vous voulez regrouper des ensembles de factories et déterminer si elles peuvent être déchargées. Un autre avantage de l'utilisation de <code>nsISupports</code> est que vous pouvez supporter d'autres interfaces comme ils sont introduits. Comme nous allons le montrer lorsque nous aborderons <code>nsIClassInfo</code>, certaines factories soutiennent l'interrogation des informations sur la mise en œuvre sous-jacente, comme le langage d'écriture de l'objet dans les interfaces que l'objet prend en charge, etc. Ce genre d' "évolutivité" est un avantage clé qui est dérivé de <code>nsISupports</code>.</p> + +<h4 id="XPIDL_et_bibliothèques_de_types">XPIDL et bibliothèques de types</h4> + +<p>Un moyen facile et puissant pour définir une interface - les interfaces dans un environnement de développement multi-plateforme, doit être indépendant du langage - est d'utiliser une <a href="https://fr.wikipedia.org/wiki/Interface_description_language">interface définition langage(IDL)</a>. XPCOM utilise sa propre variante de la définition <a href="https://fr.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture">CORBA</a> <a href="https://fr.wikipedia.org/wiki/Object_Management_Group">OMG</a> Interface Langage (IDL) appelé <a href="https://developer.mozilla.org/fr/docs/XPIDL">XPIDL</a>, qui vous permet de spécifier les méthodes, les attributs et les constantes d'une interface donnée, et aussi d'en définir héritage.</p> + +<p>Il y a quelques inconvénients à la définition de votre interface à l'aide XPIDL. Il n'y a pas d'héritage multiple possible. Si vous définissez une nouvelle interface, il ne peut pas provenir de plus d'une interface. Une autre limitation des interfaces dans XPIDL est que les noms de méthode doivent être uniques. Vous ne pouvez pas avoir deux méthodes avec le même nom qui prennent des paramètres différents, et la solution de contournement - avec plusieurs noms de fonction - n'est pas joli:</p> + +<pre>void FooWithInt(in int x); +void FooWithString(in string x); +void FooWithURI(in nsIURI x); +</pre> + +<p>Cependant, ces lacunes sont peu de chose en comparaison des fonctionnalités acquises en utilisant XPIDL. XPIDL vous permet de générer <em>des bibliothèques de types</em> , ou typelibs, qui sont des fichiers avec l'extension <em>.xpt</em>. La bibliothèque de types est une représentation binaire d'une ou plusieurs interfaces. Elle fournit un contrôle programmatique et l'accès à l'interface, ce qui est crucial pour les interfaces utilisées d'autre langages que C++. Lorsque les composants sont accessibles à partir d'autres langages, car ils peuvent être en XPCOM, ils utilisent la bibliothèque de type binaire pour accéder à l'interface, trouver les méthodes supportées, et les appeler. Cet aspect de XPCOM est appelé <em>XPConnect</em> . XPConnect est la couche de XPCOM qui donne accès à des composants XPCOM à partir des langages tels que JavaScript. Voir<a href="https://developer.mozilla.org/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#Connecting_to_Components_from_the_Interface"> connexion à des composants de l'interface</a> pour plus d'informations à propos de XPConnect.</p> + +<p>Quand un composant est accessible à partir d'une langage autre que C ++, tels que JavaScript, son interface est dit "réfléchi" dans cette langage. Chaque interface réfléchie doit avoir une bibliothèque de type correspondant. Actuellement, vous pouvez écrire des composants en C, C++ ou JavaScript (et parfois Python ou Java, en fonction de l'état des liaisons respectives), et il y a des efforts en cours pour renforcer les liaisons XPCOM pour Ruby et Perl.</p> + +<div class="side-note"> +<p><span id="%C3%89criture_dans_d'autres_langages"><a id="%C3%89criture_dans_d'autres_langages"></a><strong>Écriture dans d'autres langages</strong></span></p> + +<div class="side-note"> +<p>Bien que vous ne disposez pas de l'accès à certains des outils que XPCOM prévoit pour C++ (comme les macros, les modèles, des pointeurs intelligents, et autres) lorsque vous créez des composants dans d'autres langages, vous pouvez être tellement à l'aise avec, que vous pouvez éviter complètement le C++ et construire, par exemple, les composants XPCOM en Python qui peuvent être utilisés à partir de JavaScript, ou vice versa.</p> + +<p>Voir les <a href="https://developer.mozilla.org/en-US/docs/Creating_XPCOM_Components/Resources">Ressources</a> pour plus d'informations à propos de Python et d'autres langages utilisables avec XPCOM.</p> +</div> + +<p>Toutes les interfaces publiques en XPCOM sont définies en utilisant la syntaxe de XPIDL. Les bibliothèques de types et les fichiers d'en-tête de C++ sont générés à partir de ces fichiers IDL, et l'outil qui génére ces fichiers est appelé le <em>compilateur xpidl</em> . La section <a href="https://developer.mozilla.org/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Defining_the_WebLock_Interface_in_XPIDL">Définir l'interface de WEBLOCK dans XPIDL</a> décrit la syntaxe de XPIDL en détail.</p> + +<h3 id="Services_de_XPCOM">Services de XPCOM</h3> + +<p>Lorsque les clients utilisent des composants, ils <em>instancient</em> généralement un nouvel objet à chaque fois qu'ils ont besoin de la fonctionnalité du composant fournit. Tel est le cas lorsque, par exemple, les clients travaillent avec des fichiers: chaque fichier séparé est représenté par un objet différent, et plusieurs objets de fichier peut être utilisé à tout moment.</p> + +<p>Mais il y a aussi une sorte d'objet connu comme <em>le service</em> , dont il n'y a toujours qu'une seule copie (même si il peut y avoir de nombreux services en cours d'exécution à un moment donné).Chaque fois qu'un client veut accéder à la fonctionnalité fournie par un service, ils parlent à la même instance de ce service. Quand un utilisateur recherche un numéro de téléphone dans une base de données de l'entreprise, par exemple, probablement cette base de données est représentée par un «objet» qui est le même pour tous les collaborateurs. Si ce n'etait pas le cas, l'application aurait besoin de garder deux copies d'une grande base de données en mémoire, pour la même chose, et il pourrait aussi y avoir des incohérences entre les documents si les copies ont divergé.</p> + +<p>La fourniture de ce point d'accès unique à la fonctionnalité est mis en oeuvre par le <a href="https://fr.wikipedia.org/wiki/Singleton_(patron_de_conception)">singleton design pattern</a>.</p> + +<p>Dans XPCOM, en plus de l'appui et de la gestion des composants, il y a un certain nombre de services qui aident les développeurs à l'écriture de composants. Ces services incluent un fichier abstrait multiplateforme qui offre un accès uniforme et puissant pour les fichiers, les services d'annuaire qui maintiennent l'emplacement application, gestion de la mémoire pour s'assurer que tout le monde utilise le même allocateur de mémoire, et un système de notification d'événement qui permet de passer des messages simples. Le tutoriel va vous montrer l'utilisation de chacun de ces composants et services, et de la <a href="https://developer.mozilla.org/en-US/docs/XPCOM_API_Reference">Référence de l'API XPCOM</a> avec une liste d'interface complète.</p> + +<h3 id="Types_XPCOM">Types XPCOM</h3> + +<p>Il existe de nombreux types déclarés et de simples macros que nous allons utiliser dans les exemples suivants. La plupart de ces types sont des applications simples. Les types les plus courants sont décrits dans les sections suivantes.</p> + +<h4 id="les_types_de_méthode">les types de méthode</h4> + +<p>Ce qui suit est un ensemble de types qui veillent à la convention d'appel correcte et de type de méthodes XPCOM de retour.</p> +</div> + +<table class="standard-table"> + <tbody> + <tr> + <td><code>NS_IMETHOD</code></td> + <td>Type de retour de déclaration de méthode.</td> + </tr> + <tr> + <td><code>NS_IMETHODIMP</code></td> + <td>Type de retour de mise en œuvre de méthode. </td> + </tr> + <tr> + <td><code>NS_IMETHODIMP_(type)</code></td> + <td>Cas particulier de type de retour de mise en œuvre. Certaines méthodes telles que <code>AddRef</code> et <code>Release</code> ne renvoient pas le type de retour par défaut.</td> + </tr> + <tr> + <td><code>NS_IMPORT</code></td> + <td>Force la résolution de la méthode en interne par la bibliothèque partagée.</td> + </tr> + <tr> + <td><code>NS_EXPORT</code></td> + <td>Force l'exportation de la méthode par la bibliothèque partagée.</td> + </tr> + </tbody> +</table> + +<p>Référence Comptage</p> + +<p>Ces macros gérer comptage de référence.</p> + +<table class="standard-table"> + <tbody> + <tr> + <td><code>NS_ADDREF</code></td> + <td>Appelle <code>AddRef</code> de <code>nsISupports</code>.</td> + </tr> + <tr> + <td><code>NS_IF_ADDREF</code></td> + <td>Vérifie l'etat null avant d'appeler <code>AddRef</code>.</td> + </tr> + <tr> + <td><code>NS_RELEASE</code></td> + <td>Appelle <code>Release</code> de <code>nsISupports</code>.</td> + </tr> + <tr> + <td><code>NS_IF_RELEASE</code></td> + <td>Vérifie l'etat null avant d'appeler <code>Release</code>.</td> + </tr> + </tbody> +</table> + +<p>Codes d'état</p> + +<p>Ces macros testent les codes d'état.</p> + +<table class="standard-table"> + <tbody> + <tr> + <td><code>NS_FAILED</code></td> + <td>Retourne vrai si le code d'état passé est un échec</td> + </tr> + <tr> + <td><code>NS_SUCCEEDED</code></td> + <td>Retourne vrai est le code d'état passé est un succès.</td> + </tr> + </tbody> +</table> + +<h3 id="Variable_Mappings">Variable Mappings</h3> + +<table class="standard-table"> + <tbody> + <tr> + <td><code>nsrefcnt</code></td> + <td>Type de comptage de référence(entier de 32 bits).</td> + </tr> + <tr> + <td><code>nsresult</code></td> + <td>Type d'erreur par défaut(entier de 32 bits).</td> + </tr> + <tr> + <td><code>nsnull</code></td> + <td>Valeur null par défaut.</td> + </tr> + </tbody> +</table> + +<h3 id="Codes_d'erreur_XPCOM_communes">Codes d'erreur XPCOM communes</h3> + +<table class="standard-table"> + <tbody> + <tr> + <td><code>NS_ERROR_NOT_INITIALIZED</code></td> + <td>Instance non initialisée.</td> + </tr> + <tr> + <td><code>NS_ERROR_ALREADY_INITIALIZED</code></td> + <td>Instance déjà initialisée.</td> + </tr> + <tr> + <td><code>NS_ERROR_NOT_IMPLEMENTED</code></td> + <td>Méthode non implémentée</td> + </tr> + <tr> + <td><code>NS_ERROR_NO_INTERFACE</code></td> + <td>Interface non pris en charge.</td> + </tr> + <tr> + <td><code>NS_ERROR_NULL_POINTER</code></td> + <td>Pointeur valide <code>nsnull</code>.</td> + </tr> + <tr> + <td><code>NS_ERROR_FAILURE</code></td> + <td>La méthode a échoué. Erreur générique.</td> + </tr> + <tr> + <td><code>NS_ERROR_UNEXPECTED</code></td> + <td>Erreur inattendue.</td> + </tr> + <tr> + <td><code>NS_ERROR_OUT_OF_MEMORY</code></td> + <td>Allocation de mémoire échouée.</td> + </tr> + <tr> + <td><code>NS_ERROR_FACTORY_NOT_REGISTERED</code></td> + <td>Classe inconnue du registre.</td> + </tr> + </tbody> +</table> + +<p></p><div class="prevnext" style="text-align: right;"> + <p><a href="/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Preface" style="float: left;">« Précédent</a><a href="/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Using_XPCOM_Components">Suivant »</a></p> +</div><p></p> diff --git a/files/fr/mozilla/tech/xpcom/guide/creating_components/index.html b/files/fr/mozilla/tech/xpcom/guide/creating_components/index.html new file mode 100644 index 0000000000..dbffe93c6e --- /dev/null +++ b/files/fr/mozilla/tech/xpcom/guide/creating_components/index.html @@ -0,0 +1,281 @@ +--- +title: Créer des composants XPCOM +slug: Mozilla/Tech/XPCOM/Guide/Creating_components +translation_of: Mozilla/Tech/XPCOM/Guide/Creating_components +--- +<p></p><div class="prevnext" style="text-align: right;"> + <p><a href="/fr/docs/Creating_XPCOM_Components/Preface">Suivant »</a></p> +</div><p></p> + +<p><span class="seoSummary">Ce guide a pour but de vous initier à Gecko, et de vous permettre de créer des composants <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/en/XPCOM">XPCOM</a> pour les applications Gecko.</span> Bien que le principal objectif soit de vous permettre d'inclure du code C++ dans des composants utilisables dans Gecko, nous espérons pouvoir vous présenter tous les outils, techniques, et technologies qui constituent XPCOM. <span id="result_box" lang="fr"><span class="hps">En conséquence</span><span>,</span> c<span class="hps">e livre</span> <span class="hps">est agencé</span> <span class="hps">de telle sorte que</span> <span class="hps">vous puissiez </span><span class="hps">suivre</span> <span class="hps">et créer</span> <span class="hps">vos propres composants</span> <span class="hps">ou</span> <span class="hps">en apprendre davantage sur</span> <span class="hps">les différents</span> <span class="hps">sujets</span> <span class="hps">XPCOM</span> <span class="hps">individuellement</span><span>, comme un </span><span class="hps">ouvrage de référence</span><span>.</span></span> Par exemple, l'introduction inclue une analyse des composants, et le premier chapitre - dans lequel vous compilerez le code de base et vous l'enregistrerez avec Mozilla - explique la relation entre les composants et les modules, les interfaces XPCOM, et le processus d'enregistrement de manière générale.</p> + +<div class="note"> +<p><strong>Remarque:</strong> De manière générale, essayez d'éviter de créer des composants XPCOM. Les add-ons devraient utiliser le nouveau <a href="/en-US/Add-ons/SDK">Add-on SDK</a> autant que possible ; cependant, il est probable que dans certains cas cela soit inévitable.</p> +</div> + +<div class="note"> +<p><strong>Remarque :</strong> Cet article décrit une méthode qui utilise <a href="https://developer.mozilla.org/en-US/docs/Mozilla/XPIDL">xpidl</a> mais vous devriez plutôt utiliser <a href="https://developer.mozilla.org/en-US/docs/Mozilla/WebIDL_bindings">webidl</a>.</p> +</div> + +<h3 id="Preface" name="Preface"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Preface" title="/en-US/docs/Creating_XPCOM_Components/Preface">Preface</a></h3> + +<dl> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Preface" title="/en-US/docs/Creating_XPCOM_Components/Preface#Who_Should_Read_This_Book">Pour qui est ce tutoriel</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Preface" title="/en-US/docs/Creating_XPCOM_Components/Preface#Organization_of_the_Tutorial">Organisation du tutoriel</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Preface" title="/en-US/docs/Creating_XPCOM_Components/Preface#Following_Along_with_the_Examples">En Pratique</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Preface" title="/en-US/docs/Creating_XPCOM_Components/Preface#Conventions">Conventions</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Preface" title="/en-US/docs/Creating_XPCOM_Components/Preface#Acknowledgements">Remerciements</a></dd> +</dl> + +<h3 id="An_Overview_of_XPCOM" name="An_Overview_of_XPCOM"><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM">Un aperçu de XPCOM</a></h3> + +<dl> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#The_XPCOM_Solution">Solutions XPCOM</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#Gecko">Gecko</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#Components">Composants</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#Interfaces">Interfaces</a> + <dl> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#Interfaces_and_Encapsulation">Interfaces et Encapsulation</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#The_nsISupports_Base_Interface">L'interface de base <code>nsISupports</code></a></dd> + </dl> + </dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#XPCOM_Identifiers">XPCOM Identifiers</a> + <dl> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#CID">CID</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#Contract_ID">Contract ID</a></dd> + </dl> + </dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#Factories">Factories</a> + <dl> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#XPIDL_and_Type_Libraries">XPIDL et bibliothèques de types</a></dd> + </dl> + </dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#XPCOM_Services">XPCOM Services</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#XPCOM_Types">XPCOM Types</a> + <dl> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#Method_Types">Method Types</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#Reference_Counting">Reference Counting</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#Status_Codes">Status Codes</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#Variable_Mappings">Variable Mappings</a></dd> + <dd><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/An_Overview_of_XPCOM#Common_XPCOM_Error_Codes">Codes d'erreur XPCOM</a></dd> + </dl> + </dd> +</dl> + +<h3 id="Using_XPCOM_Components" name="Using_XPCOM_Components"><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components">Utilisation des composants XPCOM</a></h3> + +<dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#Component_Examples" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#Component_Examples">Exemples de composants</a> + + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#Cookie_Manager" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#Cookie_Manager">gestionnaire de cookies</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#The_WebBrowserFind_Component" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#The_WebBrowserFind_Component"><strong>WebBrowserFind</strong></a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#The_WebLock_Component" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#The_WebLock_Component"><strong>WebLock</strong></a></dd> + </dl> + </dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#Component_Use_in_Mozilla" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#Component_Use_in_Mozilla">Utilisation de composant dans Mozilla</a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#Finding_Mozilla_Components" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#Finding_Mozilla_Components">Trouver des composants Mozilla</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#Using_XPCOM_Components_in_Your_Cpp" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#Using_XPCOM_Components_in_Your_Cpp">Utilisation de composants XPCOM dans votre Cpp</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#XPConnect:_Using_XPCOM_Components_From_Script" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Components#XPConnect:_Using_XPCOM_Components_From_Script">XPConnect: Utilisation de XPCOM avec un Script</a></dd> + </dl> + </dd> +</dl> + +<h3 id="Component_Internals" name="Component_Internals"><a href="/en-US/docs/Creating_XPCOM_Components/Component_Internals" title="/en-US/docs/Creating_XPCOM_Components/Component_Internals">Composants Internes</a></h3> + +<dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Component_Internals#Creating_Components_in_Cpp" title="/en-US/docs/Creating_XPCOM_Components/Component_Internals#Creating_Components_in_Cpp">Creation de composants dans Cpp</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Component_Internals#XPCOM_Initialization" title="/en-US/docs/Creating_XPCOM_Components/Component_Internals#XPCOM_Initialization">XPCOM Initialization</a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Component_Internals#XPCOM_Registry_Manifests" title="/en-US/docs/Creating_XPCOM_Components/Component_Internals#XPCOM_Registry_Manifests">XPCOM Registry Manifests</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Component_Internals#Registration_Methods_in_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/Component_Internals#Registration_Methods_in_XPCOM">Registration Methods in XPCOM</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Component_Internals#Autoregistration" title="/en-US/docs/Creating_XPCOM_Components/Component_Internals#Autoregistration">Autoregistration</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Component_Internals#The_Shutdown_Process" title="/en-US/docs/Creating_XPCOM_Components/Component_Internals#The_Shutdown_Process">The Shutdown Process</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Component_Internals#Three_Parts_of_a_XPCOM_Component_Library" title="/en-US/docs/Creating_XPCOM_Components/Component_Internals#Three_Parts_of_a_XPCOM_Component_Library">Three Parts of a XPCOM Component Library</a></dd> + </dl> + </dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Component_Internals#XPCOM_Glue" title="/en-US/docs/Creating_XPCOM_Components/Component_Internals#XPCOM_Glue">XPCOM Glue</a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Component_Internals#The_Glue_Library" title="/en-US/docs/Creating_XPCOM_Components/Component_Internals#The_Glue_Library">The Glue Library</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Component_Internals#XPCOM_String_Classes" title="/en-US/docs/Creating_XPCOM_Components/Component_Internals#XPCOM_String_Classes">XPCOM String Classes</a></dd> + </dl> + </dd> +</dl> + +<h3 id="Creating_the_Component_Code" name="Creating_the_Component_Code"><a href="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code" title="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code">Creating the Component Code</a></h3> + +<dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#What_We.27ll_Be_Working_On" title="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#What_We.27ll_Be_Working_On">What We'll Be Working On</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Component_Registration" title="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Component_Registration">Component Registration</a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#The_regxpcom_Program" title="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#The_regxpcom_Program">The <code>regxpcom</code> Program</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Registration_Alternatives" title="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Registration_Alternatives">Registration Alternatives</a></dd> + </dl> + </dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Overview_of_the_WebLock_Module_Source" title="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Overview_of_the_WebLock_Module_Source">Overview of the <strong>WebLock</strong> Module Source</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Digging_In:_Required_Includes_and_Constants" title="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Digging_In:_Required_Includes_and_Constants">Digging In: Required Includes and Constants</a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Identifiers_in_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Identifiers_in_XPCOM">Identifiers in XPCOM</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Coding_for_the_Registration_Process" title="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Coding_for_the_Registration_Process">Coding for the Registration Process</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#The_Registration_Methods" title="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#The_Registration_Methods">The Registration Methods</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Creating_an_Instance_of_Your_Component" title="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#Creating_an_Instance_of_Your_Component">Creating an Instance of Your Component</a></dd> + </dl> + </dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#webLock1.cpp" title="/en-US/docs/Creating_XPCOM_Components/Creating_the_Component_Code#webLock1.cpp"><code>webLock1.cpp</code></a></dd> +</dl> + +<h3 id="Using_XPCOM_Utilities_to_Make_Things_Easier" name="Using_XPCOM_Utilities_to_Make_Things_Easier"><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier">Using XPCOM Utilities to Make Things Easier</a></h3> + +<dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#XPCOM_Macros" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#XPCOM_Macros">XPCOM Macros</a> + + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#Generic_XPCOM_Module_Macros" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#Generic_XPCOM_Module_Macros">Generic XPCOM Module Macros</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#Common_Implementation_Macros" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#Common_Implementation_Macros">Common Implementation Macros</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#Declaration_Macros" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#Declaration_Macros">Declaration Macros</a></dd> + </dl> + </dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#webLock2.cpp" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#webLock2.cpp"><code>webLock2.cpp</code></a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#String_Classes_in_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#String_Classes_in_XPCOM">String Classes in XPCOM</a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#Using_Strings" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#Using_Strings">Using Strings</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#nsEmbedString_and_nsEmbedCString" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#nsEmbedString_and_nsEmbedCString"><code>nsEmbedString</code> and <code>nsEmbedCString</code></a></dd> + </dl> + </dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#Smart_Pointers" title="/en-US/docs/Creating_XPCOM_Components/Using_XPCOM_Utilities_to_Make_Things_Easier#Smart_Pointers">Smart Pointers</a></dd> +</dl> + +<h3 id="Starting_WebLock" name="Starting_WebLock"><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock">Starting <strong>WebLock</strong></a></h3> + +<dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Getting_Called_at_Startup" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Getting_Called_at_Startup">Getting Called at Startup</a> + + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Registering_for_Notifications" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Registering_for_Notifications">Registering for Notifications</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Getting_Access_to_the_Category_Manager" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Getting_Access_to_the_Category_Manager">Getting Access to the Category Manager</a></dd> + </dl> + </dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Providing_Access_to_WebLock" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Providing_Access_to_WebLock">Providing Access to <strong>WebLock</strong></a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Creating_the_WebLock_Programming_Interface" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Creating_the_WebLock_Programming_Interface">Creating the <strong>WebLock</strong> Programming Interface</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Defining_the_WebLock_Interface_in_XPIDL" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Defining_the_WebLock_Interface_in_XPIDL">Defining the <strong>WebLock</strong> Interface in XPIDL</a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#The_XPIDL_Syntax" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#The_XPIDL_Syntax">The XPIDL Syntax</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Scriptable_Interfaces" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Scriptable_Interfaces">Scriptable Interfaces</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Subclassing_nsISupports" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Subclassing_nsISupports">Subclassing <code>nsISupports</code></a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#The_Web_Locking_Interface" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#The_Web_Locking_Interface">The Web Locking Interface</a></dd> + </dl> + </dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Implementing_WebLock" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Implementing_WebLock">Implementing <strong>WebLock</strong></a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Declaration_Macros" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Declaration_Macros">Declaration Macros</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Representing_Return_Values_in_XPCOM" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Representing_Return_Values_in_XPCOM">Representing Return Values in XPCOM</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#XPIDL_Code_Generation" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#XPIDL_Code_Generation">XPIDL Code Generation</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Getting_the_WebLock_Service_from_a_Client" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Getting_the_WebLock_Service_from_a_Client">Getting the <strong>WebLock</strong> Service from a Client</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Implementing_the_iWebLock_Interface" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Implementing_the_iWebLock_Interface">Implementing the <code>iWebLock</code> Interface</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#The_Directory_Service" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#The_Directory_Service">The Directory Service</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Modifying_Paths_with_nsIFile" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Modifying_Paths_with_nsIFile">Modifying Paths with <code>nsIFile</code></a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Manipulating_Files_with_nsIFile" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Manipulating_Files_with_nsIFile">Manipulating Files with <code>nsIFile</code></a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Using_nsILocalFile_for_Reading_Data" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Using_nsILocalFile_for_Reading_Data">Using <code>nsILocalFile</code> for Reading Data</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Processing_the_White_List_Data" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Processing_the_White_List_Data">Processing the White List Data</a></dd> + </dl> + </dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#iWebLock_Method_By_Method" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#iWebLock_Method_By_Method"><code>iWebLock</code> Method By Method</a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Lock_and_Unlock" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#Lock_and_Unlock"><code>Lock</code> and <code>Unlock</code></a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#AddSite" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#AddSite"><code>AddSite</code></a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#RemoveSite" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#RemoveSite"><code>RemoveSite</code></a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#SetSites" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#SetSites"><code>SetSites</code></a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#GetNext" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#GetNext"><code>GetNext</code></a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#GetSites" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#GetSites"><code>GetSites</code></a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#HasMoreElements" title="/en-US/docs/Creating_XPCOM_Components/Starting_WebLock#HasMoreElements"><code>HasMoreElements</code></a></dd> + </dl> + </dd> +</dl> + +<h3 id="Finishing_the_Component" name="Finishing_the_Component"><a href="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component" title="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component">Finishing the Component</a></h3> + +<dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Using_Frozen_Interfaces" title="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Using_Frozen_Interfaces">Using Frozen Interfaces</a> + + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Copying_Interfaces_Into_Your_Build_Environment" title="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Copying_Interfaces_Into_Your_Build_Environment">Copying Interfaces Into Your Build Environment</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Implementing_the_nsIContentPolicy_Interface" title="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Implementing_the_nsIContentPolicy_Interface">Implementing the <code>nsIContentPolicy</code> Interface</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Receiving_Notifications" title="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Receiving_Notifications">Receiving Notifications</a></dd> + </dl> + </dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Implementing_the_nsIContentPolicy" title="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Implementing_the_nsIContentPolicy">Implementing the <code>nsIContentPolicy</code></a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Uniform_Resource_Locators" title="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Uniform_Resource_Locators">Uniform Resource Locators</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Checking_the_White_List" title="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Checking_the_White_List">Checking the White List</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Creating_nsIURI_Objects" title="/en-US/docs/Creating_XPCOM_Components/Finishing_the_Component#Creating_nsIURI_Objects">Creating <code>nsIURI</code> Objects</a></dd> + </dl> + </dd> +</dl> + +<h3 id="Building_the_WebLock_UI" name="Building_the_WebLock_UI"><a href="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI" title="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI">Building the <strong>WebLock</strong> UI</a></h3> + +<dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#User_Interface_Package_List" title="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#User_Interface_Package_List">User Interface Package List</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#Client_Code_Overview" title="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#Client_Code_Overview">Client Code Overview</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#XUL" title="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#XUL">XUL</a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#The_XUL_Document" title="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#The_XUL_Document">The XUL Document</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#The_Locking_UI" title="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#The_Locking_UI">The Locking UI</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#Site_Adding_UI" title="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#Site_Adding_UI">Site Adding UI</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#weblock.xul" title="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#weblock.xul"><code>weblock.xul</code></a></dd> + </dl> + </dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#Overlaying_New_User_Interface_Into_Mozilla" title="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#Overlaying_New_User_Interface_Into_Mozilla">Overlaying New User Interface Into Mozilla</a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#webLockOverlay.xul" title="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#webLockOverlay.xul"><code>webLockOverlay.xul</code></a></dd> + </dl> + </dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#Other_Resources" title="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#Other_Resources">Other Resources</a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#weblock.css" title="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#weblock.css"><code>weblock.css</code></a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#Image_Resources" title="/en-US/docs/Creating_XPCOM_Components/Building_the_WebLock_UI#Image_Resources">Image Resources</a></dd> + </dl> + </dd> +</dl> + +<h3 id="Packaging_WebLock" name="Packaging_WebLock"><a href="/en-US/docs/Creating_XPCOM_Components/Packaging_WebLock" title="/en-US/docs/Creating_XPCOM_Components/Packaging_WebLock">Packaging WebLock</a></h3> + +<dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Packaging_WebLock#Component_Installation_Overview" title="/en-US/docs/Creating_XPCOM_Components/Packaging_WebLock#Component_Installation_Overview">Component Installation Overview</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Packaging_WebLock#Archiving_Resources" title="/en-US/docs/Creating_XPCOM_Components/Packaging_WebLock#Archiving_Resources">Archiving Resources</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Packaging_WebLock#The_WebLock_Installation_Script" title="/en-US/docs/Creating_XPCOM_Components/Packaging_WebLock#The_WebLock_Installation_Script">The <strong>WebLock</strong> Installation Script</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Packaging_WebLock#The_WebLock_Trigger_Script" title="/en-US/docs/Creating_XPCOM_Components/Packaging_WebLock#The_WebLock_Trigger_Script">The <strong>WebLock</strong> Trigger Script</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Packaging_WebLock#Distributing_Your_Component" title="/en-US/docs/Creating_XPCOM_Components/Packaging_WebLock#Distributing_Your_Component">Distributing Your Component</a></dd> +</dl> + +<h3 id="Appendix_A_-_Setting_up_the_Gecko_SDK" name="Appendix_A_-_Setting_up_the_Gecko_SDK"><a href="/en-US/docs/Creating_XPCOM_Components/Setting_up_the_Gecko_SDK" title="/en-US/docs/Creating_XPCOM_Components/Setting_up_the_Gecko_SDK">Appendix A - Setting up the Gecko SDK</a></h3> + +<dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Setting_up_the_Gecko_SDK#Downloading_and_Setting_the_SDK" title="/en-US/docs/Creating_XPCOM_Components/Setting_up_the_Gecko_SDK#Downloading_and_Setting_the_SDK">Downloading and Setting the SDK</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Setting_up_the_Gecko_SDK#Building_a_Microsoft_Visual_Cpp_Project" title="/en-US/docs/Creating_XPCOM_Components/Setting_up_the_Gecko_SDK#Building_a_Microsoft_Visual_Cpp_Project">Building a Microsoft Visual Cpp Project</a> + <dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Setting_up_the_Gecko_SDK#Creating_a_New_Project" title="/en-US/docs/Creating_XPCOM_Components/Setting_up_the_Gecko_SDK#Creating_a_New_Project">Creating a New Project</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Setting_up_the_Gecko_SDK#Adding_the_Gecko_SDK_to_the_Project_Settings" title="/en-US/docs/Creating_XPCOM_Components/Setting_up_the_Gecko_SDK#Adding_the_Gecko_SDK_to_the_Project_Settings">Adding the Gecko SDK to the Project Settings</a></dd> + </dl> + </dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Setting_up_the_Gecko_SDK#Building_a_Windows_Project" title="/en-US/docs/Creating XPCOM Components/Setting up the Gecko SDK#Building a Windows Project">Building a Windows Project</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Setting_up_the_Gecko_SDK#A_Makefile_for_Unix" title="/en-US/docs/Creating_XPCOM_Components/Setting_up_the_Gecko_SDK#A_Makefile_for_Unix">A Makefile for Unix</a></dd> +</dl> + +<h3 id="Appendix_B_-_Resources" name="Appendix_B_-_Resources"><a href="/en-US/docs/Creating_XPCOM_Components/Resources" title="/en-US/docs/Creating_XPCOM_Components/Resources">Appendix B - Resources</a></h3> + +<dl> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Resources#WebLock_Resources" title="/en-US/docs/Creating_XPCOM_Components/Resources#WebLock_Resources">WebLock Resources</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Resources#Gecko_Resources" title="/en-US/docs/Creating_XPCOM_Components/Resources#Gecko_Resources">Gecko Resources</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Resources#XPCOM_Resources" title="/en-US/docs/Creating_XPCOM_Components/Resources#XPCOM_Resources">XPCOM Resources</a></dd> + <dd><a href="/en-US/docs/Creating_XPCOM_Components/Resources#General_Development_Resources" title="/en-US/docs/Creating_XPCOM_Components/Resources#General_Development_Resources">General Development Resources</a></dd> +</dl> + +<p></p><div class="prevnext" style="text-align: right;"> + <p><a href="/fr/docs/Creating_XPCOM_Components/Preface">Suivant »</a></p> +</div> <p></p><div class="licenseblock"> +<p>Copyright (c) 2003 by Doug Turner and Ian Oeschger. This material may be distributed only subject to the terms and conditions set forth in the <a class="external" href="http://www.opencontent.org/openpub/" rel="noopener">Open Publication License</a>, v1.02 or later. Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder. Distribution of the work or derivative of the work in any standard (paper) book form is prohibited unless prior permission is obtained from the copyright holder.</p> +</div><p></p> + +<p></p> diff --git a/files/fr/mozilla/tech/xpcom/guide/creating_components/preface/index.html b/files/fr/mozilla/tech/xpcom/guide/creating_components/preface/index.html new file mode 100644 index 0000000000..478a139e2f --- /dev/null +++ b/files/fr/mozilla/tech/xpcom/guide/creating_components/preface/index.html @@ -0,0 +1,77 @@ +--- +title: Préface +slug: Mozilla/Tech/XPCOM/Guide/Creating_components/Preface +tags: + - Guide + - XPCOM +translation_of: Mozilla/Tech/XPCOM/Guide/Creating_components/Preface +--- +<p></p><div class="prevnext" style="text-align: right;"> + <p><a href="/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM">Suivant »</a></p> +</div><p></p> + +<p>Cette section concerne Gecko et la création de composants <a href="https://developer.mozilla.org/fr/docs/XPCOM">XPCOM</a> pour des applications basées sur Gecko. Bien que l'accent soit mis sur les mesures concrètes que vous prenez pour créer un code C ++ valide dans un composant qui peut être utilisé dans Gecko, nous espérons que ces mesures nous donneront également l'occasion de discuter de tous les outils, les techniques et les technologies qui composent XPCOM. En conséquence, le livre est agencé de telle sorte que vous puissiez suivre et créer vos propres composants et en apprendre davantage sur XPCOM, comme dans un ouvrage de référence. Par exemple, l'introduction comprend une discussion sur les composants, et le premier chapitre - dans laquelle vous compilez le code de base et l'enregistrer avec Mozilla - éclair sur la relation entre les composants et les modules, les interfaces XPCOM et le processus d'enregistrement en général.</p> + +<p>Le début de chaque chapitre fournit une liste des principaux sujets abordés. Des barres latérales sont incluses pour mettre en évidence les détails techniques. À la fin du livre, vous aurez appris comment construire un composant XPCOM et vous comprendrez sont fonctionnement dans Gecko.</p> + +<h3 id="Pour_qui_est_ce_tutoriel">Pour qui est ce tutoriel ?</h3> + +<p><a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components">La Création de composants XPCOM</a> est destinée aux développeurs C ++. Bien que vous pouvez créer des composants XPCOM en <a href="https://developer.mozilla.org/fr/docs/compiler_un_composant_xpcom_javascript">JavaScript</a> ou d'autres langages, le code de mise en œuvre des composants est écrit en C ++, et une grande partie de la discussion sur la façon de programmer un composant XPCOM utilise le C ++. Vous ne devez pas non plus être un expert C ++. Bien que les idées de base telles que l'héritage et l'encapsulation devraient vous être familiers. Leur utilisation est expliquée à chaque fois dans le tutoriel. En outre, beaucoup d'exemples sont en JavaScript, utilisé dans Mozilla pour accéder aux composants XPCOM comme des objets scriptable, votre familiarité avec ce langage est également utile.</p> + +<p>XPCOM pour Cross Platform Component Object Model est similaire à Microsoft COM. Si vous avez une expérience avec ces technologies, beaucoup d'entre elles peuvent être appliquées à XPCOM. Cependant, ce tutoriel ne suppose aucune connaissance préalable du COM - toutes les idées de base seront présentés.</p> + +<p>Ce livre fournit un tutoriel sur la construction d'un composant XPCOM contrôlant le comportement d'un navigateur. Bien que XPCOM peux être utilisé dans de nombreux environnements qui sont sans rapport avec la navigation web, le principal client de XPCOM est Gecko. Il est open source, conforme aux standards, possède un navigateur Web embarquable, où il est plus facile et plus pratique d'illustrer les fonctionnalités d'XPCOM. Une description complète de ce composant peut être trouvé dans le chapitre <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Creating_the_Component_Code#What_We.27ll_Be_Working_On">ce que nous allons faire</a> du didacticiel.</p> + +<div class="note"> +<p>Malgré ce que dit le vieux document, XPCOM ne devrait pas être utilisé pour faire des <a href="en/Plugins">plugins NPAPI </a> scriptable. A partir de Gecko 1.7.5 (Firefox 1.0) une extension spéciale NPAPI pour scriptabilité est prise en charge, voir <a href="en/Gecko_Plugin_API_Reference/Scripting_plugins">plugins Scripting</a>.</p> +</div> + +<h3 id="Organisation_du_Tutoriel">Organisation du Tutoriel</h3> + +<p>La liste suivante donne un aperçu des étapes que nous allons suivre pour construire un composant XPCOM appelé <strong>WebLock</strong>, qui prévoit une fonctionnalité de blocage de sites pour les navigateurs basés sur Gecko. Chacune de ces étapes a son propre chapitre, dans lequel un certain nombre de sujets liés à l'étape sont abordés.</p> + +<ul> + <li>Créer un module de code générique pour le composant.</li> + <li>Utilisez les macros C++, particulièrement les classes string et pointeurs intelligents, pour optimiser votre code.</li> + <li>Définir la fonctionnalité pour le composant; créer une interface <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/en/XPIDL">XPIDL</a> pour cette fonctionnalité; créer le code de mise en œuvre spécifique à l'usage de l'interface du composant <strong>WebLock</strong>.</li> + <li>Terminer la mise en œuvre du composant <strong>WebLock</strong>: <code>nsIContentPolicy</code> , fichier I/O, de verrouillage, etc.</li> + <li>Création de l'interface utilisateur pour le composant de <strong>WebLock</strong>.</li> + <li>Emballage <strong>WebLock</strong> pour la distribution et l'installation.</li> +</ul> + +<h3 id="Continuons_avec_des_exemples">Continuons avec des exemples</h3> + +<p>Il y a deux façons d'installer XPCOM sur votre machine pour que vous puissiez commencer à créer des composants. Si vous avez déjà Mozilla build ou le code source de Mozilla 1.2 ou ultérieure, vous pouvez utiliser le framework XPCOM disponible. Si non, la façon la plus simple d'obtenir et d'utiliser XPCOM est de télécharger le <a href="https://developer.mozilla.org/fr/docs/SDK_Gecko">SDK Gecko</a>, qui est un ensemble de bibliothèques et d'outils qui comporte le framework XPCOM.</p> + +<p>Que vous compiliez le code source ou utilisiez le SDK Gecko, vous pouvez construire vos propres composants en utilisant les composants existant dans Gecko. Le composant <strong>WebLock</strong> que nous décrirons dans ce tutoriel met ceci en pratique (et, nous l'espérons, de façon utile) en plus de la manipulation du navigateur. Pour que cela fonctionne, votre code source SDK Gecko ou Mozilla doit être de version 1.2 ou ultérieure (l'interface XPCOM n'a pas été entièrement fixée dans les versions antérieures).</p> + +<p>Ce livre suppose que vous utilisez SDK plutôt que de compiler le code source de Mozilla, bien que la différence entre ces deux approches soit minime. La construction, et l'obtention de l'accès à la programmation de composants Gecko est fournies en annexe à ce livre, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Setting_up_the_Gecko_SDK">Configuration du SDK Gecko</a> .</p> + +<h3 id="Conventions">Conventions</h3> + +<p>Les conventions de formats ci-dessous sont utilisées pour désigner des types d'informations spécifiques dans le livre et rendre les choses plus faciles à analyser. Le but est d'utiliser aussi peu de formats que possible, mais de distinguer clairement les différents types d'informations.</p> + +<table class="standard-table"> + <tbody> + <tr> + <td class="header">Format</td> + <td class="header">Description</td> + </tr> + <tr> + <td><strong>gras</strong></td> + <td><strong>noms des composants</strong> apparaissent en gras dans le texte</td> + </tr> + <tr> + <td><code>monospace</code></td> + <td><code>lignes de code</code> , <code>noms d'interface</code> et <code>membres</code> d'interfaces (par exemple, <code>createInstance()</code>) apparaissent avec cette police. Les lignes de code sont placées dans des encarts séparés. En outre, <code>les noms de fichiers</code> et de <code>répertoires</code> possèdent également cette police.</td> + </tr> + <tr> + <td><em>italique</em></td> + <td><em>les variables</em> apparaissent en italique. Les termes importants et les nouveaux concepts sont également en italique la première fois qu'ils apparaissent dans le texte. Ces termes sont expliqués soit immédiatement après leur citation, ou bien le lecteur est renvoyé à une section dans le livre où ils sont décrits en détail.</td> + </tr> + <tr> + <td>lien</td> + <td>Références à d'autres sections, figures ou tableaux et leur liens vers ces articles.</td> + </tr> + </tbody> +</table> diff --git a/files/fr/mozilla/tech/xpcom/guide/creating_components/using_xpcom_components/index.html b/files/fr/mozilla/tech/xpcom/guide/creating_components/using_xpcom_components/index.html new file mode 100644 index 0000000000..3a6b536ee6 --- /dev/null +++ b/files/fr/mozilla/tech/xpcom/guide/creating_components/using_xpcom_components/index.html @@ -0,0 +1,303 @@ +--- +title: Utilisation des composants XPCOM +slug: Mozilla/Tech/XPCOM/Guide/Creating_components/Using_XPCOM_Components +translation_of: Mozilla/Tech/XPCOM/Guide/Creating_components/Using_XPCOM_Components +--- +<p></p><div class="prevnext" style="text-align: right;"> + <p><a href="/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" style="float: left;">« Précédent</a><a href="/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Component_Internals">Suivant »</a></p> +</div> Une des meilleures façons de commencer à travailler avec XPCOM - surtout quand vous concevez l'interface d'un composant qui sera utilisé par d'autres(<a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Starting_WebLock">WebLock</a>) - est de regarder comment les clients utilisent déjà des composants XPCOM.<p></p> + +<p>Les applications sophistiqués comme le navigateur Mozilla sont des utilisateurs de modules XPCOM. En fait, la quasi-totalité des fonctionnalités associees au navigateur - la navigation, la gestion des fenêtres, la gestion des cookies, les signets, la sécurité, la recherche, de rendu et d'autres caractéristiques - sont définies par des composants XPCOM et consultée par le biais de leurs interfaces. Mozilla est <em>fait</em> de composants XPCOM.</p> + +<p>Ce chapitre montre comment Mozilla utilise certains de ces objets XPCOM, tels que le CookieManager, et explique comment l'accès au composant de Weblock sera défini.</p> + +<h3 id="Exemples_de_composants">Exemples de composants</h3> + +<p>Pour en savoir plus sur l'utilisation de composant particulier référez vous à <a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Reference">API XPCOM référence</a> . Pour l'instant, ili est important de comprendre comment un composant est utilisé par le navigateur Mozilla.</p> + +<h4 id="Gestionnaire_de_Cookies">Gestionnaire de Cookies</h4> + +<p>Gestion des cookies est l'une des nombreux fonctionnalités qui est mise disposition du navigateur sous la forme de composant XPCOM et qui peut être réutilisé par les développeurs qui veulent des fonctionnalités similaires dans leurs applications. Chaque fois qu'un utilisateur accède à la boîte de dialogue de Cookie Manager pour afficher, organiser, ou supprimer les cookies qui ont été stockées sur le système, ils utilisent le composant CookieManager en coulisses. <a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Using_XPCOM_Components#The_Cookie_Manager_Dialog">La boite de dialogue du gestionnaire de cookies</a> montre interface utilisateur qui est présenté à l'utilisateur dans Mozilla pour l'utilisation du composant CookieManager.</p> + +<p><span id="Boite_de_dialogue_du_gestionnaire_de_cookies"><a id="Boite_de_dialogue_du_gestionnaire_de_cookies"></a><strong>Boite de dialogue du gestionnaire de cookies</strong></span></p> + +<p><img alt="Image:cookie_mgr_dlog.png" class="internal" src="/@api/deki/files/625/=Cookie_mgr_dlog.png"></p> + +<p>Cette boite de dialogue est écrit en <abbr>XUL</abbr> et en JavaScript, et utilise une partie de XPCOM appelé <em>XPConnect</em> pour se connecter de manière transparente au composant CookieManager (voir <a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Using_XPCOM_Components#Connecting_to_Components_from_the_Interface">Connexion à des interfaces de composants</a> ci-dessous). XUL expose les fonctionnalités du composant CookieManager, il est tres utilisé dans l'environement Mozilla.</p> + +<p>La fonctionnalité du composant CookieManager est disponible à travers l'interface <code>nsICookieManager</code>, ses méthodes publiques sont exposées dans le tableau ci-dessous.</p> + +<p><span id="Interface_nsICookieManager"><a id="Interface_nsICookieManager"></a><strong>Interface nsICookieManager</strong></span></p> + +<table class="standard-table"> + <tbody> + <tr> + <td><code>removeAll</code></td> + <td>Retirez tous les cookies de la liste des cookies.</td> + </tr> + <tr> + <td><code>enumerator</code></td> + <td>Énumérer la liste des cookies.</td> + </tr> + <tr> + <td><code>remove</code></td> + <td>Retirer un cookie particulier de la liste.</td> + </tr> + </tbody> +</table> + +<p>Linterface XPCOM garanti la stabilitée, même si il y a des changements sous-jacentes. Les interfaces sont <em>publics</em> et les implémentations sont privés. Lorsque l'utilisateur sélectionne l'un des cookies affichés dans la liste, puis clique sur le bouton Supprimer, la méthode <code>Remove</code> de <code>nsICookieManager</code> est appelée. La fonction est réalisée par le composant CookieManager, et le cookie sélectionné est supprimé du disque et retiré de la liste affichée.</p> + +<p>L'extrait <a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Using_XPCOM_Components#Getting_the_CookieManager_Component_in_JavaScript">Utiliser le composant CookieManager en JavaScript</a> montre comment <code>Remove()</code> peut être appelé à partir de JavaScript:</p> + +<p><span id="Utiliser_le_composant_CookieManager_en_JavaScript"><a id="Utiliser_le_composant_CookieManager_en_JavaScript"></a><strong>Utiliser le composant CookieManager en JavaScript</strong></span></p> + +<pre>// xpconnect to cookiemanager +// get the cookie manager component in JavaScript +var cmgr = Components.classes["@mozilla.org/cookiemanager;1"] + .getService(); +cmgr = cmgr.QueryInterface(Components.interfaces.nsICookieManager); + +// called as part of a largerDeleteAllCookies() function +function FinalizeCookieDeletions() { + for (var c=0; c<deletedCookies.length; c++) { + cmgr.remove(deletedCookies[c].host, + deletedCookies[c].name, + deletedCookies[c].path); + } + deletedCookies.length = 0; +} +</pre> + +<div class="side-note"> +<p><span id="Connexion_%C3%A0_l'interface_d'un_composant"><a id="Connexion_%C3%A0_l'interface_d'un_composant"></a><strong>Connexion à l'interface d'un composant</strong></span></p> + +<div class="side-note"> +<p>L'interface Mozilla utilise JavaScript pour accèder aux composants XPCOM par l'intermediaire de <a href="https://developer.mozilla.org/fr/docs/XPConnect">XPConnect</a>.</p> + +<p>XPConnect via <a href="https://developer.mozilla.org/fr/docs/XPIDL">XPIDL</a> est appeler à partir d'objets JavaScript, qui représentent des instances de composants comme CookieManager.</p> + +<p>XPConnect lie le code d'application de l'interface utilisateur du navigateur Mozilla(XUL basé sur Gecko), à l'environnement JavaScript(comme <a href="https://developer.mozilla.org/fr/docs/xpcshell">xpcshell</a>)..</p> +</div> + +<p>Les arrangements contractuels que permet XPCOM ouvre la voie à <em>l'interopérabilité binaire, </em>pour l'accès, l'utilisation et la réutilisation des composants XPCOM. Ils permettent d'utiliser des composants écrits dans d'autres langages tels que JavaScript, Python et autres.</p> + +<p>Dans le navigateur Mozilla, les composants sont souvant utilisés à partir de JavaScript. En fait, une recherche du code source Mozilla révèle que le composant CookieManager est appelée <em>seulement</em> à partir de JavaScript. C'est ce que nous allons faire dans ce tutoriel.</p> +</div> + +<div class="side-note"> +<p><span id="JavaScript_et_Mozilla"><a id="JavaScript_et_Mozilla"></a><strong>JavaScript et Mozilla</strong></span></p> + +<div class="side-note"> +<p>JavaScript est la <em>lingua franca</em> du navigateur Mozilla, et les liaisons entre elle et XPCOM sont forts et bien définie. <em>scriptabilité</em> , cette capacité à obtenir et utiliser des composants XPCOM à partir de JavaScript et d'autres langages pour lesquels fixations XPConnect ont été créés, est une caractéristique essentielle de XPCOM.</p> +</div> + +<h4 id="Le_composant_WebBrowserFind">Le composant <code>WebBrowserFind</code></h4> + +<p>Les composants sont utilisés partout - dans les fonctionnalités du navigateur de haut niveau tels que <code>nsWebBrowserFind</code> , qui fournit les méthodes<code> find()</code> et <code>findNext()</code> pour trouver du contenu dans les pages Web, et dans les tâches de bas niveau tels que la manipulation des données.</p> + +<p>En plus du composant CookieManager, le composant WebBrowserFind est une autre partie d'un grand ensemble d'interfaces du navigation Web que vous pouvez utiliser. Son interface <code>nsIWebBrowserFind</code> est présentée dans <a href="https://developer.mozilla.org/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Using_XPCOM_Components#The_nsIWebBrowserFind_Interface">L'interface nsIWebBrowserFind</a> .</p> +</div> + +<p><span id="Les_m%C3%A9thodes_de_nsIWebBrowserFind"><a id="Les_m%C3%A9thodes_de_nsIWebBrowserFind"></a><strong>Les méthodes de nsIWebBrowserFind</strong></span></p> + +<table class="standard-table"> + <tbody> + <tr> + <td><code>findNext</code></td> + <td>Trouver la prochaine occurrence de la chaîne recherchée.</td> + </tr> + <tr> + <td><code>findBackwards</code></td> + <td>Attribut booléen qui ajuste <code>findNext()</code> pour rechercher vers le début du document.</td> + </tr> + <tr> + <td><code>searchFrames</code></td> + <td>Attribut booléen qui indique si la recherche s'efectue dans les sous-fenêtres du document actuel.</td> + </tr> + <tr> + <td><code>matchCase</code></td> + <td>Attribut booléen qui indique la sensibilité à la casse.</td> + </tr> + <tr> + <td><code>entireWord</code></td> + <td>Attribut booléen qui indique si le mot entier doit correspondre.</td> + </tr> + </tbody> +</table> + +<p>Quand vous utilisez l'interface d'un composant, vous pouvez demander si il suportr d'autres interfaces. Ce service, qui est défini dans <code>nsISupports</code> est mis en œuvre par tous les composants XPCOM, vous permet d'interroger et de passer d'une interface à un composant dans le cadre des <em>runtime object typing</em>. Il est géré par <code>QueryInterface</code>, qui a été introduit dans le chapitre <a class="internal" href="https://developer.mozilla.org/fr/Creating_XPCOM_Components/An_Overview_of_XPCOM">Vue d'ensemble du XPCOM</a> . L'<a href="https://developer.mozilla.org/fr/XPCOM_API_Reference">API de référence</a> XPCOM fournit une référence complète des composants XPCOM disponibles dans Mozilla.</p> + +<h4 id="The_WebLock_Component">The WebLock Component</h4> + +<p>Now it's time to look at the <strong>WebLock</strong> component as another example of XPCOM components (since you'll be creating it shortly). In object-oriented programming, it's typical to design the interface first-to define the functionality that's going to be provided in the abstract, without worrying about how this functionality will be achieved. So we'll put aside the details of the implementation until the next chapter and look at the component from the outside-at the interface to the WebLock component.</p> + +<p><span id="The_IWebLock_Interface"><a id="The_IWebLock_Interface"></a><strong>The IWebLock Interface</strong></span></p> + +<table class="standard-table"> + <tbody> + <tr> + <td><code>lock</code></td> + <td>Lock the browser to the current site (or to the whitelist of approved sites read from disk).</td> + </tr> + <tr> + <td><code>unlock</code></td> + <td>Unlock the browser for unrestricted use.</td> + </tr> + <tr> + <td><code>addSite</code></td> + <td>Add a new site to the whitelist.</td> + </tr> + <tr> + <td><code>removeSite</code></td> + <td>Remove a given site from the whitelist.</td> + </tr> + <tr> + <td><code>sites</code></td> + <td>Enumerator for the list of approved sites read in from the whitelist.</td> + </tr> + </tbody> +</table> + +<p>The WebLock component is software that implements all of these methods in the way described by the interface definition. It registers itself for use when the browser starts up, and provides a factory that creates an instance of it for use when the user or administrator clicks the weblock icon in the browser's user interface.</p> + +<h3 id="Component_Use_in_Mozilla">Component Use in Mozilla</h3> + +<p>So how are components obtained and used in Mozilla? You've seen some enticing snippets of JavaScript in earlier sections of this chapter, but we haven't explained how XPCOM makes components available in general.</p> + +<p>This section discusses practical component use in Mozilla. It's divided into three subsections: one about actually finding all these binary components in Mozilla and two others corresponding to the two main ways that clients typically access XPCOM components:</p> + +<h4 id="Finding_Mozilla_Components">Finding Mozilla Components</h4> + +<p>This book attempts to provide reference information for XPCOM components and their interfaces that are frozen as of the time of this writing. The <a class="external" href="http://www.mozilla.org/projects/embedding/">Mozilla embedding project</a> tracks the currently frozen interfaces.</p> + +<p>Mozilla also has some tools that can find and display information about the interfaces available in Gecko such as the <em>XPCOM Component Viewer</em>, described below, and <a class="external" href="http://mxr.mozilla.org/">MXR</a>, which is a web-based source code viewing tool.</p> + +<p>The challenge to making good information about XPCOM components available to prospective clients, however, is that the process of freezing the interfaces that are implemented by these components is still ongoing. The Component Viewer does not distinguish between components that are frozen and those that are not. In the source code you view in MXR, interfaces that have been frozen are marked at the top with <code>@status frozen</code>.</p> + +<h5 id="The_XPCOM_Component_Viewer">The XPCOM Component Viewer</h5> + +<p>The <a class="external" href="http://addons.mozilla.org/firefox/2230/">XPCOM Component Viewer</a> is an add-on you can install in your browser (in sandbox, not available for now).<br> + Alternatively, you can try <a class="external" href="http://xpcomviewer.mozdev.org/ ">XPCOMViewer</a>, a similar add-on.</p> + +<p><span id="XPCOM_Component_Viewer"><a id="XPCOM_Component_Viewer"></a><strong>XPCOM Component Viewer</strong></span></p> + +<p><img alt="Image:using-component-viewer.png" class="internal" src="/@api/deki/files/922/=Using-component-viewer.png"></p> + +<p>The left column shows the components - in this case a subset returned from a search on "gfx" as part of the contract ID and the right column a list of the interfaces. When you open a component on the left, you can see the interfaces it implements along with a list of the methods provided by each interface.</p> + +<p>The XPCOM Component Viewer can be extremely useful for this sort of gross interrogation, but again: it displays <em>all</em> of the components and interfaces in your build, many of which are not practical for actual reuse or stable enough to be used reliably in your own application development. Use comprehensive lists like this with caution.</p> + +<p> </p> + +<h4 id="Using_XPCOM_Components_in_Your_Cpp">Using XPCOM Components in Your Cpp</h4> + +<p>XPConnect makes it easy to acecss XPCOM components as JavaScript objects, but using XPCOM components in C++ is not much more difficult.</p> + +<p><a href="#Managing_Cookies_from_Cpp">Managing Cookies from Cpp</a> duplicates code from <a href="#Getting_the_CookieManager_Component_in_JavaScript">Getting the CookieManager Component in JavaScript</a>, but in C++ instead of JavaScript.</p> + +<p><span id="Managing_Cookies_from_Cpp"><a id="Managing_Cookies_from_Cpp"></a><strong>Managing Cookies from Cpp</strong></span></p> + +<pre>nsCOMPtr<nsIServiceManager> servMan; +nsresult rv = NS_GetServiceManager(getter_AddRefs(servMan)); +if (NS_FAILED(rv)) + return -1; + +nsCOMPtr<nsICookieManager> cookieManager; +rv = servMan->GetServiceByContractID("@<a class="linkification-ext" href="http://mozilla.org/cookiemanager">mozilla.org/cookiemanager</a>", + NS_GET_IID(nsICookieManager), + getter_AddRefs(cookieManager)); + +if (NS_FAILED(rv)) + return -1; + +PRUint32 len; +deletedCookies->GetLength(&len); + +for (int c=0; c<len; c++) + cookieManager->Remove(deletedCookies[c].host, + deletedCookies[c].name, + deletedCookies[c].path, + PR_FALSE); +</pre> + +<p>XXX: In the original document, there were only the first three parameters to the |Remove| call. I added |PR_FALSE| as a fourth parameter because the interface seems to require it: <a class="linkification-ext external" href="http://lxr.mozilla.org/mozilla/source/netwerk/cookie/public/nsICookieManager.idl#64">http://lxr.mozilla.org/mozilla/source/netwerk/cookie/public/nsICookieManager.idl#64</a> This problem also appears in the JavaScript version below, and I've added |false| as a fourth parameter there as well.</p> + +<p>If your application is written in C++, then <a href="#Managing_Cookies_from_Cpp">Managing Cookies from Cpp</a> shows the steps you take to get an XPCOM component, specify the interface on that component you want to use, and call methods on that interface.</p> + +<h4 id="XPConnect_Using_XPCOM_Components_From_Script">XPConnect: Using XPCOM Components From Script</h4> + +<p>The CookieManager component we discussed at the beginning of this chapter provides a good opportunity to talk further about using components from JavaScript. In the following code fragment from the Cookie Manager dialog in Mozilla, you can see a singleton of the CookieManager component being created with the <code>getService()</code> method and used to provide the functionality that lets users load and remove cookies from the user interface.</p> + +<p><span id="Managing_Cookies_from_JavaScript"><a id="Managing_Cookies_from_JavaScript"></a><strong>Managing Cookies from JavaScript</strong></span></p> + +<pre>var cmgr = Components.classes["@mozilla.org/cookiemanager;1"] + .getService(); +cmgr = cmgr.QueryInterface(Components.interfaces.nsICookieManager); + +function loadCookies() { + // load cookies into a table + var enumerator = cmgr.enumerator; + var count = 0; + var showPolicyField = false; + while (enumerator.hasMoreElements()) { + var nextCookie = enumerator.getNext(); + nextCookie = nextCookie.QueryInterface(Components.interfaces.nsICookie); + /* .... */ +} +function FinalizeCookieDeletions() { + for (var c=0; c<deletedCookies.length; c++) { + cmgr.remove(deletedCookies[c].host, + deletedCookies[c].name, + deletedCookies[c].path, + false); + } + deletedCookies.length = 0; +} +</pre> + +<p>XXX: In the original document, there were only the first three parameters to the |remove| call. I added |false| as a fourth parameter because the interface seems to require it: <a class="linkification-ext external" href="http://lxr.mozilla.org/mozilla/source/netwerk/cookie/public/nsICookieManager.idl#64">http://lxr.mozilla.org/mozilla/source/netwerk/cookie/public/nsICookieManager.idl#64</a> This problem also appears in the C++ version above, and I've added |PR_FALSE| as a fourth parameter there as well.</p> + +<p>Beyond the methods that are being called on the CookieManager itself (e.g., <code>cookiemanager.remove</code>, which maps to the <code>remove()</code> function in <a href="#The_nsICookieManager_Interface">The nsICookieManager Interface</a>), note the special XPConnect objects and methods that reflect the XPCOM component into JavaScript.</p> + +<p><code>Components</code> is the JavaScript object that controls the connection to components, and <code>classes</code> is an array of all of the classes you can ask for by contract ID. To instantiate an XPCOM component in JavaScript, you create a new <code>Component</code> object and pass in the contract ID for the component you want and ask for either a singleton or an instance of that component to be returned:</p> + +<pre>var cmgr = Components.classes["@mozilla.org/cookiemanager;1"] + .getService(); +</pre> + +<p>The resulting <code>cookiemanager</code> object then provides access to all of the methods for that component that have been defined in IDL and compiled into the type library. Using the CookieManager component, you could write code like this to delete all cookies from the system:</p> + +<pre>cmgr = Components.classes["@<a class="linkification-ext" href="http://mozilla.org/cookiemanager;1">mozilla.org/cookiemanager;1</a>"] + .getService(); +cmgr = cmgr.QueryInterface(Components.interfaces.nsICookieManager); + +// delete all cookies +function trashEm() { + cmgr.removeAll(); +} +</pre> + +<p>Another vital feature of the XPConnect glue this example shows is the availability of the <code>QueryInterface</code> method on all objects that are reflected into JavaScript from XPCOM. As in C++, you can use this method to ask for other interfaces that are available on the given object.</p> + +<div class="side-note"> +<p><span id="Services_Versus_Regular_Instances"><a id="Services_Versus_Regular_Instances"></a><strong>Services Versus Regular Instances</strong></span></p> + +<p>Whether to have clients use your component as an instance or a service is a design question, really, and something you should be clear about in the documentation for your component. Actually, the <code>getService()</code> method in the example here calls through to the <code>createInstance()</code> method that is also available from the Component object and caches the result, making it a singleton rather than a normal instance.</p> + +<p>The singleton design pattern that is used to create services is described in <a href="/en/Creating_XPCOM_Components/An_Overview_of_XPCOM#XPCOM_Services">XPCOM Services</a>.</p> +</div> + +<p>Remember, <code>QueryInterface</code> allows you to query an object for the interfaces it supports. In the case of the snippet in <a href="#The_nsICookieManager_Interface">The nsICookieManager Interface</a>, the <code>QueryInterface</code> method is being used to get the <code>nsICookie</code> interface from the enumerator so that, for instance, the JavaScript code can access the <code>value</code> and <code>name</code> attributes for each cookie.</p> + +<ol> + <li><div class="blockIndicator note"><strong>Note :</strong> cookie-manager-ui</div> Note that the interface is not part of the component itself. XPCOM makes it easy to use components like CookieManager from Mozilla's Cross Platform Front End (XPFE) and other user interfaces, but the component itself doesn't provide its own UI.</li> + <li><div class="blockIndicator note"><strong>Note :</strong> private-xpcom-interfaces</div> There are exceptions to this. Some XPCOM interfaces are also private and not made for general use. Private interfaces do not have the same requirements as the ones that are made available publicly in IDL.</li> + <li><div class="blockIndicator note"><strong>Note :</strong> cookie-manager-in-tutorial</div> The CookieManager component is used to persist for the web locking functionality described in this tutorial.</li> +</ol> + +<p></p><div class="prevnext" style="text-align: right;"> + <p><a href="/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/An_Overview_of_XPCOM" style="float: left;">« Précédent</a><a href="/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/Component_Internals">Suivant »</a></p> +</div> <p></p><div class="licenseblock"> +<p>Copyright (c) 2003 by Doug Turner and Ian Oeschger. This material may be distributed only subject to the terms and conditions set forth in the <a class="external" href="http://www.opencontent.org/openpub/" rel="noopener">Open Publication License</a>, v1.02 or later. Distribution of substantively modified versions of this document is prohibited without the explicit permission of the copyright holder. Distribution of the work or derivative of the work in any standard (paper) book form is prohibited unless prior permission is obtained from the copyright holder.</p> +</div><p></p> diff --git a/files/fr/mozilla/tech/xpcom/guide/index.html b/files/fr/mozilla/tech/xpcom/guide/index.html new file mode 100644 index 0000000000..748a2784b5 --- /dev/null +++ b/files/fr/mozilla/tech/xpcom/guide/index.html @@ -0,0 +1,16 @@ +--- +title: XPCOM guide +slug: Mozilla/Tech/XPCOM/Guide +tags: + - Landing + - Mozilla + - NeedsTranslation + - TopicStub + - XPCOM +translation_of: Mozilla/Tech/XPCOM/Guide +--- +<p><span class="seoSummary">These articles provide tutorials and usage documentation for XPCOM, including how to use it in your own projects and how to build XPCOM components for your Firefox add-ons and the like.</span></p> +<p></p><div class="row topicpage-table"> + <div class="section"><dl><dl><dt class="landingPageList"><a href="/fr/docs/compiler_un_composant_xpcom_javascript">Compiler un composant XPCOM javascript</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/fr/docs/Mozilla/Tech/XPCOM/Guide/Creating_components">Créer des composants XPCOM</a></dt><dd class="landingPageList">Ce guide a pour but de vous initier à Gecko, et de vous permettre de créer des composants <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Guide/Creating_components/en/XPCOM">XPCOM</a> pour les applications Gecko.</dd></dl></dl></div> + <div class="section"><dl><dt></dt></dl></div> + </div><p></p> diff --git a/files/fr/mozilla/tech/xpidl/index.html b/files/fr/mozilla/tech/xpidl/index.html new file mode 100644 index 0000000000..6f7e3d2425 --- /dev/null +++ b/files/fr/mozilla/tech/xpidl/index.html @@ -0,0 +1,22 @@ +--- +title: XPIDL +slug: Mozilla/Tech/XPIDL +tags: + - XPCOM +translation_of: Mozilla/Tech/XPIDL +--- +<p><strong>XPIDL</strong> est un langage de description d'interfaces utilisé pour spécifier les classes de l'interface <a href="/fr/XPCOM" title="fr/XPCOM">XPCOM</a>.</p> +<p>Les langages de description d'interfaces (IDL) sont utilisés pour décrire des interfaces d'une manière indépendante d'un langage et d'une machine. Les IDL permettent de définir des interfaces qui peuvent alors être employées par des outils pour générer automatiquement des spécifications d'interfaces propres à un langage donné.</p> +<p>Un de ces outils est <a href="/fr/XPIDL:xpidl" title="fr/XPIDL/xpidl">xpidl</a>, utilisé pour générer des fichiers d'en-têtes C++, des informations typelib et plusieurs autres choses.</p> +<h2 id=".C3.89criture_de_fichiers_interface_XPIDL" name=".C3.89criture_de_fichiers_interface_XPIDL">Écriture de fichiers interface XPIDL</h2> +<p>XPIDL ressemble fortement à <a class="external" href="http://www.omg.org/gettingstarted/omg_idl.htm">OMG IDL</a> avec une syntaxe étendue pour traiter les IID et des types supplémentaires. Quelques exemples sont disponibles dans les répertoires <a class="external" href="http://lxr.mozilla.org/mozilla/source/xpcom/base">xpcom/base</a> et <a class="external" href="http://lxr.mozilla.org/mozilla/source/xpcom/ds">xpcom/ds</a> des sources de Mozilla.</p> +<ul> + <li><a class="external" href="http://www.mozilla.org/scriptable/xpidl/syntax.html">syntaxe XPIDL</a> (non à jour)</li> + <li><a href="/fr/XPIDL/Syntaxe" title="fr/XPIDL/Syntaxe">XPIDL:Syntaxe</a> <small>(<a href="/en/XPIDL/Syntax">en:XPIDL:Syntax</a></small>) (XPIDL <a class="external" href="http://en.wikipedia.org/wiki/Extended_Backus-Naur_form">EBNF</a>)</li> + <li><a class="external" href="http://www.mozilla.org/scriptable/xpidl/idl-authors-guide/index.html">XPIDL Author's Guide</a> (globalement à jour)</li> +</ul> +<h2 id="Ressources" name="Ressources">Ressources</h2> +<ul> + <li><a class="external" href="http://www.mozilla.org/scriptable/xpidl/notes/">Quelques notes non triées</a> dont <a class="external" href="http://www.mozilla.org/scriptable/xpidl/notes/keywords.txt">une liste de mots clés</a>.</li> + <li><a href="/fr/XPIDL/xpidl" title="fr/XPIDL/xpidl">xpidl</a> est un outil pour générer des entêtes C++, des interfaces Java, des typelibs <a href="/fr/XPConnect" title="fr/XPConnect">XPConnect</a>, et de la documentation HTML à partir de fichiers XPIDL.</li> +</ul> diff --git a/files/fr/mozilla/testing/asan_nightly_project/index.html b/files/fr/mozilla/testing/asan_nightly_project/index.html new file mode 100644 index 0000000000..c7937ca41b --- /dev/null +++ b/files/fr/mozilla/testing/asan_nightly_project/index.html @@ -0,0 +1,126 @@ +--- +title: Projet Nightly ASan +slug: Mozilla/Testing/ASan_Nightly_Project +tags: + - Bug + - Firefox + - Testing + - asan + - bogue + - nightly + - test +translation_of: Mozilla/Testing/ASan_Nightly_Project +--- +<p>{{ApiRef}}</p> + +<article id="wikiArticle"> +<p>Documentation déplacée dans la documentation de Firefox:<br> + <a class="external external-icon" href="https://firefox-source-docs.mozilla.org/tools/sanitizer/asan_nightly.html" rel="noopener">https://firefox-source-docs.mozilla.org/tools/sanitizer/asan_nightly.html</a></p> +</article> + +<p>Le <strong>Projet Nightly</strong> <strong>ASan</strong> consiste à créer un navigateur Firefox Nightly incluant l'outil populaire <a href="https://github.com/google/sanitizers/wiki/AddressSanitizer">AddressSanitizer</a> et à l'améliorer avec des capacités de génération de rapports de plantage à distance pour toutes erreurs détectées.</p> + +<p>Le but du projet est de trouver de subtiles altérations de la mémoire survenant lors d'une navigation normale qui ne feraient pas planter du tout le navigateur ou qui feraient planter de telle sorte que nous ne puissions pas déterminer quel est le problème exact à partir du vidage de la mémoire sur incident. Nous disposons de beaucoup de rapports de plantage inopérants et les traces AddressSanitizer sont généralement beaucoup plus exploitables par elles-mêmes (en particulier les traces d'utilisation après libération). Une partie de ce projet consiste à déterminer si des rapports de plantage d'ASan sont exploitables et combien uniquement en surfant. Le succès du projet dépend bien entendu aussi du nombre de participants.</p> + +<p>Vous pouvez télécharger la dernière version en utilisant l'un des liens ci-dessous. Les builds sont mises à jour quotidiennement comme les builds nocturnes régulières (comme pour les builds régulières, vous pouvez aller sur <em>"Help"</em> → <em>"About Nightly"</em> pour forcer une vérification de mise à jour ou confirmer que vous utilisez la dernière version).</p> + +<div class="note"> +<p>Si vous êtes venu ici à la recherche de versions ASan standard (par exemple pour le fuzzing ou comme développeur voulant reproduire un plantage), vous devriez probablement <a href="/fr/docs/Mozilla/Testing/Firefox_and_Address_Sanitizer">aller ici</a> à la place.</p> +</div> + +<h3 id="Exigences">Exigences</h3> + +<p>Les exigences actuelles sont :</p> + +<ul> + <li>Système d'exploitation basé sur Linux</li> + <li>16 Go de RAM recommandés</li> + <li>Special ASan Nightly Firefox Build + <ul> + <li><a href="https://index.taskcluster.net/v1/task/gecko.v2.mozilla-central.nightly.latest.firefox.linux64-asan-reporter-opt/artifacts/public/build/target.tar.bz2">Téléchargement pour Linux</a></li> + <li><a href="https://index.taskcluster.net/v1/task/gecko.v2.mozilla-central.nightly.latest.firefox.win64-asan-reporter-nightly-repackage-signing/artifacts/public/build/target.installer.exe">Téléchargement pour Windows</a></li> + </ul> + </li> +</ul> + +<p>Si vous utilisez déjà Nightly, il devrait être possible de partager le profil avec l'instance Nightly ordinaire. Si vous utilisez normalement une version bêta ou version finale (et que vous souhaitez pouvoir y revenir), vous devriez envisager d'utiliser un second profil.</p> + +<div class="warning"> +<p><strong>Utilisateurs Windows :</strong> Veuillez noter que les versions de Windows affichent actuellement une erreur lors de l'installation (voir la section "Problèmes connus" ci-dessous), mais l'installation fonctionne néanmoins. Nous travaillons sur la problème.</p> +</div> + +<div class="note"> +<p>Si vous exécutez dans un environnement avec toutes sortes de restrictions de sécurité supplémentaires (par exemple le sandboxing de processus personnalisé), assurez-vous que votre répertoire /tmp est accessible en écriture et que le binaire <code>llvm-symbolizer</code> livré est exécutable depuis le processus de Firefox.</p> +</div> + +<h3 id="Préférences">Préférences</h3> + +<p>Si vous souhaitez que votre rapport d'accident soit identifiable, vous pouvez aller dans <code>about:config</code> et définir <strong><code>asanreporter.clientid</code></strong> avec votre <strong>adresse e-mail valide</strong>. Ce n'est pas obligatoire, vous pouvez bien sûr signaler des traces de pantage de manière anonyme. Si vous décidez d'envoyer des rapports avec votre adresse e-mail et que vous avez un compte Bugzilla, pensez à utiliser la même adresse e-mail que celle utilisée pour votre compte Bugzilla. Nous vous mettrons en CC sur les bogues déposés à partir de vos rapports de plantage Si votre adresse e-mail n'appartient pas à un compte Bugzilla, nous ne la publierons pas mais nous l'utiliserons uniquement pour trouver des réponses aux questions soulevées par vos rapports de plantage.</p> + +<div class="note"> +<p>La définition de cette préférence nous permet de vous contacter au cas où nous aurions des questions sur votre configuration/système d'exploitation. Veuillez envisager de l'utiliser afin que nous puissions revenir vers vous si nécessaire.</p> +</div> + +<h3 id="Programme_de_Bug_Bounty">Programme de Bug Bounty</h3> + +<p>Comme récompense spéciale pour participer au programme, nous avons décidé de traiter tous les rapports soumis comme s'ils étaient enregistrés directement dans Bugzilla. Cela signifie que les rapports :</p> + +<ul> + <li>qui indiquent un problème de sécurité critique ou élevé</li> + <li><strong>et</strong> que cela peut être corrigé par nos développeurs</li> +</ul> + +<p>sont éligibles pour une prime de bogue selon <a href="https://www.mozilla.org/en-US/security/client-bug-bounty/">les règles de notre programme de Bug Bounty</a>. Comme le rapport n'inclura généralement aucune étape de reproduction ou de test, il recevra très probablement une prime inférieure. Comme avec les rapports de bogue habituels, nous récompensons généralement le premier signalement (identifiable) d'un problème.</p> + +<div class="warning"> +<p>Si vous souhaitez participer au programme de récompense, assurez-vous de régler votre préférence <strong><code>asanreporter.clientid</code></strong> comme indiqué ci-dessus. Nous ne pouvons pas récompenser les rapports soumis sans adresse e-mail.</p> +</div> + +<h3 id="Problèmes_connus">Problèmes connus</h3> + +<p>Cette section répertorie toutes les limitations actuellement connues des versions Nightly ASan considérées comme des bogues.</p> + +<ul> + <li><s>Flash is currently not working</s></li> + <li><s><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1477490">Bug 1477490</a> - <strong>Windows:</strong> Stack instrumentation disabled due to false positives</s></li> + <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1478096">Bug 1478096</a> - <strong>Windows:</strong> Error during install with maintenanceservice_tmp.exe</li> + <li>Il a été rapporté que les performances d'ASan Nightly sont particulièrement mauvaises si vous exécutez sur un écran avec un taux de rafraîchissement de 120hz. Le passage à 60 Hz devrait améliorer considérablement les performances.</li> +</ul> + +<p>Notez que ces bogues sont <strong>specifiques</strong> à ASan Nightly comme indiqué dans la <a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=1386297&hide_resolved=0">liste des dépendances de suivi de bogues</a>. Pour la liste complète des bogues trouvés par ce projet, voir plutôt <a href="https://bugzilla.mozilla.org/showdependencytree.cgi?id=1479399&hide_resolved=0">cette liste</a> et notez que certains bogues peuvent ne pas être affichés parce qu'ils sont des bogues de sécurité.</p> + +<p>Si vous rencontrez un bogue qui ne figure pas dans cette liste, veuillez déposer un bogue sur <a href="https://bugzilla.mozilla.org/">bugzilla.mozilla.org</a> ou envoyer un courriel à <a href="mailto:choller@mozilla.com?subject=%5BASan%20Nightly%20Project%5D%5BBug%20Report%5D">choller@mozilla.com</a>. Lorsque vous déposez un rapport de bogue, cela aide grandement, si vous mettez en CC cette adresse e-mail et marquez le bogue comme bloquant le <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1386297">bug 1386297</a>.</p> + +<h3 id="FAQ">FAQ</h3> + +<h4 id="Quelles_sont_les_données_supplémentaires_collectées">Quelles sont les données supplémentaires collectées ?</h4> + +<p>Le projet ne collecte que les traces ASan et (si vous le définissez dans les préférences) votre adresse e-mail. Nous ne collectons aucune autre donnée de navigateur, en particulier ni les sites que vous consultez ni le contenu de la page. Il s'agit vraiment de traces de plantage soumises à un emplacement distant.</p> + +<div class="note"> +<p>Le navigateur Nightly ASan possède également toutes les capacités de collecte de données d'un navigateur Nightly normal. La réponse ci-dessus se réfère uniquement à ce que ce projet recueille <strong>en plus </strong>de ce que le navigateur Nightly normal peut collecter.</p> +</div> + +<h4 id="Quel_est_limpact_sur_les_performances">Quel est l'impact sur les performances ?</h4> + +<p>La version Nightly ASan ne s'accompagne que d'un léger ralentissement au démarrage et à la navigation, parfois même pas perceptible. La consommation de RAM est cependant beaucoup plus élevée qu'avec une version normale. Soyez prêt à redémarrer parfois votre navigateur, surtout si vous utilisez beaucoup d'onglets à la fois. En outre, les mises à jour sont plus volumineuses que les mises à jour ordinaires, ce qui signifie que les temps de téléchargement des mises à jour seront plus longs, en particulier si votre connexion Internet est plus lente.</p> + +<div class="warning"> +<p>Si vous rencontrez des problèmes de performance, voir aussi la section "Problèmes connus" ci-dessus, en particulier le problème du ralentissement de la vitesse de rafraîchissement de l'écran de Firefox.</p> +</div> + +<h4 id="Et_la_stabilité">Et la stabilité ?</h4> + +<p>Le navigateur est aussi stable qu'une version Nightly standard. Différentes personnes ont surfé avec pour leur travail au quotidien depuis des semaines maintenant et nous avons à peine reçu que quelques rapports de plantage.</p> + +<h4 id="Comment_puis-je_confirmer_que_jutilise_la_bonne_version">Comment puis-je confirmer que j'utilise la bonne version ?</h4> + +<p>Si vous ouvrez <code>about:support</code> et tapez <em>"asanreporter"</em> dans le champ de recherche, vous devriez voir une entrée appelée <code><strong>asanreporter.apiurl</strong></code> associée à une URL. Ne modifiez pas cette valeur.</p> + +<div class="warning"> +<p>Depuis Firefox 64, la fonctionnalité <em>"ASan Crash Reporter"</em> n'est plus listée dans le répertoire <code>about:support</code></p> +</div> + +<h4 id="Y_aura-t-il_prise_en_charge_de_macOS">Y aura-t-il prise en charge de macOS ?</h4> + +<p>Nous travaillons sur le support pour Mac, mais cela pourrait prendre plus de temps parce que nous n'avons pas de couverture ASan CI sur Mac en raison de contraintes matérielles. Si vous travaillez sur l'ingénierie de publication et que vous souhaitez contribuer à ce que Mac, par exemple, arrive plus tôt, n'hésitez pas à <a href="mailto:choller@mozilla.com?subject=%5BASan%20Nightly%20Project%5D%20">me contacter</a>.</p> diff --git a/files/fr/mozilla/testing/firefox_and_address_sanitizer/index.html b/files/fr/mozilla/testing/firefox_and_address_sanitizer/index.html new file mode 100644 index 0000000000..77db938413 --- /dev/null +++ b/files/fr/mozilla/testing/firefox_and_address_sanitizer/index.html @@ -0,0 +1,11 @@ +--- +title: Firefox et Address Sanitizer +slug: Mozilla/Testing/Firefox_and_Address_Sanitizer +tags: + - Debugging + - Developing Mozilla + - Guide + - Testing +translation_of: Mozilla/Testing/Firefox_and_Address_Sanitizer +--- +<p>Déplacé dans la documentation de Firefox: <a href="https://firefox-source-docs.mozilla.org/tools/sanitizer/asan.html">https://firefox-source-docs.mozilla.org/tools/sanitizer/asan.html</a></p> diff --git a/files/fr/mozilla/testing/index.html b/files/fr/mozilla/testing/index.html new file mode 100644 index 0000000000..eaf633a72e --- /dev/null +++ b/files/fr/mozilla/testing/index.html @@ -0,0 +1,12 @@ +--- +title: Testing Mozilla code +slug: Mozilla/Testing +tags: + - Landing + - Mozilla + - Testing +translation_of: Mozilla/Testing +--- +<p>Tester votre code est important ! Avant même de pouvoir intégrer votre code dans l'arborescence des sources, vous devez le tester, et les correctifs de plus grande taille doivent avoir des tests automatisés. Ces articles vous aideront à maîtriser (et à continuer à exceller) le test du code Mozilla.</p> + +<p>{{LandingPageListSubpages}}</p> diff --git a/files/fr/mozilla/thunderbird/account_examples/index.html b/files/fr/mozilla/thunderbird/account_examples/index.html new file mode 100644 index 0000000000..5b0af43c05 --- /dev/null +++ b/files/fr/mozilla/thunderbird/account_examples/index.html @@ -0,0 +1,71 @@ +--- +title: Account examples +slug: Mozilla/Thunderbird/Account_examples +tags: + - Extensions + - thunderbird +translation_of: Mozilla/Thunderbird/Account_examples +--- +<div class="blockIndicator draft"> +<p><strong>Brouillon</strong><br> + Cette page n'est pas complète</p> +</div> + +<div class="blockIndicator standardNote"> +<p>Ce contenu couvre les fonctionnalités introduites dans <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Releases/3">Thunderbird 3</a></p> +</div> + +<p>Cet article fournit des exemples d'accès et de manipulation des comptes Thunderbird. Les <a class="internal" href="/en-US/docs/Thunderbird/Account_interfaces" title="en/Thunderbird/Account interfaces">interfaces de compte</a> fournissent une vue d'ensemble des interfaces associées. Voir <a class="internal" href="/en-US/docs/Extensions/Thunderbird/An_overview_of_the_Thunderbird_interface" title="En/Extensions/Thunderbird/An overview of the Thunderbird interface">Présention des composants Thunderbird </a>pour une description générale de l'interface utilisateur de Thunderbird et des interfaces de programmation associées.</p> + +<h2 id="Itérer_sur_tous_les_comptes_connus">Itérer sur tous les comptes connus</h2> + +<pre class="brush: js notranslate">var acctMgr = Components.classes["@mozilla.org/messenger/account-manager;1"] + .getService(Components.interfaces.nsIMsgAccountManager); +var accounts = acctMgr.accounts; +if (accounts.queryElementAt) { + // Gecko 17+ + for (var i = 0; i < accounts.length; i++) { + var account = accounts.queryElementAt(i, Components.interfaces.nsIMsgAccount); + // Faire quelque chose avec le compte + } +} else { + // Gecko < 17 + for (var i = 0; i < accounts.Count(); i++) { + var account = accounts.QueryElementAt(i, Components.interfaces.nsIMsgAccount); + // Faire quelque chose avec le compte + } +} +</pre> + +<h2 id="Introspectez_les_détails_de_certains_comptes_noms_paramètres_etc.">Introspectez les détails de certains comptes (noms, paramètres, etc.)</h2> + +<pre class="brush: js notranslate">var acctMgr = Components.classes["@mozilla.org/messenger/account-manager;1"] + .getService(Components.interfaces.nsIMsgAccountManager); +var accounts = acctMgr.accounts; +for (var i = 0; i < accounts.length; i++) { + var account = accounts.queryElementAt(i, Components.interfaces.nsIMsgAccount); + Application.console.log(account.key); + // account.incomingServer est un nsIMsgIncomingServer + // account.identities est un nsISupportsArray de nsIMsgIdentity objects + // vous pouvez le parcourir comme acctMgr.accounts ci-dessus + // account.defaultIdentity est un nsIMsgIdentity +} +</pre> + +<h2 id="Parcourir_les_dossiers_dun_compte">Parcourir les dossiers d'un compte</h2> + +<pre class="brush: js notranslate">var acctMgr = Components.classes["@mozilla.org/messenger/account-manager;1"] + .getService(Components.interfaces.nsIMsgAccountManager); +var accounts = acctMgr.accounts; +for (var i = 0; i < accounts.length; i++) { + var account = accounts.queryElementAt(i, Components.interfaces.nsIMsgAccount); + var rootFolder = account.incomingServer.rootFolder; // nsIMsgFolder + Application.console.log(rootFolder.prettiestName); + if (rootFolder.hasSubFolders) { + var subFolders = rootFolder.subFolders; // nsIMsgFolder + while(subFolders.hasMoreElements()) { + var folder = subFolders.getNext().QueryInterface(Components.interfaces.nsIMsgFolder); + Application.console.log(folder.prettiestName); + } + } +}</pre> diff --git a/files/fr/mozilla/thunderbird/autoconfiguration/index.html b/files/fr/mozilla/thunderbird/autoconfiguration/index.html new file mode 100644 index 0000000000..3deb8fa43d --- /dev/null +++ b/files/fr/mozilla/thunderbird/autoconfiguration/index.html @@ -0,0 +1,173 @@ +--- +title: Autoconfiguration dans Thunderbird +slug: Mozilla/Thunderbird/Autoconfiguration +translation_of: Mozilla/Thunderbird/Autoconfiguration +--- +<p>Autheur: Ben Bucksch<br> + <span id="result_box" lang="fr"><span class="hps">Veuillez</span> <span class="hps">ne pas modifier ce</span> <span class="hps">document sans</span> <span class="hps">consulter</span> <span class="hps">l'auteur</span></span></p> + +<p>Traduction Française par Kimpe Andy association heberge-kimpe</p> + +<p>l'association heberge-kimpe et une association qui s'engage dans l'open source.</p> + +<p>C'est la raison de le traduction de ce document très pratique pour les webmaster</p> + +<p><span id="result_box" lang="en"><span class="hps">Si vous utilisez zpanel sur votre serveur voici comment mettre en place automatiquement l'autoconfiguration de thunderbrid</span></span></p> + +<p> </p> + +<p><span lang="en"><span class="hps">attention le lien ci dessous ne fonctionne plus.</span></span></p> + +<p>car le site de la comunauté française de zpanel a fermer c'est porte (merci yousse)</p> + +<p>je ferais a nouveau ce tutoriel (avec une mise à jours a sentora) des que j'aurais plus de temp libre.</p> + +<p>merci de votre compréhention</p> + +<p>cordialement andy</p> + +<p><a href="http://www.zpanel-fr.com/forum/10-infos-importantes-mise-a-jour/115-tuto-perssonalisez-les-dns-par-defaut">http://www.zpanel-fr.com/forum/10-infos-importantes-mise-a-jour/115-tuto-perssonalisez-les-dns-par-defaut</a></p> + +<p> </p> + +<p>A partir de la version Thunderbird 3.1 et versions ultérieures (et 3,0 dans une certaine mesure) inclut la fonctionnalité de configuration automatique de compte de courriel. Le but de l'autoconfiguration est de le rendre très facile pour les utilisateurs la configuration et la connexion de Thunderbird à leurs serveurs de messagerie. Dans de nombreux cas, les gens devraient être en mesure de télécharger et d'installer Thunderbird, d'entrer leur vrai nom, adresse e-mail et mot de passe dans l'Assistant Configuration du compte et d' avoir un client de messagerie qui fonctionne pleinement et d'envoyer et recevoir leur courrier de manière aussi sécurisée que possible.</p> + +<p><span class="short_text" id="result_box" lang="fr"><span class="hps">voir aussi</span></span>:</p> + +<ul> + <li>le <a class="link-https" href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration" title="https://wiki.mozilla.org/Thunderbird:Autoconfiguration">projet de la page du wiki de Mozilla</a> <span id="result_box" lang="fr"><span class="hps">pour le fond,</span> de <span class="hps">conception, de</span> <span class="hps">mise en oeuvre et</span> <span class="hps">les détails du projet</span></span></li> + <li><span id="result_box" lang="fr"><span class="hps">Pour obtenir des instructions</span> <span class="hps">pour les utilisateurs</span><span>, voir</span></span> aussi la <a class="external" href="http://support.mozillamessaging.com/en-US/kb/Automatic+Account+Configuration" title="http://support.mozillamessaging.com/en-US/kb/Automatic+Account+Configuration">Configuration Automatique du compte</a> <span class="short_text" id="result_box" lang="fr"><span class="hps">sur</span> <span class="hps">la base de connaissances</span> <span class="hps">Thunderbird</span></span>.</li> + <li>La<a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo"> description des fichier de comfiguration</a> et leur <a href="/en/Thunderbird/Autoconfiguration/FileFormat/Definition" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">definition</a></li> +</ul> + +<p><span id="result_box" lang="fr"><span class="hps">Ce document décrit comment</span> <span class="hps">la configuration automatique</span> <span class="hps">dans</span> <span class="hps">Thunderbird</span> <span class="hps">fonctionne et</span> <span class="hps">ce qu'il faut faire</span> <span class="hps">pour permettre aux serveurs</span> <span class="hps">de messagerie</span> <span class="alt-edited hps">d'être</span> <span class="hps">configurées automatiquement</span></span>.</p> + +<h1 id="Mécanismes"><span class="short_text" id="result_box" lang="fr"><span class="hps">Mécanismes</span></span></h1> + +<p><span id="result_box" lang="fr"><span class="hps">Thunderbird</span> <span class="hps">obtient les</span> <span class="hps">paramètres de serveur</span> <span class="hps">par l'intermédiaire de</span> <span class="hps">divers moyens</span><span>,</span> <span class="hps">dont chacun</span> <span class="hps">est prévu pour</span> un cas de figure particulier </span>:</p> + +<ul> + <li><span id="result_box" lang="fr"><span class="hps">ISPDB</span><br> + <span class="hps">Le</span> <span class="hps">ISPDB</span> <span class="hps">est une</span> <span class="hps">base de données centrale</span><span>,</span> <span class="hps">actuellement</span> <span class="hps">hébergée par</span> <span class="hps">Mozilla Messaging</span><span>,</span> <span class="hps">mais libre</span> <span class="hps">d'utilisation pour</span> <span class="hps">n'importe quel client.</span> <span class="hps">Il</span> <span class="hps">contient les paramètres</span> <span class="hps">pour les principaux</span> <span class="hps">fournisseurs d'accès du</span> <span class="hps">monde</span><span>.</span> <span class="hps">Nous espérons que</span> <span class="hps">la base de données</span> <span class="alt-edited hps">aura bientôt</span> <span class="hps">assez d'informations pour</span> <span class="hps">configurer automatiquement</span> <span class="hps">environ</span> <span class="hps">50% des</span> <span class="hps">comptes e-mail</span> <span class="hps">de nos utilisateurs</span><span>.</span><br> + <span class="alt-edited hps">Elle a été ajoutée</span> <span class="hps">simplement parce que</span> <span class="hps">nous ne pouvons pas</span> <span class="hps">supposer que tous les</span> <span class="hps">grands</span> <span class="hps">fournisseurs de services Internet</span> <span class="hps">(y compris</span> <span class="hps">Microsoft)</span> <span class="hps">mettront</span> <span class="hps">immédiatement en place</span> <span class="hps">un serveur de configuration</span> <span class="hps">pour</span> <span class="hps">Thunderbird</span></span>.</li> + <li><span id="result_box" lang="fr"><span class="hps">Serveur</span> <span class="hps">de configuration</span> <span class="hps">à l'ISP</span><br> + <span class="hps">Les FAI</span> <span class="hps">ont la possibilité de</span> <span class="hps">fournir</span> <span class="hps">leurs informations de</span> <span class="hps">configuration</span> <span class="hps">eux-mêmes</span> <span class="hps">directement aux utilisateurs</span><span>,</span> <span class="hps">en mettant en place</span> <span class="hps">un serveur web</span> <span class="hps">à</span> <span class="hps">autoconfig</span><span>.</span> <span class="hps"><domaine></span><span>, Qui renvoie</span> <span class="hps">simplement</span> <span class="hps">un fichier</span> <span class="hps">XML</span> <span class="hps">statique</span> <span class="hps">de la configuration,</span> <span class="hps">comme décrit</span> <span class="hps">ci-dessous.</span> <span class="hps">Pour les configurations</span> <span class="hps">plus complexes</span><span>,</span> <span class="hps">par exemple lorsque le</span> <span class="hps">nom d'utilisateur</span> <span class="hps">n'apparaît pas dans</span> <span class="atn hps">l'</span><span>adresse</span> <span class="hps">email,</span> <span class="hps">le fichier</span> <span class="hps">XML</span> <span class="hps">peut également être généré</span> <span class="hps">par le FAI.</span> <span class="hps">Dans ces</span> <span class="hps">cas compliqués</span><span>,</span> <span class="hps">c'est la seule</span> <span class="hps">façon de permettre</span> <span class="hps">une</span> <span class="hps">configuration automatique</span></span>.</li> + <li><span id="result_box" lang="fr"><span class="hps">Le fichier de configuration</span> <span class="hps">sur le disque dur</span><br> + <span class="hps">Les administrateurs peuvent</span> <span class="hps">placer un</span> <span class="hps">fichier de configuration dans</span> <span class="hps">le</span> <span class="hps">dossier d'installation de</span> <span class="hps">Thunderbird.</span> <span class="hps">Ceci est principalement</span> <span class="hps">destiné aux entreprises</span> <span class="hps">qui installent</span> <span class="hps">Thunderbird</span> <span class="hps">sur les ordinateurs de</span> <span class="hps">leurs employés</span> <span class="hps">et veulent</span> <span class="hps">permettre</span> <span class="hps">l'installation facile</span> <span class="hps">de</span> <span class="hps">compte sans avoir à</span> <span class="hps">mettre en place un</span> <span class="hps">serveur de configuration.</span> <span class="hps">Cette méthode n'est pas</span> <span class="hps">pratique pour les</span> <span class="hps">autres cas d'utilisation</span><span>,</span> <span class="hps">car il est difficile</span> <span class="hps">de mettre à jour</span> <span class="hps">le fichier de configuration</span><span>.</span> <span class="hps">Par conséquent</span><span>, les FAI</span> <span class="hps">publics</span> <span class="hps">doivent utiliser un</span> <span class="hps">serveur de configuration</span></span>.</li> + <li><span id="result_box" lang="fr"><span class="alt-edited hps">Deviner</span><br> + <span class="hps">Si</span> <span class="hps">tous les autres mécanismes</span> <span class="hps">ont échoué,</span> <span class="hps">Thunderbird</span> <span class="hps">essaie de deviner</span> <span class="hps">la</span> <span class="hps">configuration,</span> <span class="hps">en essayant de</span> <span class="hps">noms de serveurs</span> <span class="hps">communs comme</span> <span class="hps">imap</span><span>.</span> <span class="hps"><domaine></span><span>, Smtp</span><span>.</span> <span class="hps"><domaine></span><span class="alt-edited">, mail</span><span>.</span> <span class="hps"><domaine></span> <span class="hps">Etc</span><span>,</span> <span class="hps">et</span><span>,</span> <span class="hps">quand un</span> <span class="hps">serveur de messagerie</span> <span class="alt-edited hps">répond</span><span>,</span> <span class="hps">vérifier si</span> <span class="hps">elle</span> <span class="hps">prend en charge</span> <span class="hps">les mots de passe</span> <span class="hps">SSL</span><span>,</span> <span class="hps">STARTTLS</span> <span class="hps">et</span> <span class="atn hps">cryptée (</span><span class="atn">CRAM-</span><span>MD5</span><span>)</span></span>.</li> + <li><span id="result_box" lang="fr"><span class="alt-edited hps">Configuration Manuelle</span><br> + <span class="hps">Si</span> <span class="hps">deviner</span> <span class="hps">échoue</span><span>, l'utilisateur doit</span> <span class="hps">entrer manuellement</span> <span class="hps">les informations de configuration</span><span>.</span> <span class="hps">Les utilisateurs peuvent</span> <span class="hps">peuvent également</span> <span class="hps">modifier</span> <span class="hps">manuellement</span> <span class="hps">les paramètres du compte</span><span>, même</span> <span class="hps">si les informations</span> <span class="alt-edited hps">de configuration ont était obtenu</span> <span class="hps">avec succès</span> <span class="hps">par les méthodes décrites</span> <span class="hps">ci-dessus</span></span>.</li> +</ul> + +<p><span id="result_box" lang="fr"><span class="hps">Tous les mécanismes</span> <span class="hps">lookup</span> <span class="hps">utilisent</span> <span class="hps">le</span> <span class="hps">domaine</span> <span class="hps">de l'adresse</span> <span class="hps">e-mail</span> <span class="hps">en tant que base</span> <span class="hps">pour la</span> <span class="hps">recherche.</span> <span class="hps">Par exemple, pour</span> <span class="hps">l'adresse</span> <span class="hps">email</span> <span class="hps">fred@example.com</span><span>, la recherche</span> <span class="hps">est effectuée comme</span> <span class="atn hps">(</span><span>dans cet ordre)</span></span>:</p> + +<ol> + <li><span id="result_box" lang="fr"><span class="hps">tb-install-dir/isp/example.com.xml</span> <span class="hps">sur le disque dur</span></span></li> + <li><span class="short_text" id="result_box" lang="fr"><span class="hps">vérifier</span> <span class="hps">autoconfig.example.com</span></span></li> + <li><span class="short_text" id="result_box" lang="fr"><span class="hps">rechercher</span> <span class="hps">des</span> <span class="hps">"example.com"</span> <span class="hps">dans le</span> <span class="hps">ISPDB</span></span></li> + <li><span id="result_box" lang="fr"><span class="hps">rechercher</span> <span class="hps">"MX</span> <span class="hps">example.com"</span> <span class="hps">dans le DNS</span><span>,</span> <span class="hps">et</span> <span class="hps">pour</span> <span class="hps">mx1.mail.hoster.com</span><span>,</span> <span class="atn hps">consultez la rubrique "</span><span>hoster.com</span><span>"</span> <span class="hps">dans le</span> <span class="hps">ISPDB</span></span></li> + <li><span id="result_box" lang="fr"><span class="hps">essayer de deviner</span> <span class="atn hps">(</span><span>imap.example.com</span><span>,</span> <span class="hps">smtp.example.com</span> <span class="hps">etc</span><span>)</span></span></li> +</ol> + +<p><span id="result_box" lang="fr"><span class="hps">Nous pouvons</span> <span class="hps">à l'avenir</span> <span class="hps">ajouter</span> <span class="hps">des enregistrements DNS</span> <span class="hps">SRV en tant que</span> <span class="hps">mécanisme pris en charge</span> <span class="hps">à l'avenir</span><span>, mais nous</span> <span class="hps">n'avons actuellement pas</span><span>.</span></span></p> + +<h1 id="Comment_ajouter_le_support_pour_votre_nom_de_domaine"><span id="result_box" lang="fr"><span class="hps">Comment</span> <span class="hps">ajouter le support pour</span> <span class="hps">votre nom de domaine</span></span></h1> + +<h2 id="Classification">Classification</h2> + +<p><span id="result_box" lang="fr"><span class="hps">Si</span> <span class="hps">vous êtes un grand</span> <span class="hps">fournisseur de services Internet</span> <span class="atn hps">(</span><span>> 100.000</span> <span class="hps">utilisateurs)</span> <span class="hps">fournir des adresses</span> <span class="hps">email</span> <span class="hps">uniquement</span> <span class="hps">sous quelques</span> <span class="hps">domaines tels que</span> <span class="hps">"example.com</span><span class="atn">" et "</span><span>example.de</span><span>"</span><span>, vous pouvez</span> <span class="hps">soit envoyer</span> <span class="hps">la configuration</span> <span class="hps">à la</span> <span class="hps">ISPDB</span> <span class="hps">ou mettre en place</span> <span class="hps">un serveur de configuration</span></span>.<br> + <br> + <span id="result_box" lang="fr"><span class="hps">Si vous soutenez</span> <span class="hps">alias de messagerie</span> <span class="hps">et</span> <span class="hps">le nom de connexion</span> <span class="hps">de l'utilisateur</span> <span class="hps">ne fait pas partie</span> <span class="hps">de l'adresse de</span> <span class="hps">courrier électronique (par</span> <span class="hps">exemple, les utilisateurs</span> <span class="hps">peuvent avoir</span> <span class="atn hps">"</span><span>hero@example.com</span><span>"</span> <span class="hps">comme</span> <span class="hps">adresse e-mail</span><span>, mais</span> <span class="hps">le nom de connexion</span> <span class="hps">IMAP</span> <span class="hps">/ POP /</span> <span class="hps">SMTP</span> <span class="hps">n'est ni</span> <span class="hps">«héros»</span> <span class="hps">ni</span> <span class="atn hps">"</span><span>hero@example.com</span><span class="atn">", mais "</span><span>u67578</span><span>"</span><span>)</span><span>, vous devez</span> <span class="hps">configurer un serveur</span> <span class="hps">de configuration, qui</span> <span class="hps">fait</span> <span class="hps">l'adresse</span> <span class="hps">mail -></span> <span class="hps">nom de connexion</span> <span class="hps">lookup</span></span>.<br> + <br> + <span id="result_box" lang="fr"><span class="hps">Si vous hébergez</span> <span class="hps">domaines clients</span><span>, c'est à dire</span> <span class="hps">que vous êtes</span> <span class="atn hps">"</span><span>hoster.com</span><span>», mais</span> <span class="hps">vos clients</span> <span class="atn hps">ont "</span><span>fred@flintstone.com</span><span class="atn">" et "</span><span>louis@kent.com</span><span>"</span> <span class="hps">comme des domaines</span><span>,</span> <span class="hps">avec seulement quelques</span> <span class="hps">utilisateurs par</span> <span class="hps">domaine, vous</span> <span class="hps">devez configurer</span> <span class="hps">un serveur de configuration</span> <span class="hps">(ou</span> <span class="hps">s'appuyer sur</span> <span class="hps">DNS</span> <span class="hps">MX)</span><span>.</span></span><br> + <br> + <span id="result_box" lang="fr"><span class="hps">Si vous</span> <span class="hps">êtes une petite entreprise</span> <span class="hps">d'installer</span> <span class="hps">Thunderbird</span> <span class="hps">sur les</span> <span class="hps">postes de travail</span> <span class="hps">de vos employés</span><span>, vous pouvez placer</span> <span class="hps">un fichier de configuration</span> <span class="hps">dans le</span> <span class="hps">dossier d'installation de</span> <span class="hps">Thunderbird.</span></span></p> + +<h2 id="ISPDB">ISPDB</h2> + +<p>L'<span id="result_box" lang="fr"><span class="hps">URL</span> <span class="hps">de base de données</span> <span class="hps">est</span> </span> <a class="moz-txt-link-rfc2396E link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/" title="https://live.mozillamessaging.com/autoconfig/v1.1/"><https://live.mozillamessaging.com/autoconfig/v1.1/></a>, <span id="result_box" lang="fr"><span class="hps">append</span> <span class="hps">nom de domaine,</span> <span class="hps">par exemple</span></span>. <a class="moz-txt-link-rfc2396E link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de" title="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de"><https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de></a>.<br> + <br> + <span class="short_text" id="result_box" lang="fr"><span class="hps">Le processus actuel</span><span>:</span> <span class="hps">Remplissez un bug</span> <span class="hps">dans</span></span> <a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Webtools&component=ISPDB%20Database%20Entries&op_sys=All&rep_platform=All">Bugzilla</a>, <span id="result_box" lang="fr"><span class="hps">Produit</span> <span class="atn hps">"</span><span>Outils web</span><span>"</span><span>,</span> <span class="atn hps">"</span><span>composants</span> <span class="hps">ISPDB</span> <span class="hps">Base de données</span> <span class="hps">d'entrées»</span><span>, avec</span> <span class="hps">un fichier de configuration</span> <span class="hps">qui correspond aux</span> <span class="hps">exigences décrites</span> <span class="hps">ci-dessous.</span> <span class="hps">Demander une révision</span> <span class="hps">de</span> <span class="hps">bwinton</span><span>,</span> <span class="hps">gozer</span> <span class="hps">ou</span> <span class="hps">ben.bucksch</span><span>.</span></span><br> + <br> + <span class="short_text" id="result_box" lang="fr"><span class="hps">Future</span><span>:</span> <span class="hps">ajouter</span> <span class="hps">la configuration</span> <span class="atn hps">à l'</span></span> <a class="link-https" href="https://ispdb.mozillamessaging.com">ISPDB server app</a>.</p> + +<p> </p> + +<p>je finirait la traduction demain merci de votre compréhention</p> + +<h2 id="Configuration_du_serveur_avec_ISP">Configuration du serveur avec ISP</h2> + +<p>Given the email address <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:fred@example.com">"fred@example.com"</a>, Thunderbird first checks <<span class="external free"><a class="moz-txt-link-freetext external" href="http://autoconfig.example.com/mail/config-v1.xml?emailaddress=fred@example.com">http://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</a></span>> and then <a class="moz-txt-link-rfc2396E external" href="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml" title="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml"><http://example.com/.well-known/autoconfig/mail/config-v1.1.xml></a>.</p> + +<h3 id="Small_company">Small company</h3> + +<p>If you are a small company, you can put the XML configuration file on your web server, at URL <a class="moz-txt-link-rfc2396E external" href="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml"><http://example.com/.well-known/autoconfig/mail/config-v1.1.xml></a>. (This is not yet finalized and subject to change.)</p> + +<h3 id="Domain_hoster">Domain hoster</h3> + +<p>If you are an ISP that hosts domains for your customers - for example, you are hoster.com and your customer registers fancy.com or example.com, and your servers accept and serve the mail for example.com -, you should set up an autoconfig server.</p> + +<h4 id="DNS">DNS</h4> + +<p>For each customer domain, you add a DNS record (in addition to the existing MX, A www etc. DNS records):<br> + <code>autoconfig IN A 10.2.3.4</code><br> + or<br> + <code>autoconfig IN CNAME autoconfig.hoster.com</code>.<br> + ... where 10.2.3.4 and autoconfig.hoster.com are IP addresses / hostnames you own.<br> + This allows Thunderbird to find you as hoster.</p> + +<p>To make the Version without an autoconfig DNS Entry work you have to make sure that example.com points to the Webserver you will place the config-v1.1.xml on.</p> + +<p>Example: <span style="font-family: courier new,andale mono,monospace; line-height: normal;">example.com A 10.2.3.4</span></p> + +<h4 id="Web_server">Web server</h4> + +<p>You set up a web server bound to a physical IP address. This may be on the same machine as other web servers, but the web server must be configured to the content to any requested domain.<br> + <br> + You must use an virtual host that match all autoconfig.* domains of your customers. In Apache terms, you can use a "ip-based virtual host". In the Apache configuration files, that means something like: Listen 10.2.3.4:80 (of course, you use a public IP address that you own)</p> + +<pre><VirtualHost 10.2.3.4:80> #Must be the first and only virtual host with this ip! + DocumentRoot /var/www/autoconfig/ + ServerName autoconfig.hoster.com + <Directory /var/www/autoconfig> + Order allow,deny + allow from all + </Directory> +</VirtualHost></pre> + +<p>Place the configuration file at the URL /mail/config-v1.1.xml on that host.</p> + +<p>All config files must be served as <code>Content-Type: text/xml</code> (or <code>application/xml</code>), otherwise the file will be ignored. Also, they must use charset UTF-8 (esp. if there are any non-ASCII-characters).</p> + +<p>If you like to use name-based virtual hosts. You probably don't want to setup the autoconfig subdomain for every domain of your customers.<br> + You can add a Rewriterule in the default virtual host (on debian /etc/apache2/sites-enabled/000-default) to match all autoconfig.* subdomains:</p> + +<pre><VirtualHost *:80> #Must be the first Virtual host + ServerAdmin webmaster@hoster.com + ServerName www + DocumentRoot /var/www + RewriteEngine On + RewriteCond %{HTTP_HOST} ^autoconfig\. [NC] + RewriteRule ^/(.*) http://autoconfig.hoster.com/$1 [L,R=301,NE] + #... +</VirtualHost> +<VirtualHost *:80> + DocumentRoot /var/www/autoconfig/ + ServerName autoconfig.hoster.com + <Directory /var/www/autoconfig> + Order allow,deny + allow from all + </Directory> +</VirtualHost> +</pre> + +<p> </p> + +<p> </p> + +<h2 id="Configuration_file">Configuration file</h2> + +<p>This is described at <a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo">How to create a configuration file</a> and <a href="/en/Thunderbird/Autoconfiguration/FileFormat/Definition" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">defined</a> on the sub-pages.</p> + +<p>{{ languages( { "ja": "ja/Thunderbird/Autoconfiguration" } ) }}</p> diff --git a/files/fr/mozilla/thunderbird/index.html b/files/fr/mozilla/thunderbird/index.html new file mode 100644 index 0000000000..f05663cdbd --- /dev/null +++ b/files/fr/mozilla/thunderbird/index.html @@ -0,0 +1,72 @@ +--- +title: Thunderbird +slug: Mozilla/Thunderbird +tags: + - TopicStub + - thunderbird +translation_of: Mozilla/Thunderbird +--- +<p><strong>Thunderbird</strong> est l'application de mail/messagerie de Mozilla. Ces pages documentent Thunderbird et fournissent également des liens vers la documentation sur le backend <a href="/en-US/docs/tag/MailNews" title="tag/MailNews">MailNews</a> qui est également utilisé dans d'autres projets tels que <a href="http://wiki.mozilla.org/Penelope">Eudora/Penelope</a>, <a href="http://www.seamonkey-project.org/">Seamonkey</a>, <a href="http://nkreeger.com/correo/">Correo</a>, etc.</p> + +<p>Thunderbird est le petit frère de Firefox et est construit sur la même plate-forme technique que le navigateur Web. En développement depuis de nombreuses années, et actuellement l'un des clients de messagerie open source les plus populaires, il est utilisé par des millions de personnes à travers le monde pour rassembler tous leurs comptes de messagerie, groupes de discussion et lecture de flux dans un environnement familier à haute productivité. (Du début 2007 au début 2011, Thunderbird a été développé par <a class="link-https" href="https://en.wikipedia.org/wiki/Mozilla_Messaging" title="https://en.wikipedia.org/wiki/Mozilla_Messaging">Mozilla Messaging</a>, une filiale appartenant à Mozilla.)</p> + +<table class="topicpage-table"> + <tbody> + <tr> + <td> + <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2> + + <dl> + <dt><a href="https://developer.mozilla.org/en-US/docs/Simple_Thunderbird_build" title="Simple Thunderbird build">Construire Thunderbird</a></dt> + <dd>Informations sur la construction de Thunderbird avec le référentiel <a href="/en-US/docs/comm-central" title="comm-central">comm-central</a>. Il y a aussi des informations sur le fonctionnement de <a href="/en-US/docs/How_comm-central%27s_build_system_works" title="How_comm-central's_build_system_works">comm-central</a>, comment le <a href="/en-US/docs/Mailnews_and_Mail_code_review_requirements" title="Mailnews and Mail code review requirements">processus de révision fonctionne</a> et comment utiliser le <a href="/en-US/docs/Using_the_Mozilla_symbol_server" title="Using the Mozilla symbol server">serveur de symboles Mozilla</a> pour aider au débogage.</dd> + <dt><a href="/en-US/docs/MailNews_Protocols" title="MailNews_Protocols">Protocoles MailNews</a></dt> + <dd>Documentation approximative sur les protocoles de messagerie..</dd> + <dt><a href="/en-US/docs/DB_Views_%28message_lists%29" title="DB_Views_(message_lists)">Vues de la base de données</a></dt> + <dd>Information de backend sur {{ Interface("nsIMsgDBView") }} et les interfaces associées..</dd> + <dt><a href="/en-US/docs/Thunderbird/Thunderbird_API_documentation" title="Thunderbird API documentation">Documentation de l'API Thunderbird</a></dt> + <dd>Documentation de l'API Thunderbird</dd> + <dt><a href="/en-US/docs/Extensions/Thunderbird" title="Extensions/Thunderbird/">Documentation d'extension</a></dt> + <dd>Tutoriels et astuces pour créer des extensions Thunderbird</dd> + <dt><a href="/en-US/docs/Thunderbird/Thunderbird_Automated_Testing" title="Thunderbird Automated Testing">Test automatisé</a></dt> + <dd>Détails des installations de test automatisées de Thunderbird</dd> + <dt><a href="/en-US/docs/Thunderbird/Thunderbird_in_the_Enterprise" title="Thunderbird in the Enterprise">Thunderbird dans l'entreprise</a></dt> + <dd>Aide au déploiement de Thunderbird dans les grandes organisations</dd> + </dl> + + <p><span class="alllinks"><a href="/en-US/docs/tag/Thunderbird" title="tag/Thunderbird">Voir tout...</a></span></p> + </td> + <td> + <h2 class="Community" id="Community" name="Community">Communauté</h2> + + <ul> + <li>Le support est géré à <a href="http://getsatisfaction.com/mozilla_messaging" title="http://getsatisfaction.com/mozilla_messaging">getsatisfaction</a>.</li> + <li>Les questions relatives aux extensions sont fréquemment abordées dans le groupe dev-apps-thunderbird group: {{ DiscussionList("dev-apps-thunderbird", "mozilla.dev.apps.thunderbird") }}</li> + <li>La discussion sur le développement se déroule sur la mailing liste tb-planning: + <ul> + <li><a class="link-https" href="https://mail.mozilla.org/listinfo/tb-planning" title="https://mail.mozilla.org/listinfo/tb-planning">souscrire</a></li> + <li><a class="link-https" href="https://mail.mozilla.org/pipermail/tb-planning/" title="https://mail.mozilla.org/pipermail/tb-planning/">archives</a></li> + </ul> + </li> + <li><a href="http://forums.mozillazine.org/viewforum.php?f=50">Forums Mozillazine</a></li> + <li><a href="http://www.mozillamessaging.com/">Page Web de Mozilla Messaging</a></li> + <li><a class="link-irc" href="irc://irc.mozilla.org/thunderbird">#thunderbird sur irc.mozilla.org</a> (pour les utilisateurs)</li> + <li><a class="link-irc" href="irc://irc.mozilla.org/maildev">#maildev sur irc.mozilla.org</a> (pour les développeurs)</li> + <li>une liste de tous les <a href="http://wiki.mozilla.org/Thunderbird/CommunicationChannels" title="Thunderbird communication channels">canaux de communication Thunderbird</a></li> + </ul> + + <h2 class="Tools" id="Tools" name="Tools">Outils</h2> + + <ul> + <li><a href="http://ted.mielczarek.org/code/mozilla/extensiondev/">Extension du développeur d'extension</a></li> + <li><a href="/en-US/docs/DOM_Inspector" title="DOM_Inspector">Inspecteur DOM</a></li> + </ul> + + <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Rubriques connexes</h2> + + <ul> + <li><a href="/en-US/docs/Extensions" title="Extensions">Extensions</a></li> + </ul> + </td> + </tr> + </tbody> +</table> diff --git a/files/fr/mozilla/thunderbird/index/index.html b/files/fr/mozilla/thunderbird/index/index.html new file mode 100644 index 0000000000..e8d18b61a8 --- /dev/null +++ b/files/fr/mozilla/thunderbird/index/index.html @@ -0,0 +1,8 @@ +--- +title: Index +slug: Mozilla/Thunderbird/Index +tags: + - Index +translation_of: Mozilla/Thunderbird/Index +--- +<p>{{Index("/fr/docs/Mozilla/Thunderbird")}}</p> diff --git a/files/fr/mozilla/trouver_trace_appels_pour_rapport_bug/index.html b/files/fr/mozilla/trouver_trace_appels_pour_rapport_bug/index.html new file mode 100644 index 0000000000..98b0d6c0e1 --- /dev/null +++ b/files/fr/mozilla/trouver_trace_appels_pour_rapport_bug/index.html @@ -0,0 +1,97 @@ +--- +title: Comment trouver la trace d'appels pour envoyer un rapport de bug +slug: Mozilla/Trouver_trace_appels_pour_rapport_bug +tags: + - Bugzilla +translation_of: Mozilla/How_to_get_a_stacktrace_for_a_bug_report +--- +<p>Si vous envoyez un rapport de plantage sur le Bugzilla vous devriez joindre la trace d'appels (en anglais <em>stacktrace</em>). C'est grâce à elle que les développeurs de Mozilla sauront ce qui s'est mal passé et auront un point de départ pour mener leurs investigations. Cet article vous explique comment utiliser le rapporteur de plantage de Mozilla (le <em>Breakpad</em>, un bloc-notes des incidents) pour obtenir un identifiant de plantage que nos ingénieurs peuvent utiliser pour obtenir la trace d'appels. Vous apprendre également de quels autres moyens vous disposez pour obtenir une trace d'appels si vous ne connaissez pas l'identifiant de plantage.</p> + +<h2 id="Conditions_nécessaires">Conditions nécessaires</h2> + +<p>Vous avez besoin d'une version de Firefox téléchargée sur <a class="external external-icon" href="https://www.mozilla.org/fr/firefox/">Mozilla.org</a>. SeaMonkey et Thunderbird comportent également une assistance au rapport de plantage.</p> + +<p>Le serveur du rapporteur de bug de Mozilla ne dispose d'informations de débogage que pour les versions produites par Mozilla. Par conséquent le rapporteur de bug ne peut pas fonctionner si vous utilisez votre propre compilation du code source ou une version issue de certaines distributions Linux. Auquel cas vous devrez utiliser une des <a href="#Alternative_ways_to_get_a_stacktrace">méthodes alternatives</a> exposées ci-dessous.</p> + +<div class="note"><strong>Remarque : </strong>lorsqu'on traite un rapport de plantage, il est important se savoir si le plantage s'est produit avec <a class="external" href="http://support.mozilla.com/en-US/kb/Safe+Mode" title="http://support.mozilla.com/en-US/kb/Safe+Mode">Firefox en mode sans échec</a>. C'est ce qui aide les ingénieurs à déterminer si une <a class="external" href="http://support.mozilla.com/en-US/kb/Troubleshooting+extensions+and+themes" title="http://support.mozilla.com/en-US/kb/Troubleshooting+extensions+and+themes">extension</a> quelconque ou un <a class="external" href="http://support.mozilla.com/en-US/kb/Troubleshooting+plugins" title="http://support.mozilla.com/en-US/kb/Troubleshooting+plugins">plugin</a> particulier est à l'origine du problème.</div> + +<h2 id="Trouver_lidentifiant_de_plantage_avec_le_rapporteur_de_plantage_de_Mozilla">Trouver l'identifiant de plantage avec le rapporteur de plantage de Mozilla</h2> + +<table style="width: 100%;"> + <tbody> + <tr> + <td> + <p><strong>1. Le plantage et l'envoi d'un rapport au système.</strong></p> + + <p>La fenêtre du rapporteur de plantage de Mozilla devrait apparaître automatiquement après un plantage de Firefox. Si vous disposez d'autres informations complémentaires sur le plantage, comme des détails sur ce que vous étiez en train de faire au moment critique et qui peut avoir déclenché le plantage, n'hésitez pas à l'écrire dans la zone de saisie des commentaires. Vérifiez que vous avez bien coché la case <strong>« </strong>Informer <span class="highlight">Firefox </span>de ce problème pour qu’il puisse être corrigé<strong> » </strong>et cliquez sur le bouton de redémarrag<strong>e</strong>. Le rapporteur de plantage devrait alors soumettre le rapport de plantage, puis Firefox va s'ouvrir à nouveau.</p> + + <div class="note">Le bouton "Détails" permet d'accéder à des données supplémentaires sur l'incident, cependant elles ne sont pas très utiles dans un rapport de bug.</div> + </td> + <td> + <p style="text-align: center;"><img alt="reporter.jpg" class="internal lwrap" src="../../../../@api/deki/files/2854/=reporter.jpg?size=webview" style="float: left; height: 307px; width: 300px;"></p> + </td> + </tr> + </tbody> +</table> + +<table style="width: 100%;"> + <tbody> + <tr> + <td> + <p><strong>2. Communiquez-nous l'identifiant du rapport que vous avez soumis.</strong></p> + + <p>Pour accéder à tous vos rapports de bug, saisissez<strong> "about:crashes" dans la barre d'adresse de Firefox</strong> et appuyez sur Entrée. Firefox should open a list of IDs for your submitted crash reports. Copy two or three of the IDs for the appropriate crashes and paste them into your Bugzilla report. Please check the listed times to avoid copying the ID of an unrelated crash report.</p> + + <div class="note">You can prefix a "bp-" to the beginning of an ID to make Bugzilla turn it into a link: <strong>bp-</strong>a70759c6-1295-4160-aa30-bc4772090918</div> + </td> + <td> + <p style="text-align: center;"><img alt="crashlist.jpg" class="internal lwrap" src="../../../../@api/deki/files/2855/=crashlist.jpg?size=webview" style="float: left; height: 403px; width: 450px;"></p> + </td> + </tr> + </tbody> +</table> + +<h3 id="Trouver_lidentifiant_dun_plantage_au_démarrage">Trouver l'identifiant d'un plantage au démarrage</h3> + +<p><span id="result_box" lang="fr"><span>Si Firefox tombe en panne au démarrage, vous pouvez toujours accéder à vos rapports d'incident soumis.</span></span> <span id="result_box" lang="fr"><span>Les rapports Crash sont accessibles depuis tous les profils de Firefox,</span></span> <a class="external external-icon" href="https://support.mozilla.org/fr/kb/utiliser-gestionnaire-profils-creer-supprimer-profils">new profile</a> <span id="result_box" lang="fr"><span>ne se bloque pas, vous pouvez l'utiliser pour y accéder par "about: crashes"</span></span> <a class="external" href="/En/How_to_get_a_stacktrace_for_a_bug_report#How_to_get_a_crash_ID_with_the_Mozilla_Crash_Reporter" title="https://developer.mozilla.org/En/How_to_get_a_stacktrace_for_a_bug_report#How_to_get_a_crash_ID_with_the_Mozilla_Crash_Reporter">as above</a>.</p> + +<h4 id="Accès_aux_ID_de_rapport_dincident_en_dehors_de_Firefox"><span id="result_box" lang="fr"><span>Accès aux ID de rapport d'incident en dehors de Firefox</span></span></h4> + +<p><span id="result_box" lang="fr"><span>Si vous ne pouvez pas charger Firefox du tout, vous pouvez trouver les fichiers de rapport d'incident à cet emplacement en fonction de votre système d'exploitation:</span></span></p> + +<p>Windows : <span class="filename">%APPDATA%\Mozilla\Firefox\Crash Reports\submitted\</span><br> + OS X : <span class="filename">~/Library/Application Support/Firefox/Crash Reports/submitted/</span><br> + Linux : <span class="filename">~/.mozilla/firefox/Crash Reports/submitted/</span></p> + +<p><span id="result_box" lang="fr"><span>Chaque fichier de ce dossier contient un ID de rapport d'incident envoyé.</span> <span>Vous pouvez vérifier l'heure modifiée ou la création pour chaque fichier afin de déterminer quels rapports d'incident sont pertinents pour votre rapport de bogue.</span></span></p> + +<h2 id="Dautres_moyens_de_trouver_la_trace_dappels">D'autres moyens de trouver la trace d'appels</h2> + +<p><span id="result_box" lang="fr"><span>Si le journal de crash Mozilla ne s'affiche pas ou n'est pas disponible, vous devrez obtenir manuellement une trace de pile:</span></span></p> + +<h4 id="Windows">Windows</h4> + +<p>Voir l'article <a class="internal" href="/en/How_to_get_a_stacktrace_with_WinDbg">Create a stacktrace with Windbg</a> pour plus d'information à ce propos.</p> + +<p>For a full process dump, see <a href="/en-US/docs/How_to_get_a_process_dump_with_Windows_Task_Manage">How to get a process dump with Windows Task Manager [en-US]</a></p> + +<h4 id="OS_X">OS X</h4> + +<p>Exécuter /Applications/Utilities/Console.app. Ouvrir "~/Library/Logs" et "CrashReporter", et rechercher les logs pour "firefox-bin".</p> + +<h4 id="Linux">Linux</h4> + +<p>Note that for most distros the package you need to get symbols for will be something like "xulrunner", not "firefox".</p> + +<h2 id="Where_did_my_crash_get_submitted.3F" name="Where_did_my_crash_get_submitted.3F">Les fichiers de rapports de plantage dans votre ordinateur</h2> + +<p><span id="result_box" lang="fr"><span>Lorsque Breakpad initialement attrape un plantage, il écrit d'abord les fichiers de rapport d'incident (par exemple les fichiers .dump et .extra) dans le sous-répertoire «pending» de son annuaire «Crash Reports».</span><br> + <br> + <span>Si Breakpad envoie avec succès le rapport d'incident au serveur de rapports, par défaut, les fichiers ajoutés au sous-répertoire «en attente» de la panne sont supprimés et un fichier .txt est placé dans le répertoire «soumis» contenant l'ID d'incident</span> <span>Serveur de rapports a enregistré le crash sous.</span> <span>Si vous voulez que Breakpad quitte les fichiers .dump et .extra sur votre ordinateur pour pouvoir les examiner localement,</span></span> MOZ_CRASHREPORTER_NO_DELETE_DUMP <span class="short_text" id="result_box" lang="fr"><span>variable d'environnement à 1.</span></span></p> + +<ul> + <li>Ubuntu: <a class="external external-icon" href="https://wiki.ubuntu.com/MozillaTeam/Bugs#Obtain%20a%20backtrace%20from%20an%20apport%20crash%20report%20(using%20gdb)">Instructions from the Ubuntu Team</a></li> + <li>openSUSE: <a class="external external-icon" href="https://en.opensuse.org/openSUSE:Bugreport_application_crashed">General instructions from openSUSE</a></li> + <li>Fedora: <a class="external external-icon" href="https://fedoraproject.org/wiki/StackTraces">Capturing Stack Traces</a></li> + <li>Gentoo: <a class="external external-icon" href="https://wiki.gentoo.org/wiki/Debugging_with_GDB">Debugging using GDB</a></li> +</ul> diff --git a/files/fr/mozilla/working_with_windows_in_chrome_code/index.html b/files/fr/mozilla/working_with_windows_in_chrome_code/index.html new file mode 100644 index 0000000000..7f4c49a097 --- /dev/null +++ b/files/fr/mozilla/working_with_windows_in_chrome_code/index.html @@ -0,0 +1,250 @@ +--- +title: Travailler avec des fenêtres dans le chrome +slug: Mozilla/Working_with_windows_in_chrome_code +tags: + - Extensions +translation_of: Mozilla/Working_with_windows_in_chrome_code +--- +<p> +Cet article décrit la manière de travailler avec des fenêtres multiples dans le code chrome de Mozilla (applications <a href="fr/XUL">XUL</a> et <a href="fr/Extensions">extensions</a>). Il donne des astuces et des exemples de code sur l'ouverture de nouvelles fenêtres, la recherche de fenêtres déjà ouvertes, et la transmission de données entre différentes fenêtres. +</p> +<h3 id="Ouverture_de_fen.C3.AAtres" name="Ouverture_de_fen.C3.AAtres"> Ouverture de fenêtres </h3> +<p>Pour ouvrir une nouvelle fenêtre, on utilise habituellement un appel DOM <code><a href="fr/DOM/window.open">window.open</a></code> ou <code><a href="fr/DOM/window.openDialog">window.openDialog</a></code>, comme ceci : +</p> +<pre class="eval">var win = window.open("<a class=" external" rel="freelink">chrome://myextension/content/about.xul</a>", + "aproposDeMonExtension", "chrome,centerscreen"); +</pre> +<p>Le premier paramètre de <code>window.open</code> est l'URI du fichier XUL décrivant la fenêtre et son contenu. +</p><p>Le second paramètre est le nom de la fenêtre ; il peut être utilisé par des liens ou formulaires dans leur attribut <code>target</code>. Il est différent du titre de la fenêtre tel que vu par l'utilisateur, qui est spécifié en XUL. +</p><p>Le troisième paramètre, facultatif, est une liste de fonctionnalités spéciales que la fenêtre doit avoir. +</p><p>La fonction <code>window.openDialog</code> fonctionne de manière similaire, mais permet de spécifier des paramètres optionnels qui peuvent être référencés depuis le code JavaScript. Elle gère également les fonctionnalités de la fenêtre légèrement différemment, supposant notamment toujours que la fonctionnalité <code>dialog</code> est spécifiée. +</p><p>Si l'objet <code>window</code> est indisponible (par exemple, lors de l'ouverture d'une fenêtre depuis le code d'un composant XPCOM), vous pouvez avoir besoin de l'interface <a href="fr/NsIWindowWatcher">nsIWindowWatcher</a>. Ses paramètres sont similaires à ceux de <code>window.open</code>, en fait l'implémentation de <code>window.open</code> appelle les méthodes de <code>nsIWindowWatcher</code>. +</p> +<pre class="eval">var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"] + .getService(Components.interfaces.nsIWindowWatcher); +var win = ww.openWindow(null, "<a class=" external" rel="freelink">chrome://myextension/content/about.xul</a>", + "aboutMyExtension", "chrome,centerscreen", null); +</pre> +<h3 id="L.27objet_window" name="L.27objet_window"> L'objet window </h3> +<p>Notez la variable <code>win</code> dans la section ci-dessus, à laquelle est assignée la valeur de retour de <code>window.open</code>. Elle peut être utilisée pour accéder à la fenêtre ouverte. La valeur renvoyée par <code>window.open</code> (et les méthodes similaires) est un objet <code><a class="external" href="http://xulplanet.com/references/objref/Window.html">Window</a></code> (habituellement <code><a class="external" href="http://xulplanet.com/references/objref/ChromeWindow.html">ChromeWindow</a></code>), du même type que la variable <code>window</code>. +</p><p>Du point de vue technique, elle implémente un certain nombre d'interfaces, dont <code><a href="fr/NsIDOMJSWindow">nsIDOMJSWindow</a></code> et <code><a href="fr/NsIDOMWindowInternal">nsIDOMWindowInternal</a></code>, mais elle contient également les propriétés définies par l'utilisateur pour les variables globales et fonctions de la fenêtre. Donc, par exemple, pour accéder au document DOM correspondant à la fenêtre, vous pouvez utiliser <code><a href="fr/DOM/window.document">win.document</a></code>. +</p><p>Notez cependant que le retour de l'appel à <code>open()</code> se fait <i>avant</i> que la fenêtre ne soit totalement chargée, donc certains appels comme <code><a href="fr/DOM/document.getElementById">win.document.getElementById()</a></code> ne fonctionneront pas. Pour contourner cette difficulté, vous pouvez déplacer le code d'initialisation vers un gestionnaire <code>load</code> de la fenêtre ouverte, ou passer une fonction de callback comme décrit <a href="#callback">ci-dessous</a>. +</p><p>Vous pouvez obtenir un objet <code>Window</code> depuis un document à l'aide de <code><a href="fr/DOM/document.defaultView">document.defaultView</a></code>. +</p> +<h3 id="Fen.C3.AAtres_de_contenu" name="Fen.C3.AAtres_de_contenu"> Fenêtres de contenu </h3> +<p>Lorsqu'une fenêtre XUL contient un élément d'interface capable d'afficher une page, comme <code><browser></code> ou <code><iframe></code>, le document à l'intérieur de celui-ci est, naturellement, séparé du document de la fenêtre chrome elle-même. Il y a également un objet <code>Window</code> pour chaque sous-document, bien qu'il n'y ait pas de fenêtre dans le sens commun pour le sous-document. +</p><p>C'est également valable pour les fenêtres chrome ouvertes dans un onglet ou <tt><tabbrowser></tt>. Les éléments au dessus du document chrome ouvert dans l'onglet sont séparés de votre document chrome. +</p><p>Les deux sous-sections qui suivent décrivent la manière de passer les frontières du contenu chrome dans les deux sens, c'est-à-dire d'accéder à des éléments qui sont les ancêtres de votre document chrome, ou des éléments qui sont descendants de votre document chrome, mais néanmoins dans un contexte différent. +</p> +<h4 id="Acc.C3.A8s_aux_documents_contenus" name="Acc.C3.A8s_aux_documents_contenus"> Accès aux documents contenus </h4> +<p>Supposons que vous avez un document chargé dans un élément <tt><tabbrowser></tt>, <tt><browser></tt> ou <tt><iframe></tt> dans votre document. +Vous pouvez utiliser <code>browser.contentDocument</code> pour accéder à ce document et <code>browser.contentWindow</code> pour accéder à l'objet <code>Window</code> de ce document. </p><p>Il est nécessaire de prendre en compte la fonctionnalité <a href="fr/XPCNativeWrapper">XPCNativeWrapper</a> si l'on n'opère pas dans du <a href="fr/XPCNativeWrapper#Qu.27est-ce_qu.27une_fen.C3.AAtre_s.C3.A9curis.C3.A9e_.3F">contenu de confiance</a>. +</p><p>Dans le cas de <code><browser type="content-primary"/></code>, vous pouvez utiliser la propriété raccourcie <a href="fr/DOM/window.content">content</a> pour accéder à l'objet <code>Window</code> du document contenu. Par exemple : +</p> +<pre class="eval">// affiche le titre du document affiché dans l'élément de contenu principal +alert(content.document.title); +</pre> +<p>Par exemple, vous pouvez utiliser <code>content.document</code> dans un overlay à browser.xul pour accéder à la page Web dans l'onglet sélectionné. +</p> +<div class="note">Certains exemples utilisent <code>_content</code> au lieu de <code>content</code>. La première forme est déconseillée depuis longtemps, et vous devriez utiliser <code>content</code> dans tout nouveau code.</div> +<h4 id="Acc.C3.A8s_.C3.A0_un_document_dans_un_panneau_lat.C3.A9ral" name="Acc.C3.A8s_.C3.A0_un_document_dans_un_panneau_lat.C3.A9ral"> Accès à un document dans un panneau latéral </h4> +<p>Firefox permet d'accéder à un panneau latéral, qui est implémenté comme un élément <code><browser></code> avec <code>id="sidebar"</code>. Pour accéder aux éléments et variables à l'intérieur du panneau, il est nécessaire d'utilier <code>document.getElementById("sidebar").contentDocument</code> ou <code>.contentWindow</code>, comme pour l'{{ Anch("Accès aux documents contenus") }}. +</p> +<h4 id="Acc.C3.A8s_aux_.C3.A9l.C3.A9ments_du_document_de_la_fen.C3.AAtre_principale_depuis_une_fen.C3.AAtre_fille" name="Acc.C3.A8s_aux_.C3.A9l.C3.A9ments_du_document_de_la_fen.C3.AAtre_principale_depuis_une_fen.C3.AAtre_fille"> Accès aux éléments du document de la fenêtre principale depuis une fenêtre fille </h4> +<p>Le cas opposé est l'accès au document chrome depuis un script privilégié chargé dans un <tt><browser></tt> ou un <tt><iframe></tt>. +</p><p>Un cas typique où cela peut s'avérer utile est lorsque du code exécuté dans un panneau latéral de la fenêtre principale de Firefox doit pouvoir accéder aux éléments de cette fenêtre. +</p><p>L'arbre DOM, tel qu'il apparaît dans l'<a href="fr/Inspecteur_DOM">Inspecteur DOM</a>, peut ressembler à ceci : +</p> +<pre class="eval">#document + window main-window + ... + browser + #document + window myExtensionWindow +</pre> +<p>où la fenêtre fille est celle où se trouve votre code. +</p><p>Le but est d'accéder aux éléments situés au dessus du document chrome, c'est-à-dire de sortir de la fenêtre chrome et d'accéder à ses ancêtres. Cela peut se faire à l'aide de l'instruction suivante : +</p> +<pre class="eval">var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsIWebNavigation) + .QueryInterface(Components.interfaces.nsIDocShellTreeItem) + .rootTreeItem + .QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsIDOMWindow) +</pre> +<p>Ceci permet de passer les limites du contenu chrome, et renvoie l'objet de la fenêtre principale. +</p> +<h3 id="Recherche_de_fen.C3.AAtres_d.C3.A9j.C3.A0_ouvertes" name="Recherche_de_fen.C3.AAtres_d.C3.A9j.C3.A0_ouvertes"> Recherche de fenêtres déjà ouvertes </h3> +<p>Le composant XPCOM window mediator (interface <a href="fr/NsIWindowMediator">nsIWindowMediator</a>) fournit des informations à propos des fenêtres existantes. Deux de ses méthodes sont souvent utilisées pour obtenir des informations à propos des fenêtres actuellement ouvertes : <code>getMostRecentWindow</code> et <code>getEnumerator</code>. Consultez la page <a href="fr/NsIWindowMediator">nsIWindowMediator</a> pour plus d'informations sur <code>nsIWindowMediator</code>. +<span class="comment">=== Example: Opening a window only if it's not opened already === XXX TBD</span> +</p> +<h3 id="Transfert_de_donn.C3.A9es_entre_fen.C3.AAtres" name="Transfert_de_donn.C3.A9es_entre_fen.C3.AAtres"> Transfert de données entre fenêtres </h3> +<p>Lorsque l'on travaille avec plusieurs fenêtres, il est souvent nécessaire de faire passer des informations d'une fenêtre à une autre. Comme des fenêtres séparées ont des documents DOM et objets globaux différents pour les scripts, il n'est pas possible d'utiliser une seule variable globale JavaScript dans des scripts de fenêtres différentes. </p><p>Plusieurs techniques existent, de puissance et de simplicité variables, pour partager des données. Nous les présenterons de la plus simple à la plus complexe dans les quelques sections suivantes. +</p> +<h4 id="Exemple_1_:_Passage_de_donn.C3.A9es_.C3.A0_une_fen.C3.AAtre_.C3.A0_son_ouverture_avec_openDialog" name="Exemple_1_:_Passage_de_donn.C3.A9es_.C3.A0_une_fen.C3.AAtre_.C3.A0_son_ouverture_avec_openDialog"> Exemple 1 : Passage de données à une fenêtre à son ouverture avec <code>openDialog</code> </h4> +<p>Lorsque vous ouvrez une fenêtre à l'aide de <code><a href="fr/DOM/window.openDialog">window.openDialog</a></code> ou <code>nsIWindowWatcher.openWindow</code>, vous pouvez fournir un nombre d'<i>arguments</i> arbitraires à cette fenêtre. Les arguments sont des objets JavaScript simples, accessibles au travers de la propriété <code><a href="fr/DOM/window.arguments">window.arguments</a></code> dans la fenêtre ouverte. +</p><p>Dans cet exemple, on utilise <code>window.openDialog</code> pour ouvrir un dialogue de progression. On lui passe le texte d'état ainsi que les valeurs maximale et courante de la barre de progression. (Notez qu'utiliser <code>nsIWindowWatcher.openWindow</code> est un peu moins trivial <a class="external" href="http://lxr.mozilla.org/seamonkey/source/extensions/help/resources/content/contextHelp.js#70">.) +</a></p><p><a class="external" href="http://lxr.mozilla.org/seamonkey/source/extensions/help/resources/content/contextHelp.js#70">Code d'ouverture : +</a></p><a class="external" href="http://lxr.mozilla.org/seamonkey/source/extensions/help/resources/content/contextHelp.js#70"> +</a><pre class="eval"><a class="external" href="http://lxr.mozilla.org/seamonkey/source/extensions/help/resources/content/contextHelp.js#70">window.openDialog("</a><a class=" external" rel="freelink">chrome://test/content/progress.xul</a>", + "myProgress", "chrome,centerscreen", + {status: "Lecture des données distantes", maxProgress: 50, progress: 10} ); +</pre> +<p><code>progress.xul</code>: +</p> +<pre><?xml version="1.0"?> +<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> + +<window onload="onLoad();" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> +<script><![CDATA[ + var gStatus, gProgressMeter; + var maxProgress = 100; + function onLoad() { + gStatus = document.getElementById("status"); + gProgressMeter = document.getElementById("progressmeter"); + + if("arguments" in window && window.arguments.length > 0) { + maxProgress = window.arguments[0].maxProgress; + setProgress(window.arguments[0].progress); + setStatus(window.arguments[0].status); + } + } + + function setProgress(value) { + gProgressMeter.value = 100 * value / maxProgress; + } + + function setStatus(text) { + gStatus.value = "Status: " + text + "..."; + } +]]></script> + +<label id="status" value="(Aucun état)"/> +<hbox> + <progressmeter id="progressmeter" mode="determined"/> + <button label="Annuler" oncommand="close();"/> +</hbox> + +</window> +</pre> +<h4 id="Exemple_2_:_Interaction_avec_la_fen.C3.AAtre_ouvrante" name="Exemple_2_:_Interaction_avec_la_fen.C3.AAtre_ouvrante"> Exemple 2 : Interaction avec la fenêtre ouvrante </h4> +<p>Il arrive qu'une fenêtre ouverte doive interagir avec celle qui a déclenché son ouverture (opener). Par exemple, cela peut avoir pour but de lui indiquer que l'utilisateur a effectué des changements dans la fenêtre. On peut trouver la fenêtre qui en a ouvert une autre à l'aide de sa propriété <a href="fr/DOM/window.opener">window.opener</a> ou via une fonction de callback passée à la fenêtre, de la façon décrite dans la section précédente. +</p><p>Ajoutons un peu de code à l'exemple précédent pour avertir la fenêtre ouvrante lorsque l'utilisateur appuie sur Annuler dans la fenêtre de progression. +</p> +<ul><li> <b>Avec <code>window.opener</code>.</b> La propriété <code>opener</code> renvoie {{ Anch("l\'objet Window") }} pour la fenêtre qui a ouvert la fenêtre courante. Si nous sommes certains que la fenêtre qui a ouvert le dialogue de progression a déclaré la fonction <code>cancelOperation</code>, nous pouvons utiliser <code>window.opener.cancelOperation();</code> pour lui envoyer une notification : +</li></ul> +<pre class="eval"><button label="Annuler" oncommand="<b>opener.cancelOperation();</b> close();"/> +</pre> +<ul><li> <b><b>Avec une fonction de callback.</b> Une autre manière de faire est de passer une fonction de callback depuis la fenêtre ouvrante vers le dialogue de progression de la même manière que nous avons passé le message d'état dans l'exemple précédent : +</b></li></ul><b> +<pre class="eval">function onCancel() { + alert("Opération annulée."); +} + +... + +window.openDialog("<a class=" external" rel="freelink">chrome://test/content/progress.xul</a>", + "myProgress", "chrome,centerscreen", + {status: "Lecture des données distantes", maxProgress: 50, progress: 10}, + <b>onCancel</b>); +</pre> +<p>Le dialogue de progression peut alors exécuter le callback de cette façon : +</p> +<pre class="eval"><button label="Cancel" oncommand="<b>window.arguments[1]();</b> close();"/> +</pre> +<h4 id="Exemple_3_:_Utilisation_de_nsIWindowMediator_lorsque_opener_ne_suffit_pas" name="Exemple_3_:_Utilisation_de_nsIWindowMediator_lorsque_opener_ne_suffit_pas"> Exemple 3 : Utilisation de <code>nsIWindowMediator</code> lorsque <code>opener</code> ne suffit pas </h4> +<p>La propriété <code>window.opener</code> est très facile à utiliser, mais elle n'est utile que lorsque vous pouvez vous assurer que la fenêtre a été ouverte depuis un endroit connu. Dans des cas plus compliqués, vous devez utiliser l'interface <code><a href="fr/NsIWindowMediator">nsIWindowMediator</a></code> dont il est fait état plus haut. +</p><p>Une situation dans laquelle <code>nsIWindowMediator</code> peut être utilisé est dans la fenêtre d'options d'une extension. Supposons que vous développez une extension au navigateur qui consiste en un overlay sur <code>browser.xul</code> et une fenêtre d'options. Supposons que l'overlay contient un bouton pour ouvrir la fenêtre d'options de l'extension, qui doit lire certaines données depuis la fenêtre de navigation. Comme vous vous en souvenez peut-être, le gestionnaire d'extensions de Firefox peut également être utilisé pour ouvrir votre fenêtre d'options. +</p><p>Cela signifie que la valeur de <code>window.opener</code> dans votre dialogue d'options n'est pas forcément la fenêtre de navigation, il peut s'agir à la place de la fenêtre du gestionnaire d'extensions. Vous pourriez vérifier la propriété <code>location</code> de l'<code>opener</code> et utiliser <code>opener.opener</code> dans le cas de la fenêtre du gestionnaire d'extensions, mais une meilleure manière de faire est d'utiliser <code>nsIWindowMediator</code> : +</p> +<pre class="eval">var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"] + .getService(Components.interfaces.nsIWindowMediator); +var browserWindow = wm.getMostRecentWindow("navigator:browser"); +// lecture de valeurs depuis |browserWindow| +</pre> +<p>Il peut être tentant d'utiliser une technique similaire pour appliquer les changements effectués par l'utilisateur dans la fenêtre d'options, mais une meilleur manière de le faire est d'utiliser les <a class="external" href="http://kb.mozillazine.org/Dev_:_Using_preferences#Using_preferences_observers">observateurs de préférences</a>. +</p> +<h3 id="Partage_de_donn.C3.A9es_avanc.C3.A9" name="Partage_de_donn.C3.A9es_avanc.C3.A9"> Partage de données avancé </h3> +<p>Le code ci-dessus est utile lorsque vous avez besoin de passer des données d'une fenêtre à une autre ou vers un ensemble de fenêtres, mais dans certains cas vous voulez simplement partager une variable JavaScript commune à différentes fenêtres. Vous pourriez déclarer une variable locale dans chaque fenêtre ainsi que les fonctions nécessaires pour garder les « instances » de la variable synchronisées entre les différentes fenêtres, mais par chance il existe une meilleure solution. +</p><p>Pour déclarer une variable partagé, il est nécessaire de trouver un endroit qui existe tout au long de l'exécution de l'application et qui est facilement accessible depuis le code dans différentes fenêtres du chrome. En fait, quelques endroits comme celui-ci existent. +</p> +<h4 id="Utilisation_d.27un_composant_singleton_XPCOM" name="Utilisation_d.27un_composant_singleton_XPCOM"> Utilisation d'un composant singleton XPCOM </h4> +<p>La manière la plus propre et la plus puissante est de définir votre propre composant XPCOM (vous pouvez en écrire un en JavaScript) et y accéder depuis n'importe quel endroit à l'aide d'un appel à <code>getService</code> : +</p> +<pre class="eval">Components.classes["@domain.org/mycomponent;1"].getService(); +</pre> +<ul><li> Avantages : +<ul><li> C'est la « manière propre. » +</li><li> On peut stocker des objets JavaScripts arbitraires dans le composant. +</li><li> La visibilité n'est pas partagée entre composants, donc pas d'inquiétude à avoir sur des collisions de noms. +</li></ul> +</li><li> Inconvénients : +<ul><li> Vous ne pouvez pas utiliser l'objet <code><a href="fr/DOM/window">window</a></code>, ses membres, comme <code>alert</code> et <code>open</code>, ainsi que beaucoup d'objets disponibles à l'intérieur d'une fenêtre. La fonctionnalité n'est pas perdue, cependant, vous devrez juste utiliser les composants XPCOM directement au lieu d'utiliser des raccourcis pratiques. Bien sûr, cela n'a pas d'importance si vous ne faites que stocker des données dans le composant. +</li><li> Apprendre à créer des composants XPCOM prend du temps. +</li></ul> +</li></ul> +<p>Plusieurs articles et livres sur la création de composants XPCOM existent en ligne. +</p> +<h4 id="Stockage_de_donn.C3.A9es_partag.C3.A9es_dans_les_pr.C3.A9f.C3.A9rences" name="Stockage_de_donn.C3.A9es_partag.C3.A9es_dans_les_pr.C3.A9f.C3.A9rences"> Stockage de données partagées dans les préférences </h4> +<p>Si vous avez simplement besoin de stocker une chaîne ou un nombre, l'écriture d'un composant XPCOM complet peut être une complication inutile. Vous pouvez utiliser le <a class="external" href="http://www.xulplanet.com/references/xpcomref/ifaces/nsIPrefService.html">service de préférences</a> dans de tels cas. +</p> +<ul><li> Avantages : +<ul><li> Il est assez aisé de stocker des données simples. +</li></ul> +</li><li> Inconvénients : +<ul><li> Ne peut pas être utilisé pour stocker des données complexes. +</li><li> L'abus du service de préférences sans nettoyer ses traces après utilisation peut causer un accroissement important de la taille du fichier <tt>prefs.js</tt> et ralentir le démarrage de l'application. +</li></ul> +</li></ul> +<p>Consultez <a href="fr/Extraits_de_code/Pr%c3%a9f%c3%a9rences">Extraits de code:Préférences</a> pour une description détaillée du système de préférences et des exemples de code. +</p><p>Exemple : +</p> +<pre class="eval">var prefs = Components.classes["@mozilla.org/preferences-service;1"] + .getService(Components.interfaces.nsIPrefService); +var branch = prefs.getBranch("extensions.myext."); +var var1 = branch.getBoolPref("var1"); // obtient une préférence +</pre> +<h4 id="L.27astuce_de_la_fen.C3.AAtre_cach.C3.A9e" name="L.27astuce_de_la_fen.C3.AAtre_cach.C3.A9e"> L'astuce de la fenêtre cachée </h4> +<p>Certains auteurs d'extensions utilisent la fenêtre cachée spéciale (<i>hidden window</i>) pour stocker leurs données et leur code. La fenêtre cachée est similaire à une fenêtre normale, mais contrairement à celles-ci elle est disponible à tout moment de la vie de l'application et n'est pas visible pour l'utilisateur. Le document chargé dans cette fenêtre est <code><a class=" external" rel="freelink">chrome://browser/content/hiddenWindow.xul</a></code> sous Mac OS X où il est utilisé pour implémenter les menus et <code><a class=" external" rel="freelink">resource://gre/res/hiddenWindow.html</a></code> pour les autres systèmes d'exploitation. À terme, cette fenêtre sera retirée des systèmes d'exploitation où elle n'est pas nécessaire ({{ Bug(71895) }}). +</p><p>Une référence à la fenêtre cachée peut être obtenue depuis l'interface <code>nsIAppShellService</code>. Comme tout objet DOM, elle vous permet de définir des propriétés personnalisées : +</p> +<pre class="eval">var hiddenWindow = Components.classes["@mozilla.org/appshell/appShellService;1"] + .getService(Components.interfaces.nsIAppShellService) + .hiddenDOMWindow; +hiddenWindow.myExtensionStatus = "ready"; +</pre> +<p>Cependant, les objets placés dans la fenêtre cachée appartiendront toujours à la fenêtre qui les a créés. Si une méthode d'un tel objet accède à des propriétés de l'objet <code>window</code> comme <code>XMLHttpRequest</code>, vous pouvez être confronté à un message d'erreur parce que la fenêtre originale a été fermée. Pour éviter cela, vous pouvez charger les objets avec un fichier script dans la fenêtre cachée: +</p> +<pre class="eval">var hiddenWindow = Components.classes["@mozilla.org/appshell/appShellService;1"] + .getService(Components.interfaces.nsIAppShellService) + .hiddenDOMWindow; +hiddenWnd.Components.classes["@mozilla.org/moz/jssubscript-loader;1"] + .getService(Components.interfaces.mozIJSSubScriptLoader) + .loadSubScript("<a class=" external" rel="freelink">chrome://my-extension/content/globalObject.js</a>"); +hiddenWnd.myExtensionObject.doSomething(); +</pre> +<p>Où <code>globalObject.js</code> contient quelque chose comme : +</p> +<pre class="eval">var myExtensionObject = { + doSomething: function() { + return new XMLHttpRequest(); + } +} +</pre> +<ul><li> Avantages : +<ul><li> Si vous exécutez du code dans la fenêtre cachée, l'objet <code>window</code> et ses propriétés sont disponibles, contrairement au cas du composant. +</li><li> Vous pouvez stocker des objets JavaScript arbitraires dans la fenêtre cachée. +</li></ul> +</li><li> Inconvénients : +<ul><li> C'est du bidouillage. +</li><li> La même fenêtre est utilisée par différentes extensions, il faut utiliser de longs noms de variables pour éviter les conflits. +</li><li> La fenêtre cachée peut disparaître des versions Windows et Linux. +</li></ul> +</li></ul> +<h3 id="Voir_aussi" name="Voir_aussi"> Voir aussi </h3> +<p><a href="fr/Extraits_de_code/Dialogues_et_invites">Extraits de code:Dialogues et invites</a> +</p><p><br> +</p> +<div class="noinclude"> +</div> +{{ languages( { "en": "en/Working_with_windows_in_chrome_code", "es": "es/Trabajar_con_ventanas_desde_c\u00f3digo_chrome", "ja": "ja/Working_with_windows_in_chrome_code" } ) }}</b> |
